om-memory-system 4.26.1 → 4.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/importer/import-sessions.d.ts +24 -0
- package/dist/importer/import-sessions.js +47 -5
- package/dist/importer/ledger.d.ts +11 -0
- package/dist/importer/ledger.js +54 -0
- package/dist/importer/web-import-group.d.ts +6 -0
- package/dist/importer/web-import-group.js +9 -1
- package/dist/web/assets/index-ClsmAqHW.css +2 -0
- package/dist/web/assets/index-ThU9bFAP.js +126 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-CIlyLof-.js +0 -126
- package/dist/web/assets/index-DH6qnFfk.css +0 -2
|
@@ -8,6 +8,11 @@ import type { ImportPathMap } from "./importer.js";
|
|
|
8
8
|
* imported set always use the same discovery and project rules.
|
|
9
9
|
*/
|
|
10
10
|
export declare const MAX_SELECTED_KEYS = 1000;
|
|
11
|
+
/** The outputs a run produces; a session is handled only when every ticked one is finished. */
|
|
12
|
+
export interface ImportOutputs {
|
|
13
|
+
memories: boolean;
|
|
14
|
+
profile: boolean;
|
|
15
|
+
}
|
|
11
16
|
export interface ImportSessionRow {
|
|
12
17
|
/**
|
|
13
18
|
* Selection key: the OpenCode session ID, or the Pi or Claude Code file path
|
|
@@ -30,6 +35,10 @@ export interface ImportMatchOptions {
|
|
|
30
35
|
/** Grouped imports can retain a valid source with no matching sessions as no-work. */
|
|
31
36
|
allowEmpty?: boolean;
|
|
32
37
|
signal?: AbortSignal;
|
|
38
|
+
/** Outputs the job writes; decides which sessions an "all" selection drops as handled. */
|
|
39
|
+
outputs?: ImportOutputs;
|
|
40
|
+
/** A forced run re-analyses handled history, so it keeps handled sessions. */
|
|
41
|
+
force?: boolean;
|
|
33
42
|
}
|
|
34
43
|
export declare class StaleSelectionError extends Error {
|
|
35
44
|
readonly status = 409;
|
|
@@ -44,17 +53,27 @@ interface Matched {
|
|
|
44
53
|
revision: string;
|
|
45
54
|
}
|
|
46
55
|
export declare function matchImportSessions(identity: ImportSourceIdentity, options: ImportMatchOptions, snapshotMode: "fresh" | "reuse" | "any"): Promise<Matched>;
|
|
56
|
+
/**
|
|
57
|
+
* Sessions the ledger shows as finished for every ticked output. The check uses
|
|
58
|
+
* each row's `sessionId`, since Pi and Claude Code keys are file paths. A row
|
|
59
|
+
* without a session id is never handled. The ledger is read, never created.
|
|
60
|
+
*/
|
|
61
|
+
export declare function handledKeys(rows: ImportSessionRow[], outputs: ImportOutputs): Promise<Set<string>>;
|
|
47
62
|
export interface ImportSessionPage {
|
|
48
63
|
source: {
|
|
49
64
|
kind: ImportSourceIdentity["kind"];
|
|
50
65
|
displayPath: string;
|
|
51
66
|
sourceToken: string;
|
|
52
67
|
};
|
|
68
|
+
/** Rows shown: handled sessions are left out unless the request keeps them. */
|
|
53
69
|
total: number;
|
|
54
70
|
offset: number;
|
|
55
71
|
rows: Array<ImportSessionRow & {
|
|
56
72
|
selectable: boolean;
|
|
73
|
+
handled: boolean;
|
|
57
74
|
}>;
|
|
75
|
+
/** Handled sessions left out of the list. */
|
|
76
|
+
hiddenHandled: number;
|
|
58
77
|
/** Sessions whose recorded directory no longer exists. */
|
|
59
78
|
unresolvedCount: number;
|
|
60
79
|
revision: string;
|
|
@@ -65,6 +84,8 @@ export interface SessionListRequest {
|
|
|
65
84
|
offset?: number;
|
|
66
85
|
limit?: number;
|
|
67
86
|
refresh?: boolean;
|
|
87
|
+
/** True when the page shows handled sessions; "Re-analyse handled history" implies it. */
|
|
88
|
+
includeHandled?: boolean;
|
|
68
89
|
match: Omit<ImportMatchOptions, "cwd">;
|
|
69
90
|
}
|
|
70
91
|
/** Check a session-list request body from the page. */
|
|
@@ -75,6 +96,7 @@ export declare function listImportSessions(request: {
|
|
|
75
96
|
offset?: number;
|
|
76
97
|
limit?: number;
|
|
77
98
|
refresh?: boolean;
|
|
99
|
+
includeHandled?: boolean;
|
|
78
100
|
}, options: ImportMatchOptions): Promise<ImportSessionPage>;
|
|
79
101
|
export type ImportSelection = {
|
|
80
102
|
mode: "ids";
|
|
@@ -88,6 +110,8 @@ export type ImportSelection = {
|
|
|
88
110
|
excludedKeys: string[];
|
|
89
111
|
revision: string;
|
|
90
112
|
listedAt: number;
|
|
113
|
+
/** False or absent: the server drops sessions already handled for the job's outputs. */
|
|
114
|
+
includeHandled?: boolean;
|
|
91
115
|
};
|
|
92
116
|
export declare function validateImportSelection(value: unknown): ImportSelection;
|
|
93
117
|
export interface ResolvedImportSelection {
|
|
@@ -10,6 +10,7 @@ import { assertImportSourceUnchanged, importSourceKey, readImportSourceToken, va
|
|
|
10
10
|
*/
|
|
11
11
|
export const MAX_SELECTED_KEYS = 1000;
|
|
12
12
|
const MAX_PAGE = 200;
|
|
13
|
+
const ALL_OUTPUTS = { memories: true, profile: true };
|
|
13
14
|
export class StaleSelectionError extends Error {
|
|
14
15
|
status = 409;
|
|
15
16
|
constructor(message = "The session list is out of date. Refresh the list and try again.") {
|
|
@@ -97,6 +98,19 @@ export async function matchImportSessions(identity, options, snapshotMode) {
|
|
|
97
98
|
revision: revisionOf(identity, merged, projectTag, matching.map((row) => row.key)),
|
|
98
99
|
};
|
|
99
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Sessions the ledger shows as finished for every ticked output. The check uses
|
|
103
|
+
* each row's `sessionId`, since Pi and Claude Code keys are file paths. A row
|
|
104
|
+
* without a session id is never handled. The ledger is read, never created.
|
|
105
|
+
*/
|
|
106
|
+
export async function handledKeys(rows, outputs) {
|
|
107
|
+
const ids = rows.flatMap((row) => (row.sessionId ? [row.sessionId] : []));
|
|
108
|
+
if (ids.length === 0)
|
|
109
|
+
return new Set();
|
|
110
|
+
const { ImportLedger } = await import("./ledger.js");
|
|
111
|
+
const handled = await new ImportLedger().handledSessionIds(ids, outputs);
|
|
112
|
+
return new Set(rows.filter((row) => row.sessionId && handled.has(row.sessionId)).map((r) => r.key));
|
|
113
|
+
}
|
|
100
114
|
/** Check a session-list request body from the page. */
|
|
101
115
|
export function validateSessionListRequest(value) {
|
|
102
116
|
const input = value;
|
|
@@ -124,16 +138,25 @@ export function validateSessionListRequest(value) {
|
|
|
124
138
|
throw new Error(`Invalid ${key}`);
|
|
125
139
|
}
|
|
126
140
|
}
|
|
141
|
+
for (const key of ["skipMemories", "skipProfile", "force", "includeHandled"]) {
|
|
142
|
+
if (input[key] !== undefined && typeof input[key] !== "boolean") {
|
|
143
|
+
throw new Error(`Invalid ${key}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const force = input.force === true;
|
|
127
147
|
return {
|
|
128
148
|
...(input.source !== undefined ? { sourceToken: input.source } : {}),
|
|
129
149
|
...(input.offset !== undefined ? { offset: input.offset } : {}),
|
|
130
150
|
...(input.limit !== undefined ? { limit: input.limit } : {}),
|
|
131
151
|
refresh: input.refresh === true,
|
|
152
|
+
includeHandled: input.includeHandled === true || force,
|
|
132
153
|
match: {
|
|
133
154
|
host: input.host,
|
|
134
155
|
scope,
|
|
135
156
|
...(project ? { project } : {}),
|
|
136
157
|
pathMaps: maps,
|
|
158
|
+
outputs: { memories: input.skipMemories !== true, profile: input.skipProfile !== true },
|
|
159
|
+
...(force ? { force } : {}),
|
|
137
160
|
},
|
|
138
161
|
};
|
|
139
162
|
}
|
|
@@ -152,17 +175,21 @@ export async function listImportSessions(request, options) {
|
|
|
152
175
|
// Feed the Directory maps list; a failure here must not break the listing.
|
|
153
176
|
const { recordUnresolvedDirectories, summarizeUnresolvedDirectories } = await import("../services/backfill-state.js");
|
|
154
177
|
await recordUnresolvedDirectories(options.host, summarizeUnresolvedDirectories(matched.unresolved.map((row) => ({ directory: row.recordedDirectory })))).catch(() => { });
|
|
155
|
-
const
|
|
156
|
-
|
|
178
|
+
const handled = await handledKeys(matched.matching, options.outputs ?? ALL_OUTPUTS);
|
|
179
|
+
const listed = [
|
|
180
|
+
...matched.matching.map((row) => ({ ...row, selectable: true, handled: handled.has(row.key) })),
|
|
157
181
|
...(options.scope === "all-projects"
|
|
158
|
-
? matched.unresolved.map((row) => ({ ...row, selectable: false }))
|
|
182
|
+
? matched.unresolved.map((row) => ({ ...row, selectable: false, handled: false }))
|
|
159
183
|
: []),
|
|
160
184
|
];
|
|
185
|
+
const keep = request.includeHandled === true || options.force === true;
|
|
186
|
+
const rows = keep ? listed : listed.filter((row) => !row.handled);
|
|
161
187
|
return {
|
|
162
188
|
source: { kind: identity.kind, displayPath: identity.realPath, sourceToken: token },
|
|
163
189
|
total: rows.length,
|
|
164
190
|
offset,
|
|
165
191
|
rows: rows.slice(offset, offset + limit),
|
|
192
|
+
hiddenHandled: listed.length - rows.length,
|
|
166
193
|
unresolvedCount: matched.unresolved.length,
|
|
167
194
|
revision: matched.revision,
|
|
168
195
|
listedAt,
|
|
@@ -201,7 +228,16 @@ export function validateImportSelection(value) {
|
|
|
201
228
|
}
|
|
202
229
|
if (typeof input.revision !== "string")
|
|
203
230
|
throw new Error("Invalid session list revision");
|
|
204
|
-
|
|
231
|
+
if (input.includeHandled !== undefined && typeof input.includeHandled !== "boolean") {
|
|
232
|
+
throw new Error("Invalid includeHandled");
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
mode: "all",
|
|
236
|
+
excludedKeys: excluded,
|
|
237
|
+
revision: input.revision,
|
|
238
|
+
listedAt,
|
|
239
|
+
...(input.includeHandled === true ? { includeHandled: true } : {}),
|
|
240
|
+
};
|
|
205
241
|
}
|
|
206
242
|
throw new Error("Choose sessions to import");
|
|
207
243
|
}
|
|
@@ -223,7 +259,13 @@ export async function resolveImportSelection(sourceToken, selection, options) {
|
|
|
223
259
|
if (matched.revision !== selection.revision)
|
|
224
260
|
throw new StaleSelectionError();
|
|
225
261
|
const excluded = new Set(selection.excludedKeys);
|
|
226
|
-
|
|
262
|
+
const keep = selection.includeHandled === true || options.force === true;
|
|
263
|
+
const handled = keep
|
|
264
|
+
? new Set()
|
|
265
|
+
: await handledKeys(matched.matching, options.outputs ?? ALL_OUTPUTS);
|
|
266
|
+
keys = matched.matching
|
|
267
|
+
.map((row) => row.key)
|
|
268
|
+
.filter((key) => !excluded.has(key) && !handled.has(key));
|
|
227
269
|
}
|
|
228
270
|
else {
|
|
229
271
|
const current = new Map(matched.matching.map((row) => [row.key, row.directory]));
|
|
@@ -32,6 +32,17 @@ export declare class ImportLedger {
|
|
|
32
32
|
* A ledger file without the table reads as empty.
|
|
33
33
|
*/
|
|
34
34
|
peek(key: string): Promise<ImportLedgerRow | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Sessions whose ledger rows are all finished for every ticked output.
|
|
37
|
+
* Memory rows and profile rows (`project_hash = 'profile'`) are judged apart.
|
|
38
|
+
* A ticked output passes when the session has at least one row of its kind
|
|
39
|
+
* and every such row is imported or skipped. Read-only like `peek`: a missing
|
|
40
|
+
* file or table gives an empty set and nothing is created.
|
|
41
|
+
*/
|
|
42
|
+
handledSessionIds(sessionIds: readonly string[], outputs: {
|
|
43
|
+
memories: boolean;
|
|
44
|
+
profile: boolean;
|
|
45
|
+
}): Promise<Set<string>>;
|
|
35
46
|
countByStatus(): Promise<Record<string, number>>;
|
|
36
47
|
/** Upsert an in-progress marker before processing a unit. */
|
|
37
48
|
begin(input: {
|
package/dist/importer/ledger.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
1
2
|
import { join } from "node:path";
|
|
2
3
|
import { CONFIG } from "../config.js";
|
|
3
4
|
import { tursoConnectionManager } from "../services/turso/connection-manager.js";
|
|
@@ -87,6 +88,59 @@ export class ImportLedger {
|
|
|
87
88
|
const row = await db.get(`SELECT * FROM import_ledger WHERE key = ?`, [key]);
|
|
88
89
|
return row ? rowToEntry(row) : null;
|
|
89
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Sessions whose ledger rows are all finished for every ticked output.
|
|
93
|
+
* Memory rows and profile rows (`project_hash = 'profile'`) are judged apart.
|
|
94
|
+
* A ticked output passes when the session has at least one row of its kind
|
|
95
|
+
* and every such row is imported or skipped. Read-only like `peek`: a missing
|
|
96
|
+
* file or table gives an empty set and nothing is created.
|
|
97
|
+
*/
|
|
98
|
+
async handledSessionIds(sessionIds, outputs) {
|
|
99
|
+
const handled = new Set();
|
|
100
|
+
const ids = [...new Set(sessionIds.filter((id) => id !== ""))];
|
|
101
|
+
if ((!outputs.memories && !outputs.profile) || ids.length === 0)
|
|
102
|
+
return handled;
|
|
103
|
+
// Opening a connection creates the file, so a missing ledger is read as empty first.
|
|
104
|
+
if (!existsSync(importLedgerDbPath()))
|
|
105
|
+
return handled;
|
|
106
|
+
const db = await tursoConnectionManager.getConnection(importLedgerDbPath());
|
|
107
|
+
const table = await db.get(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'import_ledger'`);
|
|
108
|
+
if (!table)
|
|
109
|
+
return handled;
|
|
110
|
+
const kinds = new Map();
|
|
111
|
+
for (let start = 0; start < ids.length; start += 500) {
|
|
112
|
+
const chunk = ids.slice(start, start + 500);
|
|
113
|
+
const rows = await db.all(`
|
|
114
|
+
SELECT session_id,
|
|
115
|
+
CASE WHEN project_hash = 'profile' THEN 'profile' ELSE 'memory' END AS kind,
|
|
116
|
+
COUNT(*) AS total,
|
|
117
|
+
SUM(CASE WHEN status IN ('imported', 'skipped') THEN 1 ELSE 0 END) AS done
|
|
118
|
+
FROM import_ledger
|
|
119
|
+
WHERE session_id IN (${chunk.map(() => "?").join(", ")})
|
|
120
|
+
GROUP BY session_id, kind
|
|
121
|
+
`, chunk);
|
|
122
|
+
for (const row of rows) {
|
|
123
|
+
const entry = kinds.get(String(row.session_id)) ?? {
|
|
124
|
+
memory: [0, 0],
|
|
125
|
+
profile: [0, 0],
|
|
126
|
+
};
|
|
127
|
+
entry[row.kind === "profile" ? "profile" : "memory"] = [
|
|
128
|
+
Number(row.total),
|
|
129
|
+
Number(row.done),
|
|
130
|
+
];
|
|
131
|
+
kinds.set(String(row.session_id), entry);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const passes = ([total, done]) => total > 0 && total === done;
|
|
135
|
+
for (const [sessionId, entry] of kinds) {
|
|
136
|
+
if (outputs.memories && !passes(entry.memory))
|
|
137
|
+
continue;
|
|
138
|
+
if (outputs.profile && !passes(entry.profile))
|
|
139
|
+
continue;
|
|
140
|
+
handled.add(sessionId);
|
|
141
|
+
}
|
|
142
|
+
return handled;
|
|
143
|
+
}
|
|
90
144
|
async countByStatus() {
|
|
91
145
|
const db = await this.db();
|
|
92
146
|
const rows = await db.all(`SELECT status, COUNT(*) AS count FROM import_ledger GROUP BY status`);
|
|
@@ -52,6 +52,12 @@ type Deps = GroupImportDeps & {
|
|
|
52
52
|
resolveSelection: typeof resolveImportSelection;
|
|
53
53
|
readiness: () => Promise<ImportReadiness>;
|
|
54
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Fixed sentences with no number, so the page can translate them by exact text.
|
|
57
|
+
* The failed count travels apart in the child's summary.
|
|
58
|
+
*/
|
|
59
|
+
export declare const MEMORY_FAILED_MESSAGE = "Some memory units failed. Completed work is saved. A new preview and import retries only the failed units.";
|
|
60
|
+
export declare const PROFILE_FAILED_MESSAGE = "Profile learning failed. Completed memory work is saved. Refresh the preview and retry.";
|
|
55
61
|
/** Preflight every child before launching a bounded sequential group in the existing slot. */
|
|
56
62
|
export declare function startImportGroup(input: GroupImportRequest, directory: string, deps: Deps, publish: (job: GroupImportJob, controller: AbortController) => void): Promise<GroupImportJob>;
|
|
57
63
|
export {};
|
|
@@ -38,6 +38,12 @@ async function discardSelection(identity) {
|
|
|
38
38
|
const { opencodeSnapshots } = await import("./opencode-snapshot.js");
|
|
39
39
|
opencodeSnapshots.discard(importSourceKey(identity));
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Fixed sentences with no number, so the page can translate them by exact text.
|
|
43
|
+
* The failed count travels apart in the child's summary.
|
|
44
|
+
*/
|
|
45
|
+
export const MEMORY_FAILED_MESSAGE = "Some memory units failed. Completed work is saved. A new preview and import retries only the failed units.";
|
|
46
|
+
export const PROFILE_FAILED_MESSAGE = "Profile learning failed. Completed memory work is saved. Refresh the preview and retry.";
|
|
41
47
|
function matchOptions(child, directory, signal) {
|
|
42
48
|
return {
|
|
43
49
|
host: child.input.host,
|
|
@@ -47,6 +53,8 @@ function matchOptions(child, directory, signal) {
|
|
|
47
53
|
cwd: directory,
|
|
48
54
|
allowEmpty: true,
|
|
49
55
|
signal,
|
|
56
|
+
outputs: { memories: !child.args.skipMemories, profile: !child.args.skipProfile },
|
|
57
|
+
...(child.args.force ? { force: true } : {}),
|
|
50
58
|
};
|
|
51
59
|
}
|
|
52
60
|
function hostError(host, error) {
|
|
@@ -326,7 +334,7 @@ async function executeGroup(children, job, signal, directory, deps, waiting) {
|
|
|
326
334
|
else if (historyImportFailed(report)) {
|
|
327
335
|
child.row.state = "failed";
|
|
328
336
|
failed = true;
|
|
329
|
-
child.row.error = `${hostLabel(host)}: ${report.unitsFailed ?
|
|
337
|
+
child.row.error = `${hostLabel(host)}: ${report.unitsFailed ? MEMORY_FAILED_MESSAGE : PROFILE_FAILED_MESSAGE}`;
|
|
330
338
|
job.error = child.row.error;
|
|
331
339
|
}
|
|
332
340
|
else {
|
|
@@ -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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", "Fira Code", ui-monospace, monospace;--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-6xl:72rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-normal:1.5;--leading-relaxed:1.625;--ease-in:cubic-bezier(.4, 0, 1, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono Variable", "JetBrains Mono", "Fira Code", ui-monospace, monospace;--text-ui:.875rem;--color-status-warning:var(--status-warning-label);--color-status-success:var(--status-success-label);--color-status-info:var(--status-info-label);--color-selection:var(--selection);--color-ring:var(--ring);--color-border:var(--border);--color-popover-foreground:var(--popover-foreground);--color-popover:var(--popover)}}@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}*{border-color:var(--border);outline-color:var(--ring)}body{background-color:var(--background);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.start-0{inset-inline-start:calc(var(--spacing) * 0)}.end-2{inset-inline-end:calc(var(--spacing) * 2)}.end-3{inset-inline-end:calc(var(--spacing) * 3)}.end-4{inset-inline-end:calc(var(--spacing) * 4)}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-full{top:100%}.bottom-0{bottom:0}.bottom-full{bottom:100%}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.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}}.m-auto{margin:auto}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-auto{margin-inline:auto}.ms-1{margin-inline-start:var(--spacing)}.ms-2{margin-inline-start:calc(var(--spacing) * 2)}.ms-4{margin-inline-start:calc(var(--spacing) * 4)}.ms-5{margin-inline-start:calc(var(--spacing) * 5)}.ms-auto{margin-inline-start:auto}.me-1{margin-inline-end:var(--spacing)}.me-2{margin-inline-end:calc(var(--spacing) * 2)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.grid\!{display:grid!important}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-auto{height:auto}.h-full{height:100%}.h-svh{height:100svh}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[45vh\]{max-height:45vh}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-48{min-height:calc(var(--spacing) * 48)}.min-h-\[calc\(100svh-9rem\)\]{min-height:calc(100svh - 9rem)}.min-h-svh{min-height:100svh}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-14{width:calc(var(--spacing) * 14)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[min\(20rem\,85vw\)\]{width:min(20rem,85vw)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-6xl{max-width:var(--container-6xl)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[85\%\]{max-width:85%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-\[min\(24rem\,calc\(100vw-1rem\)\)\]{max-width:min(24rem,100vw - 1rem)}.max-w-\[min\(40rem\,calc\(100vw-2rem\)\)\]{max-width:min(40rem,100vw - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:0}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-\[56rem\]{min-width:56rem}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-56{flex-basis:calc(var(--spacing) * 56)}.basis-full{flex-basis:100%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0px;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)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.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}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}: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-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-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)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.self-center{align-self:center}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-\[4px\]{border-radius:4px}.rounded-\[7px\]{border-radius:7px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-s-lg{border-start-start-radius:var(--radius);border-end-start-radius:var(--radius)}.rounded-e-lg{border-start-end-radius:var(--radius);border-end-end-radius:var(--radius)}.rounded-ee-md{border-end-end-radius:calc(var(--radius) * .8)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-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{border-left-style:var(--tw-border-style);border-left-width:1px}.border-\[var\(--status-warning\)\],.border-amber-500\/50{border-color:var(--status-warning)}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/50{border-color:color-mix(in oklab, var(--status-warning) 50%, transparent)}}.border-blue-600\/40{border-color:var(--status-info-label)}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/40{border-color:color-mix(in oklab, var(--status-info-label) 40%, transparent)}}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-current{border-color:currentColor}.border-destructive\/25{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/25{border-color:color-mix(in oklab, var(--destructive) 25%, transparent)}}.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/30{border-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-green-600\/40{border-color:var(--status-success-label)}@supports (color:color-mix(in lab, red, red)){.border-green-600\/40{border-color:color-mix(in oklab, var(--status-success-label) 40%, transparent)}}.border-input{border-color:var(--input)}.border-orange-600\/40{border-color:var(--status-warning-label)}@supports (color:color-mix(in lab, red, red)){.border-orange-600\/40{border-color:color-mix(in oklab, var(--status-warning-label) 40%, transparent)}}.border-primary,.border-primary\/25{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/25{border-color:color-mix(in oklab, var(--primary) 25%, transparent)}}.border-primary\/30{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/30{border-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.border-primary\/40{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/40{border-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.border-red-600\/40{border-color:var(--destructive-label)}@supports (color:color-mix(in lab, red, red)){.border-red-600\/40{border-color:color-mix(in oklab, var(--destructive-label) 40%, transparent)}}.border-sidebar-border,.border-sidebar-border\/80{border-color:var(--sidebar-border)}@supports (color:color-mix(in lab, red, red)){.border-sidebar-border\/80{border-color:color-mix(in oklab, var(--sidebar-border) 80%, transparent)}}.border-status-info\/25{border-color:var(--status-info-label)}@supports (color:color-mix(in lab, red, red)){.border-status-info\/25{border-color:color-mix(in oklab, var(--status-info-label) 25%, transparent)}}.border-status-success,.border-status-success\/30{border-color:var(--status-success-label)}@supports (color:color-mix(in lab, red, red)){.border-status-success\/30{border-color:color-mix(in oklab, var(--status-success-label) 30%, transparent)}}.border-status-warning\/25{border-color:var(--status-warning-label)}@supports (color:color-mix(in lab, red, red)){.border-status-warning\/25{border-color:color-mix(in oklab, var(--status-warning-label) 25%, transparent)}}.border-status-warning\/30{border-color:var(--status-warning-label)}@supports (color:color-mix(in lab, red, red)){.border-status-warning\/30{border-color:color-mix(in oklab, var(--status-warning-label) 30%, transparent)}}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[var\(--status-warning\)\]{background-color:var(--status-warning)}.bg-background,.bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500\/10{background-color:var(--status-info)}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/10{background-color:color-mix(in oklab, var(--status-info) 10%, transparent)}}.bg-blue-500\/15{background-color:var(--status-info)}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/15{background-color:color-mix(in oklab, var(--status-info) 15%, transparent)}}.bg-blue-500\/30{background-color:var(--status-info)}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/30{background-color:color-mix(in oklab, var(--status-info) 30%, transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/70{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/70{background-color:color-mix(in oklab, var(--card) 70%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-green-500\/15{background-color:var(--status-success)}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/15{background-color:color-mix(in oklab, var(--status-success) 15%, transparent)}}.bg-green-600{background-color:var(--status-success-label)}.bg-muted,.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-orange-500\/15{background-color:var(--status-warning)}@supports (color:color-mix(in lab, red, red)){.bg-orange-500\/15{background-color:color-mix(in oklab, var(--status-warning) 15%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-red-500\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-selection{background-color:var(--selection)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-status-info\/10{background-color:var(--status-info-label)}@supports (color:color-mix(in lab, red, red)){.bg-status-info\/10{background-color:color-mix(in oklab, var(--status-info-label) 10%, transparent)}}.bg-status-success\/10{background-color:var(--status-success-label)}@supports (color:color-mix(in lab, red, red)){.bg-status-success\/10{background-color:color-mix(in oklab, var(--status-success-label) 10%, transparent)}}.bg-status-warning\/10{background-color:var(--status-warning-label)}@supports (color:color-mix(in lab, red, red)){.bg-status-warning\/10{background-color:color-mix(in oklab, var(--status-warning-label) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-px{padding:1px}.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)}.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)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.ps-1{padding-inline-start:var(--spacing)}.ps-2{padding-inline-start:calc(var(--spacing) * 2)}.ps-3{padding-inline-start:calc(var(--spacing) * 3)}.ps-8{padding-inline-start:calc(var(--spacing) * 8)}.pe-1{padding-inline-end:var(--spacing)}.pe-3{padding-inline-end:calc(var(--spacing) * 3)}.pe-4{padding-inline-end:calc(var(--spacing) * 4)}.pe-10{padding-inline-end:calc(var(--spacing) * 10)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-1{padding-right:var(--spacing)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-start{text-align:start}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.font-mono{font-family:JetBrains Mono Variable,JetBrains Mono,Fira Code,ui-monospace,monospace}.font-sans{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.text-page-title{font-size:1.5rem;line-height:var(--tw-leading,1.25)}.text-section-title{font-size:1.125rem;line-height:var(--tw-leading,1.4)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-subsection-title{font-size:.9375rem;line-height:var(--tw-leading,1.4)}.text-ui{font-size:.875rem;line-height:var(--tw-leading,1.45)}.text-xs{font-size:.8125rem;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}.text-code{font-size:.75rem}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\[color\:oklch\(0\.42_0\.13_var\(--category-hue\)\)\]{color:oklch(.42 .13 var(--category-hue))}.\[color\:oklch\(0\.42_0\.13_var\(--host-hue\)\)\]{color:oklch(.42 .13 var(--host-hue))}.\[color\:oklch\(0\.42_0\.13_var\(--keyword-hue\)\)\]{color:oklch(.42 .13 var(--keyword-hue))}.\[color\:oklch\(0\.42_0\.13_var\(--memory-type-hue\)\)\]{color:oklch(.42 .13 var(--memory-type-hue))}.text-amber-600,.text-amber-700{color:var(--status-warning-label)}.text-blue-700{color:var(--status-info-label)}.text-brand-label{color:var(--brand-label)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-label{color:var(--destructive-label)}.text-emerald-500{color:var(--status-success-label)}.text-foreground{color:var(--foreground)}.text-green-600,.text-green-700{color:var(--status-success-label)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-700{color:var(--status-warning-label)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-label{color:var(--primary-label)}.text-red-600,.text-red-700{color:var(--destructive-label)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-status-info{color:var(--status-info-label)}.text-status-success{color:var(--status-success-label)}.text-status-warning{color:var(--status-warning-label)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-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)}.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)}.ring-input{--tw-ring-color:var(--input)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,width\]{transition-property:transform,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-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-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\!running{animation-play-state:running!important}.\[unicode-bidi\:plaintext\]{unicode-bidi:plaintext}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-focus-within\/tooltip\:opacity-100:is(:where(.group\/tooltip):focus-within *){opacity:1}@media (hover:hover){.group-hover\/tooltip\:opacity-100:is(:where(.group\/tooltip):hover *){opacity:1}}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-focus-visible\:outline-2:is(:where(.peer):focus-visible~*){outline-style:var(--tw-outline-style);outline-width:2px}.peer-focus-visible\:outline-ring:is(:where(.peer):focus-visible~*){outline-color:var(--ring)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-selection ::selection{background-color:var(--selection)}.selection\:bg-selection::selection{background-color:var(--selection)}.selection\:text-foreground ::selection{color:var(--foreground)}.selection\:text-foreground::selection{color:var(--foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-ui::file-selector-button{font-size:.875rem;line-height:var(--tw-leading,1.45)}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media (hover:hover){.hover\:bg-blue-500\/20:hover{background-color:var(--status-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-blue-500\/20:hover{background-color:color-mix(in oklab, var(--status-info) 20%, transparent)}}.hover\:bg-destructive\/16:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/16:hover{background-color:color-mix(in oklab, var(--destructive) 16%, transparent)}}.hover\:bg-interactive-hover:hover{background-color:var(--interactive-hover)}.hover\:bg-muted:hover,.hover\:bg-muted\/30:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.hover\:bg-muted\/40:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/40:hover{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.hover\:bg-primary\/16:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/16:hover{background-color:color-mix(in oklab, var(--primary) 16%, transparent)}}.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-primary-label:hover{color:var(--primary-label)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-selection:focus-visible{background-color:var(--selection)}.focus-visible\:text-primary-label:focus-visible{color:var(--primary-label)}.focus-visible\:ring-0:focus-visible{--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-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background)}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-destructive\/22:active{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.active\:bg-destructive\/22:active{background-color:color-mix(in oklab, var(--destructive) 22%, transparent)}}.active\:bg-interactive-active:active{background-color:var(--interactive-active)}.active\:bg-primary\/22:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/22:active{background-color:color-mix(in oklab, var(--primary) 22%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[icon\=inline-end\]\:pe-2:has([data-icon=inline-end]){padding-inline-end:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-end\]\:pe-2\.5:has([data-icon=inline-end]){padding-inline-end:calc(var(--spacing) * 2.5)}.has-data-\[icon\=inline-end\]\:pe-3:has([data-icon=inline-end]){padding-inline-end:calc(var(--spacing) * 3)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:ps-2:has([data-icon=inline-start]){padding-inline-start:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:ps-2\.5:has([data-icon=inline-start]){padding-inline-start:calc(var(--spacing) * 2.5)}.has-data-\[icon\=inline-start\]\:ps-3:has([data-icon=inline-start]){padding-inline-start:calc(var(--spacing) * 3)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pe-18:has([data-slot=alert-action]){padding-inline-end:calc(var(--spacing) * 18)}.has-\[\>svg\]\:grid-cols-\[auto_minmax\(0\,1fr\)\]:has(>svg){grid-template-columns:auto minmax(0,1fr)}.has-\[\>svg\]\:gap-x-2\.5:has(>svg){column-gap:calc(var(--spacing) * 2.5)}.aria-checked\:bg-selection[aria-checked=true],.aria-expanded\:bg-selection[aria-expanded=true]{background-color:var(--selection)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-1[aria-invalid=true]{--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)}.aria-invalid\:ring-destructive[aria-invalid=true],.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-\[current\=page\]\:bg-sidebar-accent[aria-current=page]{background-color:var(--sidebar-accent)}.aria-\[current\=page\]\:text-sidebar-accent-foreground[aria-current=page]{color:var(--sidebar-accent-foreground)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive-label>*)[data-slot=alert-description]{color:var(--destructive-label)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}@media not all and (width>=48rem){.max-md\:hidden{display:none}.max-md\:-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}}@media (width>=40rem){.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-64{max-width:calc(var(--spacing) * 64)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:flex-1{flex:1}.sm\:basis-0{flex-basis:0}.sm\:basis-auto{flex-basis:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}}@media (width>=48rem){.md\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.md\:sticky{position:sticky}.md\:top-0{top:0}.md\:top-6{top:calc(var(--spacing) * 6)}.md\:mx-auto{margin-inline:auto}.md\:block{display:block}.md\:hidden{display:none}.md\:inline-flex{display:inline-flex}.md\:max-h-\[calc\(100svh-3rem\)\]{max-height:calc(100svh - 3rem)}.md\:min-h-7{min-height:calc(var(--spacing) * 7)}.md\:min-h-8{min-height:calc(var(--spacing) * 8)}.md\:min-h-9{min-height:calc(var(--spacing) * 9)}.md\:w-14{width:calc(var(--spacing) * 14)}.md\:min-w-7{min-width:calc(var(--spacing) * 7)}.md\:translate-x-0\!{--tw-translate-x:0px!important;translate:var(--tw-translate-x) var(--tw-translate-y)!important}.md\:scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[17rem_minmax\(0\,1fr\)\]{grid-template-columns:17rem minmax(0,1fr)}.md\:flex-col{flex-direction:column}.md\:justify-center{justify-content:center}.md\:self-start{align-self:flex-start}.md\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.md\:border-sidebar-border{border-color:var(--sidebar-border)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:px-0{padding-inline:0}.md\:px-2{padding-inline:calc(var(--spacing) * 2)}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.rtl\:-scale-x-100:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-scale-x:calc(100% * -1);scale:var(--tw-scale-x) var(--tw-scale-y)}.rtl\:rotate-90:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){rotate:90deg}@media not all and (width>=48rem){.max-md\:rtl\:translate-x-full:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}}.dark\:bg-blue-400\/30:is(.dark *){background-color:var(--status-info-label)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-400\/30:is(.dark *){background-color:color-mix(in oklab, var(--status-info-label) 30%, transparent)}}.dark\:bg-destructive\/16:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/16:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 16%, transparent)}}.dark\:bg-primary\/16:is(.dark *){background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-primary\/16:is(.dark *){background-color:color-mix(in oklab, var(--primary) 16%, transparent)}}.dark\:\[color\:oklch\(0\.8_0\.13_var\(--category-hue\)\)\]:is(.dark *){color:oklch(.8 .13 var(--category-hue))}.dark\:\[color\:oklch\(0\.8_0\.13_var\(--host-hue\)\)\]:is(.dark *){color:oklch(.8 .13 var(--host-hue))}.dark\:\[color\:oklch\(0\.8_0\.13_var\(--keyword-hue\)\)\]:is(.dark *){color:oklch(.8 .13 var(--keyword-hue))}.dark\:\[color\:oklch\(0\.8_0\.13_var\(--memory-type-hue\)\)\]:is(.dark *){color:oklch(.8 .13 var(--memory-type-hue))}.dark\:text-blue-400:is(.dark *){color:var(--status-info-label)}.dark\:text-green-400:is(.dark *){color:var(--status-success-label)}.dark\:text-orange-400:is(.dark *){color:var(--status-warning-label)}.dark\:text-red-400:is(.dark *){color:var(--destructive-label)}@media (hover:hover){.dark\:hover\:bg-destructive\/22:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/22:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 22%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.dark\:hover\:bg-primary\/22:is(.dark *):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-primary\/22:is(.dark *):hover{background-color:color-mix(in oklab, var(--primary) 22%, transparent)}}}.dark\:active\:bg-destructive\/30:is(.dark *):active{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-destructive\/30:is(.dark *):active{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:active\:bg-primary\/30:is(.dark *):active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-primary\/30:is(.dark *):active{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.\[\&_button\]\:h-auto button{height:auto}.\[\&_button\]\:min-h-8 button{min-height:calc(var(--spacing) * 8)}.\[\&_button\]\:py-1\.5 button{padding-block:calc(var(--spacing) * 1.5)}.\[\&_button\]\:whitespace-normal button{white-space:normal}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/16:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-destructive\/16:is(a):hover{background-color:color-mix(in oklab, var(--destructive) 16%, transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/16:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/16:is(a):hover{background-color:color-mix(in oklab, var(--primary) 16%, transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.\[a\]\:hover\:bg-status-info\/16:is(a):hover{background-color:var(--status-info-label)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-status-info\/16:is(a):hover{background-color:color-mix(in oklab, var(--status-info-label) 16%, transparent)}}.\[a\]\:hover\:bg-status-warning\/16:is(a):hover{background-color:var(--status-warning-label)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-status-warning\/16:is(a):hover{background-color:color-mix(in oklab, var(--status-warning-label) 16%, transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0\.5>*):is(svg){--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}@media (width>=48rem){.md\:\[\&\>\*\]\:justify-center>*{justify-content:center}.md\:\[\&\>\*\]\:rounded-none>*{border-radius:0}.md\:\[\&\>\*\]\:py-1\.5>*{padding-block:calc(var(--spacing) * 1.5)}.md\:\[\&\>\*\+\*\]\:border-s-0>*+*{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.md\:\[\&\>\*\+\*\]\:border-t>*+*{border-top-style:var(--tw-border-style);border-top-width:1px}}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background:#fdfcfa;--foreground:#393a34;--card:#f8f7f5;--card-foreground:#393a34;--popover:#f8f7f5;--popover-foreground:#393a34;--primary:#b35017;--primary-foreground:#fff;--primary-hover:#9a4310;--primary-active:#85390c;--primary-label:#85390c;--brand-label:#678d6c;--secondary:#f7f6f4;--secondary-foreground:#393a34;--muted:#f7f6f4;--muted-foreground:#5c5c54;--accent:#a9998f2b;--accent-foreground:#393a34;--selection:#a9998f2b;--interactive-hover:#0000000d;--interactive-active:#00000014;--destructive:#b7493f;--destructive-label:#8f3028;--border:#e5e1de;--border-hover:#cbc7c2;--input:#8b857d;--ring:#b35017;--status-warning:#8d6c15;--status-warning-label:#79590d;--status-success:#5f8d3d;--status-success-label:#426528;--status-info:#2d72c4;--status-info-label:#245faa;--chart-1:#b35017;--chart-2:#5f8d3d;--chart-3:#2d72c4;--chart-4:#8d6c15;--chart-5:#b7493f;--radius:.625rem;--sidebar:#f7f6f4;--sidebar-foreground:#393a34;--sidebar-primary:#b35017;--sidebar-primary-foreground:#fff;--sidebar-accent:#a9998f2b;--sidebar-accent-foreground:#393a34;--sidebar-border:#e5e1de;--sidebar-ring:#b35017;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.dark{--background:#120f0e;--foreground:#c9c5ba;--card:#181715;--card-foreground:#c9c5ba;--popover:#181715;--popover-foreground:#c9c5ba;--primary:#da7c47;--primary-foreground:#120f0e;--primary-hover:#eb8c57;--primary-active:#fd9b66;--primary-label:#fd9b66;--brand-label:#678d6c;--secondary:#171615;--secondary-foreground:#c9c5ba;--muted:#171615;--muted-foreground:#8f8b81;--accent:#c8c6c52b;--accent-foreground:#c9c5ba;--selection:#c8c6c52b;--interactive-hover:#ffffff12;--interactive-active:#ffffff1f;--destructive:#da5b4a;--destructive-label:#ff9b8e;--border:#242323;--border-hover:#504e4c;--input:#777169;--ring:#da7c47;--status-warning:#c67f13;--status-warning-label:#e7a33c;--status-success:#76ad4f;--status-success-label:#9ac974;--status-info:#479fe6;--status-info-label:#78b8ec;--chart-1:#da7c47;--chart-2:#76ad4f;--chart-3:#479fe6;--chart-4:#c67f13;--chart-5:#da5b4a;--sidebar:#171615;--sidebar-foreground:#c9c5ba;--sidebar-primary:#da7c47;--sidebar-primary-foreground:#120f0e;--sidebar-accent:#c8c6c52b;--sidebar-accent-foreground:#c9c5ba;--sidebar-border:#242323;--sidebar-ring:#da7c47;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}::selection{background:var(--selection);color:var(--foreground)}.markdown-content{word-break:break-word;line-height:1.6}.markdown-content pre{background:var(--muted);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;overflow-x:auto}.markdown-content code{font-family:var(--font-mono);font-size:.75rem}.markdown-content :not(pre)>code,.inline-code{font-family:var(--font-mono);background:var(--muted);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:.375rem;padding:.1rem .375rem;font-size:.75rem}.markdown-content pre code{background:0 0;border:0;padding:0}.markdown-content p{margin:.4em 0}.markdown-content :is(h1,h2,h3,h4,h5,h6){font-size:var(--text-ui);color:var(--muted-foreground);text-transform:uppercase;margin:.9em 0 .2em;font-weight:700;line-height:1.4}.markdown-content :is(h1,h2,h3,h4,h5,h6):first-child{margin-top:0}.markdown-content :is(ul,ol){margin:.4em 0;padding-inline-start:1.25rem}.markdown-content ul{list-style:outside}.markdown-content ol{list-style:decimal}.markdown-content.chat-answer :is(strong,h1,h2,h3,h4,h5,h6){color:var(--primary-label)}.markdown-content.chat-answer :is(h1,h2,h3,h4,h5,h6){text-transform:none;font-size:.875rem;font-weight:600;line-height:1.4}.markdown-content.chat-answer h1{font-size:1.125rem}.markdown-content.chat-answer h2{font-size:1rem}.markdown-content.chat-answer h3{font-size:.9375rem}.markdown-content.chat-answer :is(p,ul,ol,pre,blockquote){margin:.85em 0}.markdown-content.chat-answer :is(h1,h2,h3,h4,h5,h6){margin:1.5em 0 .6em}.markdown-content.chat-answer li+li{margin-top:.35em}.markdown-content.chat-answer li::marker{color:var(--primary-label)}.markdown-content.chat-answer ol>li::marker{font-weight:600}.markdown-content.chat-answer li>:is(ul,ol){margin:.35em 0 0}.markdown-content.chat-answer>:first-child{margin-top:0}.markdown-content.chat-answer>:last-child{margin-bottom:0}.markdown-content .cite-chip{cursor:pointer;border:1px solid var(--primary);align-items:center;height:1.25rem;margin:0 .125rem;padding:0 .375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.markdown-content .cite-chip{border:1px solid color-mix(in oklab, var(--primary) 30%, transparent)}}.markdown-content .cite-chip{background:var(--primary);border-radius:.375rem}@supports (color:color-mix(in lab, red, red)){.markdown-content .cite-chip{background:color-mix(in oklab, var(--primary) 10%, transparent)}}.markdown-content .cite-chip{color:var(--primary-label);font-variant-numeric:tabular-nums;vertical-align:baseline;font-size:11px;font-weight:500;transition:background-color .2s ease-in}.markdown-content .cite-chip:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.markdown-content .cite-chip:hover{background:color-mix(in oklab, var(--primary) 20%, transparent)}}.markdown-content .cite-chip:focus-visible{outline:2px solid var(--ring)}.markdown-content .cite-profile{color:#1d4ed8;background:oklab(62.3083% -.0332476 -.185052/.1);border-color:oklab(54.615% -.026671 -.213549/.4)}.markdown-content .cite-profile:hover{background:oklab(62.3083% -.0332476 -.185052/.2)}.dark .markdown-content .cite-profile{color:#60a5fa}.markdown-content .cite-deleted{opacity:.7;text-decoration:line-through}.confidence-ring{--p:0;background:conic-gradient(var(--primary) calc(var(--p) * 1%), var(--border) 0);border-radius:9999px;place-items:center;width:2.25rem;height:2.25rem;font-size:.65rem;display:grid}.confidence-ring span{background:var(--card);border-radius:9999px;place-items:center;width:1.75rem;height:1.75rem;display:grid}.settings-view button:not(:disabled){cursor:pointer}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-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-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}.settings-view{overflow-wrap:anywhere;min-width:0;font-size:.875rem;line-height:1.45}.settings-view input:not([type=checkbox]):not([type=radio]):not([data-slot]),.settings-view select{border:1px solid var(--input);background:var(--card);min-width:0;max-width:100%;height:36px;color:var(--foreground);border-radius:10px;padding:4px 10px;font-size:.875rem;transition:background-color .15s}.settings-view input::placeholder{color:var(--muted-foreground)}.settings-view :is(input[type=checkbox],input[type=radio]){accent-color:var(--primary);flex-shrink:0}.settings-view button:not([data-slot]):not([role=combobox]):not(.underline){border:1px solid var(--input);background:var(--card);white-space:normal;border-radius:10px;max-width:100%;min-height:36px;padding:4px 10px;transition:background-color .15s}.settings-view button:not([data-slot]):not([role=combobox]):not(:disabled):hover{background:var(--interactive-hover)}.settings-view button:not([data-slot]):not([role=combobox]):not(:disabled):active{background:var(--interactive-active)}.settings-view :is(input,select,button):not([data-slot]):focus-visible{outline:2px solid var(--ring);outline-offset:2px}.settings-view :is(input,select,button):disabled{cursor:not-allowed;opacity:.5}.settings-view :is(input,select)[aria-invalid=true]{border-color:var(--destructive)}.settings-view :is(code,pre,.font-mono){direction:ltr;unicode-bidi:isolate;font-size:.75rem}.settings-view #settings-section-external-api input:not([type=radio]),.settings-view #directory-maps input:not([type=checkbox]){font-family:var(--font-mono);direction:ltr;unicode-bidi:isolate}.settings-view .flex>*,.settings-view .grid>*{min-width:0}.settings-view table{overflow-wrap:normal}[data-shared-row]>div>section{background:0 0;border:0;padding:0}[data-shared-row]>div>section>h2:first-child{display:none}
|