esedre 0.1.6 → 0.1.7

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 CHANGED
@@ -137,12 +137,32 @@ Commands for repository onboarding, central machine linking, and maintenance:
137
137
 
138
138
  | Command | Usage | Description |
139
139
  |---|---|---|
140
- | `init` | `ese init [<path>] [--project <code>] [--name <name>] [--hub] [-y]` | Bring a project repository online or bootstrap a dedicated data hub. |
141
- | `configure` | `ese configure [add <path> \| remove <target> \| set <k> <v>]` | Inspect or mutate central Esedre configuration (`~/.esedre/config.json`). |
140
+ | `init` | `ese init [<path>] [--project <code>] [--name <name>] [--hub <name\|path>] [-y]` | Bring a project repository online, bootstrap a dedicated data hub (`--hub`), or create a project directly in a data hub (`--project <code>`). |
141
+ | `configure` | `ese configure [add <path> \| remove <code\|path> \| set <k> <v>]` | Inspect or mutate central configuration (`~/.esedre/config.json`). Link external project repositories or data hubs. |
142
142
  | `upgrade` | `ese upgrade [<path>] [--force \| -f]` | Upgrade workspace configuration schema, in-repo wrappers, and agent skills. |
143
143
 
144
144
  > **Human vs LLM Agent Workflows**: Developer Administration commands (`init`, `configure`, `upgrade`) manage system-level repository linking and central machine configuration. They are intended for human developers during initial setup. Autonomous LLM coding partners operate within the authorized workspace scope using Roadmap and Service Daemon commands (`list`, `get`, `plan`, `create`, `update`, `comment`, `snapshot`, `start`, `status`).
145
145
 
146
+ #### Linking External Repositories vs Data Hub Projects
147
+
148
+ Esedre cleanly separates external repository linking from centralized data hub projects:
149
+ * **Link Existing Repositories (`ese configure add <repoPath>`)**: Registers an external code repository in your central `projects` map (`~/.esedre/config.json`) for federated multi-repo workflows.
150
+ * **Create Data Hub Projects (`ese init --project <code> [--name "<name>"] [--hub <hub>]`)**: Registers a non-development or standalone project directly inside your configured ticket data hub (`dataDir`). When multiple data hubs exist, pass `--hub <name|path>` to disambiguate.
151
+
152
+ #### Unique Project Codes Across Data Hubs
153
+
154
+ Project codes must be unique across all configured data hubs. Esedre does not support duplicate project codes across data hubs. If duplicate project codes are detected across multiple hubs:
155
+ * The storage engine loads only the first registered location.
156
+ * The CLI issues a warning notifying you of the collision (`⚠️ Warning: Duplicate project code '<CODE>' detected across multiple data hubs...`).
157
+ * Registering a new project that matches a code already present in another hub is rejected.
158
+
159
+ #### Case-Remembering Casing & Case-Insensitive Matching
160
+
161
+ Esedre follows a strict **case-remembering but case-insensitive on matches** design across all storage, CLI, MCP, and configuration layers:
162
+ * **Case-Remembering Storage**: Project codes preserve their original registered casing (e.g. `Personal`, `Esedre`, `Prof`) in directory names on disk (`projects/Personal/`) and in all metadata manifests (`project.json`, `meta.json`). Ticket metadata always records the canonical remembered casing. Re-registering or re-configuring a project preserves the existing remembered casing.
163
+ * **Case-Insensitive Lookups & Access**: All queries, CLI flags, MCP tool calls, ticket lookups (`ese get personal-1`, `ese get PERSONAL-1`, `ese get Personal-1`), and Agent Project Allow-List permissions (`allowedProjects`) match case-insensitively.
164
+ * **Cross-Platform Filesystem Normalization**: To prevent split directory fragmentation on case-sensitive filesystems (such as Linux ext4 or Docker), directory resolution matches existing parent directory entries case-insensitively, automatically reusing existing directory casing regardless of input variation.
165
+
146
166
  ---
147
167
 
148
168
  ## 🤖 Model Context Protocol (MCP) Setup
@@ -164,7 +184,7 @@ To connect Esedre to **Google Antigravity**, **Claude Code**, **Cursor**, or any
164
184
  - `esedre_list_tickets`: List tickets with optional project, status, category, or search filter.
165
185
  - `esedre_get_ticket`: Retrieve full specification, summary, comments, revision, and content hash (`sha1`).
166
186
  - `esedre_get_plan` & `esedre_save_plan`: Inspect and update implementation plans with optimistic concurrency (`lastHash`).
167
- - `esedre_create_ticket`: Mint new roadmap tickets with project code validation (up to 6 chars).
187
+ - `esedre_create_ticket`: Mint new roadmap tickets with project code validation (up to 8 chars).
168
188
  - `esedre_update_ticket`: Modify status, title, complexity, or effort with optimistic concurrency (`lastHash`).
169
189
  - `esedre_add_comment`: Append developer or LLM agent verification notes.
170
190
 
package/dist/esedre.mjs CHANGED
@@ -9,7 +9,7 @@ import fs3 from "node:fs";
9
9
  import path3 from "node:path";
10
10
 
11
11
  // src/types.ts
12
- var CURRENT_ESEDRE_VERSION = "0.1.6";
12
+ var CURRENT_ESEDRE_VERSION = "0.1.7";
13
13
  var EsedreConflictError = class extends Error {
14
14
  constructor(ticketId, currentHash, lastHash) {
15
15
  super(
@@ -30,8 +30,8 @@ import fs from "node:fs";
30
30
  import path from "node:path";
31
31
  import os from "node:os";
32
32
  var DEFAULT_ESEDRE_PORT = 5674;
33
- var MAX_PROJECT_CODE_LENGTH = 7;
34
- var PROJECT_CODE_REGEX = /^[a-zA-Z0-9]{1,7}$/;
33
+ var MAX_PROJECT_CODE_LENGTH = 8;
34
+ var PROJECT_CODE_REGEX = /^[a-zA-Z0-9]{1,8}$/;
35
35
  var MAX_PROJECT_NAME_LENGTH = 48;
36
36
  function resolvePorts(config, overrides) {
37
37
  const globalConfig = readGlobalConfig();
@@ -244,9 +244,11 @@ function removeLocationFromGlobalConfig(identifier) {
244
244
  if (current.dataDir) {
245
245
  const currentDataDirs = Array.isArray(current.dataDir) ? current.dataDir : [current.dataDir];
246
246
  const initialLen = currentDataDirs.length;
247
- const remaining = currentDataDirs.filter(
248
- (d) => path.resolve(expandHome(d)).toLowerCase() !== path.resolve(expandHome(trimmed)).toLowerCase()
249
- );
247
+ const remaining = currentDataDirs.filter((d) => {
248
+ const matchPath = path.resolve(expandHome(d)).toLowerCase() === path.resolve(expandHome(trimmed)).toLowerCase();
249
+ const matchBasename = path.basename(d).toLowerCase() === trimmed.toLowerCase();
250
+ return !matchPath && !matchBasename;
251
+ });
250
252
  if (remaining.length !== initialLen) {
251
253
  current.dataDir = remaining.length === 0 ? void 0 : remaining.length === 1 ? remaining[0] : remaining;
252
254
  writeGlobalConfig(current);
@@ -570,6 +572,11 @@ function writeSafeFile(filePath, content) {
570
572
  var FilesystemStorageAdapter = class {
571
573
  workspaceRoot;
572
574
  config;
575
+ duplicateProjectWarnings = [];
576
+ getDuplicateProjectWarnings() {
577
+ this.resolveProjectLocations();
578
+ return [...this.duplicateProjectWarnings];
579
+ }
573
580
  constructor(workspaceRoot, config) {
574
581
  this.workspaceRoot = workspaceRoot || this.resolveWorkspaceRoot();
575
582
  if (config) {
@@ -601,6 +608,8 @@ var FilesystemStorageAdapter = class {
601
608
  resolveProjectLocations() {
602
609
  const locations = [];
603
610
  const seenCodes = /* @__PURE__ */ new Set();
611
+ const codeToSource = /* @__PURE__ */ new Map();
612
+ this.duplicateProjectWarnings = [];
604
613
  const rawDataDirs = Array.isArray(this.config.dataDir) ? [...this.config.dataDir] : this.config.dataDir ? [this.config.dataDir] : [];
605
614
  if (rawDataDirs.length === 0) {
606
615
  const candidateHubDirs = [
@@ -672,14 +681,27 @@ var FilesystemStorageAdapter = class {
672
681
  };
673
682
  }
674
683
  const codeKey = desc.code.toLowerCase();
684
+ const sourceName = resolvedHub;
675
685
  if (!seenCodes.has(codeKey)) {
676
686
  seenCodes.add(codeKey);
687
+ codeToSource.set(codeKey, sourceName);
677
688
  locations.push({
678
689
  project: desc,
679
690
  ticketsDir: projectTicketsDir,
680
691
  sourceType: "hub",
681
692
  hubDir: resolvedHub
682
693
  });
694
+ } else {
695
+ const firstSource = codeToSource.get(codeKey) || "configured location";
696
+ if (firstSource.toLowerCase() !== sourceName.toLowerCase()) {
697
+ if (!this.duplicateProjectWarnings.some((w) => w.code.toLowerCase() === codeKey && w.duplicateHub.toLowerCase() === sourceName.toLowerCase())) {
698
+ this.duplicateProjectWarnings.push({
699
+ code: desc.code,
700
+ firstHub: firstSource,
701
+ duplicateHub: sourceName
702
+ });
703
+ }
704
+ }
683
705
  }
684
706
  }
685
707
  } else {
@@ -713,8 +735,10 @@ var FilesystemStorageAdapter = class {
713
735
  const isShared = descs.length > 1;
714
736
  for (const desc of descs) {
715
737
  const codeKey = desc.code.toLowerCase();
738
+ const sourceName = resolvedHub;
716
739
  if (!seenCodes.has(codeKey)) {
717
740
  seenCodes.add(codeKey);
741
+ codeToSource.set(codeKey, sourceName);
718
742
  locations.push({
719
743
  project: desc,
720
744
  ticketsDir: actualTicketsDir,
@@ -722,6 +746,17 @@ var FilesystemStorageAdapter = class {
722
746
  hubDir: resolvedHub,
723
747
  isSharedDir: isShared
724
748
  });
749
+ } else {
750
+ const firstSource = codeToSource.get(codeKey) || "configured location";
751
+ if (firstSource.toLowerCase() !== sourceName.toLowerCase()) {
752
+ if (!this.duplicateProjectWarnings.some((w) => w.code.toLowerCase() === codeKey && w.duplicateHub.toLowerCase() === sourceName.toLowerCase())) {
753
+ this.duplicateProjectWarnings.push({
754
+ code: desc.code,
755
+ firstHub: firstSource,
756
+ duplicateHub: sourceName
757
+ });
758
+ }
759
+ }
725
760
  }
726
761
  }
727
762
  }
@@ -765,13 +800,26 @@ var FilesystemStorageAdapter = class {
765
800
  };
766
801
  }
767
802
  const codeKey = desc.code.toLowerCase();
803
+ const sourceName = projectDir;
768
804
  if (!seenCodes.has(codeKey)) {
769
805
  seenCodes.add(codeKey);
806
+ codeToSource.set(codeKey, sourceName);
770
807
  locations.push({
771
808
  project: desc,
772
809
  ticketsDir: actualTicketsDir,
773
810
  sourceType: "federated"
774
811
  });
812
+ } else {
813
+ const firstSource = codeToSource.get(codeKey) || "configured location";
814
+ if (firstSource.toLowerCase() !== sourceName.toLowerCase()) {
815
+ if (!this.duplicateProjectWarnings.some((w) => w.code.toLowerCase() === codeKey && w.duplicateHub.toLowerCase() === sourceName.toLowerCase())) {
816
+ this.duplicateProjectWarnings.push({
817
+ code: desc.code,
818
+ firstHub: firstSource,
819
+ duplicateHub: sourceName
820
+ });
821
+ }
822
+ }
775
823
  }
776
824
  }
777
825
  }
@@ -872,17 +920,91 @@ var FilesystemStorageAdapter = class {
872
920
  }
873
921
  }
874
922
  }
875
- let targetHub = null;
923
+ const existingHubs = [];
876
924
  for (const dDir of rawDataDirs) {
877
925
  const resolved = path3.resolve(this.workspaceRoot, expandHome(dDir));
878
- if (fs3.existsSync(resolved)) {
879
- targetHub = resolved;
880
- break;
926
+ if (fs3.existsSync(resolved) && !existingHubs.includes(resolved)) {
927
+ existingHubs.push(resolved);
928
+ }
929
+ }
930
+ let targetHub = null;
931
+ if (input.hub) {
932
+ const targetQuery = input.hub.trim();
933
+ const resolvedQuery = path3.resolve(this.workspaceRoot, expandHome(targetQuery)).toLowerCase();
934
+ const isPathLike = targetQuery.includes("/") || targetQuery.includes("\\");
935
+ const basenameMatches = existingHubs.filter(
936
+ (h) => path3.basename(h).toLowerCase() === targetQuery.toLowerCase()
937
+ );
938
+ if (!isPathLike && basenameMatches.length > 1) {
939
+ const list = basenameMatches.map((h) => ` \u2022 ${h}`).join("\n");
940
+ throw new Error(
941
+ `Hub name collision: Multiple configured data hubs share basename "${targetQuery}". Please specify by unambiguous path:
942
+ ${list}`
943
+ );
944
+ } else if (basenameMatches.length === 1 && !isPathLike) {
945
+ targetHub = basenameMatches[0];
946
+ } else {
947
+ const exactPathMatch = existingHubs.find((h) => h.toLowerCase() === resolvedQuery);
948
+ if (exactPathMatch) {
949
+ targetHub = exactPathMatch;
950
+ } else if (basenameMatches.length === 1) {
951
+ targetHub = basenameMatches[0];
952
+ } else {
953
+ const directHubPath = path3.resolve(this.workspaceRoot, expandHome(targetQuery));
954
+ if (fs3.existsSync(directHubPath) && (fs3.existsSync(path3.join(directHubPath, "projects")) || fs3.existsSync(path3.join(directHubPath, "projects.json")))) {
955
+ targetHub = directHubPath;
956
+ } else {
957
+ const available = existingHubs.map((h) => `${path3.basename(h)} (${h})`).join(", ");
958
+ throw new Error(
959
+ `Hub "${targetQuery}" not found. Configured data hubs: ${available || "(none)"}`
960
+ );
961
+ }
962
+ }
963
+ }
964
+ } else {
965
+ if (existingHubs.length === 1) {
966
+ targetHub = existingHubs[0];
967
+ } else if (existingHubs.length > 1) {
968
+ const basenames = existingHubs.map((h) => path3.basename(h));
969
+ const hasCollision = new Set(basenames.map((b) => b.toLowerCase())).size < basenames.length;
970
+ const formattedList = existingHubs.map((h) => ` \u2022 ${path3.basename(h)} (${h})`).join("\n");
971
+ throw new Error(
972
+ `Multiple data hubs configured. Please specify --hub <name${hasCollision ? "|path" : ""}>:
973
+ ${formattedList}`
974
+ );
881
975
  }
882
976
  }
883
977
  if (targetHub) {
978
+ const normalizedTargetHub = path3.resolve(targetHub).toLowerCase();
979
+ const existingLocations = this.resolveProjectLocations();
980
+ const existingConflict = existingLocations.find((l) => {
981
+ if (l.project.code.toLowerCase() !== slug) return false;
982
+ if (l.sourceType === "hub" && l.hubDir) {
983
+ return path3.resolve(l.hubDir).toLowerCase() !== normalizedTargetHub;
984
+ }
985
+ return false;
986
+ });
987
+ if (existingConflict && existingConflict.hubDir) {
988
+ const conflictLoc = path3.basename(existingConflict.hubDir);
989
+ throw new Error(
990
+ `Project code "${cleanCode}" already exists in another data hub (${conflictLoc}). Duplicate project codes across hubs are not supported.`
991
+ );
992
+ }
884
993
  const hubProjectsDir = path3.join(targetHub, "projects");
885
- const projectDir = path3.join(hubProjectsDir, cleanCode);
994
+ let resolvedDirName = cleanCode;
995
+ if (fs3.existsSync(hubProjectsDir)) {
996
+ try {
997
+ const entries = fs3.readdirSync(hubProjectsDir, { withFileTypes: true });
998
+ const matchedDir = entries.find(
999
+ (e) => e.isDirectory() && e.name.toLowerCase() === slug
1000
+ );
1001
+ if (matchedDir) {
1002
+ resolvedDirName = matchedDir.name;
1003
+ }
1004
+ } catch {
1005
+ }
1006
+ }
1007
+ const projectDir = path3.join(hubProjectsDir, resolvedDirName);
886
1008
  const ticketsDir2 = path3.join(projectDir, "tickets");
887
1009
  if (!fs3.existsSync(ticketsDir2)) {
888
1010
  fs3.mkdirSync(ticketsDir2, { recursive: true });
@@ -895,12 +1017,13 @@ var FilesystemStorageAdapter = class {
895
1017
  } catch {
896
1018
  }
897
1019
  }
1020
+ const resolvedCode2 = existingPJson2?.code || resolvedDirName || cleanCode;
898
1021
  const existingProjects = await this.getProjects();
899
1022
  const maxId = existingProjects.reduce((max, p) => Math.max(max, p.id || 0), 0);
900
1023
  const id2 = existingPJson2?.id || maxId + 1;
901
1024
  const projectDesc2 = {
902
1025
  id: id2,
903
- code: cleanCode,
1026
+ code: resolvedCode2,
904
1027
  slug,
905
1028
  name: cleanName,
906
1029
  description: cleanDesc,
@@ -936,10 +1059,11 @@ var FilesystemStorageAdapter = class {
936
1059
  } catch {
937
1060
  }
938
1061
  }
1062
+ const resolvedCode = existingPJson?.code && existingPJson.code.toLowerCase() === slug ? existingPJson.code : cleanCode;
939
1063
  const id = existingPJson?.id || 1;
940
1064
  const projectDesc = {
941
1065
  id,
942
- code: cleanCode,
1066
+ code: resolvedCode,
943
1067
  slug,
944
1068
  name: cleanName,
945
1069
  description: cleanDesc,
@@ -966,7 +1090,7 @@ var FilesystemStorageAdapter = class {
966
1090
  const locations = this.resolveProjectLocations();
967
1091
  if (locations.length === 0) return null;
968
1092
  const strId = String(id).trim();
969
- const prefixMatch = strId.match(/^([a-zA-Z0-9]{1,7})[-_:](\d+)$/i);
1093
+ const prefixMatch = strId.match(/^([a-zA-Z0-9]{1,8})[-_:](\d+)$/i);
970
1094
  if (prefixMatch) {
971
1095
  const code = prefixMatch[1].toLowerCase();
972
1096
  const num2 = parseInt(prefixMatch[2], 10);
@@ -1333,6 +1457,7 @@ ${input.summary || "Summary to be defined."}
1333
1457
  ...existing.meta,
1334
1458
  ...updates,
1335
1459
  id: locInfo.id,
1460
+ project: locInfo.loc.project.code,
1336
1461
  updatedAt: now,
1337
1462
  completedAt,
1338
1463
  revision
@@ -1433,6 +1558,9 @@ var SecurityFilter = class {
1433
1558
  }
1434
1559
  target;
1435
1560
  config;
1561
+ getDuplicateProjectWarnings() {
1562
+ return this.target.getDuplicateProjectWarnings ? this.target.getDuplicateProjectWarnings() : [];
1563
+ }
1436
1564
  async getProjects() {
1437
1565
  const projs = await this.target.getProjects();
1438
1566
  if (!this.config.allowedProjects || this.config.allowedProjects.length === 0) {
@@ -3056,7 +3184,10 @@ function configureWorkspace(targetDir, options = {}) {
3056
3184
  }
3057
3185
  }
3058
3186
  let config;
3059
- const projectCode = options.projectCode || existingRaw?.projectCode;
3187
+ let projectCode = options.projectCode || existingRaw?.projectCode;
3188
+ if (existingRaw?.projectCode && options.projectCode && existingRaw.projectCode.toLowerCase() === options.projectCode.toLowerCase()) {
3189
+ projectCode = existingRaw.projectCode;
3190
+ }
3060
3191
  const projectName = options.projectName || existingRaw?.projectName || (projectCode ? projectCode : void 0);
3061
3192
  const dataDir = options.dataDir !== void 0 ? options.dataDir : existingRaw?.dataDir;
3062
3193
  if (existingRaw) {
@@ -3334,7 +3465,7 @@ function createApiHandler(storage, workspaceRoot) {
3334
3465
  }
3335
3466
  if (pathname.startsWith("/api/planning/ticket/")) {
3336
3467
  const idStr = pathname.slice("/api/planning/ticket/".length);
3337
- if (!idStr || !/^([a-zA-Z0-9]{1,7}-)?\d+$/.test(idStr)) {
3468
+ if (!idStr || !/^([a-zA-Z0-9]{1,8}-)?\d+$/.test(idStr)) {
3338
3469
  sendJson(res, 400, { error: "Invalid ticket ID" });
3339
3470
  return true;
3340
3471
  }
@@ -3476,7 +3607,7 @@ function createApiHandler(storage, workspaceRoot) {
3476
3607
  return true;
3477
3608
  }
3478
3609
  if (pathname === "/api/planning/create-project") {
3479
- const { code, name, description, colors: colors2 } = body;
3610
+ const { code, name, description, colors: colors2, hub } = body;
3480
3611
  if (!code || !name) {
3481
3612
  sendJson(res, 400, { error: "Both code and name are required to register a project." });
3482
3613
  return true;
@@ -3496,7 +3627,8 @@ function createApiHandler(storage, workspaceRoot) {
3496
3627
  code,
3497
3628
  name,
3498
3629
  description,
3499
- colors: colors2
3630
+ colors: colors2,
3631
+ hub
3500
3632
  });
3501
3633
  sendJson(res, 201, project);
3502
3634
  return true;
@@ -3744,12 +3876,14 @@ ${colors.bold}SERVICE DAEMON COMMANDS:${colors.reset}
3744
3876
  ${colors.bold}mcp${colors.reset} Start the Model Context Protocol (MCP) JSON-RPC 2.0 stdio server for autonomous LLM coding agents.
3745
3877
 
3746
3878
  ${colors.bold}DEVELOPER ADMINISTRATION (Human Setup & Configuration):${colors.reset}
3747
- ${colors.bold}init${colors.reset} [<path>] [--project <code>] [-n|--name <name>] [--allow <c1,c2>] [--port <n>] [--hub] [--proxy] [--no-proxy] [-y|--yes] [--json]
3748
- Bring a project repository online (.esedre footprint, wrappers, snapshot) or bootstrap a data hub (--hub).
3879
+ ${colors.bold}init${colors.reset} [<path>] [--project <code>] [-n|--name <name>] [--hub <name|path>] [--allow <c1,c2>] [--port <n>] [-y|--yes] [--json]
3880
+ Bring a project repository online (.esedre footprint, wrappers, snapshot), bootstrap a data hub (--hub), or register a project directly into an Esedre ticket data hub (--project <code>).
3881
+ \u2022 In-repo workspace: ese init (creates .esedre/esedre.json in current directory)
3882
+ \u2022 Data hub project: ese init --project <code> --name "<name>" (creates project in configured dataDir hub)
3749
3883
 
3750
3884
  ${colors.bold}configure${colors.reset} [add <path> | remove <code|path> | set <key> <val> | get <key>] [--json]
3751
3885
  Inspect or mutate central Esedre configuration (~/.esedre/config.json).
3752
- \u2022 add <path> Smart-detect and link a data hub or project repository
3886
+ \u2022 add <path> Link an external project repository (federated projects map) or register a data hub (dataDir)
3753
3887
  \u2022 remove <target> Unlink a project or data hub
3754
3888
  \u2022 set <key> <val> Update a central configuration setting
3755
3889
 
@@ -3829,6 +3963,15 @@ function parseArgs(rawArgs) {
3829
3963
  if (flags["f"] && !flags["foreground"]) flags["foreground"] = flags["f"];
3830
3964
  return { command, positionals, flags };
3831
3965
  }
3966
+ function printDuplicateProjectWarnings(storage, isJson) {
3967
+ if (isJson) return;
3968
+ const warnings = storage.getDuplicateProjectWarnings ? storage.getDuplicateProjectWarnings() : [];
3969
+ for (const warn of warnings) {
3970
+ console.error(
3971
+ `${colors.yellow}\u26A0\uFE0F Warning: Duplicate project code '${warn.code}' detected across multiple data hubs (${path9.basename(warn.firstHub)} and ${path9.basename(warn.duplicateHub)}). Duplicate project codes across hubs are not supported; only '${path9.basename(warn.firstHub)}' is active.${colors.reset}`
3972
+ );
3973
+ }
3974
+ }
3832
3975
  async function main() {
3833
3976
  const rawArgs = process.argv.slice(2);
3834
3977
  const { command, positionals, flags } = parseArgs(rawArgs);
@@ -3855,9 +3998,12 @@ async function main() {
3855
3998
  try {
3856
3999
  switch (command) {
3857
4000
  case "init": {
3858
- const targetDir = positionals[0] ? path9.resolve(positionals[0]) : discovered.workspaceRoot;
3859
- const isHub = Boolean(flags["hub"]);
3860
- if (isHub) {
4001
+ const rawTarget = positionals[0];
4002
+ const targetDir = rawTarget ? path9.resolve(rawTarget) : discovered.workspaceRoot;
4003
+ const rawHubFlag = flags["hub"];
4004
+ const hubArg = typeof rawHubFlag === "string" ? rawHubFlag : void 0;
4005
+ const isHubRequested = Boolean(rawHubFlag);
4006
+ if (isHubRequested && !flags["project"] && !flags["p"]) {
3861
4007
  const hubRes = initHub(targetDir);
3862
4008
  try {
3863
4009
  addLocationToGlobalConfig(targetDir);
@@ -3932,26 +4078,66 @@ ${colors.bold}Next Steps:${colors.reset}`);
3932
4078
  console.error(`${colors.red}Error: ${nameVal.error}${colors.reset}`);
3933
4079
  process.exit(1);
3934
4080
  }
3935
- const existingProjects = await storage.getProjects();
3936
- const existing = existingProjects.find(
3937
- (p) => p.code.toLowerCase() === projectCode.toLowerCase()
3938
- );
4081
+ const isTargetHub = fs9.existsSync(path9.join(targetDir, "projects.json")) || fs9.existsSync(path9.join(targetDir, "projects")) && !fs9.existsSync(path9.join(targetDir, ".esedre", "esedre.json"));
4082
+ const isWorkspaceless = isHubRequested || isTargetHub || Boolean(discovered.config?.projectCode) && !rawTarget && discovered.config?.projectCode?.toLowerCase() !== projectCode.toLowerCase();
3939
4083
  let projectNewlyRegistered = false;
3940
4084
  let registeredProj;
3941
- if (!existing) {
3942
- registeredProj = await rawStorage.registerProject({
3943
- code: projectCode,
3944
- name: projectName
3945
- });
3946
- projectNewlyRegistered = true;
3947
- } else {
3948
- registeredProj = existing;
3949
- if (flags["name"] || flags["n"]) {
4085
+ try {
4086
+ const existingProjects = await storage.getProjects();
4087
+ const existing = existingProjects.find(
4088
+ (p) => p.code.toLowerCase() === projectCode.toLowerCase()
4089
+ );
4090
+ if (!existing) {
3950
4091
  registeredProj = await rawStorage.registerProject({
3951
4092
  code: projectCode,
3952
- name: projectName
4093
+ name: projectName,
4094
+ hub: hubArg
3953
4095
  });
4096
+ projectNewlyRegistered = true;
4097
+ } else {
4098
+ registeredProj = existing;
4099
+ if (flags["name"] || flags["n"]) {
4100
+ registeredProj = await rawStorage.registerProject({
4101
+ code: projectCode,
4102
+ name: projectName,
4103
+ hub: hubArg
4104
+ });
4105
+ }
3954
4106
  }
4107
+ } catch (err) {
4108
+ console.error(`${colors.red}Error: ${err.message}${colors.reset}`);
4109
+ process.exit(1);
4110
+ }
4111
+ if (isWorkspaceless) {
4112
+ if (isJson) {
4113
+ console.log(JSON.stringify({
4114
+ project: registeredProj,
4115
+ projectNewlyRegistered,
4116
+ registeredInHub: true,
4117
+ commands: {
4118
+ create: `ese create --title "..." --project ${registeredProj.code}`,
4119
+ list: `ese list --project ${registeredProj.code}`
4120
+ }
4121
+ }, null, 2));
4122
+ } else {
4123
+ if (projectNewlyRegistered) {
4124
+ console.log(`${colors.bold}${colors.green}\u2714 Registered project '${registeredProj.code}' (${registeredProj.name}) in Esedre data hub!${colors.reset}`);
4125
+ } else {
4126
+ console.log(`${colors.bold}${colors.green}\u2714 Verified project '${registeredProj.code}' (${registeredProj.name}) in Esedre data hub!${colors.reset}`);
4127
+ }
4128
+ console.log(` \u2022 Code: ${registeredProj.code}`);
4129
+ console.log(` \u2022 Name: ${registeredProj.name}`);
4130
+ if (registeredProj.description) {
4131
+ console.log(` \u2022 Description: ${registeredProj.description}`);
4132
+ }
4133
+ console.log(`
4134
+ ${colors.bold}Next Steps:${colors.reset}`);
4135
+ console.log(` 1. Create your first ticket:`);
4136
+ console.log(` ${colors.cyan}ese create --title "First feature" --type Feature --project ${registeredProj.code}${colors.reset}`);
4137
+ console.log(` 2. Inspect roadmap & tickets:`);
4138
+ console.log(` ${colors.cyan}ese list --project ${registeredProj.code}${colors.reset}`);
4139
+ }
4140
+ return;
3955
4141
  }
3956
4142
  const allowedProjects = allowArg ? allowArg.split(",").map((s) => s.trim()) : discovered.config?.allowedProjects || [projectCode];
3957
4143
  let setupProxy = void 0;
@@ -4186,10 +4372,12 @@ ${colors.bold}Linked Projects (projects):${colors.reset}`);
4186
4372
  }
4187
4373
  console.log(`
4188
4374
  ${colors.bold}Commands:${colors.reset}`);
4189
- console.log(` \u2022 Link a hub or project: ${colors.cyan}ese configure add <path>${colors.reset}`);
4190
- console.log(` \u2022 Unlink a project or hub: ${colors.cyan}ese configure remove <code|path>${colors.reset}`);
4191
- console.log(` \u2022 Set setting value: ${colors.cyan}ese configure set <key> <value>${colors.reset}`);
4192
- console.log(` \u2022 Bring new repo online: ${colors.cyan}ese init [path]${colors.reset}`);
4375
+ console.log(` \u2022 Link external repository: ${colors.cyan}ese configure add <repoPath>${colors.reset}`);
4376
+ console.log(` \u2022 Register a data hub: ${colors.cyan}ese configure add <hubPath>${colors.reset}`);
4377
+ console.log(` \u2022 Create hub project: ${colors.cyan}ese init --project <code> --name "<name>"${colors.reset}`);
4378
+ console.log(` \u2022 Unlink a project or hub: ${colors.cyan}ese configure remove <code|path>${colors.reset}`);
4379
+ console.log(` \u2022 Set setting value: ${colors.cyan}ese configure set <key> <value>${colors.reset}`);
4380
+ console.log(` \u2022 Bring new repo online: ${colors.cyan}ese init [path]${colors.reset}`);
4193
4381
  return;
4194
4382
  }
4195
4383
  case "upgrade": {
@@ -4247,6 +4435,7 @@ ${colors.bold}Commands:${colors.reset}`);
4247
4435
  return;
4248
4436
  }
4249
4437
  case "start": {
4438
+ printDuplicateProjectWarnings(storage, isJson);
4250
4439
  const flagPort = flags["port"] ? parseInt(String(flags["port"]), 10) : void 0;
4251
4440
  const ports = resolvePorts(discovered.config, { port: flagPort });
4252
4441
  const port = ports.gateway;
@@ -4291,6 +4480,7 @@ ${colors.dim}Shutting down Esedre cluster...${colors.reset}`);
4291
4480
  return;
4292
4481
  }
4293
4482
  case "status": {
4483
+ printDuplicateProjectWarnings(storage, isJson);
4294
4484
  const flagPort = flags["port"] ? parseInt(String(flags["port"]), 10) : void 0;
4295
4485
  const port = resolvePorts(discovered.config, { port: flagPort }).gateway;
4296
4486
  const status = await getDaemonStatus({ port, workspaceRoot: discovered.workspaceRoot });
@@ -4328,6 +4518,7 @@ ${colors.yellow}\u26A0\uFE0F Warning: Daemon is running v${status.version}, but
4328
4518
  return;
4329
4519
  }
4330
4520
  case "projects": {
4521
+ printDuplicateProjectWarnings(storage, isJson);
4331
4522
  const projects = await storage.getProjects();
4332
4523
  if (isJson) {
4333
4524
  console.log(JSON.stringify(projects, null, 2));
@@ -4340,6 +4531,7 @@ ${colors.yellow}\u26A0\uFE0F Warning: Daemon is running v${status.version}, but
4340
4531
  return;
4341
4532
  }
4342
4533
  case "list": {
4534
+ printDuplicateProjectWarnings(storage, isJson);
4343
4535
  const rawProject = flags["project"];
4344
4536
  const project = rawProject === "all" ? void 0 : rawProject || discovered.config?.projectCode || void 0;
4345
4537
  const status = flags["status"] || void 0;
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-50:oklch(98.4% .014 180.72);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-200:oklch(91% .096 180.426);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-800:oklch(43.7% .078 188.216);--color-teal-950:oklch(27.7% .046 192.524);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-950:oklch(30.2% .056 229.695);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-sky-950:oklch(29.3% .066 243.157);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-900:oklch(35.9% .144 278.697);--color-indigo-950:oklch(25.7% .09 281.288);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-purple-950:oklch(29.1% .149 302.717);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-fuchsia-400:oklch(74% .238 322.16);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-fuchsia-950:oklch(29.3% .136 325.661);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-rose-950:oklch(27.1% .105 12.094);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.z-\[120\]{z-index:120}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-7{height:calc(var(--spacing) * 7)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-\[20px\]{height:20px}.h-\[92vh\]{height:92vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[44px\]{min-height:44px}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-80{width:calc(var(--spacing) * 80)}.w-\[20px\]{width:20px}.w-\[56px\]{width:56px}.w-\[60px\]{width:60px}.w-\[84px\]{width:84px}.w-\[95vw\]{width:95vw}.w-\[112px\]{width:112px}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[140px\]{max-width:140px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.scrollbar-none{scrollbar-width:none}.scrollbar-thin{scrollbar-width:thin}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent-border-subtle\)\]{border-color:var(--accent-border-subtle)}.border-\[var\(--accent-primary\)\]{border-color:var(--accent-primary)}.border-\[var\(--border-accent\)\]{border-color:var(--border-accent)}.border-\[var\(--border-strong\)\]{border-color:var(--border-strong)}.border-\[var\(--border-subtle\)\],.border-\[var\(--border-subtle\)\]\/80{border-color:var(--border-subtle)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--border-subtle\)\]\/80{border-color:color-mix(in oklab, var(--border-subtle) 80%, transparent)}}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/40{border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.border-blue-300{border-color:var(--color-blue-300)}.border-cyan-300{border-color:var(--color-cyan-300)}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab, red, red)){.border-cyan-500\/30{border-color:color-mix(in oklab, var(--color-cyan-500) 30%, transparent)}}.border-cyan-500\/40{border-color:#00b7d766}@supports (color:color-mix(in lab, red, red)){.border-cyan-500\/40{border-color:color-mix(in oklab, var(--color-cyan-500) 40%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-300{border-color:var(--color-emerald-300)}.border-emerald-500{border-color:var(--color-emerald-500)}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.border-emerald-500\/40{border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/40{border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.border-fuchsia-300{border-color:var(--color-fuchsia-300)}.border-fuchsia-500\/30{border-color:#e12afb4d}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\/30{border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.border-fuchsia-500\/40{border-color:#e12afb66}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\/40{border-color:color-mix(in oklab, var(--color-fuchsia-500) 40%, transparent)}}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-300{border-color:var(--color-indigo-300)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.border-indigo-500\/40{border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/40{border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-purple-300{border-color:var(--color-purple-300)}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/30{border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.border-purple-500\/40{border-color:#ac4bff66}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/40{border-color:color-mix(in oklab, var(--color-purple-500) 40%, transparent)}}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-500{border-color:var(--color-rose-500)}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.border-rose-500\/40{border-color:#ff235766}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/40{border-color:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.border-sky-200{border-color:var(--color-sky-200)}.border-sky-600{border-color:var(--color-sky-600)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-800{border-color:var(--color-slate-800)}.border-slate-800\/80{border-color:#1d293dcc}@supports (color:color-mix(in lab, red, red)){.border-slate-800\/80{border-color:color-mix(in oklab, var(--color-slate-800) 80%, transparent)}}.border-teal-200{border-color:var(--color-teal-200)}.border-teal-300{border-color:var(--color-teal-300)}.border-transparent{border-color:#0000}.bg-\[\#f1f5f9\]{background-color:#f1f5f9}.bg-\[var\(--accent-bg-subtle\)\]{background-color:var(--accent-bg-subtle)}.bg-\[var\(--accent-primary\)\],.bg-\[var\(--accent-primary\)\]\/10{background-color:var(--accent-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--accent-primary\)\]\/10{background-color:color-mix(in oklab, var(--accent-primary) 10%, transparent)}}.bg-\[var\(--bg-app\)\]{background-color:var(--bg-app)}.bg-\[var\(--bg-input\)\]{background-color:var(--bg-input)}.bg-\[var\(--bg-main\)\]{background-color:var(--bg-main)}.bg-\[var\(--bg-surface\)\]{background-color:var(--bg-surface)}.bg-\[var\(--bg-surface-elevated\)\]{background-color:var(--bg-surface-elevated)}.bg-\[var\(--border-subtle\)\]{background-color:var(--border-subtle)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/20{background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab, var(--color-black) 80%, transparent)}}.bg-black\/85{background-color:#000000d9}@supports (color:color-mix(in lab, red, red)){.bg-black\/85{background-color:color-mix(in oklab, var(--color-black) 85%, transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-cyan-400{background-color:var(--color-cyan-400)}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/10{background-color:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-fuchsia-50{background-color:var(--color-fuchsia-50)}.bg-fuchsia-400{background-color:var(--color-fuchsia-400)}.bg-fuchsia-500\/10{background-color:#e12afb1a}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-500\/10{background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.bg-fuchsia-600{background-color:var(--color-fuchsia-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-50\/50{background-color:#eef2ff80}@supports (color:color-mix(in lab, red, red)){.bg-indigo-50\/50{background-color:color-mix(in oklab, var(--color-indigo-50) 50%, transparent)}}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.bg-indigo-500\/10{background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-purple-600\/30{background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-600\/30{background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.bg-rose-500\/15{background-color:#ff235726}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/15{background-color:color-mix(in oklab, var(--color-rose-500) 15%, transparent)}}.bg-rose-600{background-color:var(--color-rose-600)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-50\/50{background-color:#f0f9ff80}@supports (color:color-mix(in lab, red, red)){.bg-sky-50\/50{background-color:color-mix(in oklab, var(--color-sky-50) 50%, transparent)}}.bg-sky-100{background-color:var(--color-sky-100)}.bg-sky-600{background-color:var(--color-sky-600)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-950\/80{background-color:#020618cc}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/80{background-color:color-mix(in oklab, var(--color-slate-950) 80%, transparent)}}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-transparent{background-color:#0000}.object-contain{object-fit:contain}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-0{padding-top:0}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pr-1{padding-right:var(--spacing)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent-primary\)\]{color:var(--accent-primary)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800\/80{color:#953d00cc}@supports (color:color-mix(in lab, red, red)){.text-amber-800\/80{color:color-mix(in oklab, var(--color-amber-800) 80%, transparent)}}.text-amber-900{color:var(--color-amber-900)}.text-amber-950{color:var(--color-amber-950)}.text-blue-950{color:var(--color-blue-950)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-600{color:var(--color-cyan-600)}.text-cyan-700{color:var(--color-cyan-700)}.text-cyan-950{color:var(--color-cyan-950)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-emerald-950{color:var(--color-emerald-950)}.text-fuchsia-300{color:var(--color-fuchsia-300)}.text-fuchsia-950{color:var(--color-fuchsia-950)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-900{color:var(--color-indigo-900)}.text-indigo-950{color:var(--color-indigo-950)}.text-purple-200{color:var(--color-purple-200)}.text-purple-400{color:var(--color-purple-400)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-purple-900{color:var(--color-purple-900)}.text-purple-950{color:var(--color-purple-950)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-rose-900{color:var(--color-rose-900)}.text-rose-950{color:var(--color-rose-950)}.text-sky-600{color:var(--color-sky-600)}.text-sky-700{color:var(--color-sky-700)}.text-sky-800{color:var(--color-sky-800)}.text-sky-800\/80{color:#005986cc}@supports (color:color-mix(in lab, red, red)){.text-sky-800\/80{color:color-mix(in oklab, var(--color-sky-800) 80%, transparent)}}.text-sky-900{color:var(--color-sky-900)}.text-sky-950{color:var(--color-sky-950)}.text-slate-300{color:var(--color-slate-300)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-800{color:var(--color-teal-800)}.text-teal-950{color:var(--color-teal-950)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.placeholder-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.placeholder-purple-400\/50::placeholder{color:#c07eff80}@supports (color:color-mix(in lab, red, red)){.placeholder-purple-400\/50::placeholder{color:color-mix(in oklab, var(--color-purple-400) 50%, transparent)}}.placeholder-slate-400::placeholder{color:var(--color-slate-400)}.accent-purple-500{accent-color:var(--color-purple-500)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-\[var\(--accent-primary\)\]\/20{--tw-shadow-alpha:20%;--tw-shadow:var(--accent-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xs{--tw-shadow:0 1px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-emerald-600\/20{--tw-shadow-color:#00976733}@supports (color:color-mix(in lab, red, red)){.shadow-emerald-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-600\/20{--tw-shadow-color:#e7004433}@supports (color:color-mix(in lab, red, red)){.shadow-rose-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent-primary\)\]{--tw-ring-color:var(--accent-primary)}.ring-\[var\(--border-accent\)\]{--tw-ring-color:var(--border-accent)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}@media (hover:hover){.group-hover\:bg-\[var\(--accent-primary\)\]:is(:where(.group):hover *){background-color:var(--accent-primary)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/author\:opacity-100:is(:where(.group\/author):hover *),.group-hover\/header\:opacity-100:is(:where(.group\/header):hover *){opacity:1}}.before\:font-bold:before{content:var(--tw-content);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.before\:text-\[var\(--accent-primary\)\]:before{content:var(--tw-content);color:var(--accent-primary)}.before\:content-\[\"–\"\]:before{--tw-content:"–";content:var(--tw-content)}.before\:content-\[\"•\"\]:before{--tw-content:"•";content:var(--tw-content)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:w-3:hover{width:calc(var(--spacing) * 3)}.hover\:border-\[var\(--border-accent\)\]:hover{border-color:var(--border-accent)}.hover\:border-\[var\(--border-strong\)\]:hover{border-color:var(--border-strong)}.hover\:bg-\[var\(--accent-bg-subtle\)\]:hover,.hover\:bg-\[var\(--accent-bg-subtle\)\]\/50:hover{background-color:var(--accent-bg-subtle)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--accent-bg-subtle\)\]\/50:hover{background-color:color-mix(in oklab, var(--accent-bg-subtle) 50%, transparent)}}.hover\:bg-\[var\(--accent-bg-subtle\)\]\/80:hover{background-color:var(--accent-bg-subtle)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--accent-bg-subtle\)\]\/80:hover{background-color:color-mix(in oklab, var(--accent-bg-subtle) 80%, transparent)}}.hover\:bg-\[var\(--bg-surface-elevated\)\]:hover{background-color:var(--bg-surface-elevated)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-200\/70:hover{background-color:#fee685b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-amber-200\/70:hover{background-color:color-mix(in oklab, var(--color-amber-200) 70%, transparent)}}.hover\:bg-amber-500\/30:hover{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-amber-500\/30:hover{background-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.hover\:bg-blue-200\/70:hover{background-color:#bedbffb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-blue-200\/70:hover{background-color:color-mix(in oklab, var(--color-blue-200) 70%, transparent)}}.hover\:bg-cyan-200\/70:hover{background-color:#a2f4fdb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan-200\/70:hover{background-color:color-mix(in oklab, var(--color-cyan-200) 70%, transparent)}}.hover\:bg-emerald-50:hover{background-color:var(--color-emerald-50)}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-200\/70:hover{background-color:#a4f4cfb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-emerald-200\/70:hover{background-color:color-mix(in oklab, var(--color-emerald-200) 70%, transparent)}}.hover\:bg-emerald-500:hover{background-color:var(--color-emerald-500)}.hover\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}.hover\:bg-purple-100:hover{background-color:var(--color-purple-100)}.hover\:bg-purple-200\/70:hover{background-color:#e9d5ffb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-200\/70:hover{background-color:color-mix(in oklab, var(--color-purple-200) 70%, transparent)}}.hover\:bg-purple-500\/10:hover{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/10:hover{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.hover\:bg-purple-500\/20:hover{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/20:hover{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.hover\:bg-purple-600\/50:hover{background-color:#9810fa80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-600\/50:hover{background-color:color-mix(in oklab, var(--color-purple-600) 50%, transparent)}}.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}.hover\:bg-rose-200\/70:hover{background-color:#ffccd3b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rose-200\/70:hover{background-color:color-mix(in oklab, var(--color-rose-200) 70%, transparent)}}.hover\:bg-rose-500:hover{background-color:var(--color-rose-500)}.hover\:bg-sky-100:hover{background-color:var(--color-sky-100)}.hover\:bg-sky-500:hover{background-color:var(--color-sky-500)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-teal-200\/70:hover{background-color:#96f7e4b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-teal-200\/70:hover{background-color:color-mix(in oklab, var(--color-teal-200) 70%, transparent)}}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:text-\[var\(--accent-primary\)\]:hover{color:var(--accent-primary)}.hover\:text-\[var\(--text-primary\)\]:hover{color:var(--text-primary)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-purple-400:hover{color:var(--color-purple-400)}.hover\:text-rose-600:hover{color:var(--color-rose-600)}.hover\:text-sky-700:hover{color:var(--color-sky-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:brightness-105:hover{--tw-brightness:brightness(105%);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,)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);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-\[var\(--border-accent\)\]:focus{border-color:var(--border-accent)}.focus\:border-\[var\(--border-strong\)\]:focus{border-color:var(--border-strong)}.focus\:border-amber-500\/50:focus{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.focus\:border-amber-500\/50:focus{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:border-purple-500\/50:focus{border-color:#ac4bff80}@supports (color:color-mix(in lab, red, red)){.focus\:border-purple-500\/50:focus{border-color:color-mix(in oklab, var(--color-purple-500) 50%, transparent)}}.focus\:border-sky-500:focus{border-color:var(--color-sky-500)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.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}@media (width>=40rem){.sm\:mt-0{margin-top:0}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:w-auto{width:auto}.sm\:flex-1{flex:1}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-end{justify-content:flex-end}.sm\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:rounded-3xl{border-radius:var(--radius-3xl)}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:pt-0{padding-top:0}.sm\:text-\[11px\]{font-size:11px}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:py-3{padding-block:calc(var(--spacing) * 3)}}.dark\:border-amber-500\/30:where(.dark,.dark *){border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:border-blue-500\/30:where(.dark,.dark *){border-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.dark\:border-cyan-500\/30:where(.dark,.dark *){border-color:#00b7d74d}@supports (color:color-mix(in lab, red, red)){.dark\:border-cyan-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-cyan-500) 30%, transparent)}}.dark\:border-emerald-500\/30:where(.dark,.dark *){border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:border-emerald-500\/40:where(.dark,.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.dark\:border-fuchsia-500\/30:where(.dark,.dark *){border-color:#e12afb4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-fuchsia-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.dark\:border-fuchsia-500\/40:where(.dark,.dark *){border-color:#e12afb66}@supports (color:color-mix(in lab, red, red)){.dark\:border-fuchsia-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-fuchsia-500) 40%, transparent)}}.dark\:border-indigo-500\/20:where(.dark,.dark *){border-color:#625fff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.dark\:border-indigo-500\/30:where(.dark,.dark *){border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.dark\:border-indigo-500\/40:where(.dark,.dark *){border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.dark\:border-purple-500\/20:where(.dark,.dark *){border-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-purple-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:border-purple-500\/30:where(.dark,.dark *){border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-purple-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.dark\:border-purple-500\/40:where(.dark,.dark *){border-color:#ac4bff66}@supports (color:color-mix(in lab, red, red)){.dark\:border-purple-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-purple-500) 40%, transparent)}}.dark\:border-rose-500\/30:where(.dark,.dark *){border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:border-rose-500\/40:where(.dark,.dark *){border-color:#ff235766}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.dark\:border-slate-600\/30:where(.dark,.dark *){border-color:#45556c4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-600\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-600) 30%, transparent)}}.dark\:border-slate-700\/40:where(.dark,.dark *){border-color:#31415866}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-700\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-700) 40%, transparent)}}.dark\:border-teal-500\/30:where(.dark,.dark *){border-color:#00baa74d}@supports (color:color-mix(in lab, red, red)){.dark\:border-teal-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-teal-500) 30%, transparent)}}.dark\:bg-amber-500\/20:where(.dark,.dark *){background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.dark\:bg-cyan-500\/20:where(.dark,.dark *){background-color:#00b7d733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-cyan-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-cyan-500) 20%, transparent)}}.dark\:bg-emerald-400:where(.dark,.dark *){background-color:var(--color-emerald-400)}.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.dark\:bg-emerald-500\/20:where(.dark,.dark *){background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:#002c2266}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-950) 40%, transparent)}}.dark\:bg-fuchsia-400:where(.dark,.dark *){background-color:var(--color-fuchsia-400)}.dark\:bg-fuchsia-500\/10:where(.dark,.dark *){background-color:#e12afb1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-fuchsia-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.dark\:bg-indigo-400:where(.dark,.dark *){background-color:var(--color-indigo-400)}.dark\:bg-indigo-500\/10:where(.dark,.dark *){background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.dark\:bg-indigo-500\/20:where(.dark,.dark *){background-color:#625fff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.dark\:bg-indigo-600:where(.dark,.dark *){background-color:var(--color-indigo-600)}.dark\:bg-indigo-600\/20:where(.dark,.dark *){background-color:#4f39f633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-600\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-600) 20%, transparent)}}.dark\:bg-indigo-600\/30:where(.dark,.dark *){background-color:#4f39f64d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-600\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-600) 30%, transparent)}}.dark\:bg-indigo-700:where(.dark,.dark *){background-color:var(--color-indigo-700)}.dark\:bg-indigo-950\/20:where(.dark,.dark *){background-color:#1e1a4d33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-950) 20%, transparent)}}.dark\:bg-purple-500\/20:where(.dark,.dark *){background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:bg-purple-600\/30:where(.dark,.dark *){background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-600\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.dark\:bg-purple-700:where(.dark,.dark *){background-color:var(--color-purple-700)}.dark\:bg-rose-500\/20:where(.dark,.dark *){background-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.dark\:bg-rose-950\/40:where(.dark,.dark *){background-color:#4d021866}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-rose-950) 40%, transparent)}}.dark\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-800\/40:where(.dark,.dark *){background-color:#1d293d66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 40%, transparent)}}.dark\:bg-teal-500\/20:where(.dark,.dark *){background-color:#00baa733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-teal-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-teal-500) 20%, transparent)}}.dark\:text-\[var\(--accent-primary\)\]:where(.dark,.dark *){color:var(--accent-primary)}.dark\:text-\[var\(--text-muted\)\]:where(.dark,.dark *){color:var(--text-muted)}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-amber-400\/80:where(.dark,.dark *){color:#fcbb00cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-400\/80:where(.dark,.dark *){color:color-mix(in oklab, var(--color-amber-400) 80%, transparent)}}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-cyan-300:where(.dark,.dark *){color:var(--color-cyan-300)}.dark\:text-cyan-400:where(.dark,.dark *){color:var(--color-cyan-400)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-fuchsia-300:where(.dark,.dark *){color:var(--color-fuchsia-300)}.dark\:text-indigo-100:where(.dark,.dark *){color:var(--color-indigo-100)}.dark\:text-indigo-200:where(.dark,.dark *){color:var(--color-indigo-200)}.dark\:text-indigo-300:where(.dark,.dark *){color:var(--color-indigo-300)}.dark\:text-indigo-400:where(.dark,.dark *){color:var(--color-indigo-400)}.dark\:text-indigo-400\/80:where(.dark,.dark *){color:#7d87ffcc}@supports (color:color-mix(in lab, red, red)){.dark\:text-indigo-400\/80:where(.dark,.dark *){color:color-mix(in oklab, var(--color-indigo-400) 80%, transparent)}}.dark\:text-purple-100:where(.dark,.dark *){color:var(--color-purple-100)}.dark\:text-purple-200:where(.dark,.dark *){color:var(--color-purple-200)}.dark\:text-purple-300:where(.dark,.dark *){color:var(--color-purple-300)}.dark\:text-purple-400:where(.dark,.dark *){color:var(--color-purple-400)}.dark\:text-rose-300:where(.dark,.dark *){color:var(--color-rose-300)}.dark\:text-rose-400:where(.dark,.dark *){color:var(--color-rose-400)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:text-slate-600:where(.dark,.dark *){color:var(--color-slate-600)}.dark\:text-teal-300:where(.dark,.dark *){color:var(--color-teal-300)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:placeholder-slate-500:where(.dark,.dark *)::placeholder{color:var(--color-slate-500)}@media (hover:hover){.dark\:hover\:bg-amber-500\/30:where(.dark,.dark *):hover{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-amber-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:hover\:bg-blue-500\/30:where(.dark,.dark *):hover{background-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-blue-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.dark\:hover\:bg-cyan-500\/30:where(.dark,.dark *):hover{background-color:#00b7d74d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-cyan-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-cyan-500) 30%, transparent)}}.dark\:hover\:bg-emerald-500\/20:where(.dark,.dark *):hover{background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-emerald-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.dark\:hover\:bg-emerald-500\/30:where(.dark,.dark *):hover{background-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-emerald-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:hover\:bg-indigo-500:where(.dark,.dark *):hover{background-color:var(--color-indigo-500)}.dark\:hover\:bg-indigo-600\/30:where(.dark,.dark *):hover{background-color:#4f39f64d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-indigo-600\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-indigo-600) 30%, transparent)}}.dark\:hover\:bg-indigo-600\/50:where(.dark,.dark *):hover{background-color:#4f39f680}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-indigo-600\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-indigo-600) 50%, transparent)}}.dark\:hover\:bg-purple-500\/20:where(.dark,.dark *):hover{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-purple-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:hover\:bg-purple-500\/30:where(.dark,.dark *):hover{background-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-purple-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.dark\:hover\:bg-purple-600\/50:where(.dark,.dark *):hover{background-color:#9810fa80}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-purple-600\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-purple-600) 50%, transparent)}}.dark\:hover\:bg-rose-500\/20:where(.dark,.dark *):hover{background-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-rose-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.dark\:hover\:bg-rose-500\/30:where(.dark,.dark *):hover{background-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-rose-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:hover\:bg-slate-900:where(.dark,.dark *):hover{background-color:var(--color-slate-900)}.dark\:hover\:bg-teal-500\/30:where(.dark,.dark *):hover{background-color:#00baa74d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-teal-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-teal-500) 30%, transparent)}}.dark\:hover\:text-indigo-300:where(.dark,.dark *):hover{color:var(--color-indigo-300)}.dark\:hover\:text-rose-400:where(.dark,.dark *):hover{color:var(--color-rose-400)}}.dark\:focus\:border-indigo-500\/50:where(.dark,.dark *):focus{border-color:#625fff80}@supports (color:color-mix(in lab, red, red)){.dark\:focus\:border-indigo-500\/50:where(.dark,.dark *):focus{border-color:color-mix(in oklab, var(--color-indigo-500) 50%, transparent)}}}:root{--bg-main:#f8fafc;--bg-app:#f8fafc;--bg-card:#fff;--bg-surface:#fff;--bg-surface-elevated:#f1f5f9;--bg-input:#fff;--border-subtle:#e2e8f0;--border-strong:#cbd5e1;--border-accent:#0e749066;--accent-primary:#0284c7;--accent-bg-subtle:#0284c714;--accent-border-subtle:#0284c740;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#64748b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.dark{--bg-main:#060812;--bg-app:#060812;--bg-card:#0b0f19;--bg-surface:#0a0e1a;--bg-surface-elevated:#0f172a;--bg-input:#0b0f19;--border-subtle:#1e293b;--border-strong:#334155;--border-accent:#6366f180;--accent-primary:#818cf8;--accent-bg-subtle:#6366f11f;--accent-border-subtle:#6366f14d;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background-color:var(--bg-main);color:var(--text-primary);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94a3b833;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#94a3b859}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
@@ -13,7 +13,7 @@ Error generating stack: `+e.message+`
13
13
  `);for(let t of e){let e=t.trim();e.startsWith(`- **Technical Detail**:`)?p.push(e.replace(/^- \*\*Technical Detail\*\*:\s*/,``)):e.startsWith(`- **Open Questions**:`)?m.push(e.replace(/^- \*\*Open Questions\*\*:\s*/,``)):e.startsWith(`- `)&&p.push(e.replace(/^- /,``))}}let g=o.match(/\*\*(?:Type|Category)\*\*:\s*([^\n]+)/i),_=g?g[1].trim():``,v=`Feature`;_.toLowerCase().includes(`bug`)?v=`Bug`:_.toLowerCase().includes(`idea`)?v=`Idea`:_.toLowerCase().includes(`tool`)?v=`Tools`:(_.toLowerCase().includes(`platform`)||_.toLowerCase().includes(`technical`))&&(v=`Platform`);let y=a.toLowerCase().includes(`(completed)`)||o.toLowerCase().includes(`status: completed`),b=t.replace(/\s*\([^)]*completed[^)]*\)/i,``).trim();i.push({id:`feature-${e}`,number:e,ticketId:String(e),title:b,type:v,category:v,complexity:n?n[1].trim():`Medium`,rationale:l,breakdown:d,technicalDetails:p.length>0?p:void 0,openQuestions:m.length>0?m:void 0,isCompleted:y?!0:void 0,featureFlag:c,projectId:void 0,project:void 0})}}}if(t){let e=r||{},t=n||{};for(let n in e){let r=e[n];if(!r)continue;let a=r.id;if(a===void 0){let e=parseInt(n.replace(/^[a-zA-Z0-9]+[-_:]/,``),10);a=isNaN(e)?parseInt(n,10):e}if(isNaN(a))continue;let o=t[n]||``,s=o.match(/(?:##|###)\s*(?:Summary|Rationale)\s*\n([\s\S]*?)(?=\n##|\n###|\n#|$)/i),c=[],l=o.match(/(?:##|###)\s*Feature Breakdown\s*\n([\s\S]*?)(?=\n##|\n###|\n#|$)/i);if(l){let e=l[1].split(`
14
14
  `),t=``;for(let n of e){let e=n.match(/^\d+\.\s*(.*)$/);e?(t&&c.push(t),t=e[1].trim()):n.trim().startsWith(`-`)||n.trim().startsWith(`*`)||n.trim().startsWith(`•`)?t?t+=`
15
15
  `+n.trim():c.push(n.trim().replace(/^[-*•]\s*/,``)):t&&n.trim()&&(t+=` `+n.trim())}t&&c.push(t)}let u=[],d=[],f=o.match(/(?:##|###)\s*Technical Detail & Open Questions\s*\n([\s\S]*?)(?=\n##|\n###|\n#|$)/i);if(f){let e=f[1].split(`
16
- `);for(let t of e){let e=t.trim();e.startsWith(`- **Technical Detail**:`)?u.push(e.replace(/^[-*•]\s*\*\*Technical Detail\*\*:\s*/,``)):e.startsWith(`- **Open Question**:`)||e.startsWith(`* **Open Question**:`)||e.startsWith(`- **Open Questions**:`)||e.startsWith(`* **Open Questions**:`)?d.push(e.replace(/^[-*•]\s*\*\*Open Questions?\*\*:\s*/,``)):(e.startsWith(`- `)||e.startsWith(`* `)||e.startsWith(`• `))&&u.push(e.replace(/^[-*•]\s*/,``))}}let p=s?s[1].trim():!l&&!f&&o?o.trim():void 0,m=M(r.projectId??r.project)||M(1),h=m?.code||r.project||`Prof`,g=i.findIndex(e=>e.ticketId===n||e.number===a&&e.projectId===m?.id),_=g>=0?i[g]:void 0,v=o.match(/^#\s*(?:Ticket\s*#?\d+\s*:\s*|\d+\s*:\s*)?([^\n]+)/im),y=(r.title&&r.title.trim()||(v?v[1].trim():``)||_?.title||``).slice(0,48),b=o.match(/\*\*(?:Type|Category)\*\*:\s*([^\n]+)/i),x=r.type||r.category||(b?b[1].trim():void 0)||_?.type||_?.category||`Feature`,S=o.match(/\*\*Complexity\*\*:\s*([^\n]+)/i),C=r.complexity||(S?S[1].trim():void 0)||_?.complexity||`Medium`,w=o.match(/\*\*Estimated Effort\*\*:\s*([^\n]+)/i),T=r.estimatedEffort||(w?w[1].trim():void 0)||_?.estimatedEffort||`N/A`,ee=r.featureFlag||_?.featureFlag,te=r.status===`Completed`||r.status===void 0&&_?.isCompleted,E=r.status===`Rejected`||r.status===void 0&&_?.isRejected,ne={id:`feature-${h}-${a}`,number:a,ticketId:n,title:y,type:x,category:x,complexity:C,estimatedEffort:T,rationale:p||_?.rationale,breakdown:c.length>0?c:_?.breakdown||[],technicalDetails:u.length>0?u:_?.technicalDetails,openQuestions:d.length>0?d:_?.openQuestions,featureFlag:ee,projectId:m?.id,project:m?.name,isCompleted:te,isRejected:E,rawDetail:o||_?.rawDetail||void 0};g>=0?i[g]=ne:i.push(ne)}}return{plannedFeatures:i.sort((e,t)=>e.number-t.number),featureFlags:a,majorIdeas:o,rawMarkdown:e}}var nt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),P=o(((e,t)=>{t.exports=nt()}))(),rt=({isOpen:e,onClose:t,onConfirm:n,title:r,subtitle:i,message:a,confirmLabel:o=`Confirm`,cancelLabel:s=`Cancel`,variant:c=`warning`,icon:l,hideCancel:u=!1})=>{if((0,C.useEffect)(()=>{let n=e=>{e.key===`Escape`&&t()};return e&&window.addEventListener(`keydown`,n),()=>{window.removeEventListener(`keydown`,n)}},[e,t]),!e)return null;let d=(()=>{switch(c){case`danger`:return{iconBg:`bg-rose-500/10 border-rose-500/30 text-rose-400`,defaultIcon:(0,P.jsx)(D,{size:20}),confirmBtn:`bg-rose-600 hover:bg-rose-500 text-white shadow-rose-600/20`};case`success`:return{iconBg:`bg-emerald-500/10 border-emerald-500/30 text-emerald-400`,defaultIcon:(0,P.jsx)(oe,{size:20}),confirmBtn:`bg-emerald-600 hover:bg-emerald-500 text-white shadow-emerald-600/20`};case`info`:return{iconBg:`bg-[var(--accent-bg-subtle)] border-[var(--accent-border-subtle)] text-[var(--accent-primary)]`,defaultIcon:(0,P.jsx)(ye,{size:20}),confirmBtn:`bg-[var(--accent-primary)] hover:brightness-110 text-white shadow-lg shadow-[var(--accent-primary)]/20`};default:return{iconBg:`bg-amber-500/10 border-amber-500/30 text-amber-400`,defaultIcon:(0,P.jsx)(Ve,{size:20}),confirmBtn:`bg-[var(--accent-primary)] hover:brightness-110 text-white shadow-lg shadow-[var(--accent-primary)]/20`}}})();return(0,P.jsx)(`div`,{className:`fixed inset-0 bg-black/85 backdrop-blur-md z-[120] flex items-center justify-center p-4 animate-fade-in`,onClick:t,children:(0,P.jsxs)(`div`,{className:`bg-[var(--bg-surface)] border border-[var(--border-strong)] w-full max-w-md rounded-3xl p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-[var(--text-primary)] space-y-5`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`div`,{className:`w-10 h-10 rounded-full border flex items-center justify-center shrink-0 ${d.iconBg}`,children:l||d.defaultIcon}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h3`,{className:`text-sm font-bold text-[var(--text-primary)]`,children:r}),i&&(0,P.jsx)(`p`,{className:`text-[10px] text-[var(--accent-primary)] font-mono`,children:i})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`text-[var(--text-muted)] hover:text-[var(--text-primary)] p-1 rounded-lg hover:bg-[var(--bg-surface-elevated)] transition-colors cursor-pointer`,"aria-label":`Close dialog`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsx)(`div`,{className:`text-xs text-[var(--text-secondary)] leading-relaxed whitespace-pre-wrap`,children:typeof a==`string`?(0,P.jsx)(`p`,{children:a}):a}),(0,P.jsxs)(`div`,{className:`flex flex-col-reverse sm:flex-row sm:justify-end gap-2.5 pt-2`,children:[!u&&(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`w-full sm:w-auto px-4 py-2.5 rounded-xl bg-[var(--bg-input)] hover:bg-[var(--bg-surface-elevated)] border border-[var(--border-subtle)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] text-xs font-semibold uppercase tracking-wider transition-all cursor-pointer min-h-[44px] flex items-center justify-center`,children:s}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>{n&&n(),t()},className:`w-full sm:w-auto px-5 py-2.5 rounded-xl font-bold text-xs uppercase tracking-wider flex items-center justify-center gap-2 transition-all cursor-pointer shadow-lg min-h-[44px] ${d.confirmBtn}`,children:o})]})]})})},it=[{name:`Cyan`,badge:`border-cyan-500/30 bg-cyan-500/10 text-cyan-300`,dot:`bg-cyan-400`,border:`border-cyan-500/40`},{name:`Indigo`,badge:`border-indigo-500/30 bg-indigo-500/10 text-indigo-300`,dot:`bg-indigo-400`,border:`border-indigo-500/40`},{name:`Emerald`,badge:`border-emerald-500/30 bg-emerald-500/10 text-emerald-300`,dot:`bg-emerald-400`,border:`border-emerald-500/40`},{name:`Fuchsia`,badge:`border-fuchsia-500/30 bg-fuchsia-500/10 text-fuchsia-300`,dot:`bg-fuchsia-400`,border:`border-fuchsia-500/40`},{name:`Amber`,badge:`border-amber-500/30 bg-amber-500/10 text-amber-300`,dot:`bg-amber-400`,border:`border-amber-500/40`},{name:`Rose`,badge:`border-rose-500/30 bg-rose-500/10 text-rose-300`,dot:`bg-rose-400`,border:`border-rose-500/40`}],at=({isOpen:e,onClose:t,onCreated:n})=>{let[r,i]=(0,C.useState)(``),[a,o]=(0,C.useState)(``),[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(0),[d,f]=(0,C.useState)(!1),[p,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(!1),_=(0,C.useMemo)(()=>!!(r.trim()||a.trim()||s.trim()),[r,a,s]),v=(0,C.useCallback)(()=>{_?g(!0):t()},[_,t]);return(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(h?g(!1):v())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h,v]),e?(0,P.jsxs)(`div`,{className:`fixed inset-0 z-[90] flex items-center justify-center p-4 bg-slate-950/80 backdrop-blur-md animate-fade-in`,onClick:v,children:[(0,P.jsxs)(`div`,{className:`w-full max-w-md bg-[var(--bg-surface-elevated)] border border-[var(--border-subtle)] rounded-2xl shadow-2xl overflow-hidden flex flex-col animate-scale-up`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-[var(--border-subtle)] bg-[var(--bg-surface)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`div`,{className:`p-1.5 rounded-xl bg-[var(--accent-primary)]/10 text-[var(--accent-primary)]`,children:(0,P.jsx)(me,{size:18})}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h2`,{className:`text-sm font-bold text-[var(--text-primary)]`,children:`Add New Project`}),(0,P.jsxs)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:[`Register a project with a 1-`,7,` char code`]})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:v,className:`p-1 text-[var(--text-muted)] hover:text-[var(--text-primary)] rounded-lg transition-colors cursor-pointer`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let i=r.trim();if(!i){m(`Project code is required.`);return}if(!RegExp(`^[a-zA-Z0-9]{1,7}$`).test(i)){m(`Project code must be 1 to 7 alphanumeric characters (e.g. CORE, ALCE, WEB).`);return}if(Xe.some(e=>e.toLowerCase()===i.toLowerCase())){m(`Project code '${i}' collides with an existing project (case-insensitive).`);return}let o=a.trim();if(!o){m(`Project name is required.`);return}if(o.length>48){m(`Project name cannot exceed 48 characters.`);return}m(null),f(!0);let c=it[l];try{let e=await fetch(`/api/planning/create-project`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:i,name:o,description:s.trim()||`${o} Project`,colors:c})});if(!e.ok){let t=await e.json();throw Error(t.error||`Failed to create project`)}let{project:r}=await e.json();qe.push(r),Xe.push(r.code),f(!1),n(r),t()}catch{let e={id:qe.length>0?Math.max(...qe.map(e=>e.id))+1:1,code:i,slug:o.toLowerCase().replace(/[^a-z0-9]+/g,`-`),name:o,description:s.trim()||`${o} Project`,colors:c};qe.push(e),Xe.push(e.code),f(!1),n(e),t()}},className:`p-4 space-y-3.5`,children:[p&&(0,P.jsx)(`div`,{className:`p-2.5 bg-rose-500/10 border border-rose-500/30 rounded-xl text-xs text-rose-300`,children:p}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(me,{size:13,className:`text-[var(--accent-primary)]`}),` Project Code *`]}),(0,P.jsxs)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)]`,children:[r.length,`/`,7]})]}),(0,P.jsx)(`input`,{type:`text`,value:r,maxLength:7,onChange:e=>i(e.target.value.replace(/[^a-zA-Z0-9]/g,``)),placeholder:`e.g. CORE, ALCE, WEB`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs font-mono font-bold text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`,required:!0,autoFocus:!0}),(0,P.jsxs)(`p`,{className:`text-[10px] text-[var(--text-muted)]`,children:[`Strictly 1 to `,7,` alphanumeric characters.`]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(A,{size:13,className:`text-[var(--accent-primary)]`}),` Project Name *`]}),(0,P.jsxs)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)]`,children:[a.length,`/`,48]})]}),(0,P.jsx)(`input`,{type:`text`,value:a,maxLength:48,onChange:e=>o(e.target.value),placeholder:`e.g. Hablaster Video Game`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`,required:!0})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsx)(`label`,{className:`text-xs font-bold text-[var(--text-primary)]`,children:`Description`}),(0,P.jsx)(`input`,{type:`text`,value:s,maxLength:120,onChange:e=>c(e.target.value),placeholder:`Brief summary of repository or app`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`})]}),(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(Te,{size:13,className:`text-[var(--accent-primary)]`}),` Badge Color Palette`]}),(0,P.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:it.map((e,t)=>(0,P.jsxs)(`button`,{type:`button`,onClick:()=>u(t),className:`p-2 rounded-xl border text-xs font-mono font-semibold flex items-center gap-1.5 transition-all cursor-pointer ${e.badge} ${l===t?`ring-2 ring-[var(--accent-primary)] shadow-md`:`opacity-70 hover:opacity-100`}`,children:[(0,P.jsx)(`span`,{className:`w-2 h-2 rounded-full ${e.dot} shrink-0`}),(0,P.jsx)(`span`,{children:e.name})]},e.name))})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-2 border-t border-[var(--border-subtle)]`,children:[(0,P.jsx)(`button`,{type:`button`,onClick:v,className:`px-3 py-1.5 bg-slate-800 hover:bg-slate-700 text-slate-300 rounded-xl text-xs font-semibold transition-colors cursor-pointer`,children:`Cancel`}),(0,P.jsxs)(`button`,{type:`submit`,disabled:d||!r.trim()||!a.trim(),className:`px-3.5 py-1.5 bg-[var(--accent-primary)] hover:brightness-110 text-white rounded-xl text-xs font-semibold flex items-center gap-1.5 shadow-md transition-all disabled:opacity-50 cursor-pointer`,children:[(0,P.jsx)(Oe,{size:14}),(0,P.jsx)(`span`,{children:d?`Creating...`:`Create Project`})]})]})]})]}),(0,P.jsx)(rt,{isOpen:h,title:`Discard Unsaved Project?`,message:`You have entered project details. Are you sure you want to discard your changes?`,confirmLabel:`Discard`,cancelLabel:`Keep Editing`,variant:`danger`,onClose:()=>g(!1),onConfirm:()=>{g(!1),t()}})]}):null},ot=[{name:`Feature`,badgeClass:`border-indigo-500/30 bg-indigo-500/10 text-indigo-700 dark:text-indigo-300`,icon:(0,P.jsx)(Ie,{size:14,className:`text-indigo-600 dark:text-indigo-400`}),summary:`User-facing gameplay features, UI screens, calculators, and research tools.`,scope:`Enhancements that players interact with directly during day-to-day gameplay.`},{name:`Platform`,badgeClass:`border-cyan-500/30 bg-cyan-500/10 text-cyan-700 dark:text-cyan-300`,icon:(0,P.jsx)(le,{size:14,className:`text-cyan-600 dark:text-cyan-400`}),summary:`Core architecture, database/storage layers, schema migrations, CI/CD, and security.`,scope:`Foundational infrastructure that powers reliability, speed, and cross-project modularity.`},{name:`Tools`,badgeClass:`border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300`,icon:(0,P.jsx)(Ue,{size:14,className:`text-amber-600 dark:text-amber-400`}),summary:`Build tools, developer options, inspection utilities, benchmarks, test suites, and LLM agent skills.`,scope:`Internal tooling that accelerates developer workflows and pairs with LLM coding partners.`},{name:`Idea`,badgeClass:`border-purple-500/30 bg-purple-500/10 text-purple-700 dark:text-purple-300`,icon:(0,P.jsx)(xe,{size:14,className:`text-purple-600 dark:text-purple-400`}),summary:`Exploratory concepts, RFCs, and brainstorming proposals.`,scope:`Early-stage proposals requiring architectural definition or review before scheduling.`},{name:`Bug`,badgeClass:`border-rose-500/30 bg-rose-500/10 text-rose-700 dark:text-rose-300`,icon:(0,P.jsx)(ne,{size:14,className:`text-rose-600 dark:text-rose-400`}),summary:`Defect fixes, visual regression repairs, and calculation corrections.`,scope:`Resolving broken functionality, layout clipping, or unexpected application crashes.`}],st=[{name:`Planned`,color:`border-[var(--border-subtle)] bg-[var(--bg-surface)] text-[var(--text-secondary)]`,description:`Backlog ticket queued for future active planning and development.`},{name:`In Development`,color:`border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300 font-semibold`,description:`Actively being designed, developed, or verified by a developer or LLM agent.`},{name:`Completed`,color:`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-semibold`,description:`Shipped to production and verified against all automated test suites.`},{name:`Rejected`,color:`border-rose-500/40 bg-rose-500/10 text-rose-700 dark:text-rose-300 font-semibold`,description:`Dismissed or superseded proposal (preserved for historical traceability).`}],ct=[{level:`Low / Small`,hours:`0.5 – 2.0 hrs`,desc:`Single-component tweaks, localized CSS fixes, configuration updates.`},{level:`Medium`,hours:`2.0 – 5.0 hrs`,desc:`New modal dialogs, service integrations, multi-file refactoring.`},{level:`High / Large`,hours:`5.0 – 12.0+ hrs`,desc:`Architectural decoupling, dual-storage engines, major data migrations.`}],lt=({isOpen:e,onClose:t})=>((0,C.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]),e?(0,P.jsx)(`div`,{id:`ticket-help-modal-overlay`,className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-md flex items-center justify-center p-3 sm:p-4 animate-fade-in`,onClick:t,children:(0,P.jsxs)(`div`,{id:`ticket-help-modal-container`,className:`w-full max-w-2xl max-h-[90vh] bg-[var(--bg-surface)] border border-[var(--border-subtle)] rounded-2xl sm:rounded-3xl overflow-hidden shadow-2xl flex flex-col text-[var(--text-primary)] animate-scale-in`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`bg-[var(--bg-surface-elevated)] p-4 sm:p-5 border-b border-[var(--border-subtle)] flex items-center justify-between shrink-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`div`,{className:`w-10 h-10 rounded-2xl bg-[var(--accent-bg-subtle)] border border-[var(--accent-border-subtle)] flex items-center justify-center text-[var(--accent-primary)] shadow-inner shrink-0`,children:(0,P.jsx)(se,{size:20})}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h3`,{className:`text-base font-bold text-[var(--text-primary)]`,children:`Help & About`}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:`Standard taxonomy, lifecycle workflows, sizing guidelines, and license disclosures`})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`p-1.5 hover:bg-[var(--accent-bg-subtle)] text-[var(--text-muted)] hover:text-[var(--text-primary)] rounded-xl transition-colors cursor-pointer`,"aria-label":`Close Help Modal`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 sm:p-5 space-y-6 text-xs leading-relaxed`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,P.jsx)(be,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`Ticket Types (Types)`})]}),(0,P.jsx)(`div`,{className:`space-y-2.5`,children:ot.map(e=>(0,P.jsxs)(`div`,{className:`p-3 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-1.5`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,P.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-[11px] font-bold border ${e.badgeClass}`,children:[e.icon,e.name]})}),(0,P.jsx)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)] truncate`,children:e.scope})]}),(0,P.jsx)(`p`,{className:`text-[var(--text-secondary)] text-[11px]`,children:e.summary})]},e.name))})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,P.jsx)(k,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`Lifecycle Statuses`})]}),(0,P.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2.5`,children:st.map(e=>(0,P.jsxs)(`div`,{className:`p-2.5 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-1`,children:[(0,P.jsx)(`span`,{className:`inline-block px-2 py-0.5 rounded text-[10px] font-bold border ${e.color}`,children:e.name}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-secondary)]`,children:e.description})]},e.name))})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,P.jsx)(oe,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`Complexity & Effort Guidelines`})]}),(0,P.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-2.5`,children:ct.map(e=>(0,P.jsxs)(`div`,{className:`p-2.5 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`font-bold text-[var(--text-primary)] text-xs`,children:e.level}),(0,P.jsx)(`span`,{className:`text-[10px] font-mono font-bold text-[var(--accent-primary)]`,children:e.hours})]}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:e.desc})]},e.level))})]}),(0,P.jsxs)(`div`,{className:`p-3 bg-[var(--accent-bg-subtle)] border border-[var(--accent-border-subtle)] rounded-xl space-y-1 text-[11px] text-[var(--text-secondary)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[var(--accent-primary)] font-bold`,children:[(0,P.jsx)(Pe,{size:14}),(0,P.jsx)(`span`,{children:`Invariants & Agent Pairing Best Practices`})]}),(0,P.jsxs)(`ul`,{className:`list-disc list-inside space-y-0.5 text-[var(--text-secondary)] text-[10px] sm:text-[11px]`,children:[(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`strong`,{children:`Title Limit`}),": Keep ticket titles strictly $\\le 48$ characters (`MAX_TICKET_TITLE_LENGTH = 48`)."]}),(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`strong`,{children:`Summary`}),`: Write a clean 1–2 sentence elevator pitch explaining user benefit and motivation.`]}),(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`strong`,{children:`Breakdown`}),`: Use clear numbered bullet points for feature requirements to guide implementation plans.`]})]})]}),(0,P.jsxs)(`div`,{className:`pt-2 border-t border-[var(--border-subtle)] space-y-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(ye,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`About & License Declarations`})]}),(0,P.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-3 text-[11px] text-[var(--text-secondary)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{className:`font-bold text-[var(--text-primary)] text-xs`,children:`Developer Planning & Ticketing Platform`}),(0,P.jsx)(`span`,{className:`text-[10px] text-[var(--text-muted)] font-mono ml-2`,children:`v0.1.0`})]}),(0,P.jsx)(`span`,{className:`px-2 py-0.5 rounded-full text-[10px] font-mono font-bold bg-emerald-500/10 border border-emerald-500/30 text-emerald-600 dark:text-emerald-400`,children:`MIT License`})]}),(0,P.jsx)(`p`,{className:`text-[var(--text-secondary)] text-[11px] leading-relaxed`,children:`Autonomous developer roadmap, ticketing engine, and Model Context Protocol (MCP) server for developers and LLM coding partners.`}),(0,P.jsxs)(`div`,{className:`pt-2.5 border-t border-[var(--border-subtle)] space-y-2`,children:[(0,P.jsx)(`span`,{className:`text-[10px] font-semibold text-[var(--text-muted)] uppercase tracking-wider block`,children:`Third-Party Component & Library Disclosures`}),(0,P.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 text-[10px] font-mono`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`React & ReactDOM`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`MIT`})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`Lucide React`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`ISC`})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`Node.js Standard Lib`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`MIT / BSD`})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`TypeScript & Vite`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`Apache-2.0 / MIT`})]})]})]})]})]})]}),(0,P.jsx)(`div`,{className:`bg-[var(--bg-surface-elevated)] px-5 py-3 border-t border-[var(--border-subtle)] flex items-center justify-end`,children:(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`px-4 py-1.5 bg-[var(--accent-primary)] hover:brightness-110 text-white text-xs font-semibold rounded-xl transition-all cursor-pointer shadow-sm`,children:`Got It`})})]})}):null),F={1:[`chat_enhanced`,`evolutions`,`multiple_teams`],2:[`frontend`,`components`,`styles`],3:[`guides`,`api_reference`,`tutorials`]},ut=({isOpen:e,onClose:t,onCreated:n,defaultAuthor:r=`Developer`,defaultProject:i,availableProjects:a,isEmbedded:o=!1})=>{let[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(()=>i===void 0?void 0:M(i)?.id),[d,f]=(0,C.useState)(`Feature`),[p,m]=(0,C.useState)(`Medium`),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(``),[y,b]=(0,C.useState)(``),[x,S]=(0,C.useState)(``),[w,T]=(0,C.useState)(r),[ee,te]=(0,C.useState)(!1),[E,ne]=(0,C.useState)(!1),[re,ie]=(0,C.useState)(!1),[ae,D]=(0,C.useState)(!1),O=(0,C.useMemo)(()=>!!(s.trim()||_.trim()||y.trim()||x.trim()),[s,_,y,x]),k=(0,C.useCallback)(()=>{O?D(!0):t()},[O,t]);(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(ae?D(!1):re?ie(!1):E?ne(!1):k())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ae,re,E,k]);let[ce,le]=(0,C.useState)(null);return C.useEffect(()=>{e&&u(i===void 0?void 0:M(i)?.id)},[e,i]),C.useEffect(()=>{let e=l===void 0?[]:F[l]||[];h&&!e.includes(h)&&g(``)},[l]),e?(0,P.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-slate-950/80 backdrop-blur-md animate-fade-in`,onClick:k,children:[(0,P.jsxs)(`div`,{className:`relative w-full max-w-2xl bg-[var(--bg-surface)] border border-[var(--border-subtle)] rounded-2xl shadow-2xl overflow-hidden flex flex-col max-h-[90vh] text-[var(--text-primary)]`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`div`,{className:`p-2 bg-[var(--accent-bg-subtle)] text-[var(--accent-primary)] rounded-xl border border-[var(--accent-border-subtle)]`,children:(0,P.jsx)(Oe,{size:18})}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h3`,{className:`font-bold text-[var(--text-primary)] text-sm`,children:`Create New Developer Ticket`}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:`Initialize a new ticket folder with metadata and specification`})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:k,className:`p-1.5 text-[var(--text-muted)] hover:text-[var(--text-primary)] hover:bg-[var(--accent-bg-subtle)] rounded-lg transition-colors cursor-pointer`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),!s.trim()){le(`Ticket title is required.`);return}if(l===void 0){le(`Project is required. Please select a project for this ticket.`);return}let i=j(l);if(!i){le(`Selected project is invalid or not registered.`);return}le(null),te(!0);try{let e=x.split(`
16
+ `);for(let t of e){let e=t.trim();e.startsWith(`- **Technical Detail**:`)?u.push(e.replace(/^[-*•]\s*\*\*Technical Detail\*\*:\s*/,``)):e.startsWith(`- **Open Question**:`)||e.startsWith(`* **Open Question**:`)||e.startsWith(`- **Open Questions**:`)||e.startsWith(`* **Open Questions**:`)?d.push(e.replace(/^[-*•]\s*\*\*Open Questions?\*\*:\s*/,``)):(e.startsWith(`- `)||e.startsWith(`* `)||e.startsWith(`• `))&&u.push(e.replace(/^[-*•]\s*/,``))}}let p=s?s[1].trim():!l&&!f&&o?o.trim():void 0,m=M(r.projectId??r.project)||M(1),h=m?.code||r.project||`Prof`,g=i.findIndex(e=>e.ticketId===n||e.number===a&&e.projectId===m?.id),_=g>=0?i[g]:void 0,v=o.match(/^#\s*(?:Ticket\s*#?\d+\s*:\s*|\d+\s*:\s*)?([^\n]+)/im),y=(r.title&&r.title.trim()||(v?v[1].trim():``)||_?.title||``).slice(0,48),b=o.match(/\*\*(?:Type|Category)\*\*:\s*([^\n]+)/i),x=r.type||r.category||(b?b[1].trim():void 0)||_?.type||_?.category||`Feature`,S=o.match(/\*\*Complexity\*\*:\s*([^\n]+)/i),C=r.complexity||(S?S[1].trim():void 0)||_?.complexity||`Medium`,w=o.match(/\*\*Estimated Effort\*\*:\s*([^\n]+)/i),T=r.estimatedEffort||(w?w[1].trim():void 0)||_?.estimatedEffort||`N/A`,ee=r.featureFlag||_?.featureFlag,te=r.status===`Completed`||r.status===void 0&&_?.isCompleted,E=r.status===`Rejected`||r.status===void 0&&_?.isRejected,ne={id:`feature-${h}-${a}`,number:a,ticketId:n,title:y,type:x,category:x,complexity:C,estimatedEffort:T,rationale:p||_?.rationale,breakdown:c.length>0?c:_?.breakdown||[],technicalDetails:u.length>0?u:_?.technicalDetails,openQuestions:d.length>0?d:_?.openQuestions,featureFlag:ee,projectId:m?.id,project:m?.name,isCompleted:te,isRejected:E,rawDetail:o||_?.rawDetail||void 0};g>=0?i[g]=ne:i.push(ne)}}return{plannedFeatures:i.sort((e,t)=>e.number-t.number),featureFlags:a,majorIdeas:o,rawMarkdown:e}}var nt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),P=o(((e,t)=>{t.exports=nt()}))(),rt=({isOpen:e,onClose:t,onConfirm:n,title:r,subtitle:i,message:a,confirmLabel:o=`Confirm`,cancelLabel:s=`Cancel`,variant:c=`warning`,icon:l,hideCancel:u=!1})=>{if((0,C.useEffect)(()=>{let n=e=>{e.key===`Escape`&&t()};return e&&window.addEventListener(`keydown`,n),()=>{window.removeEventListener(`keydown`,n)}},[e,t]),!e)return null;let d=(()=>{switch(c){case`danger`:return{iconBg:`bg-rose-500/10 border-rose-500/30 text-rose-400`,defaultIcon:(0,P.jsx)(D,{size:20}),confirmBtn:`bg-rose-600 hover:bg-rose-500 text-white shadow-rose-600/20`};case`success`:return{iconBg:`bg-emerald-500/10 border-emerald-500/30 text-emerald-400`,defaultIcon:(0,P.jsx)(oe,{size:20}),confirmBtn:`bg-emerald-600 hover:bg-emerald-500 text-white shadow-emerald-600/20`};case`info`:return{iconBg:`bg-[var(--accent-bg-subtle)] border-[var(--accent-border-subtle)] text-[var(--accent-primary)]`,defaultIcon:(0,P.jsx)(ye,{size:20}),confirmBtn:`bg-[var(--accent-primary)] hover:brightness-110 text-white shadow-lg shadow-[var(--accent-primary)]/20`};default:return{iconBg:`bg-amber-500/10 border-amber-500/30 text-amber-400`,defaultIcon:(0,P.jsx)(Ve,{size:20}),confirmBtn:`bg-[var(--accent-primary)] hover:brightness-110 text-white shadow-lg shadow-[var(--accent-primary)]/20`}}})();return(0,P.jsx)(`div`,{className:`fixed inset-0 bg-black/85 backdrop-blur-md z-[120] flex items-center justify-center p-4 animate-fade-in`,onClick:t,children:(0,P.jsxs)(`div`,{className:`bg-[var(--bg-surface)] border border-[var(--border-strong)] w-full max-w-md rounded-3xl p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-[var(--text-primary)] space-y-5`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`div`,{className:`w-10 h-10 rounded-full border flex items-center justify-center shrink-0 ${d.iconBg}`,children:l||d.defaultIcon}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h3`,{className:`text-sm font-bold text-[var(--text-primary)]`,children:r}),i&&(0,P.jsx)(`p`,{className:`text-[10px] text-[var(--accent-primary)] font-mono`,children:i})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`text-[var(--text-muted)] hover:text-[var(--text-primary)] p-1 rounded-lg hover:bg-[var(--bg-surface-elevated)] transition-colors cursor-pointer`,"aria-label":`Close dialog`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsx)(`div`,{className:`text-xs text-[var(--text-secondary)] leading-relaxed whitespace-pre-wrap`,children:typeof a==`string`?(0,P.jsx)(`p`,{children:a}):a}),(0,P.jsxs)(`div`,{className:`flex flex-col-reverse sm:flex-row sm:justify-end gap-2.5 pt-2`,children:[!u&&(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`w-full sm:w-auto px-4 py-2.5 rounded-xl bg-[var(--bg-input)] hover:bg-[var(--bg-surface-elevated)] border border-[var(--border-subtle)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] text-xs font-semibold uppercase tracking-wider transition-all cursor-pointer min-h-[44px] flex items-center justify-center`,children:s}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>{n&&n(),t()},className:`w-full sm:w-auto px-5 py-2.5 rounded-xl font-bold text-xs uppercase tracking-wider flex items-center justify-center gap-2 transition-all cursor-pointer shadow-lg min-h-[44px] ${d.confirmBtn}`,children:o})]})]})})},it=[{name:`Cyan`,badge:`border-cyan-500/30 bg-cyan-500/10 text-cyan-300`,dot:`bg-cyan-400`,border:`border-cyan-500/40`},{name:`Indigo`,badge:`border-indigo-500/30 bg-indigo-500/10 text-indigo-300`,dot:`bg-indigo-400`,border:`border-indigo-500/40`},{name:`Emerald`,badge:`border-emerald-500/30 bg-emerald-500/10 text-emerald-300`,dot:`bg-emerald-400`,border:`border-emerald-500/40`},{name:`Fuchsia`,badge:`border-fuchsia-500/30 bg-fuchsia-500/10 text-fuchsia-300`,dot:`bg-fuchsia-400`,border:`border-fuchsia-500/40`},{name:`Amber`,badge:`border-amber-500/30 bg-amber-500/10 text-amber-300`,dot:`bg-amber-400`,border:`border-amber-500/40`},{name:`Rose`,badge:`border-rose-500/30 bg-rose-500/10 text-rose-300`,dot:`bg-rose-400`,border:`border-rose-500/40`}],at=({isOpen:e,onClose:t,onCreated:n})=>{let[r,i]=(0,C.useState)(``),[a,o]=(0,C.useState)(``),[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(0),[d,f]=(0,C.useState)(!1),[p,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(!1),_=(0,C.useMemo)(()=>!!(r.trim()||a.trim()||s.trim()),[r,a,s]),v=(0,C.useCallback)(()=>{_?g(!0):t()},[_,t]);return(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(h?g(!1):v())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h,v]),e?(0,P.jsxs)(`div`,{className:`fixed inset-0 z-[90] flex items-center justify-center p-4 bg-slate-950/80 backdrop-blur-md animate-fade-in`,onClick:v,children:[(0,P.jsxs)(`div`,{className:`w-full max-w-md bg-[var(--bg-surface-elevated)] border border-[var(--border-subtle)] rounded-2xl shadow-2xl overflow-hidden flex flex-col animate-scale-up`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-[var(--border-subtle)] bg-[var(--bg-surface)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`div`,{className:`p-1.5 rounded-xl bg-[var(--accent-primary)]/10 text-[var(--accent-primary)]`,children:(0,P.jsx)(me,{size:18})}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h2`,{className:`text-sm font-bold text-[var(--text-primary)]`,children:`Add New Project`}),(0,P.jsxs)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:[`Register a project with a 1-`,8,` char code`]})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:v,className:`p-1 text-[var(--text-muted)] hover:text-[var(--text-primary)] rounded-lg transition-colors cursor-pointer`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let i=r.trim();if(!i){m(`Project code is required.`);return}if(!RegExp(`^[a-zA-Z0-9]{1,8}$`).test(i)){m(`Project code must be 1 to 8 alphanumeric characters (e.g. CORE, ALCE, WEB).`);return}if(Xe.some(e=>e.toLowerCase()===i.toLowerCase())){m(`Project code '${i}' collides with an existing project (case-insensitive).`);return}let o=a.trim();if(!o){m(`Project name is required.`);return}if(o.length>48){m(`Project name cannot exceed 48 characters.`);return}m(null),f(!0);let c=it[l];try{let e=await fetch(`/api/planning/create-project`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:i,name:o,description:s.trim()||`${o} Project`,colors:c})});if(!e.ok){let t=await e.json();throw Error(t.error||`Failed to create project`)}let{project:r}=await e.json();qe.push(r),Xe.push(r.code),f(!1),n(r),t()}catch{let e={id:qe.length>0?Math.max(...qe.map(e=>e.id))+1:1,code:i,slug:o.toLowerCase().replace(/[^a-z0-9]+/g,`-`),name:o,description:s.trim()||`${o} Project`,colors:c};qe.push(e),Xe.push(e.code),f(!1),n(e),t()}},className:`p-4 space-y-3.5`,children:[p&&(0,P.jsx)(`div`,{className:`p-2.5 bg-rose-500/10 border border-rose-500/30 rounded-xl text-xs text-rose-300`,children:p}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(me,{size:13,className:`text-[var(--accent-primary)]`}),` Project Code *`]}),(0,P.jsxs)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)]`,children:[r.length,`/`,8]})]}),(0,P.jsx)(`input`,{type:`text`,value:r,maxLength:8,onChange:e=>i(e.target.value.replace(/[^a-zA-Z0-9]/g,``)),placeholder:`e.g. CORE, ALCE, WEB`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs font-mono font-bold text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`,required:!0,autoFocus:!0}),(0,P.jsxs)(`p`,{className:`text-[10px] text-[var(--text-muted)]`,children:[`Strictly 1 to `,8,` alphanumeric characters.`]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(A,{size:13,className:`text-[var(--accent-primary)]`}),` Project Name *`]}),(0,P.jsxs)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)]`,children:[a.length,`/`,48]})]}),(0,P.jsx)(`input`,{type:`text`,value:a,maxLength:48,onChange:e=>o(e.target.value),placeholder:`e.g. Hablaster Video Game`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`,required:!0})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsx)(`label`,{className:`text-xs font-bold text-[var(--text-primary)]`,children:`Description`}),(0,P.jsx)(`input`,{type:`text`,value:s,maxLength:120,onChange:e=>c(e.target.value),placeholder:`Brief summary of repository or app`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`})]}),(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(Te,{size:13,className:`text-[var(--accent-primary)]`}),` Badge Color Palette`]}),(0,P.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:it.map((e,t)=>(0,P.jsxs)(`button`,{type:`button`,onClick:()=>u(t),className:`p-2 rounded-xl border text-xs font-mono font-semibold flex items-center gap-1.5 transition-all cursor-pointer ${e.badge} ${l===t?`ring-2 ring-[var(--accent-primary)] shadow-md`:`opacity-70 hover:opacity-100`}`,children:[(0,P.jsx)(`span`,{className:`w-2 h-2 rounded-full ${e.dot} shrink-0`}),(0,P.jsx)(`span`,{children:e.name})]},e.name))})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-2 border-t border-[var(--border-subtle)]`,children:[(0,P.jsx)(`button`,{type:`button`,onClick:v,className:`px-3 py-1.5 bg-slate-800 hover:bg-slate-700 text-slate-300 rounded-xl text-xs font-semibold transition-colors cursor-pointer`,children:`Cancel`}),(0,P.jsxs)(`button`,{type:`submit`,disabled:d||!r.trim()||!a.trim(),className:`px-3.5 py-1.5 bg-[var(--accent-primary)] hover:brightness-110 text-white rounded-xl text-xs font-semibold flex items-center gap-1.5 shadow-md transition-all disabled:opacity-50 cursor-pointer`,children:[(0,P.jsx)(Oe,{size:14}),(0,P.jsx)(`span`,{children:d?`Creating...`:`Create Project`})]})]})]})]}),(0,P.jsx)(rt,{isOpen:h,title:`Discard Unsaved Project?`,message:`You have entered project details. Are you sure you want to discard your changes?`,confirmLabel:`Discard`,cancelLabel:`Keep Editing`,variant:`danger`,onClose:()=>g(!1),onConfirm:()=>{g(!1),t()}})]}):null},ot=[{name:`Feature`,badgeClass:`border-indigo-500/30 bg-indigo-500/10 text-indigo-700 dark:text-indigo-300`,icon:(0,P.jsx)(Ie,{size:14,className:`text-indigo-600 dark:text-indigo-400`}),summary:`User-facing gameplay features, UI screens, calculators, and research tools.`,scope:`Enhancements that players interact with directly during day-to-day gameplay.`},{name:`Platform`,badgeClass:`border-cyan-500/30 bg-cyan-500/10 text-cyan-700 dark:text-cyan-300`,icon:(0,P.jsx)(le,{size:14,className:`text-cyan-600 dark:text-cyan-400`}),summary:`Core architecture, database/storage layers, schema migrations, CI/CD, and security.`,scope:`Foundational infrastructure that powers reliability, speed, and cross-project modularity.`},{name:`Tools`,badgeClass:`border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300`,icon:(0,P.jsx)(Ue,{size:14,className:`text-amber-600 dark:text-amber-400`}),summary:`Build tools, developer options, inspection utilities, benchmarks, test suites, and LLM agent skills.`,scope:`Internal tooling that accelerates developer workflows and pairs with LLM coding partners.`},{name:`Idea`,badgeClass:`border-purple-500/30 bg-purple-500/10 text-purple-700 dark:text-purple-300`,icon:(0,P.jsx)(xe,{size:14,className:`text-purple-600 dark:text-purple-400`}),summary:`Exploratory concepts, RFCs, and brainstorming proposals.`,scope:`Early-stage proposals requiring architectural definition or review before scheduling.`},{name:`Bug`,badgeClass:`border-rose-500/30 bg-rose-500/10 text-rose-700 dark:text-rose-300`,icon:(0,P.jsx)(ne,{size:14,className:`text-rose-600 dark:text-rose-400`}),summary:`Defect fixes, visual regression repairs, and calculation corrections.`,scope:`Resolving broken functionality, layout clipping, or unexpected application crashes.`}],st=[{name:`Planned`,color:`border-[var(--border-subtle)] bg-[var(--bg-surface)] text-[var(--text-secondary)]`,description:`Backlog ticket queued for future active planning and development.`},{name:`In Development`,color:`border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300 font-semibold`,description:`Actively being designed, developed, or verified by a developer or LLM agent.`},{name:`Completed`,color:`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-semibold`,description:`Shipped to production and verified against all automated test suites.`},{name:`Rejected`,color:`border-rose-500/40 bg-rose-500/10 text-rose-700 dark:text-rose-300 font-semibold`,description:`Dismissed or superseded proposal (preserved for historical traceability).`}],ct=[{level:`Low / Small`,hours:`0.5 – 2.0 hrs`,desc:`Single-component tweaks, localized CSS fixes, configuration updates.`},{level:`Medium`,hours:`2.0 – 5.0 hrs`,desc:`New modal dialogs, service integrations, multi-file refactoring.`},{level:`High / Large`,hours:`5.0 – 12.0+ hrs`,desc:`Architectural decoupling, dual-storage engines, major data migrations.`}],lt=({isOpen:e,onClose:t})=>((0,C.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]),e?(0,P.jsx)(`div`,{id:`ticket-help-modal-overlay`,className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-md flex items-center justify-center p-3 sm:p-4 animate-fade-in`,onClick:t,children:(0,P.jsxs)(`div`,{id:`ticket-help-modal-container`,className:`w-full max-w-2xl max-h-[90vh] bg-[var(--bg-surface)] border border-[var(--border-subtle)] rounded-2xl sm:rounded-3xl overflow-hidden shadow-2xl flex flex-col text-[var(--text-primary)] animate-scale-in`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`bg-[var(--bg-surface-elevated)] p-4 sm:p-5 border-b border-[var(--border-subtle)] flex items-center justify-between shrink-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`div`,{className:`w-10 h-10 rounded-2xl bg-[var(--accent-bg-subtle)] border border-[var(--accent-border-subtle)] flex items-center justify-center text-[var(--accent-primary)] shadow-inner shrink-0`,children:(0,P.jsx)(se,{size:20})}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h3`,{className:`text-base font-bold text-[var(--text-primary)]`,children:`Help & About`}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:`Standard taxonomy, lifecycle workflows, sizing guidelines, and license disclosures`})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`p-1.5 hover:bg-[var(--accent-bg-subtle)] text-[var(--text-muted)] hover:text-[var(--text-primary)] rounded-xl transition-colors cursor-pointer`,"aria-label":`Close Help Modal`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 sm:p-5 space-y-6 text-xs leading-relaxed`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,P.jsx)(be,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`Ticket Types (Types)`})]}),(0,P.jsx)(`div`,{className:`space-y-2.5`,children:ot.map(e=>(0,P.jsxs)(`div`,{className:`p-3 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-1.5`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,P.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-[11px] font-bold border ${e.badgeClass}`,children:[e.icon,e.name]})}),(0,P.jsx)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)] truncate`,children:e.scope})]}),(0,P.jsx)(`p`,{className:`text-[var(--text-secondary)] text-[11px]`,children:e.summary})]},e.name))})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,P.jsx)(k,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`Lifecycle Statuses`})]}),(0,P.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2.5`,children:st.map(e=>(0,P.jsxs)(`div`,{className:`p-2.5 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-1`,children:[(0,P.jsx)(`span`,{className:`inline-block px-2 py-0.5 rounded text-[10px] font-bold border ${e.color}`,children:e.name}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-secondary)]`,children:e.description})]},e.name))})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,P.jsx)(oe,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`Complexity & Effort Guidelines`})]}),(0,P.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-2.5`,children:ct.map(e=>(0,P.jsxs)(`div`,{className:`p-2.5 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`font-bold text-[var(--text-primary)] text-xs`,children:e.level}),(0,P.jsx)(`span`,{className:`text-[10px] font-mono font-bold text-[var(--accent-primary)]`,children:e.hours})]}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:e.desc})]},e.level))})]}),(0,P.jsxs)(`div`,{className:`p-3 bg-[var(--accent-bg-subtle)] border border-[var(--accent-border-subtle)] rounded-xl space-y-1 text-[11px] text-[var(--text-secondary)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[var(--accent-primary)] font-bold`,children:[(0,P.jsx)(Pe,{size:14}),(0,P.jsx)(`span`,{children:`Invariants & Agent Pairing Best Practices`})]}),(0,P.jsxs)(`ul`,{className:`list-disc list-inside space-y-0.5 text-[var(--text-secondary)] text-[10px] sm:text-[11px]`,children:[(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`strong`,{children:`Title Limit`}),": Keep ticket titles strictly $\\le 48$ characters (`MAX_TICKET_TITLE_LENGTH = 48`)."]}),(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`strong`,{children:`Summary`}),`: Write a clean 1–2 sentence elevator pitch explaining user benefit and motivation.`]}),(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`strong`,{children:`Breakdown`}),`: Use clear numbered bullet points for feature requirements to guide implementation plans.`]})]})]}),(0,P.jsxs)(`div`,{className:`pt-2 border-t border-[var(--border-subtle)] space-y-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(ye,{size:15,className:`text-[var(--accent-primary)]`}),(0,P.jsx)(`h4`,{className:`font-bold text-sm text-[var(--text-primary)]`,children:`About & License Declarations`})]}),(0,P.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)] space-y-3 text-[11px] text-[var(--text-secondary)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`span`,{className:`font-bold text-[var(--text-primary)] text-xs`,children:`Developer Planning & Ticketing Platform`}),(0,P.jsx)(`span`,{className:`text-[10px] text-[var(--text-muted)] font-mono ml-2`,children:`v0.1.0`})]}),(0,P.jsx)(`span`,{className:`px-2 py-0.5 rounded-full text-[10px] font-mono font-bold bg-emerald-500/10 border border-emerald-500/30 text-emerald-600 dark:text-emerald-400`,children:`MIT License`})]}),(0,P.jsx)(`p`,{className:`text-[var(--text-secondary)] text-[11px] leading-relaxed`,children:`Autonomous developer roadmap, ticketing engine, and Model Context Protocol (MCP) server for developers and LLM coding partners.`}),(0,P.jsxs)(`div`,{className:`pt-2.5 border-t border-[var(--border-subtle)] space-y-2`,children:[(0,P.jsx)(`span`,{className:`text-[10px] font-semibold text-[var(--text-muted)] uppercase tracking-wider block`,children:`Third-Party Component & Library Disclosures`}),(0,P.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 text-[10px] font-mono`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`React & ReactDOM`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`MIT`})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`Lucide React`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`ISC`})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`Node.js Standard Lib`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`MIT / BSD`})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg bg-[var(--bg-input)] border border-[var(--border-subtle)] shadow-xs`,children:[(0,P.jsx)(`span`,{className:`text-[var(--text-primary)] font-medium`,children:`TypeScript & Vite`}),(0,P.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400 font-bold`,children:`Apache-2.0 / MIT`})]})]})]})]})]})]}),(0,P.jsx)(`div`,{className:`bg-[var(--bg-surface-elevated)] px-5 py-3 border-t border-[var(--border-subtle)] flex items-center justify-end`,children:(0,P.jsx)(`button`,{type:`button`,onClick:t,className:`px-4 py-1.5 bg-[var(--accent-primary)] hover:brightness-110 text-white text-xs font-semibold rounded-xl transition-all cursor-pointer shadow-sm`,children:`Got It`})})]})}):null),F={1:[`chat_enhanced`,`evolutions`,`multiple_teams`],2:[`frontend`,`components`,`styles`],3:[`guides`,`api_reference`,`tutorials`]},ut=({isOpen:e,onClose:t,onCreated:n,defaultAuthor:r=`Developer`,defaultProject:i,availableProjects:a,isEmbedded:o=!1})=>{let[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(()=>i===void 0?void 0:M(i)?.id),[d,f]=(0,C.useState)(`Feature`),[p,m]=(0,C.useState)(`Medium`),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(``),[y,b]=(0,C.useState)(``),[x,S]=(0,C.useState)(``),[w,T]=(0,C.useState)(r),[ee,te]=(0,C.useState)(!1),[E,ne]=(0,C.useState)(!1),[re,ie]=(0,C.useState)(!1),[ae,D]=(0,C.useState)(!1),O=(0,C.useMemo)(()=>!!(s.trim()||_.trim()||y.trim()||x.trim()),[s,_,y,x]),k=(0,C.useCallback)(()=>{O?D(!0):t()},[O,t]);(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(ae?D(!1):re?ie(!1):E?ne(!1):k())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ae,re,E,k]);let[ce,le]=(0,C.useState)(null);return C.useEffect(()=>{e&&u(i===void 0?void 0:M(i)?.id)},[e,i]),C.useEffect(()=>{let e=l===void 0?[]:F[l]||[];h&&!e.includes(h)&&g(``)},[l]),e?(0,P.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-slate-950/80 backdrop-blur-md animate-fade-in`,onClick:k,children:[(0,P.jsxs)(`div`,{className:`relative w-full max-w-2xl bg-[var(--bg-surface)] border border-[var(--border-subtle)] rounded-2xl shadow-2xl overflow-hidden flex flex-col max-h-[90vh] text-[var(--text-primary)]`,onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-[var(--border-subtle)] bg-[var(--bg-surface-elevated)]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`div`,{className:`p-2 bg-[var(--accent-bg-subtle)] text-[var(--accent-primary)] rounded-xl border border-[var(--accent-border-subtle)]`,children:(0,P.jsx)(Oe,{size:18})}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h3`,{className:`font-bold text-[var(--text-primary)] text-sm`,children:`Create New Developer Ticket`}),(0,P.jsx)(`p`,{className:`text-[11px] text-[var(--text-muted)]`,children:`Initialize a new ticket folder with metadata and specification`})]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:k,className:`p-1.5 text-[var(--text-muted)] hover:text-[var(--text-primary)] hover:bg-[var(--accent-bg-subtle)] rounded-lg transition-colors cursor-pointer`,children:(0,P.jsx)(We,{size:18})})]}),(0,P.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),!s.trim()){le(`Ticket title is required.`);return}if(l===void 0){le(`Project is required. Please select a project for this ticket.`);return}let i=j(l);if(!i){le(`Selected project is invalid or not registered.`);return}le(null),te(!0);try{let e=x.split(`
17
17
  `).map(e=>e.trim()).filter(Boolean),a=await N.createTicket({title:s.trim(),projectId:i.id,project:i.name,type:d,category:d,complexity:p,featureFlag:h||void 0,rationale:_.trim(),breakdown:y.trim(),openQuestions:e,submittedBy:w.trim()||r||`Developer`});te(!1),n(a.ticketId,a.meta),t()}catch(e){console.error(`Failed to create ticket:`,e),le(e.message||`Failed to create ticket`),te(!1)}},className:`p-4 overflow-y-auto space-y-4 flex-1 font-sans bg-[var(--bg-app)]`,children:[ce&&(0,P.jsx)(`div`,{className:`p-3 bg-rose-500/15 border border-rose-500/30 rounded-xl text-xs text-rose-800 dark:text-rose-300`,children:ce}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(A,{size:13,className:`text-[var(--accent-primary)]`}),` Ticket Title *`]}),(0,P.jsxs)(`span`,{className:`text-[10px] font-mono text-[var(--text-muted)]`,children:[s.length,`/48`]})]}),(0,P.jsx)(`input`,{type:`text`,value:s,maxLength:48,onChange:e=>c(e.target.value),placeholder:`e.g. Export User Settings & Cloud Backup Sync`,className:`w-full p-2.5 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none`,required:!0})]}),(0,P.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-5 gap-2.5`,children:[(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(me,{size:13,className:`text-[var(--accent-primary)]`}),` Project`]}),(0,P.jsxs)(`select`,{value:l===void 0?``:l,onChange:e=>{if(e.target.value===`__new__`){ne(!0);return}if(!e.target.value){u(void 0);return}u(Number(e.target.value))},className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] focus:outline-none`,children:[l===void 0&&(0,P.jsx)(`option`,{value:``,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Select a Project...`}),(a||qe).map(e=>(0,P.jsx)(`option`,{value:e.id,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:e.name},e.id)),!o&&(0,P.jsx)(`option`,{value:`__new__`,className:`bg-[var(--bg-surface)] text-cyan-600 dark:text-cyan-400 font-semibold`,children:`+ New Project...`})]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(ze,{size:13,className:`text-[var(--accent-primary)]`}),` Type`]}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>ie(!0),className:`text-[var(--text-muted)] hover:text-[var(--accent-primary)] transition-colors p-0.5 cursor-pointer`,title:`View Ticket Types Reference`,"aria-label":`View Ticket Types Reference`,children:(0,P.jsx)(se,{size:12})})]}),(0,P.jsxs)(`select`,{value:d,onChange:e=>f(e.target.value),className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] focus:outline-none`,children:[(0,P.jsx)(`option`,{value:`Feature`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Feature`}),(0,P.jsx)(`option`,{value:`Platform`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Platform`}),(0,P.jsx)(`option`,{value:`Tools`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Tools`}),(0,P.jsx)(`option`,{value:`Idea`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Idea`}),(0,P.jsx)(`option`,{value:`Bug`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Bug`})]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(Ge,{size:13,className:`text-[var(--accent-primary)]`}),` Complexity`]}),(0,P.jsxs)(`select`,{value:p,onChange:e=>m(e.target.value),className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] focus:outline-none`,children:[(0,P.jsx)(`option`,{value:`Low`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Low`}),(0,P.jsx)(`option`,{value:`Low-Medium`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Low-Medium`}),(0,P.jsx)(`option`,{value:`Medium`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`Medium`}),(0,P.jsx)(`option`,{value:`High`,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`High`})]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(pe,{size:13,className:`text-purple-400`}),` Feature Flag`]}),(0,P.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-purple-500/50 rounded-xl text-xs text-purple-700 dark:text-purple-300 focus:outline-none`,children:[(0,P.jsx)(`option`,{value:``,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:`None (Unflagged)`}),(l===void 0?[]:F[l]||[]).map(e=>(0,P.jsx)(`option`,{value:e,className:`bg-[var(--bg-surface)] text-[var(--text-primary)]`,children:e},e))]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(He,{size:13,className:`text-[var(--accent-primary)]`}),` Submitted By`]}),(0,P.jsx)(`input`,{type:`text`,value:w,onChange:e=>T(e.target.value),placeholder:`Developer name`,className:`w-full p-2 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] focus:outline-none`})]})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsx)(`label`,{className:`text-xs font-bold text-[var(--text-primary)]`,children:`Summary / Rationale`}),(0,P.jsx)(`textarea`,{value:_,onChange:e=>v(e.target.value),placeholder:`Explain why this feature is valuable and what problem it solves...`,rows:3,className:`w-full p-2.5 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none resize-y`})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsx)(`label`,{className:`text-xs font-bold text-[var(--text-primary)]`,children:`Feature Breakdown (One item per line or bullet)`}),(0,P.jsx)(`textarea`,{value:y,onChange:e=>b(e.target.value),placeholder:`1. Design database storage schema
18
18
  2. Implement REST API endpoints
19
19
  3. Add UI components and state management`,rows:3,className:`w-full p-2.5 bg-[var(--bg-input)] border border-[var(--border-subtle)] focus:border-[var(--border-accent)] rounded-xl text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none resize-y font-mono`})]}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsxs)(`label`,{className:`text-xs font-bold text-[var(--text-primary)] flex items-center gap-1.5`,children:[(0,P.jsx)(se,{size:13,className:`text-amber-500 dark:text-amber-400`}),` Initial Open Questions (One question per line)`]}),(0,P.jsx)(`textarea`,{value:x,onChange:e=>S(e.target.value),placeholder:`Should credentials be stored locally or synced remotely?
@@ -9,8 +9,8 @@
9
9
  <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png" />
10
10
  <link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png" />
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
12
- <script type="module" crossorigin src="./assets/index-B-37KY54.js"></script>
13
- <link rel="stylesheet" crossorigin href="./assets/index-CGwIfCgR.css">
12
+ <script type="module" crossorigin src="./assets/index-YnX_BGF9.js"></script>
13
+ <link rel="stylesheet" crossorigin href="./assets/index-CfQ8qeBs.css">
14
14
  </head>
15
15
  <body class="bg-[#f1f5f9] text-slate-900 font-sans">
16
16
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "esedre",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Esedre: Developer roadmap, ticketing, and LLM coding partner coordination platform",
5
5
  "homepage": "https://www.arwam.com",
6
6
  "repository": {
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-50:oklch(98.4% .014 180.72);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-200:oklch(91% .096 180.426);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-800:oklch(43.7% .078 188.216);--color-teal-950:oklch(27.7% .046 192.524);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-950:oklch(30.2% .056 229.695);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-sky-950:oklch(29.3% .066 243.157);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-900:oklch(35.9% .144 278.697);--color-indigo-950:oklch(25.7% .09 281.288);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-purple-950:oklch(29.1% .149 302.717);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-fuchsia-400:oklch(74% .238 322.16);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-fuchsia-950:oklch(29.3% .136 325.661);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-rose-950:oklch(27.1% .105 12.094);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.z-\[120\]{z-index:120}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-7{height:calc(var(--spacing) * 7)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-\[20px\]{height:20px}.h-\[92vh\]{height:92vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[44px\]{min-height:44px}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-80{width:calc(var(--spacing) * 80)}.w-\[20px\]{width:20px}.w-\[56px\]{width:56px}.w-\[60px\]{width:60px}.w-\[84px\]{width:84px}.w-\[95vw\]{width:95vw}.w-\[112px\]{width:112px}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[140px\]{max-width:140px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.scrollbar-none{scrollbar-width:none}.scrollbar-thin{scrollbar-width:thin}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent-border-subtle\)\]{border-color:var(--accent-border-subtle)}.border-\[var\(--accent-primary\)\]{border-color:var(--accent-primary)}.border-\[var\(--border-accent\)\]{border-color:var(--border-accent)}.border-\[var\(--border-strong\)\]{border-color:var(--border-strong)}.border-\[var\(--border-subtle\)\],.border-\[var\(--border-subtle\)\]\/80{border-color:var(--border-subtle)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--border-subtle\)\]\/80{border-color:color-mix(in oklab, var(--border-subtle) 80%, transparent)}}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/40{border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.border-blue-300{border-color:var(--color-blue-300)}.border-cyan-300{border-color:var(--color-cyan-300)}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab, red, red)){.border-cyan-500\/30{border-color:color-mix(in oklab, var(--color-cyan-500) 30%, transparent)}}.border-cyan-500\/40{border-color:#00b7d766}@supports (color:color-mix(in lab, red, red)){.border-cyan-500\/40{border-color:color-mix(in oklab, var(--color-cyan-500) 40%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-300{border-color:var(--color-emerald-300)}.border-emerald-500{border-color:var(--color-emerald-500)}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.border-emerald-500\/40{border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/40{border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.border-fuchsia-300{border-color:var(--color-fuchsia-300)}.border-fuchsia-500\/30{border-color:#e12afb4d}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\/30{border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.border-fuchsia-500\/40{border-color:#e12afb66}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\/40{border-color:color-mix(in oklab, var(--color-fuchsia-500) 40%, transparent)}}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-300{border-color:var(--color-indigo-300)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.border-indigo-500\/40{border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/40{border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-purple-300{border-color:var(--color-purple-300)}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/30{border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.border-purple-500\/40{border-color:#ac4bff66}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/40{border-color:color-mix(in oklab, var(--color-purple-500) 40%, transparent)}}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-500{border-color:var(--color-rose-500)}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.border-rose-500\/40{border-color:#ff235766}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/40{border-color:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.border-sky-200{border-color:var(--color-sky-200)}.border-sky-600{border-color:var(--color-sky-600)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-800{border-color:var(--color-slate-800)}.border-slate-800\/80{border-color:#1d293dcc}@supports (color:color-mix(in lab, red, red)){.border-slate-800\/80{border-color:color-mix(in oklab, var(--color-slate-800) 80%, transparent)}}.border-teal-200{border-color:var(--color-teal-200)}.border-teal-300{border-color:var(--color-teal-300)}.border-transparent{border-color:#0000}.bg-\[\#f1f5f9\]{background-color:#f1f5f9}.bg-\[var\(--accent-bg-subtle\)\]{background-color:var(--accent-bg-subtle)}.bg-\[var\(--accent-primary\)\],.bg-\[var\(--accent-primary\)\]\/10{background-color:var(--accent-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--accent-primary\)\]\/10{background-color:color-mix(in oklab, var(--accent-primary) 10%, transparent)}}.bg-\[var\(--bg-app\)\]{background-color:var(--bg-app)}.bg-\[var\(--bg-input\)\]{background-color:var(--bg-input)}.bg-\[var\(--bg-main\)\]{background-color:var(--bg-main)}.bg-\[var\(--bg-surface\)\]{background-color:var(--bg-surface)}.bg-\[var\(--bg-surface-elevated\)\]{background-color:var(--bg-surface-elevated)}.bg-\[var\(--border-subtle\)\]{background-color:var(--border-subtle)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/20{background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab, var(--color-black) 80%, transparent)}}.bg-black\/85{background-color:#000000d9}@supports (color:color-mix(in lab, red, red)){.bg-black\/85{background-color:color-mix(in oklab, var(--color-black) 85%, transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-cyan-400{background-color:var(--color-cyan-400)}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/10{background-color:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-fuchsia-50{background-color:var(--color-fuchsia-50)}.bg-fuchsia-400{background-color:var(--color-fuchsia-400)}.bg-fuchsia-500\/10{background-color:#e12afb1a}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-500\/10{background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.bg-fuchsia-600{background-color:var(--color-fuchsia-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-50\/50{background-color:#eef2ff80}@supports (color:color-mix(in lab, red, red)){.bg-indigo-50\/50{background-color:color-mix(in oklab, var(--color-indigo-50) 50%, transparent)}}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.bg-indigo-500\/10{background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-purple-600\/30{background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-600\/30{background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.bg-rose-500\/15{background-color:#ff235726}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/15{background-color:color-mix(in oklab, var(--color-rose-500) 15%, transparent)}}.bg-rose-600{background-color:var(--color-rose-600)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-50\/50{background-color:#f0f9ff80}@supports (color:color-mix(in lab, red, red)){.bg-sky-50\/50{background-color:color-mix(in oklab, var(--color-sky-50) 50%, transparent)}}.bg-sky-100{background-color:var(--color-sky-100)}.bg-sky-600{background-color:var(--color-sky-600)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-950\/80{background-color:#020618cc}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/80{background-color:color-mix(in oklab, var(--color-slate-950) 80%, transparent)}}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-transparent{background-color:#0000}.object-contain{object-fit:contain}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-0{padding-top:0}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pr-1{padding-right:var(--spacing)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent-primary\)\]{color:var(--accent-primary)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800\/80{color:#953d00cc}@supports (color:color-mix(in lab, red, red)){.text-amber-800\/80{color:color-mix(in oklab, var(--color-amber-800) 80%, transparent)}}.text-amber-900{color:var(--color-amber-900)}.text-amber-950{color:var(--color-amber-950)}.text-blue-950{color:var(--color-blue-950)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-600{color:var(--color-cyan-600)}.text-cyan-700{color:var(--color-cyan-700)}.text-cyan-950{color:var(--color-cyan-950)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-emerald-950{color:var(--color-emerald-950)}.text-fuchsia-300{color:var(--color-fuchsia-300)}.text-fuchsia-950{color:var(--color-fuchsia-950)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-900{color:var(--color-indigo-900)}.text-indigo-950{color:var(--color-indigo-950)}.text-purple-200{color:var(--color-purple-200)}.text-purple-400{color:var(--color-purple-400)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-purple-900{color:var(--color-purple-900)}.text-purple-950{color:var(--color-purple-950)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-rose-900{color:var(--color-rose-900)}.text-rose-950{color:var(--color-rose-950)}.text-sky-600{color:var(--color-sky-600)}.text-sky-700{color:var(--color-sky-700)}.text-sky-800{color:var(--color-sky-800)}.text-sky-800\/80{color:#005986cc}@supports (color:color-mix(in lab, red, red)){.text-sky-800\/80{color:color-mix(in oklab, var(--color-sky-800) 80%, transparent)}}.text-sky-900{color:var(--color-sky-900)}.text-sky-950{color:var(--color-sky-950)}.text-slate-300{color:var(--color-slate-300)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-800{color:var(--color-teal-800)}.text-teal-950{color:var(--color-teal-950)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.placeholder-\[var\(--text-muted\)\]::placeholder{color:var(--text-muted)}.placeholder-purple-400\/50::placeholder{color:#c07eff80}@supports (color:color-mix(in lab, red, red)){.placeholder-purple-400\/50::placeholder{color:color-mix(in oklab, var(--color-purple-400) 50%, transparent)}}.placeholder-slate-400::placeholder{color:var(--color-slate-400)}.accent-purple-500{accent-color:var(--color-purple-500)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-\[var\(--accent-primary\)\]\/20{--tw-shadow-alpha:20%;--tw-shadow:var(--accent-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xs{--tw-shadow:0 1px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-emerald-600\/20{--tw-shadow-color:#00976733}@supports (color:color-mix(in lab, red, red)){.shadow-emerald-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-600\/20{--tw-shadow-color:#e7004433}@supports (color:color-mix(in lab, red, red)){.shadow-rose-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--accent-primary\)\]{--tw-ring-color:var(--accent-primary)}.ring-\[var\(--border-accent\)\]{--tw-ring-color:var(--border-accent)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}@media (hover:hover){.group-hover\:bg-\[var\(--accent-primary\)\]:is(:where(.group):hover *){background-color:var(--accent-primary)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/author\:opacity-100:is(:where(.group\/author):hover *),.group-hover\/header\:opacity-100:is(:where(.group\/header):hover *){opacity:1}}.before\:font-bold:before{content:var(--tw-content);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.before\:text-\[var\(--accent-primary\)\]:before{content:var(--tw-content);color:var(--accent-primary)}.before\:content-\[\"–\"\]:before{--tw-content:"–";content:var(--tw-content)}.before\:content-\[\"•\"\]:before{--tw-content:"•";content:var(--tw-content)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:w-3:hover{width:calc(var(--spacing) * 3)}.hover\:border-\[var\(--border-accent\)\]:hover{border-color:var(--border-accent)}.hover\:border-\[var\(--border-strong\)\]:hover{border-color:var(--border-strong)}.hover\:bg-\[var\(--accent-bg-subtle\)\]:hover,.hover\:bg-\[var\(--accent-bg-subtle\)\]\/50:hover{background-color:var(--accent-bg-subtle)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--accent-bg-subtle\)\]\/50:hover{background-color:color-mix(in oklab, var(--accent-bg-subtle) 50%, transparent)}}.hover\:bg-\[var\(--accent-bg-subtle\)\]\/80:hover{background-color:var(--accent-bg-subtle)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--accent-bg-subtle\)\]\/80:hover{background-color:color-mix(in oklab, var(--accent-bg-subtle) 80%, transparent)}}.hover\:bg-\[var\(--bg-surface-elevated\)\]:hover{background-color:var(--bg-surface-elevated)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-200\/70:hover{background-color:#fee685b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-amber-200\/70:hover{background-color:color-mix(in oklab, var(--color-amber-200) 70%, transparent)}}.hover\:bg-amber-500\/30:hover{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-amber-500\/30:hover{background-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.hover\:bg-blue-200\/70:hover{background-color:#bedbffb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-blue-200\/70:hover{background-color:color-mix(in oklab, var(--color-blue-200) 70%, transparent)}}.hover\:bg-cyan-200\/70:hover{background-color:#a2f4fdb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan-200\/70:hover{background-color:color-mix(in oklab, var(--color-cyan-200) 70%, transparent)}}.hover\:bg-emerald-50:hover{background-color:var(--color-emerald-50)}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-200\/70:hover{background-color:#a4f4cfb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-emerald-200\/70:hover{background-color:color-mix(in oklab, var(--color-emerald-200) 70%, transparent)}}.hover\:bg-emerald-500:hover{background-color:var(--color-emerald-500)}.hover\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}.hover\:bg-purple-100:hover{background-color:var(--color-purple-100)}.hover\:bg-purple-200\/70:hover{background-color:#e9d5ffb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-200\/70:hover{background-color:color-mix(in oklab, var(--color-purple-200) 70%, transparent)}}.hover\:bg-purple-500\/10:hover{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/10:hover{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.hover\:bg-purple-500\/20:hover{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/20:hover{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.hover\:bg-purple-600\/50:hover{background-color:#9810fa80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-600\/50:hover{background-color:color-mix(in oklab, var(--color-purple-600) 50%, transparent)}}.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}.hover\:bg-rose-200\/70:hover{background-color:#ffccd3b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rose-200\/70:hover{background-color:color-mix(in oklab, var(--color-rose-200) 70%, transparent)}}.hover\:bg-rose-500:hover{background-color:var(--color-rose-500)}.hover\:bg-sky-100:hover{background-color:var(--color-sky-100)}.hover\:bg-sky-500:hover{background-color:var(--color-sky-500)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-teal-200\/70:hover{background-color:#96f7e4b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-teal-200\/70:hover{background-color:color-mix(in oklab, var(--color-teal-200) 70%, transparent)}}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:text-\[var\(--accent-primary\)\]:hover{color:var(--accent-primary)}.hover\:text-\[var\(--text-primary\)\]:hover{color:var(--text-primary)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-purple-400:hover{color:var(--color-purple-400)}.hover\:text-rose-600:hover{color:var(--color-rose-600)}.hover\:text-sky-700:hover{color:var(--color-sky-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:brightness-105:hover{--tw-brightness:brightness(105%);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,)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);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-\[var\(--border-accent\)\]:focus{border-color:var(--border-accent)}.focus\:border-\[var\(--border-strong\)\]:focus{border-color:var(--border-strong)}.focus\:border-amber-500\/50:focus{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.focus\:border-amber-500\/50:focus{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:border-purple-500\/50:focus{border-color:#ac4bff80}@supports (color:color-mix(in lab, red, red)){.focus\:border-purple-500\/50:focus{border-color:color-mix(in oklab, var(--color-purple-500) 50%, transparent)}}.focus\:border-sky-500:focus{border-color:var(--color-sky-500)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.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}@media (width>=40rem){.sm\:mt-0{margin-top:0}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:w-auto{width:auto}.sm\:flex-1{flex:1}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-end{justify-content:flex-end}.sm\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:rounded-3xl{border-radius:var(--radius-3xl)}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:pt-0{padding-top:0}.sm\:text-\[11px\]{font-size:11px}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:py-3{padding-block:calc(var(--spacing) * 3)}}.dark\:border-amber-500\/30:where(.dark,.dark *){border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:border-blue-500\/30:where(.dark,.dark *){border-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.dark\:border-cyan-500\/30:where(.dark,.dark *){border-color:#00b7d74d}@supports (color:color-mix(in lab, red, red)){.dark\:border-cyan-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-cyan-500) 30%, transparent)}}.dark\:border-emerald-500\/30:where(.dark,.dark *){border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:border-emerald-500\/40:where(.dark,.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.dark\:border-fuchsia-500\/30:where(.dark,.dark *){border-color:#e12afb4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-fuchsia-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.dark\:border-fuchsia-500\/40:where(.dark,.dark *){border-color:#e12afb66}@supports (color:color-mix(in lab, red, red)){.dark\:border-fuchsia-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-fuchsia-500) 40%, transparent)}}.dark\:border-indigo-500\/20:where(.dark,.dark *){border-color:#625fff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.dark\:border-indigo-500\/30:where(.dark,.dark *){border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.dark\:border-indigo-500\/40:where(.dark,.dark *){border-color:#625fff66}@supports (color:color-mix(in lab, red, red)){.dark\:border-indigo-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-indigo-500) 40%, transparent)}}.dark\:border-purple-500\/20:where(.dark,.dark *){border-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-purple-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:border-purple-500\/30:where(.dark,.dark *){border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-purple-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.dark\:border-purple-500\/40:where(.dark,.dark *){border-color:#ac4bff66}@supports (color:color-mix(in lab, red, red)){.dark\:border-purple-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-purple-500) 40%, transparent)}}.dark\:border-rose-500\/30:where(.dark,.dark *){border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:border-rose-500\/40:where(.dark,.dark *){border-color:#ff235766}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.dark\:border-slate-600\/30:where(.dark,.dark *){border-color:#45556c4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-600\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-600) 30%, transparent)}}.dark\:border-slate-700\/40:where(.dark,.dark *){border-color:#31415866}@supports (color:color-mix(in lab, red, red)){.dark\:border-slate-700\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-slate-700) 40%, transparent)}}.dark\:border-teal-500\/30:where(.dark,.dark *){border-color:#00baa74d}@supports (color:color-mix(in lab, red, red)){.dark\:border-teal-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-teal-500) 30%, transparent)}}.dark\:bg-amber-500\/20:where(.dark,.dark *){background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.dark\:bg-cyan-500\/20:where(.dark,.dark *){background-color:#00b7d733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-cyan-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-cyan-500) 20%, transparent)}}.dark\:bg-emerald-400:where(.dark,.dark *){background-color:var(--color-emerald-400)}.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.dark\:bg-emerald-500\/20:where(.dark,.dark *){background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:#002c2266}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-950) 40%, transparent)}}.dark\:bg-fuchsia-400:where(.dark,.dark *){background-color:var(--color-fuchsia-400)}.dark\:bg-fuchsia-500\/10:where(.dark,.dark *){background-color:#e12afb1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-fuchsia-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.dark\:bg-indigo-400:where(.dark,.dark *){background-color:var(--color-indigo-400)}.dark\:bg-indigo-500\/10:where(.dark,.dark *){background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.dark\:bg-indigo-500\/20:where(.dark,.dark *){background-color:#625fff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.dark\:bg-indigo-600:where(.dark,.dark *){background-color:var(--color-indigo-600)}.dark\:bg-indigo-600\/20:where(.dark,.dark *){background-color:#4f39f633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-600\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-600) 20%, transparent)}}.dark\:bg-indigo-600\/30:where(.dark,.dark *){background-color:#4f39f64d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-600\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-600) 30%, transparent)}}.dark\:bg-indigo-700:where(.dark,.dark *){background-color:var(--color-indigo-700)}.dark\:bg-indigo-950\/20:where(.dark,.dark *){background-color:#1e1a4d33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-950) 20%, transparent)}}.dark\:bg-purple-500\/20:where(.dark,.dark *){background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:bg-purple-600\/30:where(.dark,.dark *){background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-600\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.dark\:bg-purple-700:where(.dark,.dark *){background-color:var(--color-purple-700)}.dark\:bg-rose-500\/20:where(.dark,.dark *){background-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.dark\:bg-rose-950\/40:where(.dark,.dark *){background-color:#4d021866}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-rose-950) 40%, transparent)}}.dark\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-800\/40:where(.dark,.dark *){background-color:#1d293d66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 40%, transparent)}}.dark\:bg-teal-500\/20:where(.dark,.dark *){background-color:#00baa733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-teal-500\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-teal-500) 20%, transparent)}}.dark\:text-\[var\(--accent-primary\)\]:where(.dark,.dark *){color:var(--accent-primary)}.dark\:text-\[var\(--text-muted\)\]:where(.dark,.dark *){color:var(--text-muted)}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-amber-400\/80:where(.dark,.dark *){color:#fcbb00cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-400\/80:where(.dark,.dark *){color:color-mix(in oklab, var(--color-amber-400) 80%, transparent)}}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-cyan-300:where(.dark,.dark *){color:var(--color-cyan-300)}.dark\:text-cyan-400:where(.dark,.dark *){color:var(--color-cyan-400)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-fuchsia-300:where(.dark,.dark *){color:var(--color-fuchsia-300)}.dark\:text-indigo-100:where(.dark,.dark *){color:var(--color-indigo-100)}.dark\:text-indigo-200:where(.dark,.dark *){color:var(--color-indigo-200)}.dark\:text-indigo-300:where(.dark,.dark *){color:var(--color-indigo-300)}.dark\:text-indigo-400:where(.dark,.dark *){color:var(--color-indigo-400)}.dark\:text-indigo-400\/80:where(.dark,.dark *){color:#7d87ffcc}@supports (color:color-mix(in lab, red, red)){.dark\:text-indigo-400\/80:where(.dark,.dark *){color:color-mix(in oklab, var(--color-indigo-400) 80%, transparent)}}.dark\:text-purple-100:where(.dark,.dark *){color:var(--color-purple-100)}.dark\:text-purple-200:where(.dark,.dark *){color:var(--color-purple-200)}.dark\:text-purple-300:where(.dark,.dark *){color:var(--color-purple-300)}.dark\:text-purple-400:where(.dark,.dark *){color:var(--color-purple-400)}.dark\:text-rose-300:where(.dark,.dark *){color:var(--color-rose-300)}.dark\:text-rose-400:where(.dark,.dark *){color:var(--color-rose-400)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:text-slate-600:where(.dark,.dark *){color:var(--color-slate-600)}.dark\:text-teal-300:where(.dark,.dark *){color:var(--color-teal-300)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:placeholder-slate-500:where(.dark,.dark *)::placeholder{color:var(--color-slate-500)}@media (hover:hover){.dark\:hover\:bg-amber-500\/30:where(.dark,.dark *):hover{background-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-amber-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:hover\:bg-blue-500\/30:where(.dark,.dark *):hover{background-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-blue-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.dark\:hover\:bg-cyan-500\/30:where(.dark,.dark *):hover{background-color:#00b7d74d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-cyan-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-cyan-500) 30%, transparent)}}.dark\:hover\:bg-emerald-500\/20:where(.dark,.dark *):hover{background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-emerald-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.dark\:hover\:bg-emerald-500\/30:where(.dark,.dark *):hover{background-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-emerald-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:hover\:bg-indigo-500:where(.dark,.dark *):hover{background-color:var(--color-indigo-500)}.dark\:hover\:bg-indigo-600\/30:where(.dark,.dark *):hover{background-color:#4f39f64d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-indigo-600\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-indigo-600) 30%, transparent)}}.dark\:hover\:bg-indigo-600\/50:where(.dark,.dark *):hover{background-color:#4f39f680}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-indigo-600\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-indigo-600) 50%, transparent)}}.dark\:hover\:bg-purple-500\/20:where(.dark,.dark *):hover{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-purple-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:hover\:bg-purple-500\/30:where(.dark,.dark *):hover{background-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-purple-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.dark\:hover\:bg-purple-600\/50:where(.dark,.dark *):hover{background-color:#9810fa80}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-purple-600\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-purple-600) 50%, transparent)}}.dark\:hover\:bg-rose-500\/20:where(.dark,.dark *):hover{background-color:#ff235733}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-rose-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)}}.dark\:hover\:bg-rose-500\/30:where(.dark,.dark *):hover{background-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-rose-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:hover\:bg-slate-900:where(.dark,.dark *):hover{background-color:var(--color-slate-900)}.dark\:hover\:bg-teal-500\/30:where(.dark,.dark *):hover{background-color:#00baa74d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-teal-500\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-teal-500) 30%, transparent)}}.dark\:hover\:text-indigo-300:where(.dark,.dark *):hover{color:var(--color-indigo-300)}.dark\:hover\:text-rose-400:where(.dark,.dark *):hover{color:var(--color-rose-400)}}.dark\:focus\:border-indigo-500\/50:where(.dark,.dark *):focus{border-color:#625fff80}@supports (color:color-mix(in lab, red, red)){.dark\:focus\:border-indigo-500\/50:where(.dark,.dark *):focus{border-color:color-mix(in oklab, var(--color-indigo-500) 50%, transparent)}}}:root{--bg-main:#f8fafc;--bg-app:#f8fafc;--bg-card:#fff;--bg-surface:#fff;--bg-surface-elevated:#f1f5f9;--bg-input:#fff;--border-subtle:#e2e8f0;--border-strong:#cbd5e1;--border-accent:#0e749066;--accent-primary:#0284c7;--accent-bg-subtle:#0284c714;--accent-border-subtle:#0284c740;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#64748b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.dark{--bg-main:#060812;--bg-app:#060812;--bg-card:#0b0f19;--bg-surface:#0a0e1a;--bg-surface-elevated:#0f172a;--bg-input:#0b0f19;--border-subtle:#1e293b;--border-strong:#334155;--border-accent:#6366f180;--accent-primary:#818cf8;--accent-bg-subtle:#6366f11f;--accent-border-subtle:#6366f14d;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background-color:var(--bg-main);color:var(--text-primary);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94a3b833;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#94a3b859}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}