kaizenai 0.4.0 → 0.5.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.
@@ -6,9 +6,8 @@ import process9 from "process";
6
6
  var package_default = {
7
7
  name: "kaizenai",
8
8
  type: "module",
9
- version: "0.4.0",
9
+ version: "0.5.0",
10
10
  description: "Local web UI for coding agents",
11
- license: "MIT",
12
11
  keywords: [
13
12
  "claude",
14
13
  "claude-code",
@@ -500,6 +499,11 @@ var CODEX_REASONING_OPTIONS = [
500
499
  { id: "high", label: "High" },
501
500
  { id: "xhigh", label: "XHigh" }
502
501
  ];
502
+ var CLAUDE_CONTEXT_WINDOW_FALLBACKS = {
503
+ sonnet: 1e6,
504
+ opus: 1e6,
505
+ haiku: 200000
506
+ };
503
507
  var GEMINI_THINKING_OPTIONS = [
504
508
  { id: "off", label: "Off" },
505
509
  { id: "standard", label: "Standard" },
@@ -1085,6 +1089,7 @@ class EventStore {
1085
1089
  await this.ensureFile(this.turnsLogPath);
1086
1090
  await this.loadSnapshot();
1087
1091
  await this.replayLogs();
1092
+ await this.repairDuplicateSessionTokens();
1088
1093
  this.hydrateProjectWorktrees();
1089
1094
  await this.reconcileAllProjectFeatureState();
1090
1095
  if (!await this.hasLegacyTranscriptData() && await this.shouldCompact()) {
@@ -1552,6 +1557,29 @@ class EventStore {
1552
1557
  }
1553
1558
  return entries;
1554
1559
  }
1560
+ async repairDuplicateSessionTokens() {
1561
+ const chatsBySessionKey = new Map;
1562
+ for (const chat of this.state.chatsById.values()) {
1563
+ if (chat.deletedAt)
1564
+ continue;
1565
+ const sessionKey = this.getChatPersistenceKey(chat);
1566
+ if (!sessionKey)
1567
+ continue;
1568
+ const existing = chatsBySessionKey.get(sessionKey) ?? [];
1569
+ existing.push(chat);
1570
+ chatsBySessionKey.set(sessionKey, existing);
1571
+ }
1572
+ for (const chats of chatsBySessionKey.values()) {
1573
+ if (chats.length < 2)
1574
+ continue;
1575
+ const [keeper, ...duplicates] = [...chats].sort((left, right) => right.updatedAt - left.updatedAt || (right.lastMessageAt ?? 0) - (left.lastMessageAt ?? 0) || right.createdAt - left.createdAt);
1576
+ for (const duplicate of duplicates) {
1577
+ if (!duplicate.sessionToken)
1578
+ continue;
1579
+ await this.setSessionToken(duplicate.id, null);
1580
+ }
1581
+ }
1582
+ }
1555
1583
  async openProject(localPath, title) {
1556
1584
  const identity = resolveProjectRepositoryIdentity(localPath);
1557
1585
  const worktreePaths = identity.isGitRepo ? resolveProjectWorktreePaths(identity.worktreePath) : [identity.worktreePath];
@@ -2019,15 +2047,33 @@ class EventStore {
2019
2047
  const chat = this.requireChat(chatId);
2020
2048
  if (chat.sessionToken === sessionToken)
2021
2049
  return;
2022
- const event = {
2050
+ const affectedProjectIds = new Set([chat.projectId]);
2051
+ if (sessionToken && chat.provider) {
2052
+ for (const candidate of this.state.chatsById.values()) {
2053
+ if (candidate.id === chatId || candidate.deletedAt)
2054
+ continue;
2055
+ if (candidate.provider !== chat.provider || candidate.sessionToken !== sessionToken)
2056
+ continue;
2057
+ affectedProjectIds.add(candidate.projectId);
2058
+ await this.append(this.turnsLogPath, {
2059
+ v: STORE_VERSION,
2060
+ type: "session_token_set",
2061
+ timestamp: Date.now(),
2062
+ chatId: candidate.id,
2063
+ sessionToken: null
2064
+ });
2065
+ }
2066
+ }
2067
+ await this.append(this.turnsLogPath, {
2023
2068
  v: STORE_VERSION,
2024
2069
  type: "session_token_set",
2025
2070
  timestamp: Date.now(),
2026
2071
  chatId,
2027
2072
  sessionToken
2028
- };
2029
- await this.append(this.turnsLogPath, event);
2030
- await this.syncProjectFeatureState(chat.projectId);
2073
+ });
2074
+ for (const projectId of affectedProjectIds) {
2075
+ await this.syncProjectFeatureState(projectId);
2076
+ }
2031
2077
  }
2032
2078
  async reconcileProjectFeatureState(projectId) {
2033
2079
  const project = this.getProject(projectId);
@@ -3169,7 +3215,7 @@ class CodexAppServerManager {
3169
3215
  }
3170
3216
  async startSession(args) {
3171
3217
  const existing = this.sessions.get(args.chatId);
3172
- if (existing && !existing.closed && existing.cwd === args.cwd) {
3218
+ if (existing && !existing.closed && existing.cwd === args.cwd && existing.sessionToken === args.sessionToken) {
3173
3219
  return;
3174
3220
  }
3175
3221
  if (existing) {
@@ -5672,6 +5718,69 @@ function usageWarnings(args) {
5672
5718
  }
5673
5719
  return warnings;
5674
5720
  }
5721
+ function relevantMessagesForCurrentContext(messages) {
5722
+ let lastContextClearedIndex = -1;
5723
+ for (let index = messages.length - 1;index >= 0; index -= 1) {
5724
+ if (messages[index]?.kind === "context_cleared") {
5725
+ lastContextClearedIndex = index;
5726
+ break;
5727
+ }
5728
+ }
5729
+ return lastContextClearedIndex >= 0 ? messages.slice(lastContextClearedIndex + 1) : messages;
5730
+ }
5731
+ function estimateTokenCountFromText(text) {
5732
+ if (!text)
5733
+ return 0;
5734
+ const trimmed = text.trim();
5735
+ if (!trimmed)
5736
+ return 0;
5737
+ return Math.ceil(trimmed.length / 4);
5738
+ }
5739
+ function estimateTokenCountFromUnknown(value) {
5740
+ if (typeof value === "string") {
5741
+ return estimateTokenCountFromText(value);
5742
+ }
5743
+ try {
5744
+ return estimateTokenCountFromText(JSON.stringify(value));
5745
+ } catch {
5746
+ return 0;
5747
+ }
5748
+ }
5749
+ function estimateCurrentThreadTokens(messages) {
5750
+ let total = 0;
5751
+ for (const entry of relevantMessagesForCurrentContext(messages)) {
5752
+ switch (entry.kind) {
5753
+ case "user_prompt":
5754
+ total += estimateTokenCountFromText(entry.content);
5755
+ if (entry.attachments?.length) {
5756
+ total += entry.attachments.length * 256;
5757
+ }
5758
+ break;
5759
+ case "assistant_text":
5760
+ total += estimateTokenCountFromText(entry.text);
5761
+ break;
5762
+ case "compact_summary":
5763
+ total += estimateTokenCountFromText(entry.summary);
5764
+ break;
5765
+ case "result":
5766
+ total += estimateTokenCountFromText(entry.result);
5767
+ break;
5768
+ case "tool_call":
5769
+ total += estimateTokenCountFromText(entry.tool.toolName);
5770
+ total += estimateTokenCountFromUnknown(entry.tool.input);
5771
+ break;
5772
+ case "tool_result":
5773
+ total += estimateTokenCountFromUnknown(entry.content);
5774
+ break;
5775
+ case "status":
5776
+ total += estimateTokenCountFromText(entry.status);
5777
+ break;
5778
+ default:
5779
+ break;
5780
+ }
5781
+ }
5782
+ return total;
5783
+ }
5675
5784
  function buildSnapshot(args) {
5676
5785
  const contextUsedPercent = args.threadTokens !== null && args.contextWindowTokens && args.contextWindowTokens > 0 ? toPercent(args.threadTokens / args.contextWindowTokens * 100) : null;
5677
5786
  const snapshot = {
@@ -5706,6 +5815,65 @@ function buildSnapshot(args) {
5706
5815
  ].some((value) => value !== null);
5707
5816
  return hasAnyData ? snapshot : null;
5708
5817
  }
5818
+ function usageTotals(usage) {
5819
+ const inputTokens = toNumber(usage.input_tokens) ?? 0;
5820
+ const outputTokens = toNumber(usage.output_tokens) ?? 0;
5821
+ const cachedInputTokens = (toNumber(usage.cache_read_input_tokens) ?? 0) + (toNumber(usage.cache_creation_input_tokens) ?? 0);
5822
+ const reasoningOutputTokens = toNumber(usage.reasoning_output_tokens) ?? 0;
5823
+ return {
5824
+ inputTokens,
5825
+ outputTokens,
5826
+ cachedInputTokens,
5827
+ reasoningOutputTokens,
5828
+ totalTokens: inputTokens + outputTokens + cachedInputTokens + reasoningOutputTokens
5829
+ };
5830
+ }
5831
+ function mergeUsageSnapshots(reconstructed, live) {
5832
+ if (!reconstructed)
5833
+ return live;
5834
+ if (!live)
5835
+ return reconstructed;
5836
+ const merged = {
5837
+ ...reconstructed,
5838
+ ...live,
5839
+ provider: live.provider,
5840
+ threadTokens: live.threadTokens ?? reconstructed.threadTokens,
5841
+ contextWindowTokens: live.contextWindowTokens ?? reconstructed.contextWindowTokens,
5842
+ contextUsedPercent: live.contextUsedPercent ?? reconstructed.contextUsedPercent,
5843
+ lastTurnTokens: live.lastTurnTokens ?? reconstructed.lastTurnTokens,
5844
+ inputTokens: live.inputTokens ?? reconstructed.inputTokens,
5845
+ outputTokens: live.outputTokens ?? reconstructed.outputTokens,
5846
+ cachedInputTokens: live.cachedInputTokens ?? reconstructed.cachedInputTokens,
5847
+ reasoningOutputTokens: live.reasoningOutputTokens ?? reconstructed.reasoningOutputTokens,
5848
+ sessionLimitUsedPercent: live.sessionLimitUsedPercent ?? reconstructed.sessionLimitUsedPercent,
5849
+ rateLimitResetAt: live.rateLimitResetAt ?? reconstructed.rateLimitResetAt,
5850
+ source: live.source === "live" ? "live" : reconstructed.source,
5851
+ updatedAt: live.updatedAt ?? reconstructed.updatedAt,
5852
+ warnings: []
5853
+ };
5854
+ merged.warnings = usageWarnings({
5855
+ contextUsedPercent: merged.contextUsedPercent,
5856
+ sessionLimitUsedPercent: merged.sessionLimitUsedPercent,
5857
+ updatedAt: merged.updatedAt
5858
+ });
5859
+ return merged;
5860
+ }
5861
+ function applyThreadEstimate(snapshot, messages) {
5862
+ const estimatedThreadTokens = estimateCurrentThreadTokens(messages);
5863
+ if (!snapshot)
5864
+ return null;
5865
+ const contextUsedPercent = snapshot.contextWindowTokens && snapshot.contextWindowTokens > 0 ? toPercent(estimatedThreadTokens / snapshot.contextWindowTokens * 100) : null;
5866
+ return {
5867
+ ...snapshot,
5868
+ threadTokens: estimatedThreadTokens,
5869
+ contextUsedPercent,
5870
+ warnings: usageWarnings({
5871
+ contextUsedPercent,
5872
+ sessionLimitUsedPercent: snapshot.sessionLimitUsedPercent,
5873
+ updatedAt: snapshot.updatedAt
5874
+ })
5875
+ };
5876
+ }
5709
5877
  function deriveAvailability(updatedAt) {
5710
5878
  if (updatedAt === null)
5711
5879
  return "available";
@@ -5773,6 +5941,77 @@ function unavailableEntry(provider) {
5773
5941
  // src/server/usage/claude-usage.ts
5774
5942
  var PROVIDER_CACHE_TTL_MS = 30000;
5775
5943
  var PROVIDER_USAGE_REQUEST_MIN_INTERVAL_MS = 30 * 60 * 1000;
5944
+ function extractClaudeUsageRecord(entry) {
5945
+ if (!entry.debugRaw)
5946
+ return null;
5947
+ const raw = parseJsonLine3(entry.debugRaw);
5948
+ if (!raw)
5949
+ return null;
5950
+ const type = raw.type;
5951
+ if (type !== "assistant" && type !== "result")
5952
+ return null;
5953
+ if (type === "assistant") {
5954
+ const message = asRecord3(raw.message);
5955
+ const usage2 = asRecord3(message?.usage);
5956
+ if (!usage2)
5957
+ return null;
5958
+ const usageTotalsRecord2 = usageTotals(usage2);
5959
+ return {
5960
+ key: typeof raw.uuid === "string" ? raw.uuid : entry.messageId ?? entry._id,
5961
+ updatedAt: entry.createdAt,
5962
+ totals: usageTotalsRecord2,
5963
+ contextWindowTokens: null
5964
+ };
5965
+ }
5966
+ const usage = asRecord3(raw.usage);
5967
+ const modelUsage = asRecord3(raw.modelUsage);
5968
+ const firstModel = modelUsage ? Object.values(modelUsage).map((value) => asRecord3(value)).find(Boolean) ?? null : null;
5969
+ if (!usage && !firstModel)
5970
+ return null;
5971
+ const usageTotalsRecord = usage ? usageTotals(usage) : {
5972
+ inputTokens: toNumber(firstModel?.inputTokens) ?? 0,
5973
+ outputTokens: toNumber(firstModel?.outputTokens) ?? 0,
5974
+ cachedInputTokens: (toNumber(firstModel?.cacheReadInputTokens) ?? 0) + (toNumber(firstModel?.cacheCreationInputTokens) ?? 0),
5975
+ reasoningOutputTokens: 0,
5976
+ totalTokens: (toNumber(firstModel?.inputTokens) ?? 0) + (toNumber(firstModel?.outputTokens) ?? 0) + (toNumber(firstModel?.cacheReadInputTokens) ?? 0) + (toNumber(firstModel?.cacheCreationInputTokens) ?? 0)
5977
+ };
5978
+ return {
5979
+ key: typeof raw.uuid === "string" ? raw.uuid : entry.messageId ?? entry._id,
5980
+ updatedAt: entry.createdAt,
5981
+ totals: usageTotalsRecord,
5982
+ contextWindowTokens: toNumber(firstModel?.contextWindow)
5983
+ };
5984
+ }
5985
+ function reconstructClaudeUsage(messages, liveRateLimit) {
5986
+ const relevantMessages = relevantMessagesForCurrentContext(messages);
5987
+ const deduped = new Map;
5988
+ for (const entry of relevantMessages) {
5989
+ const usageRecord = extractClaudeUsageRecord(entry);
5990
+ if (!usageRecord)
5991
+ continue;
5992
+ deduped.set(usageRecord.key, usageRecord);
5993
+ }
5994
+ const latest = [...deduped.values()].filter((value) => Boolean(value)).sort((a, b) => b.updatedAt - a.updatedAt)[0];
5995
+ if (!latest && liveRateLimit?.percent == null) {
5996
+ return null;
5997
+ }
5998
+ const latestModel = [...relevantMessages].reverse().find((entry) => entry.kind === "system_init" && entry.provider === "claude");
5999
+ const fallbackContextWindow = latestModel ? CLAUDE_CONTEXT_WINDOW_FALLBACKS[latestModel.model.toLowerCase()] ?? null : null;
6000
+ return buildSnapshot({
6001
+ provider: "claude",
6002
+ threadTokens: estimateCurrentThreadTokens(messages),
6003
+ contextWindowTokens: latest?.contextWindowTokens ?? fallbackContextWindow,
6004
+ lastTurnTokens: latest?.totals.totalTokens ?? null,
6005
+ inputTokens: latest?.totals.inputTokens ?? null,
6006
+ outputTokens: latest?.totals.outputTokens ?? null,
6007
+ cachedInputTokens: latest?.totals.cachedInputTokens ?? null,
6008
+ reasoningOutputTokens: latest?.totals.reasoningOutputTokens ?? null,
6009
+ sessionLimitUsedPercent: liveRateLimit?.percent ?? null,
6010
+ rateLimitResetAt: liveRateLimit?.resetsAt ?? null,
6011
+ source: latest ? "reconstructed" : "live",
6012
+ updatedAt: latest?.updatedAt ?? null
6013
+ });
6014
+ }
5776
6015
  function createClaudeRateLimitSnapshot(percent, resetsAt) {
5777
6016
  return buildSnapshot({
5778
6017
  provider: "claude",
@@ -11347,6 +11586,25 @@ function deriveChatSnapshot(state, activeStatuses, chatId, getMessages, pendingT
11347
11586
  };
11348
11587
  }
11349
11588
 
11589
+ // src/server/usage/chat-usage.ts
11590
+ function resolveChatUsage({
11591
+ chat,
11592
+ messages,
11593
+ liveUsage,
11594
+ codexSessionsDir
11595
+ }) {
11596
+ if (!chat?.provider)
11597
+ return liveUsage;
11598
+ if (chat.provider === "claude") {
11599
+ return mergeUsageSnapshots(reconstructClaudeUsage(messages), liveUsage);
11600
+ }
11601
+ if (chat.provider === "codex") {
11602
+ const reconstructed = chat.sessionToken ? applyThreadEstimate(reconstructCodexUsageFromFile(chat.sessionToken, codexSessionsDir), messages) : null;
11603
+ return mergeUsageSnapshots(reconstructed, liveUsage);
11604
+ }
11605
+ return liveUsage;
11606
+ }
11607
+
11350
11608
  // src/server/ws-router.ts
11351
11609
  var PROVIDER_USAGE_POLL_INTERVAL_MS = 30 * 60 * 1000;
11352
11610
  var PROVIDER_USAGE_POLL_MAX_INTERVAL_MS = 31 * 60 * 1000;
@@ -11375,7 +11633,8 @@ function createWsRouter({
11375
11633
  await refreshCursorUsage(store.dataDir, undefined, force).then(() => {});
11376
11634
  }
11377
11635
  },
11378
- openUrlCommand = openUrl2
11636
+ openUrlCommand = openUrl2,
11637
+ resolveChatUsageForSnapshot = resolveChatUsage
11379
11638
  }) {
11380
11639
  const sockets = new Set;
11381
11640
  let providerUsageRefreshInFlight = null;
@@ -11490,7 +11749,13 @@ function createWsRouter({
11490
11749
  snapshot: {
11491
11750
  type: "chat",
11492
11751
  data: (() => {
11493
- return deriveChatSnapshot(store.state, agent.getActiveStatuses(), topic.chatId, (chatId) => store.getMessages(chatId), agent.getChatPendingTool(topic.chatId), agent.getLiveUsage(topic.chatId), providerSettings?.getSnapshot().settings ?? DEFAULT_PROVIDER_SETTINGS);
11752
+ const chat = store.getChat(topic.chatId);
11753
+ const messages = store.getMessages(topic.chatId);
11754
+ return deriveChatSnapshot(store.state, agent.getActiveStatuses(), topic.chatId, () => messages, agent.getChatPendingTool(topic.chatId), resolveChatUsageForSnapshot({
11755
+ chat,
11756
+ messages,
11757
+ liveUsage: agent.getLiveUsage(topic.chatId)
11758
+ }), providerSettings?.getSnapshot().settings ?? DEFAULT_PROVIDER_SETTINGS);
11494
11759
  })()
11495
11760
  }
11496
11761
  };
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "kaizenai",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.5.0",
5
5
  "description": "Local web UI for coding agents",
6
- "license": "MIT",
7
6
  "keywords": [
8
7
  "claude",
9
8
  "claude-code",
@@ -1,32 +0,0 @@
1
- @import"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,800&display=swap";/**
2
- * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
- * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
- * https://github.com/chjj/term.js
5
- * @license MIT
6
- *
7
- * Permission is hereby granted, free of charge, to any person obtaining a copy
8
- * of this software and associated documentation files (the "Software"), to deal
9
- * in the Software without restriction, including without limitation the rights
10
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- * copies of the Software, and to permit persons to whom the Software is
12
- * furnished to do so, subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be included in
15
- * all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- * THE SOFTWARE.
24
- *
25
- * Originally forked from (with the author's permission):
26
- * Fabrice Bellard's javascript vt100 for jslinux:
27
- * http://bellard.org/jslinux/
28
- * Copyright (c) 2011 Fabrice Bellard
29
- * The original design remains. The terminal itself
30
- * has been extended to include xterm CSI codes, among
31
- * other features.
32
- */.xterm{cursor:text;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::-moz-selection{color:transparent}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:-moz-fit-content;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-700:oklch(52% .105 223.128);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-700:oklch(45.7% .24 277.023);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:hsl(var(--border));--color-input:hsl(var(--input));--color-ring:hsl(var(--ring));--color-background:hsl(var(--background));--color-foreground:hsl(var(--foreground));--color-primary:hsl(var(--primary));--color-primary-foreground:hsl(var(--primary-foreground));--color-secondary-foreground:hsl(var(--secondary-foreground));--color-destructive:var(--destructive);--color-muted:hsl(var(--muted));--color-muted-foreground:hsl(var(--muted-foreground));--color-accent:hsl(var(--accent));--color-accent-foreground:hsl(var(--accent-foreground));--color-popover:hsl(var(--popover));--color-card:hsl(var(--card));--color-card-foreground:hsl(var(--card-foreground));--color-muted-icon:hsl(var(--muted-icon));--color-logo:var(--logo)}}@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%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, 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;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{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}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::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]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--app-shell-height:100dvh;--app-shell-offset-top:0px;--app-composer-bottom-padding:20px;--background:0 0% 100%;--foreground:240 10% 3.9%;--card:0 0% 100%;--card-foreground:240 10% 3.9%;--popover:0 0% 100%;--popover-foreground:240 10% 3.9%;--primary:222 47% 11%;--primary-foreground:0 0% 98%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--muted:210 20% 97%;--muted-foreground:215 16% 47%;--accent:240 4.8% 95.9%;--accent-foreground:240 5.9% 10%;--destructive:var(--logo);--destructive-foreground:0 0% 98%;--border:214 20% 90%;--input:240 5.9% 90%;--ring:240 5.9% 10%;--radius:.5rem;--muted-icon:240 2% 79%;--chart-1:24.6 95% 53.1%;--chart-2:160 60% 45%;--chart-3:221 83% 53%;--chart-4:280 65% 60%;--chart-5:340 75% 55%;--logo:oklch(71.2% .194 13.428)}.dark{--background:223 4% 13%;--foreground:0 0% 98%;--card:231 4% 16%;--card-foreground:0 0% 98%;--popover:223 4% 13%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:240 2% 10%;--secondary:240 2% 19%;--secondary-foreground:0 0% 98%;--muted:223 4% 18.5%;--muted-foreground:240 2.5% 64.9%;--accent:240 2% 19%;--accent-foreground:0 0% 98%;--destructive:var(--logo);--destructive-foreground:var(--background);--border:220 2.5% 23.5%;--input:240 4% 19%;--ring:240 4.9% 83.9%;--muted-icon:240 5% 48%;--color-slate-50:oklch(98.5% .001 247.839);--color-slate-100:oklch(96.7% .0013 264.542);--color-slate-200:oklch(92.8% .0026 264.531);--color-slate-300:oklch(87.2% .004 258.338);--color-slate-400:oklch(70.7% .01 261.325);--color-slate-500:oklch(55.1% .012 264.364);--color-slate-600:oklch(44.6% .013 256.802);--color-slate-700:oklch(37.3% .015 259.733);--color-slate-800:oklch(27.8% .0145 256.848);--color-slate-900:oklch(21% .015 264.665);--color-slate-950:oklch(13% .012 261.692);--logo:oklch(71.2% .194 13.428)}*{border-color:var(--color-border)}html,body,#root{height:100%;overflow:hidden}body{background-color:var(--color-background);color:var(--color-foreground);min-height:var(--app-shell-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:Body,sans-serif}.font-logo{font-family:Bricolage Grotesque,sans-serif;font-weight:800}input,textarea,select{touch-action:manipulation;font-size:16px}.hide-number-steppers::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.hide-number-steppers::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.hide-number-steppers[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}button{cursor:pointer;touch-action:manipulation}button:focus,button:focus-visible,button:active{box-shadow:none!important;--tw-ring-shadow:none!important;--tw-ring-offset-shadow:none!important;outline:none!important}body{overscroll-behavior-y:contain}.safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.prose ul{margin:.5em 0;padding-left:1.5em;list-style-type:disc}.prose ol{margin:.5em 0;padding-left:1.5em;list-style-type:decimal}.prose li{margin:.25em 0}.prose blockquote{border-left:2px solid hsl(var(--border));color:hsl(var(--muted-foreground));margin:1em 0;padding-left:1em}.prose blockquote>*{margin-top:.75em;margin-bottom:.75em}.prose blockquote>p{margin-top:0;margin-bottom:0}.prose blockquote>p+p{margin-top:.75em}.prose blockquote ul,.prose blockquote ol,.prose blockquote pre{margin-top:.75em;margin-bottom:.75em}code,pre{font-family:Roboto Mono,monospace}.prose code{border-radius:.25em;padding:.125em .25em;font-size:.875em}.prose pre{background-color:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:.375em;margin:.75em 0;padding:.75em 1em;overflow-x:auto}.prose pre code{background-color:#0000;padding:0}.prose hr{margin-top:20px;margin-bottom:20px}.kaizen-terminal,.kaizen-terminal .xterm,.kaizen-terminal .xterm-scrollable-element,.kaizen-terminal .xterm-viewport,.kaizen-terminal .xterm-screen,.kaizen-terminal .xterm-helpers,.kaizen-terminal .xterm-helper-textarea,.kaizen-terminal .composition-view,.kaizen-terminal .xterm-screen canvas{background:0 0!important}[data-panel][data-terminal-open]{overflow:hidden}[data-terminal-visual]{transition:opacity var(--terminal-toggle-duration,.35s) cubic-bezier(.4,0,.2,1),filter var(--terminal-toggle-duration,.35s) cubic-bezier(.4,0,.2,1);will-change:opacity,filter}[data-terminal-visual][data-terminal-animated=false]{transition:none}[data-terminal-visual][data-terminal-open=false]{opacity:0;filter:blur(5px)}[data-terminal-visual][data-terminal-open=true]{opacity:1;filter:blur()}[data-right-sidebar-visual]{transition:opacity var(--terminal-toggle-duration,.35s) cubic-bezier(.4,0,.2,1),filter var(--terminal-toggle-duration,.35s) cubic-bezier(.4,0,.2,1);will-change:opacity,filter}[data-right-sidebar-visual][data-right-sidebar-animated=false]{transition:none}[data-right-sidebar-visual][data-right-sidebar-open=false]{opacity:0;filter:blur(5px)}[data-right-sidebar-visual][data-right-sidebar-open=true]{opacity:1;filter:blur()}*{scrollbar-width:thin;scrollbar-color:hsl(var(--border)) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:hsl(var(--border));background-clip:padding-box;border:2px solid #0000;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:hsl(var(--muted-foreground) / .3)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}@media (min-width:641px){[data-sonner-toaster]{width:-moz-fit-content!important;width:fit-content!important}}.recharts-wrapper :focus,.recharts-wrapper :focus-visible{outline:none}.animate-spin-slow{animation:1.5s linear infinite spin!important}.animate-fade-in{animation:.25s ease-out fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes kaizen-empty-state-flower-in{0%{opacity:0;filter:blur(16px);transform:rotate(-90deg)scale(0)}to{opacity:1;filter:blur();transform:rotate(0)scale(1)}}@keyframes kaizen-empty-state-text-in{0%{filter:blur(4px)}to{filter:blur()}}@keyframes kaizen-cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes kaizen-cursor-fade-out{0%{opacity:1}to{opacity:0}}.kaizen-empty-state-flower{transform-origin:50%;animation:.399s cubic-bezier(.175,.885,.32,1.275) both kaizen-empty-state-flower-in}.kaizen-empty-state-text{animation:.38s ease-out both kaizen-empty-state-text-in}.kaizen-typewriter-cursor-slot{flex-shrink:0;justify-content:flex-start;align-items:center;width:3px;margin-left:2px;display:inline-flex}.kaizen-typewriter-cursor{background-color:#fff;width:1px;height:1.05em;animation:.9s step-end infinite kaizen-cursor-blink;display:inline-block}.kaizen-typewriter-cursor[data-typing-complete=true]{animation:.24s ease-out forwards kaizen-cursor-fade-out}*{border-color:var(--color-border);outline-color:color-mix(in srgb,hsl(var(--ring)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--color-ring) 50%,transparent)}}body{background-color:var(--color-background);color:var(--color-foreground)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.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:calc(var(--spacing) * 0)}.inset-0\.5{inset:calc(var(--spacing) * .5)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[4px\]{top:4px}.top-\[35px\]{top:35px}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.right-0\.5{right:calc(var(--spacing) * .5)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-\[4px\]{right:4px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-\[50\%\]{left:50%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-start-1{grid-column-start:1}.row-1{grid-row:1}.row-2{grid-row:2}.row-3{grid-row:3}.row-4{grid-row:4}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}@media (min-width:125rem){.container{max-width:125rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.-my-1{margin-block:calc(var(--spacing) * -1)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.-mt-\[1px\]{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-\[72px\]{margin-top:72px}.-mr-0\.5{margin-right:calc(var(--spacing) * -.5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-\[2px\]{margin-right:2px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.-ml-0\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-\[1px\]{margin-left:-1px}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-\[1px\]{margin-left:1px}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.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-4\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.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-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.\!h-auto{height:auto!important}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-5\.5{height:calc(var(--spacing) * 5.5)}.h-6{height:calc(var(--spacing) * 6)}.h-6\.5{height:calc(var(--spacing) * 6.5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-28{height:calc(var(--spacing) * 28)}.h-\[1px\]{height:1px}.h-\[34px\]{height:34px}.h-\[40px\]{height:40px}.h-\[64px\]{height:64px}.h-\[100dvh\]{height:100dvh}.h-\[var\(--app-shell-height\)\]{height:var(--app-shell-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[64px\]{max-height:64px}.max-h-\[85vh\]{max-height:85vh}.max-h-\[200px\]{max-height:200px}.max-h-\[220px\]{max-height:220px}.max-h-\[min\(24rem\,60vh\)\]{max-height:min(24rem,60vh)}.max-h-\[min\(400px\,40vh\)\]{max-height:min(400px,40vh)}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[34px\]{min-height:34px}.min-h-\[55px\]{min-height:55px}.min-h-\[240px\]{min-height:240px}.min-h-\[var\(--app-shell-height\)\]{min-height:var(--app-shell-height)}.min-h-full{min-height:100%}.w-0{width:calc(var(--spacing) * 0)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-5\.5{width:calc(var(--spacing) * 5.5)}.w-6{width:calc(var(--spacing) * 6)}.w-6\.5{width:calc(var(--spacing) * 6.5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[1px\]{width:1px}.w-\[40px\]{width:40px}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[150px\]{width:150px}.w-\[200px\]{width:200px}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-\[50\%\]{max-width:50%}.max-w-\[85\%\]{max-width:85%}.max-w-\[90\%\]{max-width:90%}.max-w-\[180px\]{max-width:180px}.max-w-\[240px\]{max-width:240px}.max-w-\[420px\]{max-width:420px}.max-w-\[800px\]{max-width:800px}.max-w-\[840px\]{max-width:840px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[70px\]{min-width:70px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[170px\]{min-width:170px}.min-w-\[180px\]{min-width:180px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.basis-0{flex-basis:calc(var(--spacing) * 0)}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-\[1px\]{--tw-translate-x: -1px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-\[50\%\]{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x: 50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2,.-translate-y-\[50\%\]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-0\.5px\]{--tw-translate-y:-.5px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[0\.5px\]{--tw-translate-y:.5px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[1px\]{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-60{--tw-scale-x:60%;--tw-scale-y:60%;--tw-scale-z:60%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.98\]{scale:.98}.scale-\[1\.03\]{scale:1.03}.scale-\[1\.04\]{scale:1.04}.-rotate-90{rotate:-90deg}.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-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-shiny-text{animation:1.33s linear infinite shiny-text}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-manipulation{touch-action:manipulation}.resize{resize:both}.resize-none{resize:none}.scroll-pt-\[72px\]{scroll-padding-top:72px}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_auto\]{grid-template-columns:auto auto}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-items-start{place-items:start}.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-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.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>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * 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-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-\[2px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(2px * var(--tw-space-y-reverse));margin-block-end:calc(2px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{-moz-column-gap:calc(var(--spacing) * 4);column-gap:calc(var(--spacing) * 4)}.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)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.\!rounded{border-radius:.25rem!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[4px\]{border-radius:4px}.rounded-\[20px\]{border-radius:20px}.rounded-\[29px\]{border-radius:29px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-b-\[20px\]{border-bottom-right-radius:20px;border-bottom-left-radius:20px}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.\!border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-border{border-color:var(--color-border)}.border-border\/0{border-color:color-mix(in srgb,hsl(var(--border)) 0%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/0{border-color:color-mix(in oklab,var(--color-border) 0%,transparent)}}.border-border\/50{border-color:color-mix(in srgb,hsl(var(--border)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--color-border) 50%,transparent)}}.border-border\/60{border-color:color-mix(in srgb,hsl(var(--border)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.border-border\/70{border-color:color-mix(in srgb,hsl(var(--border)) 70%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/70{border-color:color-mix(in oklab,var(--color-border) 70%,transparent)}}.border-border\/80{border-color:color-mix(in srgb,hsl(var(--border)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/80{border-color:color-mix(in oklab,var(--color-border) 80%,transparent)}}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/30{border-color:color-mix(in oklab,var(--color-cyan-500) 30%,transparent)}}.border-destructive\/20{border-color:var(--color-destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--color-destructive) 20%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-foreground\/40{border-color:color-mix(in srgb,hsl(var(--foreground)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-foreground\/40{border-color:color-mix(in oklab,var(--color-foreground) 40%,transparent)}}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/30{border-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.border-input{border-color:var(--color-input)}.border-logo\/20{border-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.border-logo\/20{border-color:color-mix(in oklab,var(--color-logo) 20%,transparent)}}.border-muted-foreground\/50{border-color:color-mix(in srgb,hsl(var(--muted-foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/50{border-color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.border-primary\/40{border-color:color-mix(in srgb,hsl(var(--primary)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-primary\/40{border-color:color-mix(in oklab,var(--color-primary) 40%,transparent)}}.border-primary\/60{border-color:color-mix(in srgb,hsl(var(--primary)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-primary\/60{border-color:color-mix(in oklab,var(--color-primary) 60%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-500\/0{border-color:#0000}@supports (color:color-mix(in lab,red,red)){.border-slate-500\/0{border-color:color-mix(in oklab,var(--color-slate-500) 0%,transparent)}}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-background\/70{background-color:color-mix(in srgb,hsl(var(--background)) 70%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-background\/70{background-color:color-mix(in oklab,var(--color-background) 70%,transparent)}}.bg-background\/80{background-color:color-mix(in srgb,hsl(var(--background)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--color-background) 80%,transparent)}}.bg-background\/95{background-color:color-mix(in srgb,hsl(var(--background)) 95%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--color-background) 95%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,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-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-400\/80{background-color:#54a2ffcc}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/80{background-color:color-mix(in oklab,var(--color-blue-400) 80%,transparent)}}.bg-border{background-color:var(--color-border)}.bg-border\/60{background-color:color-mix(in srgb,hsl(var(--border)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-border\/60{background-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.bg-border\/80{background-color:color-mix(in srgb,hsl(var(--border)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-border\/80{background-color:color-mix(in oklab,var(--color-border) 80%,transparent)}}.bg-card{background-color:var(--color-card)}.bg-card\/30{background-color:color-mix(in srgb,hsl(var(--card)) 30%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-card\/30{background-color:color-mix(in oklab,var(--color-card) 30%,transparent)}}.bg-card\/40{background-color:color-mix(in srgb,hsl(var(--card)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-card\/40{background-color:color-mix(in oklab,var(--color-card) 40%,transparent)}}.bg-current{background-color:currentColor}.bg-cyan-500\/15{background-color:#00b7d726}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/15{background-color:color-mix(in oklab,var(--color-cyan-500) 15%,transparent)}}.bg-destructive\/5{background-color:var(--color-destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--color-destructive) 5%,transparent)}}.bg-destructive\/10{background-color:var(--color-destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--color-destructive) 10%,transparent)}}.bg-destructive\/80{background-color:var(--color-destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/80{background-color:color-mix(in oklab,var(--color-destructive) 80%,transparent)}}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-400\/80{background-color:#00d294cc}@supports (color:color-mix(in lab,red,red)){.bg-emerald-400\/80{background-color:color-mix(in oklab,var(--color-emerald-400) 80%,transparent)}}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-foreground{background-color:var(--color-foreground)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-indigo-500\/15{background-color:#625fff26}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/15{background-color:color-mix(in oklab,var(--color-indigo-500) 15%,transparent)}}.bg-logo,.bg-logo\/20{background-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.bg-logo\/20{background-color:color-mix(in oklab,var(--color-logo) 20%,transparent)}}.bg-logo\/70{background-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.bg-logo\/70{background-color:color-mix(in oklab,var(--color-logo) 70%,transparent)}}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground\/20{background-color:color-mix(in srgb,hsl(var(--muted-foreground)) 20%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/20{background-color:color-mix(in oklab,var(--color-muted-foreground) 20%,transparent)}}.bg-muted-foreground\/40{background-color:color-mix(in srgb,hsl(var(--muted-foreground)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.bg-muted\/10{background-color:color-mix(in srgb,hsl(var(--muted)) 10%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted) 10%,transparent)}}.bg-muted\/30{background-color:color-mix(in srgb,hsl(var(--muted)) 30%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted) 30%,transparent)}}.bg-muted\/40{background-color:color-mix(in srgb,hsl(var(--muted)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--color-muted) 40%,transparent)}}.bg-muted\/50{background-color:color-mix(in srgb,hsl(var(--muted)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.bg-muted\/80{background-color:color-mix(in srgb,hsl(var(--muted)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/80{background-color:color-mix(in oklab,var(--color-muted) 80%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/5{background-color:color-mix(in srgb,hsl(var(--primary)) 5%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary) 5%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-sky-500\/15{background-color:#00a5ef26}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/15{background-color:color-mix(in oklab,var(--color-sky-500) 15%,transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background{--tw-gradient-from:var(--color-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-background{--tw-gradient-via:var(--color-background);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/80{--tw-gradient-via:#000c}@supports (color:color-mix(in lab,red,red)){.via-black\/80{--tw-gradient-via:color-mix(in oklab, var(--color-black) 80%, transparent)}}.via-black\/80{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-50\%{--tw-gradient-via-position:50%}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\[background-size\:var\(--shiny-width\)_100\%\]{background-size:var(--shiny-width) 100%}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.\[background-position\:0_0\]{background-position:0 0}.bg-no-repeat{background-repeat:no-repeat}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[3px\]{padding:3px}.p-\[7px\]{padding:7px}.p-\[10px\]{padding:10px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.\!py-1{padding-block:calc(var(--spacing) * 1)!important}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.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-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-\[14\.25px\]{padding-block:14.25px}.\!pt-5{padding-top:calc(var(--spacing) * 5)!important}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-16{padding-top:calc(var(--spacing) * 16)}.pt-\[72px\]{padding-top:72px}.pr-0\.5{padding-right:calc(var(--spacing) * .5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-\[7px\]{padding-right:7px}.\!pb-0{padding-bottom:calc(var(--spacing) * 0)!important}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-\[89px\]{padding-bottom:89px}.\!pl-3\.5{padding-left:calc(var(--spacing) * 3.5)!important}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.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-\[-0\.2px\]{--tw-tracking:-.2px;letter-spacing:-.2px}.tracking-\[-0\.5px\]{--tw-tracking:-.5px;letter-spacing:-.5px}.tracking-\[0\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:var(--color-accent-foreground)}.text-amber-100{color:var(--color-amber-100)}.text-amber-300{color:var(--color-amber-300)}.text-amber-700{color:var(--color-amber-700)}.text-amber-900{color:var(--color-amber-900)}.text-blue-400{color:var(--color-blue-400)}.text-card-foreground{color:var(--color-card-foreground)}.text-current{color:currentColor}.text-cyan-700{color:var(--color-cyan-700)}.text-destructive{color:var(--color-destructive)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground{color:var(--color-foreground)}.text-foreground\/50{color:color-mix(in srgb,hsl(var(--foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/50{color:color-mix(in oklab,var(--color-foreground) 50%,transparent)}}.text-foreground\/60{color:color-mix(in srgb,hsl(var(--foreground)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--color-foreground) 60%,transparent)}}.text-foreground\/80{color:color-mix(in srgb,hsl(var(--foreground)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--color-foreground) 80%,transparent)}}.text-green-400{color:var(--color-green-400)}.text-green-500\/50{color:#00c75880}@supports (color:color-mix(in lab,red,red)){.text-green-500\/50{color:color-mix(in oklab,var(--color-green-500) 50%,transparent)}}.text-green-700{color:var(--color-green-700)}.text-indigo-700{color:var(--color-indigo-700)}.text-logo{color:var(--color-logo)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-muted-foreground\/30{color:color-mix(in srgb,hsl(var(--muted-foreground)) 30%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/30{color:color-mix(in oklab,var(--color-muted-foreground) 30%,transparent)}}.text-muted-foreground\/40{color:color-mix(in srgb,hsl(var(--muted-foreground)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/40{color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.text-muted-foreground\/50{color:color-mix(in srgb,hsl(var(--muted-foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/50{color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.text-muted-foreground\/60{color:color-mix(in srgb,hsl(var(--muted-foreground)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--color-muted-foreground) 60%,transparent)}}.text-muted-foreground\/80{color:color-mix(in srgb,hsl(var(--muted-foreground)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/80{color:color-mix(in oklab,var(--color-muted-foreground) 80%,transparent)}}.text-muted-foreground\/90{color:color-mix(in srgb,hsl(var(--muted-foreground)) 90%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/90{color:color-mix(in oklab,var(--color-muted-foreground) 90%,transparent)}}.text-muted-icon{color:var(--color-muted-icon)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-red-500\/50{color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.text-red-500\/50{color:color-mix(in oklab,var(--color-red-500) 50%,transparent)}}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-sky-700{color:var(--color-sky-700)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.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,)}.underline{text-decoration-line:underline}.decoration-logo\/50{text-decoration-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.decoration-logo\/50{text-decoration-color:color-mix(in oklab,var(--color-logo) 50%,transparent)}}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-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{--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-background{--tw-ring-color:var(--color-background)}.ring-muted\/20{--tw-ring-color:color-mix(in srgb, hsl(var(--muted)) 20%, transparent)}@supports (color:color-mix(in lab,red,red)){.ring-muted\/20{--tw-ring-color:color-mix(in oklab, var(--color-muted) 20%, transparent)}}.ring-primary\/50{--tw-ring-color:color-mix(in srgb, hsl(var(--primary)) 50%, transparent)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/50{--tw-ring-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-sm{--tw-blur:blur(var(--blur-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.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}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-\[cubic-bezier\(0\.34\,1\.56\,0\.64\,1\)\]{--tw-ease:cubic-bezier(.34,1.56,.64,1);transition-timing-function:cubic-bezier(.34,1.56,.64,1)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.\[transition\:background-position_1s_cubic-bezier\(\.6\,\.6\,0\,1\)_infinite\]{transition:background-position 1s cubic-bezier(.6,.6,0,1) infinite}@media (hover:hover){.group-hover\:text-muted-foreground:is(:where(.group):hover *){color:var(--color-muted-foreground)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--color-primary)}.group-hover\:opacity-0:is(:where(.group):hover *){opacity:0}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/codeblock\:opacity-100:is(:where(.group\/codeblock):hover *),.group-hover\/expandable-row\:opacity-100:is(:where(.group\/expandable-row):hover *),.group-hover\/plan\:opacity-100:is(:where(.group\/plan):hover *),.group-hover\/pre\:opacity-100:is(:where(.group\/pre):hover *){opacity:1}.group-hover\/sidebar-collapse\:scale-0:is(:where(.group\/sidebar-collapse):hover *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\/sidebar-collapse\:scale-80:is(:where(.group\/sidebar-collapse):hover *){--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\/sidebar-collapse\:opacity-0:is(:where(.group\/sidebar-collapse):hover *){opacity:0}.group-hover\/sidebar-collapse\:opacity-100:is(:where(.group\/sidebar-collapse):hover *),.group-hover\/sidebar-resize\:opacity-100:is(:where(.group\/sidebar-resize):hover *){opacity:1}}.placeholder\:text-muted-foreground::-moz-placeholder{color:var(--color-muted-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-x-0:before{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.before\:inset-y-0:before{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.before\:top-1\/2:before{content:var(--tw-content);top:50%}.before\:left-1\/2:before{content:var(--tw-content);left:50%}.before\:h-0\.5:before{content:var(--tw-content);height:calc(var(--spacing) * .5)}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:-translate-x-1\/2:before{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:-translate-y-1\/2:before{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:bg-border:before{content:var(--tw-content);background-color:var(--color-border)}.after\:bg-logo\/70:after{content:var(--tw-content);background-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.after\:bg-logo\/70:after{background-color:color-mix(in oklab,var(--color-logo) 70%,transparent)}}.first\:mt-0:first-child{margin-top:calc(var(--spacing) * 0)}.first\:pl-3:first-child{padding-left:calc(var(--spacing) * 3)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}@media (hover:hover){.hover\:\!border-transparent:hover{border-color:#0000!important}.hover\:border-border:hover{border-color:var(--color-border)}.hover\:border-logo\/20:hover{border-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.hover\:border-logo\/20:hover{border-color:color-mix(in oklab,var(--color-logo) 20%,transparent)}}.hover\:border-primary\/30:hover{border-color:color-mix(in srgb,hsl(var(--primary)) 30%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary) 30%,transparent)}}.hover\:border-primary\/60:hover{border-color:color-mix(in srgb,hsl(var(--primary)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/60:hover{border-color:color-mix(in oklab,var(--color-primary) 60%,transparent)}}.hover\:\!bg-transparent:hover{background-color:#0000!important}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-background:hover{background-color:var(--color-background)}.hover\:bg-destructive\/10:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab,var(--color-destructive) 10%,transparent)}}.hover\:bg-logo:hover,.hover\:bg-logo\/90:hover{background-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-logo\/90:hover{background-color:color-mix(in oklab,var(--color-logo) 90%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-muted\/20:hover{background-color:color-mix(in srgb,hsl(var(--muted)) 20%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/20:hover{background-color:color-mix(in oklab,var(--color-muted) 20%,transparent)}}.hover\:bg-muted\/50:hover{background-color:color-mix(in srgb,hsl(var(--muted)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.hover\:bg-muted\/70:hover{background-color:color-mix(in srgb,hsl(var(--muted)) 70%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/70:hover{background-color:color-mix(in oklab,var(--color-muted) 70%,transparent)}}.hover\:bg-muted\/80:hover{background-color:color-mix(in srgb,hsl(var(--muted)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/80:hover{background-color:color-mix(in oklab,var(--color-muted) 80%,transparent)}}.hover\:bg-primary\/5:hover{background-color:color-mix(in srgb,hsl(var(--primary)) 5%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/5:hover{background-color:color-mix(in oklab,var(--color-primary) 5%,transparent)}}.hover\:bg-primary\/90:hover{background-color:color-mix(in srgb,hsl(var(--primary)) 90%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary) 90%,transparent)}}.hover\:\!pb-\[32px\]:hover{padding-bottom:32px!important}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-foreground\/80:hover{color:color-mix(in srgb,hsl(var(--foreground)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:text-foreground\/80:hover{color:color-mix(in oklab,var(--color-foreground) 80%,transparent)}}.hover\:text-logo\/70:hover{color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.hover\:text-logo\/70:hover{color:color-mix(in oklab,var(--color-logo) 70%,transparent)}}.hover\:text-secondary-foreground\/60:hover{color:color-mix(in srgb,hsl(var(--secondary-foreground)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:text-secondary-foreground\/60:hover{color:color-mix(in oklab,var(--color-secondary-foreground) 60%,transparent)}}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-50:hover{opacity:.5}.hover\:opacity-60:hover{opacity:.6}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-accent:focus{background-color:var(--color-accent)}.focus\:bg-destructive\/10:focus{background-color:var(--color-destructive)}@supports (color:color-mix(in lab,red,red)){.focus\:bg-destructive\/10:focus{background-color:color-mix(in oklab,var(--color-destructive) 10%,transparent)}}.focus\:text-accent-foreground:focus{color:var(--color-accent-foreground)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:ring-offset-background:focus{--tw-ring-offset-color:var(--color-background)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.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-ring:focus-visible{--tw-ring-color:var(--color-ring)}.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\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-muted\/80:active{background-color:color-mix(in srgb,hsl(var(--muted)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.active\:bg-muted\/80:active{background-color:color-mix(in oklab,var(--color-muted) 80%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-input\/90:disabled{border-color:color-mix(in srgb,hsl(var(--input)) 90%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:border-input\/90:disabled{border-color:color-mix(in oklab,var(--color-input) 90%,transparent)}}.disabled\:bg-primary\/20:disabled{background-color:color-mix(in srgb,hsl(var(--primary)) 20%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-primary\/20:disabled{background-color:color-mix(in oklab,var(--color-primary) 20%,transparent)}}.disabled\:bg-primary\/50:disabled{background-color:color-mix(in srgb,hsl(var(--primary)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-primary\/50:disabled{background-color:color-mix(in oklab,var(--color-primary) 50%,transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:bg-white\/60:disabled{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-white\/60:disabled{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.disabled\:text-foreground\/50:disabled{color:color-mix(in srgb,hsl(var(--foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-foreground\/50:disabled{color:color-mix(in oklab,var(--color-foreground) 50%,transparent)}}.disabled\:text-muted-foreground\/50:disabled{color:color-mix(in srgb,hsl(var(--muted-foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-muted-foreground\/50:disabled{color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.disabled\:text-primary-foreground\/50:disabled{color:color-mix(in srgb,hsl(var(--primary-foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-primary-foreground\/50:disabled{color:color-mix(in oklab,var(--color-primary-foreground) 50%,transparent)}}.disabled\:text-primary-foreground\/90:disabled{color:color-mix(in srgb,hsl(var(--primary-foreground)) 90%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-primary-foreground\/90:disabled{color:color-mix(in oklab,var(--color-primary-foreground) 90%,transparent)}}.disabled\:text-primary\/50:disabled{color:color-mix(in srgb,hsl(var(--primary)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-primary\/50:disabled{color:color-mix(in oklab,var(--color-primary) 50%,transparent)}}.disabled\:text-primary\/60:disabled{color:color-mix(in srgb,hsl(var(--primary)) 60%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-primary\/60:disabled{color:color-mix(in oklab,var(--color-primary) 60%,transparent)}}.disabled\:text-secondary-foreground\/50:disabled{color:color-mix(in srgb,hsl(var(--secondary-foreground)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){.disabled\:text-secondary-foreground\/50:disabled{color:color-mix(in oklab,var(--color-secondary-foreground) 50%,transparent)}}.disabled\:text-slate-700:disabled{color:var(--color-slate-700)}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--color-accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--color-muted-foreground)}@supports (backdrop-filter:var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/80{background-color:color-mix(in srgb,hsl(var(--background)) 80%,transparent)}@supports (color:color-mix(in lab,red,red)){.supports-\[backdrop-filter\]\:bg-background\/80{background-color:color-mix(in oklab,var(--color-background) 80%,transparent)}}}@media (min-width:40rem){.sm\:h-5{height:calc(var(--spacing) * 5)}.sm\:h-6{height:calc(var(--spacing) * 6)}.sm\:w-5{width:calc(var(--spacing) * 5)}.sm\:w-6{width:calc(var(--spacing) * 6)}.sm\:w-auto{width:auto}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:max-w-\[320px\]{max-width:320px}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-8{gap:calc(var(--spacing) * 8)}}@media (min-width:48rem){.md\:relative{position:relative}.md\:inset-auto{inset:auto}.md\:top-2{top:calc(var(--spacing) * 2)}.md\:order-first{order:-9999}.md\:order-last{order:9999}.md\:my-2{margin-block:calc(var(--spacing) * 2)}.md\:mt-0{margin-top:calc(var(--spacing) * 0)}.md\:mr-0{margin-right:calc(var(--spacing) * 0)}.md\:mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.md\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.md\:ml-2{margin-left:calc(var(--spacing) * 2)}.md\:block{display:block}.md\:contents{display:contents}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline{display:inline}.md\:h-4{height:calc(var(--spacing) * 4)}.md\:h-6{height:calc(var(--spacing) * 6)}.md\:h-11{height:calc(var(--spacing) * 11)}.md\:h-\[55px\]{height:55px}.md\:h-\[calc\(100dvh-16px\)\]{height:calc(100dvh - 16px)}.md\:max-h-\[50vh\]{max-height:50vh}.md\:max-h-\[55px\]{max-height:55px}.md\:w-4{width:calc(var(--spacing) * 4)}.md\:w-6{width:calc(var(--spacing) * 6)}.md\:w-11{width:calc(var(--spacing) * 11)}.md\:w-28{width:calc(var(--spacing) * 28)}.md\:w-auto{width:auto}.md\:min-w-\[300px\]{min-width:300px}.md\:flex-1{flex:1}.md\:flex-initial{flex:0 auto}.md\:flex-none{flex:none}.md\:shrink-0{flex-shrink:0}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:rounded-none{border-radius:0}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.md\:border-border{border-color:var(--color-border)}.md\:border-transparent{border-color:#0000}.md\:bg-background{background-color:var(--color-background)}.md\:bg-transparent{background-color:#0000}.md\:p-0{padding:calc(var(--spacing) * 0)}.md\:px-2{padding-inline:calc(var(--spacing) * 2)}.md\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.md\:px-3{padding-inline:calc(var(--spacing) * 3)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-5\.5{padding-inline:calc(var(--spacing) * 5.5)}.md\:py-3\.75{padding-block:calc(var(--spacing) * 3.75)}.md\:py-4\.5{padding-block:calc(var(--spacing) * 4.5)}.md\:pt-16{padding-top:calc(var(--spacing) * 16)}.md\:pr-4{padding-right:calc(var(--spacing) * 4)}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.md\:pb-2{padding-bottom:calc(var(--spacing) * 2)}.md\:pl-3{padding-left:calc(var(--spacing) * 3)}.md\:text-right{text-align:right}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md\:text-\[13px\]{font-size:13px}.md\:leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.md\:opacity-0{opacity:0}.md\:backdrop-blur-none{--tw-backdrop-blur: ;-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,)}@media (hover:hover){.md\:group-hover\:opacity-100:is(:where(.group):hover *),.md\:group-hover\/section\:opacity-100:is(:where(.group\/section):hover *){opacity:1}}}@media (min-width:64rem){.lg\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.lg\:block{display:block}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:gap-3{gap:calc(var(--spacing) * 3)}}@media (min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:96rem){.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:125rem){.\33xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}.dark\:border-amber-500\/40:where(.dark,.dark *){border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-500) 40%,transparent)}}.dark\:border-cyan-500\/40:where(.dark,.dark *){border-color:#00b7d766}@supports (color:color-mix(in lab,red,red)){.dark\:border-cyan-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-cyan-500) 40%,transparent)}}.dark\:border-emerald-500\/40:where(.dark,.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab,red,red)){.dark\:border-emerald-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-emerald-500) 40%,transparent)}}.dark\:border-indigo-500\/40:where(.dark,.dark *){border-color:#625fff66}@supports (color:color-mix(in lab,red,red)){.dark\:border-indigo-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-indigo-500) 40%,transparent)}}.dark\:border-sky-500\/40:where(.dark,.dark *){border-color:#00a5ef66}@supports (color:color-mix(in lab,red,red)){.dark\:border-sky-500\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-sky-500) 40%,transparent)}}.dark\:border-white\/10:where(.dark,.dark *){border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:border-white\/10:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.dark\:bg-amber-500\/12:where(.dark,.dark *){background-color:#f99c001f}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-500\/12:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-500) 12%,transparent)}}.dark\:bg-card:where(.dark,.dark *){background-color:var(--color-card)}.dark\:bg-card\/40:where(.dark,.dark *){background-color:color-mix(in srgb,hsl(var(--card)) 40%,transparent)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-card\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-card) 40%,transparent)}}.dark\:bg-cyan-500\/12:where(.dark,.dark *){background-color:#00b7d71f}@supports (color:color-mix(in lab,red,red)){.dark\:bg-cyan-500\/12:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-cyan-500) 12%,transparent)}}.dark\:bg-emerald-500\/12:where(.dark,.dark *){background-color:#00bb7f1f}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/12:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-emerald-500) 12%,transparent)}}.dark\:bg-green-500\/15:where(.dark,.dark *){background-color:#00c75826}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-500\/15:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-green-500) 15%,transparent)}}.dark\:bg-indigo-500\/12:where(.dark,.dark *){background-color:#625fff1f}@supports (color:color-mix(in lab,red,red)){.dark\:bg-indigo-500\/12:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-indigo-500) 12%,transparent)}}.dark\:bg-muted:where(.dark,.dark *){background-color:var(--color-muted)}.dark\:bg-red-500\/15:where(.dark,.dark *){background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-500\/15:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-500) 15%,transparent)}}.dark\:bg-sky-500\/12:where(.dark,.dark *){background-color:#00a5ef1f}@supports (color:color-mix(in lab,red,red)){.dark\:bg-sky-500\/12:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-sky-500) 12%,transparent)}}.dark\:bg-white:where(.dark,.dark *){background-color:var(--color-white)}.dark\:via-white\/80:where(.dark,.dark *){--tw-gradient-via:#fffc}@supports (color:color-mix(in lab,red,red)){.dark\:via-white\/80:where(.dark,.dark *){--tw-gradient-via:color-mix(in oklab, var(--color-white) 80%, transparent)}}.dark\:via-white\/80:where(.dark,.dark *){--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:text-amber-200:where(.dark,.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-background:where(.dark,.dark *){color:var(--color-background)}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-cyan-200:where(.dark,.dark *){color:var(--color-cyan-200)}.dark\:text-emerald-200:where(.dark,.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\:text-indigo-200:where(.dark,.dark *){color:var(--color-indigo-200)}.dark\:text-logo:where(.dark,.dark *){color:var(--color-logo)}.dark\:text-muted-foreground:where(.dark,.dark *){color:var(--color-muted-foreground)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-sky-200:where(.dark,.dark *){color:var(--color-sky-200)}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:text-slate-900:where(.dark,.dark *){color:var(--color-slate-900)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:decoration-logo\/70:where(.dark,.dark *){text-decoration-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.dark\:decoration-logo\/70:where(.dark,.dark *){text-decoration-color:color-mix(in oklab,var(--color-logo) 70%,transparent)}}.dark\:shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.5\)\]:where(.dark,.dark *){--tw-shadow:0 8px 32px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:ring-muted\/50:where(.dark,.dark *){--tw-ring-color:color-mix(in srgb, hsl(var(--muted)) 50%, transparent)}@supports (color:color-mix(in lab,red,red)){.dark\:ring-muted\/50:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-muted) 50%, transparent)}}@media (hover:hover){.dark\:hover\:border-slate-400\/10:where(.dark,.dark *):hover{border-color:#90a1b91a}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:border-slate-400\/10:where(.dark,.dark *):hover{border-color:color-mix(in oklab,var(--color-slate-400) 10%,transparent)}}.dark\:hover\:bg-card:where(.dark,.dark *):hover{background-color:var(--color-card)}.dark\:hover\:bg-red-500\/20:where(.dark,.dark *):hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-500\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.dark\:hover\:text-foreground:where(.dark,.dark *):hover{color:var(--color-foreground)}.dark\:hover\:text-logo\/60:where(.dark,.dark *):hover{color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:text-logo\/60:where(.dark,.dark *):hover{color:color-mix(in oklab,var(--color-logo) 60%,transparent)}}.dark\:hover\:decoration-logo\/40:where(.dark,.dark *):hover{text-decoration-color:var(--color-logo)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:decoration-logo\/40:where(.dark,.dark *):hover{text-decoration-color:color-mix(in oklab,var(--color-logo) 40%,transparent)}}}.dark\:focus\:bg-red-500\/20:where(.dark,.dark *):focus{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:bg-red-500\/20:where(.dark,.dark *):focus{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}@media (min-width:48rem){.md\:dark\:bg-card:where(.dark,.dark *){background-color:var(--color-card)}.md\:dark\:bg-transparent:where(.dark,.dark *){background-color:#0000}}.\[\&_\*\]\: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)}.\[\&_p\]\:whitespace-pre-line p{white-space:pre-line}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>span\]\:flex>span{display:flex}.\[\&\>span\]\:items-center>span{align-items:center}.\[\&\>span\]\:leading-none>span{--tw-leading:1;line-height:1}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0>svg{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:opacity-60>svg{opacity:.6}.no-code-highlight .\[\.no-code-highlight_\&\]\:\!bg-transparent{background-color:#0000!important}.no-pre-highlight .\[\.no-pre-highlight_\&\]\:bg-background,.no-pre-highlight .dark\:\[\.no-pre-highlight_\&\]\:bg-background:where(.dark,.dark *){background-color:var(--color-background)}}@font-face{font-family:Body;src:url(/fonts/body-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Body;src:url(/fonts/body-regular-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Body;src:url(/fonts/body-medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Body;src:url(/fonts/body-semibold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@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-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}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-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-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes shiny-text{0%{background-position:calc(-100% - var(--shiny-width)) 0}to{background-position:calc(100% + var(--shiny-width)) 0}}