@treeport/treeport 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,11 @@
1
+ import { Ct as projectsResponseSchema, U as decodeUnknownOrNull, ct as healthResponseSchema } from "./dist-BsLn2Gbc.js";
1
2
  import fs from "node:fs/promises";
2
3
  import path from "node:path";
3
- import { z } from "zod";
4
4
  import { spawn } from "node:child_process";
5
5
  import crypto from "node:crypto";
6
6
  import fsSync, { constants } from "node:fs";
7
7
  import os from "node:os";
8
+ import { z } from "zod";
8
9
  import { fileURLToPath, pathToFileURL } from "node:url";
9
10
  //#region src/duration.ts
10
11
  const DURATION_UNITS = /* @__PURE__ */ new Map([
@@ -86,21 +87,6 @@ const daemonRecordSchema = z.strictObject({
86
87
  "external"
87
88
  ])
88
89
  });
89
- const healthRecordSchema = z.strictObject({
90
- ok: z.literal(true),
91
- version: z.string(),
92
- protocolVersion: z.number(),
93
- hostname: z.string().optional(),
94
- pid: z.number(),
95
- instanceId: z.string().nullable(),
96
- installationMethod: z.string(),
97
- daemonLifecycle: z.enum([
98
- "treeport",
99
- "service",
100
- "external"
101
- ]),
102
- url: z.string()
103
- });
104
90
  async function preferences(env = process.env) {
105
91
  return await readJson$1(localPaths(env).preferencesPath, preferencesSchema) ?? {};
106
92
  }
@@ -151,15 +137,18 @@ async function daemonHealth(apiUrl, timeoutMs = 1500) {
151
137
  const signal = AbortSignal.timeout(timeoutMs);
152
138
  return fetch(`${apiUrl}/api/health`, { signal }).then(async (response) => {
153
139
  if (!response.ok) return null;
154
- const result = healthRecordSchema.safeParse(await response.json());
155
- return result.success ? result.data : null;
140
+ return decodeUnknownOrNull(healthResponseSchema, await response.json());
156
141
  }).catch(() => null);
157
142
  }
158
143
  function matchesOwnership(state, observed) {
159
144
  return observed.pid === state.pid && observed.instanceId === state.instanceId && path.resolve(state.dataDir) === localPaths().dataDir;
160
145
  }
161
146
  async function readState() {
162
- return readJson$1(localPaths().statePath, daemonRecordSchema);
147
+ const paths = localPaths();
148
+ return await fs.readFile(paths.lockPath, "utf8").then((value) => daemonRecordSchema.parse(JSON.parse(value))).catch((error) => {
149
+ if (error.code === "ENOENT") return null;
150
+ throw new Error(`Cannot verify daemon ownership at ${paths.lockPath}. Inspect the daemon log before starting or stopping Treeport.`, { cause: error });
151
+ }) ?? readJson$1(paths.statePath, daemonRecordSchema);
163
152
  }
164
153
  async function removeStaleState(state) {
165
154
  const paths = localPaths();
@@ -373,11 +362,7 @@ async function disableTailscaleRemote() {
373
362
  }
374
363
  async function runDoctor() {
375
364
  const paths = localPaths();
376
- const gitPath = process.env.TREEPORT_GIT_PATH?.trim() || "git";
377
- const tmuxPath = process.env.TREEPORT_TMUX_PATH?.trim() || "tmux";
378
- const [git, tmux] = await Promise.all([executableCheck(gitPath, ["--version"]), executableCheck(tmuxPath, ["-V"])]);
379
- const tmuxMatch = /tmux\s+(\d+)\.(\d+)/i.exec(tmux.detail);
380
- const tmuxSupported = Boolean(tmux.ok && tmuxMatch && (Number(tmuxMatch[1]) > 3 || Number(tmuxMatch[1]) === 3 && Number(tmuxMatch[2]) >= 2));
365
+ const git = await executableCheck(process.env.TREEPORT_GIT_PATH?.trim() || "git", ["--version"]);
381
366
  const checkDirectory = (directoryPath) => fs.mkdir(directoryPath, {
382
367
  recursive: true,
383
368
  mode: 448
@@ -399,11 +384,6 @@ async function runDoctor() {
399
384
  name: "Git",
400
385
  ...git
401
386
  },
402
- {
403
- name: "tmux",
404
- ok: tmuxSupported,
405
- detail: tmuxSupported ? tmux.detail : `${tmux.detail}. Treeport requires tmux 3.2 or newer.`
406
- },
407
387
  {
408
388
  name: "Data directory",
409
389
  ...dataDirectory
@@ -883,7 +863,6 @@ function createServiceEnvironment(input) {
883
863
  TREEPORT_CACHE_DIR: cacheDirectory(input.user.homedir, env),
884
864
  TREEPORT_DATABASE_PATH: env.TREEPORT_DATABASE_PATH?.trim() || path.join(input.paths.dataDir, "treeport.db"),
885
865
  TREEPORT_SHELL: env.TREEPORT_SHELL?.trim() || env.SHELL?.trim() || "/bin/sh",
886
- TREEPORT_TMUX_PATH: env.TREEPORT_TMUX_PATH?.trim() || "tmux",
887
866
  TREEPORT_GIT_PATH: env.TREEPORT_GIT_PATH?.trim() || "git",
888
867
  TREEPORT_GH_PATH: env.TREEPORT_GH_PATH?.trim() || "gh",
889
868
  TREEPORT_DAEMON_LIFECYCLE: "service",
@@ -1847,16 +1826,18 @@ async function createUpdateStartupReporter(config) {
1847
1826
  const paths = updatePaths(config.dataDir);
1848
1827
  const pending = await fs.readFile(paths.pending, "utf8").then((value) => pendingSchema.safeParse(JSON.parse(value))).then((result) => result.success ? result.data : null).catch(() => null);
1849
1828
  const active = pending && pending.targetVersion === config.appVersion ? pending : null;
1829
+ const previous = await readUpdateStartupReport(config.dataDir);
1830
+ const previousState = active && previous?.operationId === active.operationId && previous.targetVersion === active.targetVersion ? previous.migrationState : "unknown";
1850
1831
  const report = active ? {
1851
1832
  schemaVersion: 1,
1852
1833
  operationId: active.operationId,
1853
1834
  targetVersion: active.targetVersion,
1854
1835
  instanceId: config.instanceId ?? null,
1855
- migrationState: "not_started",
1836
+ migrationState: previousState,
1856
1837
  ready: false,
1857
1838
  error: null,
1858
1839
  logPath: path.join(config.dataDir, "logs", "daemon.log"),
1859
- snapshotPaths: [],
1840
+ snapshotPaths: previous?.operationId === active.operationId && previous.targetVersion === active.targetVersion ? previous.snapshotPaths : [],
1860
1841
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1861
1842
  } : null;
1862
1843
  const save = async () => {
@@ -1868,14 +1849,20 @@ async function createUpdateStartupReporter(config) {
1868
1849
  return {
1869
1850
  async databaseOpening() {
1870
1851
  if (report) {
1871
- report.migrationState = "unknown";
1852
+ report.migrationState = previousState === "advanced" ? "advanced" : "unknown";
1853
+ await save();
1854
+ }
1855
+ },
1856
+ async snapshotCreated(snapshotPath) {
1857
+ if (report) {
1858
+ report.snapshotPaths = [.../* @__PURE__ */ new Set([...report.snapshotPaths, snapshotPath])];
1872
1859
  await save();
1873
1860
  }
1874
1861
  },
1875
1862
  async databaseOpened(input) {
1876
1863
  if (report) {
1877
- report.migrationState = input.migrationState;
1878
- report.snapshotPaths = input.snapshotPaths;
1864
+ report.migrationState = previousState === "advanced" || input.migrationState === "advanced" ? "advanced" : previousState === "unknown" ? "unknown" : "unchanged";
1865
+ report.snapshotPaths = [.../* @__PURE__ */ new Set([...report.snapshotPaths, ...input.snapshotPaths])];
1879
1866
  await save();
1880
1867
  }
1881
1868
  },
@@ -1987,6 +1974,15 @@ const packedReleaseSchema = z.tuple([z.looseObject({
1987
1974
  filename: z.string().min(1),
1988
1975
  integrity: z.string().min(1)
1989
1976
  })]);
1977
+ function formatLocalUpdateError(message, details = {}) {
1978
+ return [...new Set([
1979
+ message,
1980
+ details.cause,
1981
+ details.recovery,
1982
+ details.logPath ? `Daemon log: ${details.logPath}` : null,
1983
+ ...(details.snapshotPaths ?? []).map((snapshot) => `Pre-migration snapshot: ${snapshot}`)
1984
+ ].filter(Boolean))].join("\n");
1985
+ }
1990
1986
  var LocalUpdateError = class extends Error {
1991
1987
  code;
1992
1988
  details;
@@ -2107,10 +2103,24 @@ async function replaceSymlink(linkPath, target) {
2107
2103
  await fs.rename(temporaryPath, linkPath);
2108
2104
  }
2109
2105
  async function terminalIds(apiUrl) {
2110
- const result = await fetch(`${apiUrl}/api/projects`).then(async (response) => response.ok ? response.json() : null).catch(() => null);
2111
- const parsed = z.looseObject({ projects: z.array(z.looseObject({ worktrees: z.array(z.looseObject({ terminals: z.array(z.looseObject({ id: z.string() })) })) })) }).safeParse(result);
2112
- if (!parsed.success) throw new Error("Treeport could not read the terminal inventory.");
2113
- return parsed.data.projects.flatMap((project) => project.worktrees).flatMap((worktree) => worktree.terminals).map((terminal) => terminal.id).sort();
2106
+ const parsed = decodeUnknownOrNull(projectsResponseSchema, await fetch(`${apiUrl}/api/projects`).then(async (response) => response.ok ? response.json() : null).catch(() => null));
2107
+ if (!parsed) throw new Error("Treeport could not read the terminal inventory.");
2108
+ return parsed.projects.flatMap((project) => project.worktrees).flatMap((worktree) => worktree.terminals).map((terminal) => terminal.id).sort();
2109
+ }
2110
+ function updateMigrationState(operation, report) {
2111
+ if (operation.migrationState === "advanced") return "advanced";
2112
+ if (report?.operationId === operation.operationId && report.targetVersion === operation.toVersion) return report.migrationState;
2113
+ return ["stop", "activate"].includes(operation.phase) && operation.migrationState === "not_started" ? "not_started" : "unknown";
2114
+ }
2115
+ async function stopUpdateDaemon(lifecycle) {
2116
+ if (lifecycle === "service") {
2117
+ if ((await serviceStop()).administratorCommand) throw new LocalUpdateError("UPDATE_SERVICE_ADMINISTRATOR_ACTION_REQUIRED", "The service requires administrator action and was not stopped.", { phase: "stop" });
2118
+ const deadline = Date.now() + 7e3;
2119
+ while ((await daemonStatus()).state) {
2120
+ if (Date.now() >= deadline) throw new Error("Treeport could not verify that the service daemon stopped. Inspect the daemon log before changing the installed version.");
2121
+ await new Promise((resolve) => setTimeout(resolve, 100));
2122
+ }
2123
+ } else await daemonDown();
2114
2124
  }
2115
2125
  async function startThroughStableEntrypoint(entrypoint, environment) {
2116
2126
  const result = await runCommand(entrypoint, ["start", "--json"], environment);
@@ -2282,6 +2292,7 @@ async function runLocalUpdate(options = {}) {
2282
2292
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
2283
2293
  };
2284
2294
  let recoveryOperation = null;
2295
+ let recoveryReport = null;
2285
2296
  const save = async (phase) => {
2286
2297
  operation = {
2287
2298
  ...operation,
@@ -2301,12 +2312,17 @@ async function runLocalUpdate(options = {}) {
2301
2312
  activeTarget: installation.managed ? await fs.realpath(installation.currentLink).catch(() => installation.prefix) : installation.prefix
2302
2313
  };
2303
2314
  if (staleOperation && staleOperation.daemonWasRunning && DESTRUCTIVE_PHASES.has(staleOperation.phase) && !(await daemonStatus()).running) {
2315
+ await stopUpdateDaemon(staleOperation.daemonLifecycle);
2304
2316
  const staleReport = await readUpdateStartupReport(paths.dataDir);
2305
- if (Boolean(staleReport?.operationId === staleOperation.operationId && ["advanced", "unknown"].includes(staleReport.migrationState))) {
2317
+ staleOperation.migrationState = updateMigrationState(staleOperation, staleReport);
2318
+ if (["advanced", "unknown"].includes(staleOperation.migrationState)) {
2319
+ recoveryReport = staleReport?.operationId === staleOperation.operationId && staleReport.targetVersion === staleOperation.toVersion ? staleReport : null;
2306
2320
  if (staleOperation.previousTarget && operation.activeTarget === staleOperation.previousTarget) throw new LocalUpdateError("UPDATE_RECOVERY_REQUIRED", "The older Treeport version is active after a database migration may have started. Treeport will not start it.", {
2307
2321
  phase: "recovery_required",
2308
2322
  operationId: staleOperation.operationId,
2309
- migrationState: staleReport?.migrationState ?? "unknown",
2323
+ migrationState: staleOperation.migrationState,
2324
+ logPath: recoveryReport?.logPath ?? paths.logPath,
2325
+ snapshotPaths: recoveryReport?.snapshotPaths ?? [],
2310
2326
  recovery: "Install the same or a newer Treeport release and inspect the daemon log."
2311
2327
  });
2312
2328
  recoveryOperation = staleOperation;
@@ -2388,6 +2404,8 @@ async function runLocalUpdate(options = {}) {
2388
2404
  phase: "recovery_required",
2389
2405
  operationId: recoveryOperation.operationId,
2390
2406
  migrationState: recoveryOperation.migrationState,
2407
+ logPath: recoveryReport?.logPath ?? paths.logPath,
2408
+ snapshotPaths: recoveryReport?.snapshotPaths ?? [],
2391
2409
  recovery: "Install the next Treeport release when it is available and run `treeport update` again."
2392
2410
  });
2393
2411
  if (comparison === 0) {
@@ -2529,6 +2547,7 @@ async function runLocalUpdate(options = {}) {
2529
2547
  phase: "verify",
2530
2548
  operationId
2531
2549
  });
2550
+ operation.migrationState = recoveryOperation?.migrationState ?? "not_started";
2532
2551
  operation.daemonWasRunning = daemonBefore.running && daemonBefore.verified || recoveryOperation !== null;
2533
2552
  operation.daemonLifecycle = recoveryOperation ? recoveryOperation.daemonLifecycle : operation.daemonWasRunning ? daemonBefore.health?.daemonLifecycle === "service" ? "service" : "treeport" : installedService ? "service" : "treeport";
2534
2553
  operation.serviceMode = recoveryOperation?.serviceMode ?? serviceBefore?.mode ?? null;
@@ -2539,12 +2558,7 @@ async function runLocalUpdate(options = {}) {
2539
2558
  });
2540
2559
  await save("stop");
2541
2560
  progress("Stopping the Treeport daemon and preserving terminals…");
2542
- if (operation.daemonWasRunning) if (operation.daemonLifecycle === "service") {
2543
- if ((await serviceStop()).administratorCommand) throw new LocalUpdateError("UPDATE_SERVICE_ADMINISTRATOR_ACTION_REQUIRED", "The service requires administrator action and was not stopped.", {
2544
- phase: "stop",
2545
- operationId
2546
- });
2547
- } else await daemonDown();
2561
+ if (operation.daemonWasRunning) await stopUpdateDaemon(operation.daemonLifecycle);
2548
2562
  await save("activate");
2549
2563
  progress(`Activating Treeport ${release.version}…`);
2550
2564
  await fs.rm(targetPath, {
@@ -2575,7 +2589,19 @@ async function runLocalUpdate(options = {}) {
2575
2589
  targetVersion: release.version,
2576
2590
  createdAt: (/* @__PURE__ */ new Date()).toISOString()
2577
2591
  });
2578
- await fs.rm(path.join(updateDirectory, "startup-report.json"), { force: true });
2592
+ await writeJson(path.join(updateDirectory, "startup-report.json"), {
2593
+ schemaVersion: 1,
2594
+ operationId,
2595
+ targetVersion: release.version,
2596
+ instanceId: null,
2597
+ migrationState: operation.migrationState,
2598
+ ready: false,
2599
+ error: null,
2600
+ logPath: paths.logPath,
2601
+ snapshotPaths: recoveryReport?.snapshotPaths ?? [],
2602
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
2603
+ });
2604
+ operation.migrationState = operation.migrationState === "advanced" ? "advanced" : "unknown";
2579
2605
  await save("restart");
2580
2606
  progress(`Restarting the ${operation.daemonLifecycle === "service" ? "Treeport service" : "Treeport daemon"}…`);
2581
2607
  await startThroughStableEntrypoint(installation.entrypoint, environment);
@@ -2588,7 +2614,7 @@ async function runLocalUpdate(options = {}) {
2588
2614
  daemonAfter = await daemonStatus();
2589
2615
  report = await readUpdateStartupReport(paths.dataDir);
2590
2616
  }
2591
- operation.migrationState = report?.operationId === operationId ? report.migrationState : "unknown";
2617
+ operation.migrationState = updateMigrationState(operation, report);
2592
2618
  if (!daemonAfter.running || !daemonAfter.verified || daemonAfter.health?.version !== release.version || daemonAfter.health.daemonLifecycle !== operation.daemonLifecycle || path.resolve(daemonAfter.state.dataDir) !== paths.dataDir || report?.operationId !== operationId || !report.ready) throw new LocalUpdateError("UPDATE_HEALTH_VERIFICATION_FAILED", `Treeport ${release.version} did not pass startup verification.`, {
2593
2619
  phase: "health_check",
2594
2620
  operationId
@@ -2651,13 +2677,14 @@ async function runLocalUpdate(options = {}) {
2651
2677
  toVersion: operation.toVersion
2652
2678
  });
2653
2679
  }
2654
- const startupReport = await readUpdateStartupReport(paths.dataDir);
2655
- if (startupReport?.operationId === operationId) operation.migrationState = startupReport.migrationState;
2656
- if (!["not_started", "unchanged"].includes(operation.migrationState)) {
2657
- const serviceStopError = operation.daemonLifecycle === "service" ? await serviceStop().then(() => null, (cause) => cause instanceof Error ? cause.message : String(cause)) : null;
2658
- operation.recoveryAction = serviceStopError ? `Keep the new version installed. Stop the service, then inspect the daemon log. Service stop failed: ${serviceStopError}` : "Keep the new version installed. Inspect the daemon log and repair with the same or a newer Treeport release.";
2680
+ const stopError = operation.daemonWasRunning ? await stopUpdateDaemon(operation.daemonLifecycle).then(() => null, (cause) => cause instanceof Error ? cause.message : String(cause)) : null;
2681
+ const observedReport = await readUpdateStartupReport(paths.dataDir);
2682
+ const startupReport = observedReport?.operationId === operationId && observedReport.targetVersion === operation.toVersion ? observedReport : null;
2683
+ operation.migrationState = updateMigrationState(operation, startupReport);
2684
+ if (!(!stopError && ["not_started", "unchanged"].includes(operation.migrationState))) {
2685
+ operation.recoveryAction = stopError ? `Keep the new version installed. Stop the daemon, then inspect the daemon log. Stop failed: ${stopError}` : "Keep the new version installed. Inspect the daemon log and repair with the same or a newer Treeport release.";
2659
2686
  await save("recovery_required");
2660
- throw new LocalUpdateError("UPDATE_RECOVERY_REQUIRED", "The updated daemon did not become healthy after database migration began. Treeport did not start the older daemon.", {
2687
+ throw new LocalUpdateError("UPDATE_RECOVERY_REQUIRED", "Treeport could not prove that rollback is safe. Treeport did not start the older daemon.", {
2661
2688
  operationId,
2662
2689
  phase: failedPhase,
2663
2690
  fromVersion: operation.fromVersion,
@@ -2668,6 +2695,7 @@ async function runLocalUpdate(options = {}) {
2668
2695
  safe: false,
2669
2696
  succeeded: false
2670
2697
  },
2698
+ cause: startupReport?.error ?? (error instanceof Error ? error.message : String(error)),
2671
2699
  logPath: startupReport?.logPath ?? paths.logPath,
2672
2700
  snapshotPaths: startupReport?.snapshotPaths ?? [],
2673
2701
  recovery: operation.recoveryAction
@@ -2696,6 +2724,8 @@ async function runLocalUpdate(options = {}) {
2696
2724
  succeeded: rollbackError === null
2697
2725
  },
2698
2726
  cause: error instanceof Error ? error.message : String(error),
2727
+ logPath: startupReport?.logPath ?? paths.logPath,
2728
+ snapshotPaths: startupReport?.snapshotPaths ?? [],
2699
2729
  recovery: operation.recoveryAction
2700
2730
  });
2701
2731
  } finally {
@@ -2713,4 +2743,4 @@ async function runLocalUpdate(options = {}) {
2713
2743
  }
2714
2744
  }
2715
2745
  //#endregion
2716
- export { treeportVersion as A, disableTailscaleRemote as C, resolvePackagePath as D, resolveLocalApiUrl as E, parseDurationMs as M, runDoctor as O, daemonUp as S, readDaemonLogs as T, serviceStatus as _, readLocalUpdateProgress as a, daemonHealth as b, createUpdateStartupReporter as c, serviceDisable as d, serviceDoctorCheck as f, serviceStart as g, serviceRun as h, isCanonicalTreeportVersion as i, assertLoopbackHost as j, tailscaleRemoteStatus as k, readServiceLogs as l, serviceInstalled as m, compareTreeportVersions as n, resolveLatestTreeportRelease as o, serviceEnable as p, inspectLocalUpdateInstallation as r, runLocalUpdate as s, LocalUpdateError as t, serviceApply as u, serviceStop as v, enableTailscaleRemote as w, daemonStatus as x, daemonDown as y };
2746
+ export { tailscaleRemoteStatus as A, daemonUp as C, resolveLocalApiUrl as D, readDaemonLogs as E, assertLoopbackHost as M, parseDurationMs as N, resolvePackagePath as O, daemonStatus as S, enableTailscaleRemote as T, serviceStart as _, isCanonicalTreeportVersion as a, daemonDown as b, runLocalUpdate as c, serviceApply as d, serviceDisable as f, serviceRun as g, serviceInstalled as h, inspectLocalUpdateInstallation as i, treeportVersion as j, runDoctor as k, createUpdateStartupReporter as l, serviceEnable as m, compareTreeportVersions as n, readLocalUpdateProgress as o, serviceDoctorCheck as p, formatLocalUpdateError as r, resolveLatestTreeportRelease as s, LocalUpdateError as t, readServiceLogs as u, serviceStatus as v, disableTailscaleRemote as w, daemonHealth as x, serviceStop as y };
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-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-ease:initial;--tw-content:""}}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;position:absolute;inset:0;overflow-y:scroll}.xterm:not(.allow-transparency) .xterm-viewport{background-color:#000}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;-webkit-text-decoration:overline double underline;-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;-webkit-text-decoration:overline wavy underline;-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;-webkit-text-decoration:overline dotted underline;-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;-webkit-text-decoration:overline dashed underline;-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.xterm-scrollbar{cursor:default}.xterm .xterm-scrollable-element>.xterm-scrollbar>.xterm-scra{cursor:pointer;background-color:var(--vscode-scrollbarSliderBackground,#64646466);-webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 11'><path d='M2.5 8.5 L5.5 2.5 L8.5 8.5 Z' fill='black'/></svg>");mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 11'><path d='M2.5 8.5 L5.5 2.5 L8.5 8.5 Z' fill='black'/></svg>");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.xterm .xterm-scrollable-element>.xterm-scrollbar>.xterm-scra.xterm-arrow-down{transform:rotate(180deg)}.xterm .xterm-scrollable-element>.xterm-visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.xterm-invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.xterm-invisible.xterm-fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.xterm-shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.xterm-shadow.xterm-shadow-top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.xterm-shadow.xterm-shadow-left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.xterm-shadow.xterm-shadow-top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.xterm-shadow.xterm-shadow-top.xterm-shadow-left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}@layer theme{:root,:host{--font-sans:"Inter Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-950:oklch(25.8% .092 26.042);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-300:oklch(84.5% .143 164.978);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-950:oklch(30.2% .056 229.695);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-900:oklch(41% .159 10.272);--color-rose-950:oklch(27.1% .105 12.094);--color-zinc-50:oklch(98.5% 0 none);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-xl:24px;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-mono-font-family:var(--font-mono);--font-sans--font-feature-settings:"cv02", "cv03", "cv04", "cv11", "ss01", "ss03";--animate-comet:comet 1.1s linear infinite}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-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;-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}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.invisible{visibility:hidden}.visible{visibility:visible}.touch-target{width:max(100%,3rem);height:max(100%,3rem);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media (pointer:fine){.touch-target{display:none}}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-x-3{inset-inline:calc(var(--spacing) * 3)}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-14{right:calc(var(--spacing) * 14)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-70{z-index:70}.z-100{z-index:100}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.eyebrow{font-family:var(--font-mono);font-size:.6875rem;line-height:calc(var(--spacing) * 4);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-zinc-500);text-transform:uppercase;margin:0}.form-note{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));text-wrap:pretty;color:var(--color-zinc-400);margin:0}@media (width>=40rem){.form-note{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.mx-1{margin-inline:var(--spacing)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-0{margin-right:0}.mr-1{margin-right:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\!{width:calc(var(--spacing) * 4)!important;height:calc(var(--spacing) * 4)!important}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-full{width:100%;height:100%}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-11{height:calc(var(--spacing) * 11)}.h-11\!{height:calc(var(--spacing) * 11)!important}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-64{height:calc(var(--spacing) * 64)}.h-\[1px\]{height:1px}.h-auto{height:auto}.h-full{height:100%}.h-svh{height:100svh}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.max-h-\[min\(22rem\,55dvh\)\]{max-height:min(22rem,55dvh)}.max-h-\[min\(26rem\,calc\(100dvh-1rem\)\)\]{max-height:min(26rem,100dvh - 1rem)}.max-h-\[min\(28rem\,50dvh\)\]{max-height:min(28rem,50dvh)}.max-h-\[min\(28rem\,70vh\)\]{max-height:min(28rem,70vh)}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-dvh{min-height:100dvh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-\(--sidebar-width-mobile\){width:var(--sidebar-width-mobile)}.w-3{width:calc(var(--spacing) * 3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-\[--sidebar-width\]{width:--sidebar-width}.w-\[1px\]{width:1px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[min\(17rem\,calc\(100vw-1rem\)\)\]{width:min(17rem,100vw - 1rem)}.w-\[min\(20rem\,calc\(100\%-1rem\)\)\]{width:min(20rem,100% - 1rem)}.w-\[min\(20rem\,calc\(100vw-1rem\)\)\]{width:min(20rem,100vw - 1rem)}.w-\[min\(22rem\,calc\(100vw-1rem\)\)\]{width:min(22rem,100vw - 1rem)}.w-\[var\(--side-panel-width\)\]{width:var(--side-panel-width)}.w-auto{width:auto}.w-full{width:100%}.max-w-1\/2{max-width:50%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-\[--skeleton-width\]{max-width:--skeleton-width}.max-w-\[52ch\]{max-width:52ch}.max-w-\[calc\(100\%-1\.5rem\)\]{max-width:calc(100% - 1.5rem)}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-\[min\(30rem\,calc\(100vw-2rem\)\)\]{max-width:min(30rem,100vw - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-44{min-width:calc(var(--spacing) * 44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-center{transform-origin:50%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-\[0\.62\]{scale:.62}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-comet{animation:var(--animate-comet)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-pan-x{--tw-pan-x:pan-x;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-manipulation{touch-action:manipulation}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.\[scrollbar-color\:var\(--color-zinc-600\)_transparent\]{scrollbar-color:var(--color-zinc-600) transparent}.\[scrollbar-color\:var\(--color-zinc-700\)_transparent\]{scrollbar-color:var(--color-zinc-700) transparent}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[1\.25rem_minmax\(0\,1fr\)_2rem\]{grid-template-columns:1.25rem minmax(0,1fr) 2rem}.grid-cols-\[1fr_--spacing\(8\)\]{grid-template-columns:1fr calc(var(--spacing) * 8)}.grid-cols-\[2\.75rem_minmax\(0\,1fr\)_2\.25rem_2\.75rem\]{grid-template-columns:2.75rem minmax(0,1fr) 2.25rem 2.75rem}.grid-cols-\[var\(--sidebar-width\)_minmax\(0\,1fr\)\]{grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-px{gap:1px}.place-self-center{place-self:center}.self-end{align-self:flex-end}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-sidebar-border{border-color:var(--sidebar-border)}.border-white\/6{border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.border-white\/6{border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.border-white\/8{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/8{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-zinc-700\!{border-color:var(--color-zinc-700)!important}.bg-amber-400\/8{background-color:#fcbb0014}@supports (color:color-mix(in lab, red, red)){.bg-amber-400\/8{background-color:color-mix(in oklab, var(--color-amber-400) 8%, transparent)}}.bg-amber-950{background-color:var(--color-amber-950)}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.bg-black\/70{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab, var(--color-black) 80%, transparent)}}.bg-cyan-400{background-color:var(--color-cyan-400)}.bg-cyan-400\/8\!{background-color:#00d2ef14!important}@supports (color:color-mix(in lab, red, red)){.bg-cyan-400\/8\!{background-color:color-mix(in oklab, var(--color-cyan-400) 8%, transparent)!important}}.bg-cyan-600{background-color:var(--color-cyan-600)}.bg-cyan-600\!{background-color:var(--color-cyan-600)!important}.bg-cyan-950{background-color:var(--color-cyan-950)}.bg-red-950{background-color:var(--color-red-950)}.bg-rose-700{background-color:var(--color-rose-700)}.bg-rose-950\/95{background-color:#4d0218f2}@supports (color:color-mix(in lab, red, red)){.bg-rose-950\/95{background-color:color-mix(in oklab, var(--color-rose-950) 95%, transparent)}}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-white\/3{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/3{background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.bg-white\/6{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.bg-white\/6{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.bg-white\/7{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.bg-white\/7{background-color:color-mix(in oklab, var(--color-white) 7%, transparent)}}.bg-white\/8{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\/8{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-zinc-500{background-color:var(--color-zinc-500)}.bg-zinc-800{background-color:var(--color-zinc-800)}.bg-zinc-800\!{background-color:var(--color-zinc-800)!important}.bg-zinc-800\/80{background-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-800\/80{background-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.bg-zinc-800\/95{background-color:#27272af2}@supports (color:color-mix(in lab, red, red)){.bg-zinc-800\/95{background-color:color-mix(in oklab, var(--color-zinc-800) 95%, transparent)}}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-900\!{background-color:var(--color-zinc-900)!important}.bg-zinc-900\/80{background-color:#18181bcc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\/80{background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)}}.bg-zinc-900\/90{background-color:#18181be6}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\/90{background-color:color-mix(in oklab, var(--color-zinc-900) 90%, transparent)}}.bg-zinc-900\/95{background-color:#18181bf2}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\/95{background-color:color-mix(in oklab, var(--color-zinc-900) 95%, transparent)}}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-zinc-950\/50{background-color:#09090b80}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/50{background-color:color-mix(in oklab, var(--color-zinc-950) 50%, transparent)}}.bg-zinc-950\/70{background-color:#09090bb3}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/70{background-color:color-mix(in oklab, var(--color-zinc-950) 70%, transparent)}}.bg-\[radial-gradient\(circle_at_center\,var\(--color-zinc-900\)_0\,var\(--color-zinc-950\)_55\%\)\]{background-image:radial-gradient(circle at center,var(--color-zinc-900) 0,var(--color-zinc-950) 55%)}.\[mask-image\:linear-gradient\(to_right\,black_calc\(100\%_-_1rem\)\,transparent\)\]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 1rem),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 1rem),#0000)}.fill-cyan-500\/80{fill:#00b7d7cc}@supports (color:color-mix(in lab, red, red)){.fill-cyan-500\/80{fill:color-mix(in oklab, var(--color-cyan-500) 80%, transparent)}}.fill-zinc-400{fill:var(--color-zinc-400)}.fill-zinc-500{fill:var(--color-zinc-500)}.fill-zinc-600{fill:var(--color-zinc-600)}.stroke-cyan-400{stroke:var(--color-cyan-400)}.stroke-rose-400{stroke:var(--color-rose-400)}.stroke-zinc-600{stroke:var(--color-zinc-600)}.stroke-\[1\.5\]{stroke-width:1.5px}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-1{padding-top:var(--spacing)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-0{padding-right:0}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-\[env\(safe-area-inset-right\)\]{padding-right:env(safe-area-inset-right)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-\[calc\(0\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.25rem + env(safe-area-inset-bottom))}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-\[env\(safe-area-inset-left\)\]{padding-left:env(safe-area-inset-left)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:var(--font-sans);font-feature-settings:var(--font-sans--font-feature-settings)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-base\!{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.text-base\/5{font-size:var(--text-base);line-height:calc(var(--spacing) * 5)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.625rem\]{font-size:.625rem}.text-\[0\.6875rem\]{font-size:.6875rem}.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-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.whitespace-nowrap{white-space:nowrap}.text-amber-200{color:var(--color-amber-200)}.text-amber-300{color:var(--color-amber-300)}.text-current{color:currentColor}.text-cyan-50{color:var(--color-cyan-50)}.text-cyan-100{color:var(--color-cyan-100)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-300{color:var(--color-emerald-300)}.text-red-200{color:var(--color-red-200)}.text-rose-100{color:var(--color-rose-100)}.text-rose-300{color:var(--color-rose-300)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.text-white{color:var(--color-white)}.text-white\!{color:var(--color-white)!important}.text-zinc-50{color:var(--color-zinc-50)}.text-zinc-100{color:var(--color-zinc-100)}.text-zinc-100\!{color:var(--color-zinc-100)!important}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-200\!{color:var(--color-zinc-200)!important}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-400\!{color:var(--color-zinc-400)!important}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-950{color:var(--color-zinc-950)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl\!{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-amber-400\/20{--tw-ring-color:#fcbb0033}@supports (color:color-mix(in lab, red, red)){.ring-amber-400\/20{--tw-ring-color:color-mix(in oklab, var(--color-amber-400) 20%, transparent)}}.ring-cyan-400\/20{--tw-ring-color:#00d2ef33}@supports (color:color-mix(in lab, red, red)){.ring-cyan-400\/20{--tw-ring-color:color-mix(in oklab, var(--color-cyan-400) 20%, transparent)}}.ring-cyan-600{--tw-ring-color:var(--color-cyan-600)}.ring-rose-400\/30{--tw-ring-color:#ff667f4d}@supports (color:color-mix(in lab, red, red)){.ring-rose-400\/30{--tw-ring-color:color-mix(in oklab, var(--color-rose-400) 30%, transparent)}}.ring-rose-700{--tw-ring-color:var(--color-rose-700)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-white\/8{--tw-ring-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.ring-white\/8{--tw-ring-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.ring-white\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ring-white\/10{--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.ring-white\/12{--tw-ring-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.ring-white\/12{--tw-ring-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.ring-white\/15{--tw-ring-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.ring-white\/15{--tw-ring-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-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))}.transition-\[color\,transform\]{transition-property:color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *),.group-focus-within\/project-option\:opacity-100:is(:where(.group\/project-option):focus-within *){opacity:1}.group-focus-within\/terminal\:opacity-0:is(:where(.group\/terminal):focus-within *){opacity:0}.group-focus-within\/terminal\:opacity-100:is(:where(.group\/terminal):focus-within *){opacity:1}.group-focus-within\/tool\:opacity-0:is(:where(.group\/tool):focus-within *){opacity:0}.group-focus-within\/tool\:opacity-100:is(:where(.group\/tool):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\/project-option\:opacity-100:is(:where(.group\/project-option):hover *){opacity:1}.group-hover\/terminal\:opacity-0:is(:where(.group\/terminal):hover *){opacity:0}.group-hover\/terminal\:opacity-100:is(:where(.group\/terminal):hover *){opacity:1}.group-hover\/tool\:opacity-0:is(:where(.group\/tool):hover *){opacity:0}.group-hover\/tool\:opacity-100:is(:where(.group\/tool):hover *){opacity:1}}.group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:\!size-8:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]:is(:where(.group)[data-collapsible=icon] *){width:--sidebar-width-icon}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:\!p-0:is(:where(.group)[data-collapsible=icon] *){padding:0!important}.group-data-\[collapsible\=icon\]\:\!p-2:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:0}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:0}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius-lg)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:var(--spacing)}.placeholder\:text-zinc-500::placeholder{color:var(--color-zinc-500)}.placeholder\:text-zinc-600::placeholder{color:var(--color-zinc-600)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{content:var(--tw-content);inset-block:0}.before\:left-1\/2:before{content:var(--tw-content);left:50%}.before\:w-0\.5:before{content:var(--tw-content);width:calc(var(--spacing) * .5)}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:-translate-x-1\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:bg-cyan-400:before{content:var(--tw-content);background-color:var(--color-cyan-400)}.before\:bg-white\/8:before{content:var(--tw-content);background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.before\:bg-white\/8:before{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:0}.after\:top-1\/2:after{content:var(--tw-content);top:50%}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:h-8:after{content:var(--tw-content);height:calc(var(--spacing) * 8)}.after\:w-1:after{content:var(--tw-content);width:var(--spacing)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-zinc-700:after{content:var(--tw-content);background-color:var(--color-zinc-700)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.focus-within\:bg-white\/5:focus-within{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.focus-within\:bg-white\/5:focus-within{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}@media (hover:hover){.hover\:bg-cyan-500:hover{background-color:var(--color-cyan-500)}.hover\:bg-cyan-500\!:hover{background-color:var(--color-cyan-500)!important}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-rose-900:hover{background-color:var(--color-rose-900)}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:bg-white\/6:hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/6:hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.hover\:bg-white\/7:hover{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/7:hover{background-color:color-mix(in oklab, var(--color-white) 7%, transparent)}}.hover\:bg-white\/8:hover{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/8:hover{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:bg-zinc-700:hover{background-color:var(--color-zinc-700)}.hover\:bg-zinc-700\!:hover{background-color:var(--color-zinc-700)!important}.hover\:fill-rose-300:hover{fill:var(--color-rose-300)}.hover\:text-amber-100:hover{color:var(--color-amber-100)}.hover\:text-cyan-100:hover{color:var(--color-cyan-100)}.hover\:text-rose-300:hover{color:var(--color-rose-300)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-zinc-50:hover{color:var(--color-zinc-50)}.hover\:text-zinc-100:hover{color:var(--color-zinc-100)}.hover\:text-zinc-200:hover{color:var(--color-zinc-200)}.hover\:text-zinc-400:hover{color:var(--color-zinc-400)}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-cyan-500:hover{--tw-ring-color:var(--color-cyan-500)}.group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:is(:where(.group)[data-collapsible=offcanvas] *):hover{background-color:var(--sidebar)}.hover\:before\:w-0\.5:hover:before{content:var(--tw-content);width:calc(var(--spacing) * .5)}.hover\:before\:bg-cyan-400\/60:hover:before{content:var(--tw-content);background-color:#00d2ef99}@supports (color:color-mix(in lab, red, red)){.hover\:before\:bg-cyan-400\/60:hover:before{background-color:color-mix(in oklab, var(--color-cyan-400) 60%, transparent)}}.hover\:after\:bg-cyan-400:hover:after{content:var(--tw-content);background-color:var(--color-cyan-400)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:border-cyan-500:focus{border-color:var(--color-cyan-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-cyan-400:focus{--tw-ring-color:var(--color-cyan-400)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:bg-white\/5:focus-visible{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-white\/5:focus-visible{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.focus-visible\:bg-white\/6:focus-visible{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-white\/6:focus-visible{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.focus-visible\:bg-white\/8:focus-visible{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-white\/8:focus-visible{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.focus-visible\:ring-1\!:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-color:var(--color-cyan-300)}.focus-visible\:ring-cyan-400:focus-visible{--tw-ring-color:var(--color-cyan-400)}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:var(--sidebar-ring)}.focus-visible\:ring-white\/20\!:focus-visible{--tw-ring-color:#fff3!important}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-white\/20\!:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)!important}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-cyan-400:focus-visible{outline-color:var(--color-cyan-400)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:before\:w-0\.5:focus-visible:before{content:var(--tw-content);width:calc(var(--spacing) * .5)}.focus-visible\:before\:bg-cyan-400:focus-visible:before,.focus-visible\:after\:bg-cyan-400:focus-visible:after{content:var(--tw-content);background-color:var(--color-cyan-400)}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-45:disabled{opacity:.45}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\[data-variant\=inset\]\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[button\:hover\]\:bg-white\/5:has(:is(button:hover)){background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.has-\[button\:hover\]\:bg-white\/5:has(:is(button:hover)){background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.has-\[\>svg\:first-child\]\:pl-1\.5:has(>svg:first-child){padding-left:calc(var(--spacing) * 1.5)}.has-\[\>svg\:first-child\]\:pl-2:has(>svg:first-child){padding-left:calc(var(--spacing) * 2)}.has-\[\>svg\:last-child\]\:pr-1\.5:has(>svg:last-child){padding-right:calc(var(--spacing) * 1.5)}.has-\[\>svg\:last-child\]\:pr-2:has(>svg:last-child){padding-right:calc(var(--spacing) * 2)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-45[data-disabled]{opacity:.45}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[highlighted\]\:bg-white\/7[data-highlighted]{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-white\/7[data-highlighted]{background-color:color-mix(in oklab, var(--color-white) 7%, transparent)}}.data-\[highlighted\]\:text-zinc-50[data-highlighted]{color:var(--color-zinc-50)}.data-\[selected\=true\]\:bg-white\/8[data-selected=true]{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.data-\[selected\=true\]\:bg-white\/8[data-selected=true]{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.data-\[state\=checked\]\:border-cyan-400[data-state=checked]{border-color:var(--color-cyan-400)}.data-\[state\=checked\]\:bg-cyan-400[data-state=checked]{background-color:var(--color-cyan-400)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[variant\=destructive\]\:text-rose-300[data-variant=destructive]{color:var(--color-rose-300)}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\:animate-spin{animation:var(--animate-spin)}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media not all and (width>=700px){.max-\[700px\]\:static{position:static}.max-\[700px\]\:top-auto{top:auto}.max-\[700px\]\:bottom-0{bottom:0}.max-\[700px\]\:bottom-2{bottom:calc(var(--spacing) * 2)}.max-\[700px\]\:left-0{left:0}.max-\[700px\]\:flex{display:flex}.max-\[700px\]\:grid{display:grid}.max-\[700px\]\:hidden{display:none}.max-\[700px\]\:max-h-\[90dvh\]{max-height:90dvh}.max-\[700px\]\:w-full{width:100%}.max-\[700px\]\:max-w-none{max-width:none}.max-\[700px\]\:flex-1{flex:1}.max-\[700px\]\:shrink-0{flex-shrink:0}.max-\[700px\]\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-\[700px\]\:translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-\[700px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-\[700px\]\:grid-rows-\[3\.25rem_minmax\(0\,1fr\)\]{grid-template-rows:3.25rem minmax(0,1fr)}.max-\[700px\]\:grid-rows-\[minmax\(0\,1fr\)_3\.25rem\]{grid-template-rows:minmax(0,1fr) 3.25rem}.max-\[700px\]\:items-center{align-items:center}.max-\[700px\]\:gap-0\.5{gap:calc(var(--spacing) * .5)}.max-\[700px\]\:gap-4{gap:calc(var(--spacing) * 4)}.max-\[700px\]\:rounded-md{border-radius:var(--radius-md)}.max-\[700px\]\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.max-\[700px\]\:border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.max-\[700px\]\:bg-white\/8{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.max-\[700px\]\:bg-white\/8{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.max-\[700px\]\:p-0{padding:0}.max-\[700px\]\:p-1\.5{padding:calc(var(--spacing) * 1.5)}.max-\[700px\]\:p-5{padding:calc(var(--spacing) * 5)}.max-\[700px\]\:pt-0{padding-top:0}.max-\[700px\]\:pr-8{padding-right:calc(var(--spacing) * 8)}.max-\[700px\]\:pb-0{padding-bottom:0}.max-\[700px\]\:pb-\[calc\(1\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(1.25rem + env(safe-area-inset-bottom))}.max-\[700px\]\:opacity-0{opacity:0}.max-\[700px\]\:opacity-100{opacity:1}.max-\[700px\]\:select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.max-\[700px\]\:hover\:bg-transparent:hover{background-color:#0000}}.max-\[700px\]\:has-\[button\:hover\]\:bg-white\/5:has(:is(button:hover)){background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.max-\[700px\]\:has-\[button\:hover\]\:bg-white\/5:has(:is(button:hover)){background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}}@media (width>=701px){.min-\[701px\]\:ml-2\.5{margin-left:calc(var(--spacing) * 2.5)}.min-\[701px\]\:block{display:block}.min-\[701px\]\:flex{display:flex}.min-\[701px\]\:size-3\.5\!{width:calc(var(--spacing) * 3.5)!important;height:calc(var(--spacing) * 3.5)!important}.min-\[701px\]\:size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.min-\[701px\]\:size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.min-\[701px\]\:h-7{height:calc(var(--spacing) * 7)}.min-\[701px\]\:h-7\!{height:calc(var(--spacing) * 7)!important}.min-\[701px\]\:h-8{height:calc(var(--spacing) * 8)}.min-\[701px\]\:h-56{height:calc(var(--spacing) * 56)}.min-\[701px\]\:max-h-\[min\(22rem\,70vh\)\]{max-height:min(22rem,70vh)}.min-\[701px\]\:min-h-7{min-height:calc(var(--spacing) * 7)}.min-\[701px\]\:min-h-8{min-height:calc(var(--spacing) * 8)}.min-\[701px\]\:w-60{width:calc(var(--spacing) * 60)}.min-\[701px\]\:grid-cols-\[1rem_minmax\(0\,1fr\)_1\.75rem\]{grid-template-columns:1rem minmax(0,1fr) 1.75rem}.min-\[701px\]\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.min-\[701px\]\:gap-0\.5{gap:calc(var(--spacing) * .5)}.min-\[701px\]\:gap-1{gap:var(--spacing)}.min-\[701px\]\:bg-white\/8\!{background-color:#ffffff14!important}@supports (color:color-mix(in lab, red, red)){.min-\[701px\]\:bg-white\/8\!{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)!important}}.min-\[701px\]\:p-0{padding:0}.min-\[701px\]\:p-1{padding:var(--spacing)}.min-\[701px\]\:px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.min-\[701px\]\:px-2{padding-inline:calc(var(--spacing) * 2)}.min-\[701px\]\:py-0{padding-block:0}.min-\[701px\]\:py-0\.5{padding-block:calc(var(--spacing) * .5)}.min-\[701px\]\:py-1{padding-block:var(--spacing)}.min-\[701px\]\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.min-\[701px\]\:pt-2{padding-top:calc(var(--spacing) * 2)}.min-\[701px\]\:pr-2{padding-right:calc(var(--spacing) * 2)}.min-\[701px\]\:pr-6{padding-right:calc(var(--spacing) * 6)}.min-\[701px\]\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.min-\[701px\]\:pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.min-\[701px\]\:pl-7{padding-left:calc(var(--spacing) * 7)}.min-\[701px\]\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.min-\[701px\]\:text-sm\!{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.min-\[701px\]\:text-sm\/5{font-size:var(--text-sm);line-height:calc(var(--spacing) * 5)}.min-\[701px\]\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.min-\[701px\]\:text-xs\/4{font-size:var(--text-xs);line-height:calc(var(--spacing) * 4)}.min-\[701px\]\:opacity-0,.min-\[701px\]\:group-focus-within\/project-option\:opacity-0:is(:where(.group\/project-option):focus-within *){opacity:0}@media (hover:hover){.min-\[701px\]\:group-hover\/preset\:opacity-100:is(:where(.group\/preset):hover *){opacity:1}.min-\[701px\]\:group-hover\/project-option\:opacity-0:is(:where(.group\/project-option):hover *){opacity:0}}.min-\[701px\]\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.min-\[701px\]\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:0}.min-\[701px\]\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:var(--radius-xl)}.min-\[701px\]\:peer-data-\[variant\=inset\]\:shadow:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.min-\[701px\]\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2:is(:where(.peer)[data-state=collapsed]~*):is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 2)}.min-\[701px\]\:placeholder\:text-sm::placeholder{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.after\:min-\[701px\]\:hidden:after{content:var(--tw-content)}@media (width>=701px){.after\:min-\[701px\]\:hidden:after{display:none}.min-\[701px\]\:focus-visible\:opacity-100:focus-visible{opacity:1}}@media (width>=40rem){.sm\:inline{display:inline}.sm\:h-9{height:calc(var(--spacing) * 9)}.sm\:h-12{height:calc(var(--spacing) * 12)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (width>=48rem){.md\:grid-cols-\[minmax\(12rem\,0\.8fr\)_minmax\(0\,1\.35fr\)\]{grid-template-columns:minmax(12rem,.8fr) minmax(0,1.35fr)}}@media (pointer:coarse){.pointer-coarse\:hidden{display:none}.pointer-coarse\:opacity-100{opacity:1}}.\[\&_\[cmdk-item\]\:focus\]\:outline-none [cmdk-item]:focus,.\[\&_\[cmdk-list\]\:focus\]\:outline-none [cmdk-list]:focus{--tw-outline-style:none;outline-style:none}.\[\&_\[data-selected\]\]\:bg-white\/8 [data-selected]{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.\[\&_\[data-selected\]\]\:bg-white\/8 [data-selected]{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.\[\&_button\]\:h-11 button{height:calc(var(--spacing) * 11)}.\[\&_button\]\:min-w-11 button{min-width:calc(var(--spacing) * 11)}.\[\&_button\]\:grow button{flex-grow:1}.\[\&_button\]\:rounded-none button{border-radius:0}.\[\&_button\]\:border-r button{border-right-style:var(--tw-border-style);border-right-width:1px}.\[\&_button\]\:border-white\/8 button{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.\[\&_button\]\:border-white\/8 button{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.\[\&_button\]\:text-sm button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_button\:last-child\]\:border-r-0 button:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\>button\.absolute\]\:hidden>button.absolute{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize,[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-sans);font-synthesis:none;color:var(--color-zinc-200);background:var(--color-zinc-950);--sidebar:var(--color-zinc-900);--sidebar-foreground:var(--color-zinc-200);--sidebar-primary:var(--color-cyan-600);--sidebar-primary-foreground:white;--sidebar-accent:oklab(100% 0 5.96046e-8/.06);--sidebar-accent-foreground:var(--color-zinc-100);--sidebar-border:oklab(100% 0 5.96046e-8/.08);--sidebar-ring:var(--color-cyan-400)}*{box-sizing:border-box}html{background:var(--color-zinc-950)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;min-height:100dvh;margin:0;overflow:hidden}.app-frame{height:var(--app-visual-viewport-height,100dvh);transform:translateY(var(--app-visual-viewport-offset-top,0px))}@media (width<=700px){.keyboard-safe-dialog{top:calc(var(--dialog-visual-viewport-top,0px) + var(--dialog-visual-viewport-height,100dvh) / 2);width:calc(100% - 2rem);max-height:calc(var(--dialog-visual-viewport-height,100dvh) - 2rem);border-radius:.75rem;padding-bottom:1.25rem;bottom:auto;left:50%;transform:translate(-50%,-50%)}}@supports (-webkit-touch-callout:none){[data-slot=input],[data-slot=native-select],[data-slot=textarea]{font-size:max(1rem,16px)}}code{color:var(--color-cyan-200);font-family:SFMono-Regular,Cascadia Code,monospace}.xterm-host .xterm{touch-action:pan-x pinch-zoom;height:100%}.xterm-host .xterm-viewport{background-color:var(--color-zinc-950)}.xterm-host .xterm-scrollable-element>.scrollbar.vertical,.xterm-host .xterm-scrollable-element>.scrollbar.vertical>.slider{width:10px!important}.terminal-session-host{position:relative}.terminal-session-host.terminal-scrolling .xterm-helper-textarea{cursor:default}.terminal-selection-actions{display:none}@media (pointer:coarse){.terminal-selection-actions{display:flex}}.terminal-session-host.terminal-file-drag:after{z-index:10;content:"Drop files to paste their paths";border:1px dashed var(--color-cyan-400);background:#09090be0;border-radius:.25rem;place-items:center;display:grid;position:absolute;inset:.25rem}@supports (color:color-mix(in lab, red, red)){.terminal-session-host.terminal-file-drag:after{background:color-mix(in oklab, var(--color-zinc-950) 88%, transparent)}}.terminal-session-host.terminal-file-drag:after{color:var(--color-cyan-100);pointer-events:none;font-size:.875rem;line-height:1.25rem}.terminal-bell{box-shadow:inset 0 0 0 2px #ffd236bf}@supports (color:color-mix(in lab, red, red)){.terminal-bell{box-shadow:inset 0 0 0 2px color-mix(in oklab, var(--color-amber-300) 75%, transparent)}}.facts{border-block:1px solid oklab(100% 0 5.96046e-8/.1);margin:0;display:grid}.facts>div{border-bottom:1px solid oklab(100% 0 5.96046e-8/.07);grid-template-columns:8rem minmax(0,1fr);gap:1rem;padding-block:.625rem;display:grid}.facts>div:last-child{border-bottom:0}.facts dt,.facts dd{font-size:.875rem;line-height:1.25rem}.facts dt{color:var(--color-zinc-500)}.facts dd{overflow-wrap:anywhere;color:var(--color-zinc-300);font-variant-numeric:tabular-nums;margin:0}.facts.diagnostics>div{grid-template-columns:9.5rem minmax(0,1fr)}.warning{border-left:2px solid var(--color-amber-400);background:#fcbb000f;padding:.75rem 1rem}@supports (color:color-mix(in lab, red, red)){.warning{background:color-mix(in oklab, var(--color-amber-400) 6%, transparent)}}.warning{color:var(--color-amber-200);font-size:.875rem;line-height:1.25rem}.warning.danger{border-color:var(--color-rose-400);background:#ff667f0f}@supports (color:color-mix(in lab, red, red)){.warning.danger{background:color-mix(in oklab, var(--color-rose-400) 6%, transparent)}}.warning.danger{color:var(--color-rose-200)}.warning p,.warning ul{margin-block:.25rem 0;padding-left:1.125rem}.preview-list{border-block:1px solid oklab(100% 0 5.96046e-8/.1);display:grid}.preview-list>div{border-bottom:1px solid oklab(100% 0 5.96046e-8/.07);justify-content:space-between;gap:1.5rem;padding-block:.75rem;font-size:.875rem;line-height:1.25rem;display:flex}.preview-list>div:last-child{border-bottom:0}.preview-list strong{min-width:0;color:var(--color-zinc-200);font-weight:500}.preview-list span{color:var(--color-zinc-400);text-align:right}.worktree-progress-icon{--worktree-progress-glow:var(--color-cyan-400);transform-origin:50%;filter:drop-shadow(0 0 .2rem var(--worktree-progress-glow));animation:1.8s ease-in-out infinite worktree-branch-breathe}@supports (color:color-mix(in lab, red, red)){.worktree-progress-icon{filter:drop-shadow(0 0 .2rem color-mix(in oklab, var(--worktree-progress-glow) 45%, transparent))}}.worktree-progress-icon :is(path,line,polyline){stroke-dasharray:24;animation:1.8s cubic-bezier(.65,0,.35,1) infinite worktree-branch-draw}.worktree-progress-icon circle{transform-box:fill-box;transform-origin:50%;animation:1.8s cubic-bezier(.34,1.56,.64,1) infinite worktree-branch-node}.worktree-progress-icon circle:nth-of-type(2){animation-delay:.12s}.worktree-removing-icon{--worktree-progress-glow:var(--color-rose-400)}.worktree-removing-icon,.worktree-removing-icon :is(path,line,polyline,circle){animation-direction:reverse}@keyframes worktree-branch-breathe{0%,to{opacity:.5;transform:scale(.92)rotate(-4deg)}45%,65%{opacity:1;transform:scale(1)rotate(0)}}@keyframes worktree-branch-draw{0%{stroke-dashoffset:24px}45%,70%{stroke-dashoffset:0}to{stroke-dashoffset:-24px}}@keyframes worktree-branch-node{0%,22%{opacity:0;transform:scale(.25)}48%,72%{opacity:1;transform:scale(1)}to{opacity:.35;transform:scale(.75)}}@media (prefers-reduced-motion:reduce){.worktree-progress-icon,.worktree-progress-icon :is(path,line,polyline),.worktree-progress-icon circle{animation:none}}@media (width<=700px){.facts>div,.facts.diagnostics>div{grid-template-columns:6.75rem minmax(0,1fr)}.facts dt,.facts dd,.preview-list>div,.warning{font-size:1rem;line-height:1.5rem}.preview-list>div{flex-direction:column;gap:.25rem}.preview-list span{text-align:left}}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-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-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes comet{to{stroke-dashoffset:-100px}}