ninekit-cli 1.0.0 → 1.1.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -10
- package/cli-manifest.json +2 -2
- package/dist/index.js +68 -175
- package/dist/ui/assets/index-BKg794dq.css +1 -0
- package/dist/ui/assets/{index-DVw44qdl.js → index-Dm_825IL.js} +3 -3
- package/dist/ui/images/ninekit-logo.png +0 -0
- package/dist/ui/index.html +2 -2
- package/package.json +1 -1
- package/dist/ui/assets/index-R4f9D835.css +0 -1
package/README.md
CHANGED
|
@@ -36,16 +36,6 @@ Comprehensive documentation in `/docs`:
|
|
|
36
36
|
- **[nk watch](./docs/nk-watch.md)** - GitHub issue monitoring daemon
|
|
37
37
|
- **[nk content](./docs/nk-content.md)** - Automated content generation from git activity
|
|
38
38
|
|
|
39
|
-
## Prerequisites
|
|
40
|
-
|
|
41
|
-
Before using NineKit CLI, you need to:
|
|
42
|
-
|
|
43
|
-
1. **Purchase a NineKit Starter Kit** from [NineKit.cc](https://ninekit.chiendt.io.vn)
|
|
44
|
-
2. **Get Repository Access**: After purchase, you'll receive access to the private GitHub repository containing your kit
|
|
45
|
-
3. **Create a GitHub Personal Access Token** (PAT) with `repo` scope to download releases
|
|
46
|
-
|
|
47
|
-
Without a purchased kit and repository access, the CLI will not be able to download any project templates.
|
|
48
|
-
|
|
49
39
|
## Installation
|
|
50
40
|
|
|
51
41
|
The NineKit CLI is published on npm at [npmjs.com/package/ninekit-cli](https://www.npmjs.com/package/ninekit-cli).
|
package/cli-manifest.json
CHANGED
package/dist/index.js
CHANGED
|
@@ -15459,12 +15459,12 @@ function isSafeRelativeLayoutPath(value) {
|
|
|
15459
15459
|
return segments.every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
|
|
15460
15460
|
}
|
|
15461
15461
|
function isValidKitType(value) {
|
|
15462
|
-
return value === "engineer" || value === "marketing";
|
|
15462
|
+
return value === "engineer" || value === "marketing" || value === "pm" || value === "ba" || value === "test";
|
|
15463
15463
|
}
|
|
15464
15464
|
var KitType, KitConfigSchema, KitLayoutSchema, NineKitPackageMetadataSchema, DEFAULT_KIT_LAYOUT, AVAILABLE_KITS, NEVER_COPY_PATTERNS, USER_CONFIG_PATTERNS, PROTECTED_PATTERNS;
|
|
15465
15465
|
var init_kit = __esm(() => {
|
|
15466
15466
|
init_zod();
|
|
15467
|
-
KitType = exports_external.enum(["engineer", "marketing"]);
|
|
15467
|
+
KitType = exports_external.enum(["engineer", "marketing", "pm", "ba", "test"]);
|
|
15468
15468
|
KitConfigSchema = exports_external.object({
|
|
15469
15469
|
name: exports_external.string(),
|
|
15470
15470
|
repo: exports_external.string(),
|
|
@@ -15494,6 +15494,24 @@ var init_kit = __esm(() => {
|
|
|
15494
15494
|
repo: "ninekit-marketing",
|
|
15495
15495
|
owner: "bninekit",
|
|
15496
15496
|
description: "Content automation: campaigns, social media, analytics workflows"
|
|
15497
|
+
},
|
|
15498
|
+
pm: {
|
|
15499
|
+
name: "NineKit PM",
|
|
15500
|
+
repo: "ninekit-pm",
|
|
15501
|
+
owner: "bninekit",
|
|
15502
|
+
description: "Project & delivery management workflows for Claude"
|
|
15503
|
+
},
|
|
15504
|
+
ba: {
|
|
15505
|
+
name: "NineKit BA",
|
|
15506
|
+
repo: "ninekit-ba",
|
|
15507
|
+
owner: "bninekit",
|
|
15508
|
+
description: "Business analysis & requirements workflows for Claude"
|
|
15509
|
+
},
|
|
15510
|
+
test: {
|
|
15511
|
+
name: "NineKit Test",
|
|
15512
|
+
repo: "ninekit-test",
|
|
15513
|
+
owner: "bninekit",
|
|
15514
|
+
description: "QA & test engineering workflows for Claude"
|
|
15497
15515
|
}
|
|
15498
15516
|
};
|
|
15499
15517
|
NEVER_COPY_PATTERNS = [
|
|
@@ -64309,7 +64327,7 @@ var package_default;
|
|
|
64309
64327
|
var init_package = __esm(() => {
|
|
64310
64328
|
package_default = {
|
|
64311
64329
|
name: "ninekit-cli",
|
|
64312
|
-
version: "1.0.
|
|
64330
|
+
version: "1.1.0-dev.3",
|
|
64313
64331
|
description: "CLI tool for bootstrapping and updating NineKit projects",
|
|
64314
64332
|
type: "module",
|
|
64315
64333
|
repository: {
|
|
@@ -66179,7 +66197,7 @@ async function checkHookLogs(projectDir) {
|
|
|
66179
66197
|
async function checkCliVersion() {
|
|
66180
66198
|
try {
|
|
66181
66199
|
if (process.env.NK_TEST_HOME) {
|
|
66182
|
-
logger.verbose("
|
|
66200
|
+
logger.verbose("NinekitChecker: Skipping CLI version check in test mode");
|
|
66183
66201
|
return {
|
|
66184
66202
|
id: "cli-version",
|
|
66185
66203
|
name: "CLI Version",
|
|
@@ -77553,76 +77571,6 @@ var init_ownership_display = __esm(() => {
|
|
|
77553
77571
|
import_picocolors25 = __toESM(require_picocolors(), 1);
|
|
77554
77572
|
});
|
|
77555
77573
|
|
|
77556
|
-
// src/ui/node_modules/picocolors/picocolors.js
|
|
77557
|
-
var require_picocolors2 = __commonJS((exports, module) => {
|
|
77558
|
-
var p2 = process || {};
|
|
77559
|
-
var argv = p2.argv || [];
|
|
77560
|
-
var env3 = p2.env || {};
|
|
77561
|
-
var isColorSupported = !(!!env3.NO_COLOR || argv.includes("--no-color")) && (!!env3.FORCE_COLOR || argv.includes("--color") || p2.platform === "win32" || (p2.stdout || {}).isTTY && env3.TERM !== "dumb" || !!env3.CI);
|
|
77562
|
-
var formatter = (open6, close, replace = open6) => (input) => {
|
|
77563
|
-
let string = "" + input, index = string.indexOf(close, open6.length);
|
|
77564
|
-
return ~index ? open6 + replaceClose(string, close, replace, index) + close : open6 + string + close;
|
|
77565
|
-
};
|
|
77566
|
-
var replaceClose = (string, close, replace, index) => {
|
|
77567
|
-
let result = "", cursor = 0;
|
|
77568
|
-
do {
|
|
77569
|
-
result += string.substring(cursor, index) + replace;
|
|
77570
|
-
cursor = index + close.length;
|
|
77571
|
-
index = string.indexOf(close, cursor);
|
|
77572
|
-
} while (~index);
|
|
77573
|
-
return result + string.substring(cursor);
|
|
77574
|
-
};
|
|
77575
|
-
var createColors = (enabled = isColorSupported) => {
|
|
77576
|
-
let f4 = enabled ? formatter : () => String;
|
|
77577
|
-
return {
|
|
77578
|
-
isColorSupported: enabled,
|
|
77579
|
-
reset: f4("\x1B[0m", "\x1B[0m"),
|
|
77580
|
-
bold: f4("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
|
|
77581
|
-
dim: f4("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
|
|
77582
|
-
italic: f4("\x1B[3m", "\x1B[23m"),
|
|
77583
|
-
underline: f4("\x1B[4m", "\x1B[24m"),
|
|
77584
|
-
inverse: f4("\x1B[7m", "\x1B[27m"),
|
|
77585
|
-
hidden: f4("\x1B[8m", "\x1B[28m"),
|
|
77586
|
-
strikethrough: f4("\x1B[9m", "\x1B[29m"),
|
|
77587
|
-
black: f4("\x1B[30m", "\x1B[39m"),
|
|
77588
|
-
red: f4("\x1B[31m", "\x1B[39m"),
|
|
77589
|
-
green: f4("\x1B[32m", "\x1B[39m"),
|
|
77590
|
-
yellow: f4("\x1B[33m", "\x1B[39m"),
|
|
77591
|
-
blue: f4("\x1B[34m", "\x1B[39m"),
|
|
77592
|
-
magenta: f4("\x1B[35m", "\x1B[39m"),
|
|
77593
|
-
cyan: f4("\x1B[36m", "\x1B[39m"),
|
|
77594
|
-
white: f4("\x1B[37m", "\x1B[39m"),
|
|
77595
|
-
gray: f4("\x1B[90m", "\x1B[39m"),
|
|
77596
|
-
bgBlack: f4("\x1B[40m", "\x1B[49m"),
|
|
77597
|
-
bgRed: f4("\x1B[41m", "\x1B[49m"),
|
|
77598
|
-
bgGreen: f4("\x1B[42m", "\x1B[49m"),
|
|
77599
|
-
bgYellow: f4("\x1B[43m", "\x1B[49m"),
|
|
77600
|
-
bgBlue: f4("\x1B[44m", "\x1B[49m"),
|
|
77601
|
-
bgMagenta: f4("\x1B[45m", "\x1B[49m"),
|
|
77602
|
-
bgCyan: f4("\x1B[46m", "\x1B[49m"),
|
|
77603
|
-
bgWhite: f4("\x1B[47m", "\x1B[49m"),
|
|
77604
|
-
blackBright: f4("\x1B[90m", "\x1B[39m"),
|
|
77605
|
-
redBright: f4("\x1B[91m", "\x1B[39m"),
|
|
77606
|
-
greenBright: f4("\x1B[92m", "\x1B[39m"),
|
|
77607
|
-
yellowBright: f4("\x1B[93m", "\x1B[39m"),
|
|
77608
|
-
blueBright: f4("\x1B[94m", "\x1B[39m"),
|
|
77609
|
-
magentaBright: f4("\x1B[95m", "\x1B[39m"),
|
|
77610
|
-
cyanBright: f4("\x1B[96m", "\x1B[39m"),
|
|
77611
|
-
whiteBright: f4("\x1B[97m", "\x1B[39m"),
|
|
77612
|
-
bgBlackBright: f4("\x1B[100m", "\x1B[49m"),
|
|
77613
|
-
bgRedBright: f4("\x1B[101m", "\x1B[49m"),
|
|
77614
|
-
bgGreenBright: f4("\x1B[102m", "\x1B[49m"),
|
|
77615
|
-
bgYellowBright: f4("\x1B[103m", "\x1B[49m"),
|
|
77616
|
-
bgBlueBright: f4("\x1B[104m", "\x1B[49m"),
|
|
77617
|
-
bgMagentaBright: f4("\x1B[105m", "\x1B[49m"),
|
|
77618
|
-
bgCyanBright: f4("\x1B[106m", "\x1B[49m"),
|
|
77619
|
-
bgWhiteBright: f4("\x1B[107m", "\x1B[49m")
|
|
77620
|
-
};
|
|
77621
|
-
};
|
|
77622
|
-
module.exports = createColors();
|
|
77623
|
-
module.exports.createColors = createColors;
|
|
77624
|
-
});
|
|
77625
|
-
|
|
77626
77574
|
// src/commands/watch/phases/implementation-git-helpers.ts
|
|
77627
77575
|
import { spawn as spawn5 } from "node:child_process";
|
|
77628
77576
|
async function getCurrentBranch2(cwd2) {
|
|
@@ -82859,12 +82807,12 @@ var BANNER_LINES;
|
|
|
82859
82807
|
var init_help_banner = __esm(() => {
|
|
82860
82808
|
init_help_colors();
|
|
82861
82809
|
BANNER_LINES = [
|
|
82862
|
-
"
|
|
82863
|
-
"
|
|
82864
|
-
"
|
|
82865
|
-
"
|
|
82866
|
-
"
|
|
82867
|
-
"
|
|
82810
|
+
" █████╗ ██╗ ██╗",
|
|
82811
|
+
"██╔══██╗██║ ██╔╝",
|
|
82812
|
+
"╚██████║█████╔╝ ",
|
|
82813
|
+
" ╚═══██║██╔═██╗ ",
|
|
82814
|
+
" █████╔╝██║ ██╗",
|
|
82815
|
+
" ╚════╝ ╚═╝ ╚═╝"
|
|
82868
82816
|
];
|
|
82869
82817
|
});
|
|
82870
82818
|
|
|
@@ -84672,7 +84620,7 @@ function getBaseUrl() {
|
|
|
84672
84620
|
return (process.env.NK_BASE_URL ?? "https://ninekit.chiendt.io.vn").replace(/\/$/, "");
|
|
84673
84621
|
}
|
|
84674
84622
|
|
|
84675
|
-
class
|
|
84623
|
+
class NinekitHttpClient {
|
|
84676
84624
|
apiKey;
|
|
84677
84625
|
baseUrl;
|
|
84678
84626
|
constructor(apiKey, baseUrl) {
|
|
@@ -84755,7 +84703,7 @@ function createApiClient(claudeDir) {
|
|
|
84755
84703
|
if (!apiKey) {
|
|
84756
84704
|
throw new CkApiError("MISSING_API_KEY", "No API key found. Run `nk api setup` to configure your NineKit API key.", 401);
|
|
84757
84705
|
}
|
|
84758
|
-
return new
|
|
84706
|
+
return new NinekitHttpClient(apiKey);
|
|
84759
84707
|
}
|
|
84760
84708
|
|
|
84761
84709
|
// src/commands/api/reviewweb/reviewweb-extract-handler.ts
|
|
@@ -85659,6 +85607,7 @@ import { basename as basename4, join as join13, resolve as resolve6, sep as sep3
|
|
|
85659
85607
|
// src/services/file-operations/destructive-operation-backup.ts
|
|
85660
85608
|
init_logger();
|
|
85661
85609
|
init_path_resolver();
|
|
85610
|
+
init_kit();
|
|
85662
85611
|
init_zod();
|
|
85663
85612
|
var import_fs_extra = __toESM(require_lib(), 1);
|
|
85664
85613
|
import { mkdir as mkdir4, readdir as readdir2, readlink, rename as rename2, symlink } from "node:fs/promises";
|
|
@@ -85706,7 +85655,7 @@ var destructiveOperationBackupManifestSchema = exports_external.object({
|
|
|
85706
85655
|
createdAt: exports_external.string().datetime(),
|
|
85707
85656
|
sourceRoot: exports_external.string().min(1),
|
|
85708
85657
|
scope: exports_external.string().optional(),
|
|
85709
|
-
kit:
|
|
85658
|
+
kit: KitType.optional(),
|
|
85710
85659
|
items: exports_external.array(destructiveOperationBackupItemSchema),
|
|
85711
85660
|
restoreNotes: exports_external.array(exports_external.string())
|
|
85712
85661
|
});
|
|
@@ -89793,70 +89742,70 @@ init_shared2();
|
|
|
89793
89742
|
init_hook_health_checker();
|
|
89794
89743
|
|
|
89795
89744
|
// src/domains/health-checks/ninekit-checker.ts
|
|
89796
|
-
class
|
|
89745
|
+
class NinekitChecker {
|
|
89797
89746
|
group = "ninekit";
|
|
89798
89747
|
projectDir;
|
|
89799
89748
|
constructor(projectDir = process.cwd()) {
|
|
89800
89749
|
this.projectDir = projectDir;
|
|
89801
89750
|
}
|
|
89802
89751
|
async run() {
|
|
89803
|
-
logger.verbose("
|
|
89752
|
+
logger.verbose("NinekitChecker: Scanning NineKit setup", {
|
|
89804
89753
|
projectDir: this.projectDir
|
|
89805
89754
|
});
|
|
89806
89755
|
const setup = await getNineKitSetup(this.projectDir);
|
|
89807
|
-
logger.verbose("
|
|
89756
|
+
logger.verbose("NinekitChecker: Setup scan complete");
|
|
89808
89757
|
const results = [];
|
|
89809
|
-
logger.verbose("
|
|
89758
|
+
logger.verbose("NinekitChecker: Checking CLI version");
|
|
89810
89759
|
results.push(await checkCliVersion());
|
|
89811
|
-
logger.verbose("
|
|
89760
|
+
logger.verbose("NinekitChecker: Checking CLI install method");
|
|
89812
89761
|
results.push(await checkCliInstallMethod());
|
|
89813
|
-
logger.verbose("
|
|
89762
|
+
logger.verbose("NinekitChecker: Checking global install");
|
|
89814
89763
|
results.push(checkGlobalInstall(setup));
|
|
89815
|
-
logger.verbose("
|
|
89764
|
+
logger.verbose("NinekitChecker: Checking project install");
|
|
89816
89765
|
results.push(checkProjectInstall(setup));
|
|
89817
|
-
logger.verbose("
|
|
89766
|
+
logger.verbose("NinekitChecker: Checking CLAUDE.md files");
|
|
89818
89767
|
results.push(...checkClaudeMd(setup, this.projectDir));
|
|
89819
|
-
logger.verbose("
|
|
89768
|
+
logger.verbose("NinekitChecker: Checking active plan");
|
|
89820
89769
|
results.push(checkActivePlan(this.projectDir));
|
|
89821
|
-
logger.verbose("
|
|
89770
|
+
logger.verbose("NinekitChecker: Checking skills scripts");
|
|
89822
89771
|
results.push(...checkSkillsScripts(setup));
|
|
89823
|
-
logger.verbose("
|
|
89772
|
+
logger.verbose("NinekitChecker: Checking component counts");
|
|
89824
89773
|
results.push(checkComponentCounts(setup));
|
|
89825
|
-
logger.verbose("
|
|
89774
|
+
logger.verbose("NinekitChecker: Checking skill budget");
|
|
89826
89775
|
results.push(...await checkSkillBudget(setup, this.projectDir));
|
|
89827
|
-
logger.verbose("
|
|
89776
|
+
logger.verbose("NinekitChecker: Checking required environment keys");
|
|
89828
89777
|
results.push(...await checkEnvKeys(setup));
|
|
89829
|
-
logger.verbose("
|
|
89778
|
+
logger.verbose("NinekitChecker: Checking global dir readability");
|
|
89830
89779
|
results.push(await checkGlobalDirReadable());
|
|
89831
|
-
logger.verbose("
|
|
89780
|
+
logger.verbose("NinekitChecker: Checking global dir writability");
|
|
89832
89781
|
results.push(await checkGlobalDirWritable());
|
|
89833
|
-
logger.verbose("
|
|
89782
|
+
logger.verbose("NinekitChecker: Checking hooks directory");
|
|
89834
89783
|
results.push(await checkHooksExist(this.projectDir));
|
|
89835
|
-
logger.verbose("
|
|
89784
|
+
logger.verbose("NinekitChecker: Checking hook syntax");
|
|
89836
89785
|
results.push(await checkHookSyntax(this.projectDir));
|
|
89837
|
-
logger.verbose("
|
|
89786
|
+
logger.verbose("NinekitChecker: Checking hook dependencies");
|
|
89838
89787
|
results.push(await checkHookDeps(this.projectDir));
|
|
89839
|
-
logger.verbose("
|
|
89788
|
+
logger.verbose("NinekitChecker: Checking hook runtime");
|
|
89840
89789
|
results.push(await checkHookRuntime(this.projectDir));
|
|
89841
|
-
logger.verbose("
|
|
89790
|
+
logger.verbose("NinekitChecker: Checking hook command paths");
|
|
89842
89791
|
results.push(await checkHookCommandPaths(this.projectDir));
|
|
89843
|
-
logger.verbose("
|
|
89792
|
+
logger.verbose("NinekitChecker: Checking legacy hook prompts");
|
|
89844
89793
|
results.push(await checkLegacyHookPrompts(this.projectDir));
|
|
89845
|
-
logger.verbose("
|
|
89794
|
+
logger.verbose("NinekitChecker: Checking hook file references");
|
|
89846
89795
|
results.push(await checkHookFileReferences(this.projectDir));
|
|
89847
|
-
logger.verbose("
|
|
89796
|
+
logger.verbose("NinekitChecker: Checking hook config");
|
|
89848
89797
|
results.push(await checkHookConfig(this.projectDir));
|
|
89849
|
-
logger.verbose("
|
|
89798
|
+
logger.verbose("NinekitChecker: Checking hook crash logs");
|
|
89850
89799
|
results.push(await checkHookLogs(this.projectDir));
|
|
89851
|
-
logger.verbose("
|
|
89800
|
+
logger.verbose("NinekitChecker: Checking Python venv");
|
|
89852
89801
|
results.push(await checkPythonVenv(this.projectDir));
|
|
89853
|
-
logger.verbose("
|
|
89802
|
+
logger.verbose("NinekitChecker: Checking settings.json validity");
|
|
89854
89803
|
results.push(await checkSettingsValid(this.projectDir));
|
|
89855
|
-
logger.verbose("
|
|
89804
|
+
logger.verbose("NinekitChecker: Checking path references");
|
|
89856
89805
|
results.push(await checkPathRefsValid(this.projectDir));
|
|
89857
|
-
logger.verbose("
|
|
89806
|
+
logger.verbose("NinekitChecker: Checking project config completeness");
|
|
89858
89807
|
results.push(await checkProjectConfigCompleteness(setup, this.projectDir));
|
|
89859
|
-
logger.verbose("
|
|
89808
|
+
logger.verbose("NinekitChecker: All checks complete");
|
|
89860
89809
|
return results;
|
|
89861
89810
|
}
|
|
89862
89811
|
}
|
|
@@ -91061,7 +91010,7 @@ class ReportGenerator {
|
|
|
91061
91010
|
const divider = "=".repeat(65);
|
|
91062
91011
|
const sectionDivider = "─".repeat(65);
|
|
91063
91012
|
lines.push(divider);
|
|
91064
|
-
lines.push("
|
|
91013
|
+
lines.push("NINEKIT DIAGNOSTIC REPORT");
|
|
91065
91014
|
lines.push(`Generated: ${summary.timestamp}`);
|
|
91066
91015
|
lines.push(`CLI Version: ${this.getSystemInfo().cliVersion}`);
|
|
91067
91016
|
lines.push(divider);
|
|
@@ -91447,7 +91396,7 @@ async function doctorCommand(options2 = {}) {
|
|
|
91447
91396
|
function createDoctorRunner(options2) {
|
|
91448
91397
|
const runner = new CheckRunner(options2);
|
|
91449
91398
|
runner.registerChecker(new SystemChecker);
|
|
91450
|
-
runner.registerChecker(new
|
|
91399
|
+
runner.registerChecker(new NinekitChecker);
|
|
91451
91400
|
runner.registerChecker(new AuthChecker);
|
|
91452
91401
|
runner.registerChecker(new PlatformChecker);
|
|
91453
91402
|
runner.registerChecker(new NetworkChecker);
|
|
@@ -106488,7 +106437,7 @@ import { basename as basename29, join as join142, resolve as resolve50 } from "n
|
|
|
106488
106437
|
init_logger();
|
|
106489
106438
|
|
|
106490
106439
|
// src/ui/nk-cli-design/tokens.ts
|
|
106491
|
-
var import_picocolors27 = __toESM(
|
|
106440
|
+
var import_picocolors27 = __toESM(require_picocolors(), 1);
|
|
106492
106441
|
import { homedir as homedir48, platform as platform12 } from "node:os";
|
|
106493
106442
|
import { resolve as resolve49, win32 } from "node:path";
|
|
106494
106443
|
var PANEL_MIN_WIDTH = 60;
|
|
@@ -110389,26 +110338,19 @@ async function handleOptionalPackages(ctx) {
|
|
|
110389
110338
|
};
|
|
110390
110339
|
}
|
|
110391
110340
|
// src/commands/setup/phases/kit-selection.ts
|
|
110341
|
+
init_kit();
|
|
110392
110342
|
init_dist2();
|
|
110393
110343
|
async function handleKitSelection(ctx) {
|
|
110394
110344
|
f2.step("Kit selection and installation");
|
|
110345
|
+
const kitOptions = Object.entries(AVAILABLE_KITS).map(([key, config]) => ({ value: key, label: config.name }));
|
|
110395
110346
|
const kit = await ie({
|
|
110396
110347
|
message: "Which NineKit starter kit do you want to install?",
|
|
110397
|
-
options:
|
|
110398
|
-
{
|
|
110399
|
-
value: "engineer",
|
|
110400
|
-
label: "NineKit Engineer - AI-powered coding toolkit"
|
|
110401
|
-
},
|
|
110402
|
-
{
|
|
110403
|
-
value: "marketing",
|
|
110404
|
-
label: "NineKit Marketing - Content automation toolkit"
|
|
110405
|
-
}
|
|
110406
|
-
]
|
|
110348
|
+
options: kitOptions
|
|
110407
110349
|
});
|
|
110408
110350
|
if (lD(kit)) {
|
|
110409
110351
|
return { ...ctx, cancelled: true };
|
|
110410
110352
|
}
|
|
110411
|
-
f2.info(`Installing ${kit
|
|
110353
|
+
f2.info(`Installing ${AVAILABLE_KITS[kit].name}...`);
|
|
110412
110354
|
try {
|
|
110413
110355
|
await initCommand({
|
|
110414
110356
|
dir: ctx.targetDir,
|
|
@@ -114344,57 +114286,8 @@ function detectLegacyEnvVars(opts = {}) {
|
|
|
114344
114286
|
`));
|
|
114345
114287
|
}
|
|
114346
114288
|
|
|
114347
|
-
// src/migrations/migrate-claudekit-state.ts
|
|
114348
|
-
init_logger();
|
|
114349
|
-
import { cpSync, existsSync as existsSync92, mkdirSync as mkdirSync9, readFileSync as readFileSync24, renameSync as renameSync2, writeFileSync as writeFileSync8 } from "node:fs";
|
|
114350
|
-
import { homedir as homedir60 } from "node:os";
|
|
114351
|
-
import { join as join172 } from "node:path";
|
|
114352
|
-
var STDOUT_IS_JSON2 = () => process.argv.includes("--json") || process.env.NK_JSON_OUTPUT === "1";
|
|
114353
|
-
function migrateClaudekitState(opts = {}) {
|
|
114354
|
-
const home5 = opts.home ?? homedir60();
|
|
114355
|
-
const oldDir = join172(home5, ".claudekit");
|
|
114356
|
-
const newDir = join172(home5, ".ninekit");
|
|
114357
|
-
const marker = join172(newDir, ".migrated-from-claudekit");
|
|
114358
|
-
const markerTmp = `${marker}.tmp`;
|
|
114359
|
-
if (!existsSync92(oldDir))
|
|
114360
|
-
return;
|
|
114361
|
-
if (existsSync92(marker))
|
|
114362
|
-
return;
|
|
114363
|
-
try {
|
|
114364
|
-
mkdirSync9(newDir, { recursive: true, mode: 493 });
|
|
114365
|
-
cpSync(oldDir, newDir, { recursive: true, errorOnExist: false, force: false });
|
|
114366
|
-
rewriteLegacyEnumStrings(newDir);
|
|
114367
|
-
writeFileSync8(markerTmp, `migrated_at=${new Date().toISOString()}
|
|
114368
|
-
source=${oldDir}
|
|
114369
|
-
`);
|
|
114370
|
-
renameSync2(markerTmp, marker);
|
|
114371
|
-
if (!STDOUT_IS_JSON2()) {
|
|
114372
|
-
logger.info("[migration] Copied ~/.claudekit/ -> ~/.ninekit/ (original preserved).");
|
|
114373
|
-
}
|
|
114374
|
-
} catch (err) {
|
|
114375
|
-
if (!STDOUT_IS_JSON2()) {
|
|
114376
|
-
logger.error(`[migration] Failed to migrate claudekit state: ${err.message}`);
|
|
114377
|
-
}
|
|
114378
|
-
}
|
|
114379
|
-
}
|
|
114380
|
-
function rewriteLegacyEnumStrings(dir) {
|
|
114381
|
-
const candidates = [join172(dir, "projects.json"), join172(dir, "config.json")];
|
|
114382
|
-
for (const file of candidates) {
|
|
114383
|
-
if (!existsSync92(file))
|
|
114384
|
-
continue;
|
|
114385
|
-
try {
|
|
114386
|
-
const raw = readFileSync24(file, "utf8");
|
|
114387
|
-
if (!raw.includes('"claudekit"'))
|
|
114388
|
-
continue;
|
|
114389
|
-
const patched = raw.replace(/"claudekit"/g, '"ninekit"');
|
|
114390
|
-
writeFileSync8(file, patched);
|
|
114391
|
-
} catch {}
|
|
114392
|
-
}
|
|
114393
|
-
}
|
|
114394
|
-
|
|
114395
114289
|
// src/migrations/index.ts
|
|
114396
114290
|
function runLegacyMigrations() {
|
|
114397
|
-
migrateClaudekitState();
|
|
114398
114291
|
detectLegacyEnvVars();
|
|
114399
114292
|
}
|
|
114400
114293
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Fira Sans,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Menlo,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.dash-panel{border-radius:.75rem;border-width:1px;border-color:var(--dash-border);background-color:var(--dash-surface);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dash-sticky-glass{background-color:var(--dash-surface)}@supports ((backdrop-filter: blur(6px)) or (-webkit-backdrop-filter: blur(6px))){.dash-sticky-glass{background-color:color-mix(in srgb,var(--dash-surface) 90%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}}.dash-panel-muted{border-radius:.75rem;border-width:1px;border-color:var(--dash-border);background-color:var(--dash-bg)}.dash-focus-ring:focus{outline:2px solid transparent;outline-offset:2px}.dash-focus-ring:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: var(--dash-accent);--tw-ring-offset-width: 2px;--tw-ring-offset-color: var(--dash-bg)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-bottom-24{bottom:-6rem}.-bottom-28{bottom:-7rem}.-left-1{left:-.25rem}.-left-10{left:-2.5rem}.-left-\[14px\]{left:-14px}.-right-8{right:-2rem}.-top-1{top:-.25rem}.-top-20{top:-5rem}.-top-24{top:-6rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.left-0{left:0}.left-14{left:3.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[5px\]{left:5px}.right-0{right:0}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-3{right:.75rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-6{top:1.5rem}.top-full{top:100%}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.m-0{margin:0}.m-2{margin:.5rem}.m-auto{margin:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-\[7px\]{margin-left:-7px}.-mr-\[7px\]{margin-right:-7px}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-\[11px\]{height:11px}.h-\[18px\]{height:18px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0px}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-\[2000px\]{max-height:2000px}.max-h-\[420px\]{max-height:420px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[calc\(100vh-200px\)\]{max-height:calc(100vh - 200px)}.max-h-none{max-height:none}.min-h-0{min-height:0px}.min-h-\[160px\]{min-height:160px}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[200px\]{min-height:200px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-\[11px\]{width:11px}.w-\[18px\]{width:18px}.w-\[480px\]{width:480px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[1\.5rem\]{min-width:1.5rem}.min-w-\[140px\]{min-width:140px}.min-w-\[220px\]{min-width:220px}.min-w-full{min-width:100%}.max-w-20{max-width:5rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[1600px\]{max-width:1600px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[600px\]{max-width:600px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-6{--tw-translate-x: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[1\.02\]{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.scroll-mt-24{scroll-margin-top:6rem}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[1fr_120px_200px_100px\]{grid-template-columns:1fr 120px 200px 100px}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.5rem * var(--tw-space-x-reverse));margin-left:calc(-.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-dash-border>:not([hidden])~:not([hidden]){border-color:var(--dash-border)}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[1\.5rem\]{border-radius:1.5rem}.rounded-\[2\.5rem\]{border-radius:2.5rem}.rounded-\[2rem\]{border-radius:2rem}.rounded-\[calc\(1\.5rem-0\.25rem\)\]{border-radius:1.25rem}.rounded-\[calc\(2\.5rem-0\.5rem\)\]{border-radius:2rem}.rounded-\[calc\(2rem-0\.25rem\)\]{border-radius:1.75rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[3px\]{border-width:3px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[\#313244\]{--tw-border-opacity: 1;border-color:rgb(49 50 68 / var(--tw-border-opacity, 1))}.border-\[var\(--dash-accent\)\]{border-color:var(--dash-accent)}.border-\[var\(--dash-border\)\]{border-color:var(--dash-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400\/20{border-color:#fbbf2433}.border-amber-500{--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.border-amber-500\/20{border-color:#f59e0b33}.border-amber-500\/25{border-color:#f59e0b40}.border-amber-500\/30{border-color:#f59e0b4d}.border-blue-200\/60{border-color:#bfdbfe99}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500\/20{border-color:#3b82f633}.border-cyan-200{--tw-border-opacity: 1;border-color:rgb(165 243 252 / var(--tw-border-opacity, 1))}.border-cyan-500{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.border-cyan-500\/30{border-color:#06b6d44d}.border-dash-accent{border-color:var(--dash-accent)}.border-dash-border{border-color:var(--dash-border)}.border-dash-text-muted{border-color:var(--dash-text-muted)}.border-dash-text-secondary{border-color:var(--dash-text-secondary)}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-emerald-400\/20{border-color:#34d39933}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity, 1))}.border-emerald-500\/20{border-color:#10b98133}.border-emerald-500\/30{border-color:#10b9814d}.border-fuchsia-200{--tw-border-opacity: 1;border-color:rgb(245 208 254 / var(--tw-border-opacity, 1))}.border-fuchsia-500{--tw-border-opacity: 1;border-color:rgb(217 70 239 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity, 1))}.border-green-400\/20{border-color:#4ade8033}.border-green-500\/30{border-color:#22c55e4d}.border-green-500\/35{border-color:#22c55e59}.border-indigo-100{--tw-border-opacity: 1;border-color:rgb(224 231 255 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-500\/20{border-color:#f9731633}.border-orange-500\/30{border-color:#f973164d}.border-orange-500\/40{border-color:#f9731666}.border-pink-500\/10{border-color:#ec48991a}.border-pink-500\/20{border-color:#ec489933}.border-pink-500\/30{border-color:#ec48994d}.border-purple-500\/30{border-color:#a855f74d}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-400\/20{border-color:#f8717133}.border-red-500\/20{border-color:#ef444433}.border-red-500\/30{border-color:#ef44444d}.border-red-500\/40{border-color:#ef444466}.border-rose-200{--tw-border-opacity: 1;border-color:rgb(254 205 211 / var(--tw-border-opacity, 1))}.border-rose-400\/20{border-color:#fb718533}.border-rose-500{--tw-border-opacity: 1;border-color:rgb(244 63 94 / var(--tw-border-opacity, 1))}.border-rose-500\/20{border-color:#f43f5e33}.border-rose-500\/30{border-color:#f43f5e4d}.border-sky-400\/20{border-color:#38bdf833}.border-sky-500\/20{border-color:#0ea5e933}.border-sky-500\/30{border-color:#0ea5e94d}.border-slate-500\/20{border-color:#64748b33}.border-teal-500\/30{border-color:#14b8a64d}.border-transparent{border-color:transparent}.border-violet-200{--tw-border-opacity: 1;border-color:rgb(221 214 254 / var(--tw-border-opacity, 1))}.border-violet-400\/20{border-color:#a78bfa33}.border-violet-500{--tw-border-opacity: 1;border-color:rgb(139 92 246 / var(--tw-border-opacity, 1))}.border-violet-500\/20{border-color:#8b5cf633}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-white\/10{border-color:#ffffff1a}.border-white\/20{border-color:#fff3}.border-white\/5{border-color:#ffffff0d}.border-yellow-400{--tw-border-opacity: 1;border-color:rgb(250 204 21 / var(--tw-border-opacity, 1))}.border-yellow-500\/25{border-color:#eab30840}.border-yellow-500\/30{border-color:#eab3084d}.border-t-transparent{border-top-color:transparent}.bg-\[\#1e1e2e\]{--tw-bg-opacity: 1;background-color:rgb(30 30 46 / var(--tw-bg-opacity, 1))}.bg-\[\#a6e3a1\]{--tw-bg-opacity: 1;background-color:rgb(166 227 161 / var(--tw-bg-opacity, 1))}.bg-\[\#e85d4a\]\/20{background-color:#e85d4a33}.bg-\[\#f38ba8\]{--tw-bg-opacity: 1;background-color:rgb(243 139 168 / var(--tw-bg-opacity, 1))}.bg-\[\#f9e2af\]{--tw-bg-opacity: 1;background-color:rgb(249 226 175 / var(--tw-bg-opacity, 1))}.bg-\[var\(--dash-accent\)\]{background-color:var(--dash-accent)}.bg-\[var\(--dash-bg\)\]{background-color:var(--dash-bg)}.bg-\[var\(--dash-border\)\]{background-color:var(--dash-border)}.bg-\[var\(--dash-surface\)\]{background-color:var(--dash-surface)}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-400\/10{background-color:#fbbf241a}.bg-amber-400\/80{background-color:#fbbf24cc}.bg-amber-50\/80{background-color:#fffbebcc}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/15{background-color:#f59e0b26}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-black\/50{background-color:#00000080}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50\/50{background-color:#eff6ff80}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/20{background-color:#3b82f633}.bg-blue-500\/5{background-color:#3b82f60d}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-cyan-50\/80{background-color:#ecfeffcc}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity, 1))}.bg-cyan-500\/5{background-color:#06b6d40d}.bg-dash-accent{background-color:var(--dash-accent)}.bg-dash-accent-subtle{background-color:var(--dash-accent-subtle)}.bg-dash-bg{background-color:var(--dash-bg)}.bg-dash-border{background-color:var(--dash-border)}.bg-dash-surface{background-color:var(--dash-surface)}.bg-dash-surface-hover{background-color:var(--dash-surface-hover)}.bg-dash-text{background-color:var(--dash-text)}.bg-dash-text-muted{background-color:var(--dash-text-muted)}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-400\/10{background-color:#34d3991a}.bg-emerald-400\/80{background-color:#34d399cc}.bg-emerald-50\/80{background-color:#ecfdf5cc}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/20{background-color:#10b98133}.bg-emerald-500\/5{background-color:#10b9810d}.bg-emerald-500\/50{background-color:#10b98180}.bg-fuchsia-50\/80{background-color:#fdf4ffcc}.bg-fuchsia-500{--tw-bg-opacity: 1;background-color:rgb(217 70 239 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500\/10{background-color:#6b72801a}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/20{background-color:#22c55e33}.bg-indigo-500\/5{background-color:#6366f10d}.bg-orange-400{--tw-bg-opacity: 1;background-color:rgb(251 146 60 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500\/10{background-color:#f973161a}.bg-orange-500\/5{background-color:#f973160d}.bg-pink-500\/10{background-color:#ec48991a}.bg-pink-500\/5{background-color:#ec48990d}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-400\/10{background-color:#f871711a}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/5{background-color:#ef44440d}.bg-rose-400\/10{background-color:#fb71851a}.bg-rose-400\/80{background-color:#fb7185cc}.bg-rose-50\/80{background-color:#fff1f2cc}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity, 1))}.bg-rose-500\/10{background-color:#f43f5e1a}.bg-sky-400\/10{background-color:#38bdf81a}.bg-sky-400\/80{background-color:#38bdf8cc}.bg-sky-500{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity, 1))}.bg-sky-500\/10{background-color:#0ea5e91a}.bg-slate-500\/10{background-color:#64748b1a}.bg-transparent{background-color:transparent}.bg-violet-400\/10{background-color:#a78bfa1a}.bg-violet-400\/80{background-color:#a78bfacc}.bg-violet-50\/80{background-color:#f5f3ffcc}.bg-violet-500{--tw-bg-opacity: 1;background-color:rgb(139 92 246 / var(--tw-bg-opacity, 1))}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-violet-500\/5{background-color:#8b5cf60d}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/70{background-color:#ffffffb3}.bg-white\/80{background-color:#fffc}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-300\/40{background-color:#fde04766}.bg-yellow-300\/60{background-color:#fde04799}.bg-yellow-500\/10{background-color:#eab3081a}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-400{--tw-gradient-from: #fbbf24 var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-amber-500\/40{--tw-gradient-from: rgb(245 158 11 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400{--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-400{--tw-gradient-from: #34d399 var(--tw-gradient-from-position);--tw-gradient-to: rgb(52 211 153 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/40{--tw-gradient-from: rgb(16 185 129 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-fuchsia-400{--tw-gradient-from: #e879f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(232 121 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-400{--tw-gradient-from: #fb7185 var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 113 133 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-sky-500\/40{--tw-gradient-from: rgb(14 165 233 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(14 165 233 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-violet-400{--tw-gradient-from: #a78bfa var(--tw-gradient-from-position);--tw-gradient-to: rgb(167 139 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-dash-accent{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--dash-accent) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-500\/20{--tw-gradient-to: rgb(245 158 11 / .2) var(--tw-gradient-to-position)}.to-blue-500{--tw-gradient-to: #3b82f6 var(--tw-gradient-to-position)}.to-dash-accent{--tw-gradient-to: var(--dash-accent) var(--tw-gradient-to-position)}.to-emerald-500\/20{--tw-gradient-to: rgb(16 185 129 / .2) var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to: #faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-sky-500\/20{--tw-gradient-to: rgb(14 165 233 / .2) var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to: #eab308 var(--tw-gradient-to-position)}.stroke-current{stroke:currentColor}.stroke-dash-text-muted{stroke:var(--dash-text-muted)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-\[12vh\]{padding-top:12vh}.pt-\[1px\]{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Menlo,monospace}.font-sans{font-family:Fira Sans,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.1em\]{letter-spacing:.1em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-\[\#6c7086\]{--tw-text-opacity: 1;color:rgb(108 112 134 / var(--tw-text-opacity, 1))}.text-\[\#e85d4a\]{--tw-text-opacity: 1;color:rgb(232 93 74 / var(--tw-text-opacity, 1))}.text-\[var\(--dash-accent\)\]{color:var(--dash-accent)}.text-\[var\(--dash-text\)\]{color:var(--dash-text)}.text-\[var\(--dash-text-muted\)\]{color:var(--dash-text-muted)}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-400\/90{color:#fbbf24e6}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-cyan-700{--tw-text-opacity: 1;color:rgb(14 116 144 / var(--tw-text-opacity, 1))}.text-dash-accent{color:var(--dash-accent)}.text-dash-bg{color:var(--dash-bg)}.text-dash-text{color:var(--dash-text)}.text-dash-text-muted{color:var(--dash-text-muted)}.text-dash-text-secondary{color:var(--dash-text-secondary)}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-400\/90{color:#34d399e6}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-fuchsia-700{--tw-text-opacity: 1;color:rgb(162 28 175 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-pink-400{--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.text-pink-500{--tw-text-opacity: 1;color:rgb(236 72 153 / var(--tw-text-opacity, 1))}.text-pink-500\/50{color:#ec489980}.text-pink-500\/70{color:#ec4899b3}.text-pink-600{--tw-text-opacity: 1;color:rgb(219 39 119 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-300\/80{color:#fca5a5cc}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\/80{color:#f87171cc}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-400{--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity, 1))}.text-rose-400\/90{color:#fb7185e6}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.text-sky-100{--tw-text-opacity: 1;color:rgb(224 242 254 / var(--tw-text-opacity, 1))}.text-sky-400\/90{color:#38bdf8e6}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity, 1))}.text-violet-400{--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.text-violet-400\/90{color:#a78bfae6}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.placeholder-dash-text-muted::-moz-placeholder{color:var(--dash-text-muted)}.placeholder-dash-text-muted::placeholder{color:var(--dash-text-muted)}.accent-dash-accent{accent-color:var(--dash-accent)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-\[0\.03\]{opacity:.03}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(255\,255\,255\,0\.1\)\]{--tw-shadow: 0 0 12px rgba(255,255,255,.1);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_currentColor\]{--tw-shadow: 0 0 8px currentColor;--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_var\(--dash-accent-glow\)\]{--tw-shadow: 0 0 8px var(--dash-accent-glow);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_1px_1px_rgba\(255\,255\,255\,0\.05\)\]{--tw-shadow: inset 0 1px 1px rgba(255,255,255,.05);--tw-shadow-colored: inset 0 1px 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_1px_2px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow: inset 0 1px 2px rgba(0,0,0,.2);--tw-shadow-colored: inset 0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-amber-500\/20{--tw-shadow-color: rgb(245 158 11 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-500\/20{--tw-shadow-color: rgb(6 182 212 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-emerald-500\/20{--tw-shadow-color: rgb(16 185 129 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-fuchsia-500\/20{--tw-shadow-color: rgb(217 70 239 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-500\/20{--tw-shadow-color: rgb(34 197 94 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-rose-500\/20{--tw-shadow-color: rgb(244 63 94 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-violet-500\/20{--tw-shadow-color: rgb(139 92 246 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-dash-accent{--tw-ring-color: var(--dash-accent)}.ring-dash-surface{--tw-ring-color: var(--dash-surface)}.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)}.blur-3xl{--tw-blur: blur(64px);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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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)}.drop-shadow-sm{--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / .05));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)}.invert{--tw-invert: invert(100%);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-3xl{--tw-backdrop-blur: blur(64px);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-md{--tw-backdrop-blur: blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);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(24px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-\[cubic-bezier\(0\.32\,0\.72\,0\,1\)\]{transition-timing-function:cubic-bezier(.32,.72,0,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}html,body,#root{height:100%}body{background-image:radial-gradient(circle at 92% -6%,color-mix(in srgb,var(--dash-accent) 16%,transparent),transparent 38%),radial-gradient(circle at -12% 102%,color-mix(in srgb,var(--dash-accent) 12%,transparent),transparent 42%);background-attachment:fixed}*{scrollbar-width:thin;scrollbar-color:var(--dash-border) transparent}::-moz-selection{background-color:var(--dash-accent-selection)!important;color:var(--dash-text)!important}::selection{background-color:var(--dash-accent-selection)!important;color:var(--dash-text)!important}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-thumb{background:var(--dash-border);border-radius:3px}@keyframes slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.animate-slide-in{animation:slide-in .2s ease-out}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.placeholder\:text-dash-text-muted::-moz-placeholder{color:var(--dash-text-muted)}.placeholder\:text-dash-text-muted::placeholder{color:var(--dash-text-muted)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.backdrop\:bg-black\/50::backdrop{background-color:#00000080}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-400:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.hover\:border-dash-accent:hover{border-color:var(--dash-accent)}.hover\:border-dash-border:hover{border-color:var(--dash-border)}.hover\:border-dash-text-muted:hover{border-color:var(--dash-text-muted)}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:border-yellow-500\/40:hover{border-color:#eab30866}.hover\:bg-\[var\(--dash-surface-hover\)\]:hover{background-color:var(--dash-surface-hover)}.hover\:bg-dash-accent:hover{background-color:var(--dash-accent)}.hover\:bg-dash-accent-glow:hover{background-color:var(--dash-accent-glow)}.hover\:bg-dash-accent-hover:hover{background-color:var(--dash-accent-hover)}.hover\:bg-dash-bg:hover{background-color:var(--dash-bg)}.hover\:bg-dash-surface:hover{background-color:var(--dash-surface)}.hover\:bg-dash-surface-hover:hover{background-color:var(--dash-surface-hover)}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-500\/10:hover{background-color:#f973161a}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-amber-600:hover{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.hover\:text-dash-accent:hover{color:var(--dash-accent)}.hover\:text-dash-accent-hover:hover{color:var(--dash-accent-hover)}.hover\:text-dash-text:hover{color:var(--dash-text)}.hover\:text-dash-text-secondary:hover{color:var(--dash-text-secondary)}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-pink-500:hover{--tw-text-opacity: 1;color:rgb(236 72 153 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);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)}.focus\:border-blue-400:focus{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.focus\:border-dash-accent:focus{border-color:var(--dash-accent)}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-amber-500\/50:focus{--tw-ring-color: rgb(245 158 11 / .5)}.focus\:ring-dash-accent:focus{--tw-ring-color: var(--dash-accent)}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-dash-accent:focus-visible{--tw-ring-color: var(--dash-accent)}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.98\]:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:-translate-x-0\.5{--tw-translate-x: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:-translate-y-1{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/col:hover .group-hover\/col\:bg-dash-accent,.group:hover .group-hover\:bg-dash-accent{background-color:var(--dash-accent)}.group:hover .group-hover\:bg-dash-surface-hover{background-color:var(--dash-surface-hover)}.group:hover .group-hover\:bg-dash-text-muted{background-color:var(--dash-text-muted)}.group\/col:hover .group-hover\/col\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-dash-accent{color:var(--dash-accent)}.group:hover .group-hover\:text-dash-text-secondary{color:var(--dash-text-secondary)}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (prefers-reduced-motion: reduce){.motion-reduce\:animate-none{animation:none}}.dark\:border-\[\#14151a\]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(20 21 26 / var(--tw-border-opacity, 1))}.dark\:border-amber-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.dark\:border-amber-500\/20:is(.dark *){border-color:#f59e0b33}.dark\:border-amber-500\/30:is(.dark *){border-color:#f59e0b4d}.dark\:border-blue-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.dark\:border-blue-800\/40:is(.dark *){border-color:#1e40af66}.dark\:border-cyan-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(34 211 238 / var(--tw-border-opacity, 1))}.dark\:border-cyan-500\/20:is(.dark *){border-color:#06b6d433}.dark\:border-dash-border:is(.dark *){border-color:var(--dash-border)}.dark\:border-emerald-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.dark\:border-emerald-500\/20:is(.dark *){border-color:#10b98133}.dark\:border-fuchsia-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(232 121 249 / var(--tw-border-opacity, 1))}.dark\:border-fuchsia-500\/20:is(.dark *){border-color:#d946ef33}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:border-indigo-500\/20:is(.dark *){border-color:#6366f133}.dark\:border-orange-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(154 52 18 / var(--tw-border-opacity, 1))}.dark\:border-rose-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(251 113 133 / var(--tw-border-opacity, 1))}.dark\:border-rose-500\/20:is(.dark *){border-color:#f43f5e33}.dark\:border-violet-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(167 139 250 / var(--tw-border-opacity, 1))}.dark\:border-violet-500\/20:is(.dark *){border-color:#8b5cf633}.dark\:bg-\[\#0c0d12\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(12 13 18 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#111216\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 18 22 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#14151a\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 21 26 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#14151a\]\/90:is(.dark *){background-color:#14151ae6}.dark\:bg-\[\#1C1F26\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(28 31 38 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#1a1b26\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(26 27 38 / var(--tw-bg-opacity, 1))}.dark\:bg-\[\#2A2E38\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(42 46 56 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-500\/10:is(.dark *){background-color:#f59e0b1a}.dark\:bg-blue-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/10:is(.dark *){background-color:#1e3a8a1a}.dark\:bg-blue-900\/40:is(.dark *){background-color:#1e3a8a66}.dark\:bg-cyan-500\/10:is(.dark *){background-color:#06b6d41a}.dark\:bg-dash-bg:is(.dark *){background-color:var(--dash-bg)}.dark\:bg-dash-surface:is(.dark *){background-color:var(--dash-surface)}.dark\:bg-emerald-500\/10:is(.dark *){background-color:#10b9811a}.dark\:bg-fuchsia-500\/10:is(.dark *){background-color:#d946ef1a}.dark\:bg-gray-400\/10:is(.dark *){background-color:#9ca3af1a}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(67 20 7 / var(--tw-bg-opacity, 1))}.dark\:bg-pink-500\/5:is(.dark *){background-color:#ec48990d}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900\/20:is(.dark *){background-color:#7f1d1d33}.dark\:bg-rose-500\/10:is(.dark *){background-color:#f43f5e1a}.dark\:bg-violet-500\/10:is(.dark *){background-color:#8b5cf61a}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:from-indigo-500\/10:is(.dark *){--tw-gradient-from: rgb(99 102 241 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-purple-500\/10:is(.dark *){--tw-gradient-to: rgb(168 85 247 / .1) var(--tw-gradient-to-position)}.dark\:text-\[\#9ece6a\]:is(.dark *){--tw-text-opacity: 1;color:rgb(158 206 106 / var(--tw-text-opacity, 1))}.dark\:text-amber-200:is(.dark *){--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-400:is(.dark *){--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.dark\:text-dash-text:is(.dark *){color:var(--dash-text)}.dark\:text-dash-text-muted:is(.dark *){color:var(--dash-text-muted)}.dark\:text-dash-text-secondary:is(.dark *){color:var(--dash-text-secondary)}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-fuchsia-400:is(.dark *){--tw-text-opacity: 1;color:rgb(232 121 249 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-indigo-400:is(.dark *){--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-pink-400:is(.dark *){--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.dark\:text-pink-400\/40:is(.dark *){color:#f472b666}.dark\:text-pink-400\/60:is(.dark *){color:#f472b699}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-rose-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity, 1))}.dark\:text-violet-400:is(.dark *){--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:opacity-10:is(.dark *){opacity:.1}.dark\:placeholder\:text-dash-text-muted:is(.dark *)::-moz-placeholder{color:var(--dash-text-muted)}.dark\:placeholder\:text-dash-text-muted:is(.dark *)::placeholder{color:var(--dash-text-muted)}.dark\:hover\:border-blue-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.dark\:hover\:border-gray-600:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:hover\:border-indigo-500\/40:hover:is(.dark *){border-color:#6366f166}.dark\:hover\:bg-\[\#2A2E38\]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(42 46 56 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-\[\#323642\]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(50 54 66 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-pink-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(249 168 212 / var(--tw-text-opacity, 1))}.dark\:focus\:border-blue-500:focus:is(.dark *){--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.group:hover .dark\:group-hover\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}@media (min-width: 640px){.sm\:block{display:block}.sm\:w-64{width:16rem}.sm\:w-\[460px\]{width:460px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}}@media (min-width: 768px){.md\:col-span-4{grid-column:span 4 / span 4}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1\.2fr\)_minmax\(0\,0\.8fr\)_minmax\(0\,1\.2fr\)_auto_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr) minmax(0,1.2fr) auto minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1\.5fr\)_minmax\(0\,1\.35fr\)_auto_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.5fr) minmax(0,1.35fr) auto minmax(0,1fr)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}}@media (min-width: 1024px){.lg\:sticky{position:sticky}.lg\:top-0{top:0}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:grid{display:grid}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1\.25fr\)_140px_minmax\(0\,220px\)_auto\]{grid-template-columns:minmax(0,1.25fr) 140px minmax(0,220px) auto}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto auto}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto_auto_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto auto auto}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:justify-end{justify-content:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:gap-1{gap:.25rem}.lg\:gap-4{gap:1rem}.lg\:p-10{padding:2.5rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1280px){.xl\:sticky{position:sticky}.xl\:top-\[84px\]{top:84px}.xl\:order-1{order:1}.xl\:order-2{order:2}.xl\:w-2\/5{width:40%}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[280px_minmax\(0\,1fr\)\]{grid-template-columns:280px minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1\.55fr\)_minmax\(0\,340px\)\]{grid-template-columns:minmax(0,1.55fr) minmax(0,340px)}.xl\:flex-row{flex-direction:row}.xl\:items-end{align-items:flex-end}.xl\:justify-between{justify-content:space-between}.xl\:border-l{border-left-width:1px}.xl\:border-t-0{border-top-width:0px}}.\[\&_\.cm-content\]\:text-xs .cm-content{font-size:.75rem;line-height:1rem}.\[\&_\.cm-content\]\:leading-4 .cm-content{line-height:1rem}.\[\&_\.cm-editor\]\:h-full .cm-editor{height:100%}.\[\&_\.cm-editor\]\:outline-none .cm-editor,.\[\&_\.cm-focused\]\:outline-none .cm-focused{outline:2px solid transparent;outline-offset:2px}.\[\&_\.cm-gutters\]\:text-xs .cm-gutters{font-size:.75rem;line-height:1rem}.\[\&_\.cm-gutters\]\:leading-4 .cm-gutters{line-height:1rem}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}
|