tokentracker-cli 0.20.0 → 0.21.1

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.
Files changed (38) hide show
  1. package/dashboard/dist/assets/{Card-jA08WeEw.js → Card-Dqh7NgC7.js} +1 -1
  2. package/dashboard/dist/assets/{DashboardPage-chDVOYmG.js → DashboardPage-DvOSzWq2.js} +1 -1
  3. package/dashboard/dist/assets/{FadeIn-DqSYXuUL.js → FadeIn-Ba4HDg1-.js} +1 -1
  4. package/dashboard/dist/assets/{HeaderGithubStar-C11rWv0B.js → HeaderGithubStar-jb65AnnV.js} +1 -1
  5. package/dashboard/dist/assets/{IpCheckPage-CkEZ9yLK.js → IpCheckPage-BopoeRF9.js} +1 -1
  6. package/dashboard/dist/assets/{LandingPage-BgckTHRQ.js → LandingPage-xBEC-7TO.js} +1 -1
  7. package/dashboard/dist/assets/{LeaderboardPage-BCNW7UWp.js → LeaderboardPage-BChhkcv2.js} +1 -1
  8. package/dashboard/dist/assets/{LeaderboardProfilePage-BLATxMt-.js → LeaderboardProfilePage-BJ6rhisC.js} +1 -1
  9. package/dashboard/dist/assets/{LimitsPage-arF--WgR.js → LimitsPage-BfN5T40h.js} +1 -1
  10. package/dashboard/dist/assets/{LoginPage-DpoFP0va.js → LoginPage-BPTGJynP.js} +1 -1
  11. package/dashboard/dist/assets/{PopoverPopup-kdgc2H6C.js → PopoverPopup-DhX9NeCF.js} +1 -1
  12. package/dashboard/dist/assets/{ProviderIcon-DV5r9qqP.js → ProviderIcon-CrjWjnUl.js} +1 -1
  13. package/dashboard/dist/assets/{SettingsPage-Bb22ORmU.js → SettingsPage-Bk7duO5H.js} +1 -1
  14. package/dashboard/dist/assets/{SkillsPage-xhtBqVKC.js → SkillsPage-Csd3kUk8.js} +1 -1
  15. package/dashboard/dist/assets/{WidgetsPage-CUoSVDET.js → WidgetsPage-t4SzNlBi.js} +1 -1
  16. package/dashboard/dist/assets/{chevron-down-DYb2EChD.js → chevron-down-D6dxVls1.js} +1 -1
  17. package/dashboard/dist/assets/{download-C-_8o6dh.js → download-qtsjFNo5.js} +1 -1
  18. package/dashboard/dist/assets/{leaderboard-columns-BgzBlYo7.js → leaderboard-columns-BejzbNvX.js} +1 -1
  19. package/dashboard/dist/assets/{main-11hApDak.js → main-Bvv7-8LC.js} +2 -2
  20. package/dashboard/dist/assets/main-CnN_a-Nl.css +1 -0
  21. package/dashboard/dist/assets/{use-limits-display-prefs-BeGKWUuk.js → use-limits-display-prefs-qSJ1Ys0_.js} +1 -1
  22. package/dashboard/dist/assets/{use-native-settings-nTTHktn0.js → use-native-settings-ClfTqea2.js} +1 -1
  23. package/dashboard/dist/assets/{use-reduced-motion-DU8Gm6j1.js → use-reduced-motion-DOaOYeS3.js} +1 -1
  24. package/dashboard/dist/assets/{use-usage-limits-DTPmEB8Y.js → use-usage-limits-CeShSkoj.js} +1 -1
  25. package/dashboard/dist/index.html +2 -2
  26. package/dashboard/dist/share.html +2 -2
  27. package/package.json +1 -1
  28. package/src/lib/pricing/seed-snapshot.json +1 -1
  29. package/src/lib/rollout.js +75 -16
  30. package/src/lib/usage-limits.js +103 -18
  31. package/dashboard/dist/assets/main-CITVpx5B.css +0 -1
  32. package/dashboard/dist/brand-logos/every-code.svg +0 -1
  33. package/dashboard/dist/brand-logos/kilo-code.svg +0 -1
  34. package/dashboard/dist/brand-logos/oh-my-pi.svg +0 -1
  35. package/dashboard/dist/wrapped-2025.html +0 -60
  36. package/src/commands/activate-if-needed.js +0 -41
  37. package/src/lib/activation-check.js +0 -341
  38. package/src/lib/opencode-usage-audit.js +0 -205
@@ -3011,7 +3011,20 @@ function resolveHermesPath(env = process.env) {
3011
3011
  return override.trim();
3012
3012
  }
3013
3013
  const home = require("node:os").homedir();
3014
- return path.join(home, ".hermes");
3014
+ const defaultPath = path.join(home, ".hermes");
3015
+ // Hermes official Windows installer (install.ps1) writes state to
3016
+ // %LOCALAPPDATA%\hermes, not ~/.hermes. Prefer it when present so native
3017
+ // Windows users don't need to set TOKENTRACKER_HERMES_HOME manually.
3018
+ if (process.platform === "win32") {
3019
+ const localAppData = typeof env.LOCALAPPDATA === "string" ? env.LOCALAPPDATA.trim() : "";
3020
+ if (localAppData.length > 0) {
3021
+ const winNative = path.join(localAppData, "hermes");
3022
+ try {
3023
+ if (fssync.existsSync(winNative)) return winNative;
3024
+ } catch (_e) { }
3025
+ }
3026
+ }
3027
+ return defaultPath;
3015
3028
  }
3016
3029
 
3017
3030
  function resolveHermesDbPath(env = process.env) {
@@ -3046,6 +3059,35 @@ function sqliteStringLiteral(value) {
3046
3059
  return `'${String(value).replace(/'/g, "''")}'`;
3047
3060
  }
3048
3061
 
3062
+ // UNC paths (\\wsl$\Ubuntu\..., \\wsl.localhost\..., \\server\share\...) make
3063
+ // sqlite3.exe fail with "database is locked (5)" on Windows because the Plan 9
3064
+ // / SMB bridge can't grant the locks SQLite asks for — even after `wsl
3065
+ // --shutdown`. Detect those paths so we can snapshot the DB locally first.
3066
+ function isUncPath(p) {
3067
+ return typeof p === "string" && (p.startsWith("\\\\") || p.startsWith("//"));
3068
+ }
3069
+
3070
+ function snapshotSqliteDb(dbPath) {
3071
+ const tmpRoot = fssync.mkdtempSync(
3072
+ path.join(require("node:os").tmpdir(), "tokentracker-hermes-snap-"),
3073
+ );
3074
+ const target = path.join(tmpRoot, path.basename(dbPath));
3075
+ fssync.copyFileSync(dbPath, target);
3076
+ // Best-effort copy of SQLite sidecars; missing -wal/-shm/-journal is fine.
3077
+ for (const suffix of ["-wal", "-shm", "-journal"]) {
3078
+ const src = dbPath + suffix;
3079
+ try {
3080
+ if (fssync.existsSync(src)) fssync.copyFileSync(src, target + suffix);
3081
+ } catch (_e) { }
3082
+ }
3083
+ return {
3084
+ path: target,
3085
+ cleanup() {
3086
+ try { fssync.rmSync(tmpRoot, { recursive: true, force: true }); } catch (_e) { }
3087
+ },
3088
+ };
3089
+ }
3090
+
3049
3091
  function readHermesSessions(dbPath, lastCompletedEpoch, unfinishedSessionIds = []) {
3050
3092
  if (!dbPath || !fssync.existsSync(dbPath)) return [];
3051
3093
  const since = Number.isFinite(lastCompletedEpoch) && lastCompletedEpoch > 0 ? lastCompletedEpoch : 0;
@@ -3060,24 +3102,41 @@ function readHermesSessions(dbPath, lastCompletedEpoch, unfinishedSessionIds = [
3060
3102
  // unfinished. Hermes updates token counts in real-time, including a final
3061
3103
  // delta when an active session later gets ended_at set.
3062
3104
  const sql = `SELECT id, model, started_at, ended_at, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, reasoning_tokens, message_count FROM sessions WHERE (started_at >= ${since} OR ended_at IS NULL${forceIncludeSql}) AND (input_tokens > 0 OR output_tokens > 0 OR cache_read_tokens > 0 OR reasoning_tokens > 0) ORDER BY started_at ASC`;
3063
- let raw;
3064
- try {
3065
- raw = cp.execFileSync("sqlite3", ["-json", dbPath, sql], {
3066
- encoding: "utf8",
3067
- maxBuffer: 10 * 1024 * 1024,
3068
- timeout: 15_000,
3069
- });
3070
- } catch (_e) {
3071
- return [];
3105
+
3106
+ let snapshot = null;
3107
+ let effectiveDbPath = dbPath;
3108
+ if (isUncPath(dbPath)) {
3109
+ try {
3110
+ snapshot = snapshotSqliteDb(dbPath);
3111
+ effectiveDbPath = snapshot.path;
3112
+ } catch (_e) {
3113
+ // Snapshot failed — fall through to a direct read so we don't regress
3114
+ // the non-locked case (e.g. permissions, transient I/O).
3115
+ }
3072
3116
  }
3073
- if (!raw || !raw.trim()) return [];
3074
- let rows;
3117
+
3075
3118
  try {
3076
- rows = JSON.parse(raw);
3077
- } catch (_e) {
3078
- return [];
3119
+ let raw;
3120
+ try {
3121
+ raw = cp.execFileSync("sqlite3", ["-json", effectiveDbPath, sql], {
3122
+ encoding: "utf8",
3123
+ maxBuffer: 10 * 1024 * 1024,
3124
+ timeout: 15_000,
3125
+ });
3126
+ } catch (_e) {
3127
+ return [];
3128
+ }
3129
+ if (!raw || !raw.trim()) return [];
3130
+ let rows;
3131
+ try {
3132
+ rows = JSON.parse(raw);
3133
+ } catch (_e) {
3134
+ return [];
3135
+ }
3136
+ return Array.isArray(rows) ? rows : [];
3137
+ } finally {
3138
+ if (snapshot) snapshot.cleanup();
3079
3139
  }
3080
- return Array.isArray(rows) ? rows : [];
3081
3140
  }
3082
3141
 
3083
3142
  function hasLegacyHermesDefaultState(hermesState) {
@@ -25,6 +25,9 @@ const {
25
25
  let cache = { data: null, fetchedAt: 0 };
26
26
  const CACHE_TTL_MS = 2 * 60 * 1000;
27
27
  const DEFAULT_PROVIDER_TIMEOUT_MS = 15_000;
28
+ const ANTIGRAVITY_LIMITS_CACHE_FILE = "usage-limits-cache.json";
29
+ const ANTIGRAVITY_LIMITS_CACHE_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
30
+ const ANTIGRAVITY_LIMITS_CACHE_UNKNOWN_RESET_TTL_MS = 12 * 60 * 60 * 1000;
28
31
 
29
32
  function clampPercent(value) {
30
33
  if (value === null || value === undefined || value === "") return null;
@@ -808,9 +811,15 @@ function runCommand(commandRunner, command, args, options = {}) {
808
811
  });
809
812
  }
810
813
 
811
- function isBinaryAvailable(binary, { commandRunner } = {}) {
814
+ function whichBinary(binary, { commandRunner } = {}) {
812
815
  const result = runCommand(commandRunner, "which", [binary], { timeout: 2000 });
813
- return !result?.error && result?.status === 0;
816
+ if (result?.error || result?.status !== 0) return null;
817
+ const stdout = typeof result?.stdout === "string" ? result.stdout.trim() : "";
818
+ return stdout ? stdout.split("\n")[0] : null;
819
+ }
820
+
821
+ function isBinaryAvailable(binary, { commandRunner } = {}) {
822
+ return whichBinary(binary, { commandRunner }) !== null;
814
823
  }
815
824
 
816
825
  function stripAnsi(text) {
@@ -1173,11 +1182,84 @@ function detectAntigravityProcess({ commandRunner } = {}) {
1173
1182
  return { configured: false };
1174
1183
  }
1175
1184
 
1176
- function resolveLsofBinary() {
1185
+ function resolveAntigravityLimitsCachePath({ home } = {}) {
1186
+ return path.join(home || os.homedir(), ".tokentracker", "tracker", ANTIGRAVITY_LIMITS_CACHE_FILE);
1187
+ }
1188
+
1189
+ function parseTimeMs(value) {
1190
+ if (typeof value !== "string" || !value) return null;
1191
+ const ts = Date.parse(value);
1192
+ return Number.isFinite(ts) && ts > 0 ? ts : null;
1193
+ }
1194
+
1195
+ function isCacheWindowUsable(window, { cachedAtMs, nowMs } = {}) {
1196
+ if (!window || typeof window !== "object") return false;
1197
+ const resetAtMs = parseTimeMs(window.reset_at);
1198
+ if (resetAtMs !== null) return resetAtMs > nowMs;
1199
+ return Number.isFinite(cachedAtMs)
1200
+ && nowMs - cachedAtMs <= ANTIGRAVITY_LIMITS_CACHE_UNKNOWN_RESET_TTL_MS;
1201
+ }
1202
+
1203
+ function hasAntigravityWindow(limits) {
1204
+ return Boolean(limits?.primary_window || limits?.secondary_window || limits?.tertiary_window);
1205
+ }
1206
+
1207
+ function normalizeAntigravityCachedLimits(raw, { nowMs = Date.now() } = {}) {
1208
+ const cachedAtMs = parseTimeMs(raw?.cached_at);
1209
+ if (!Number.isFinite(cachedAtMs)) return null;
1210
+ if (cachedAtMs > nowMs + 60_000) return null;
1211
+ if (nowMs - cachedAtMs > ANTIGRAVITY_LIMITS_CACHE_MAX_AGE_MS) return null;
1212
+
1213
+ const cached = {
1214
+ configured: true,
1215
+ error: null,
1216
+ account_email: typeof raw?.account_email === "string" ? raw.account_email : null,
1217
+ account_plan: typeof raw?.account_plan === "string" ? raw.account_plan : null,
1218
+ primary_window: isCacheWindowUsable(raw?.primary_window, { cachedAtMs, nowMs }) ? raw.primary_window : null,
1219
+ secondary_window: isCacheWindowUsable(raw?.secondary_window, { cachedAtMs, nowMs }) ? raw.secondary_window : null,
1220
+ tertiary_window: isCacheWindowUsable(raw?.tertiary_window, { cachedAtMs, nowMs }) ? raw.tertiary_window : null,
1221
+ cached: true,
1222
+ cached_at: raw.cached_at,
1223
+ };
1224
+ return hasAntigravityWindow(cached) ? cached : null;
1225
+ }
1226
+
1227
+ function readAntigravityLimitsCache({ home, nowMs = Date.now() } = {}) {
1228
+ const cachePath = resolveAntigravityLimitsCachePath({ home });
1229
+ try {
1230
+ const parsed = JSON.parse(fs.readFileSync(cachePath, "utf8"));
1231
+ return normalizeAntigravityCachedLimits(parsed?.antigravity, { nowMs });
1232
+ } catch (_error) {
1233
+ return null;
1234
+ }
1235
+ }
1236
+
1237
+ function writeAntigravityLimitsCache(limits, { home, nowMs = Date.now() } = {}) {
1238
+ if (!limits?.configured || limits.error || !hasAntigravityWindow(limits)) return;
1239
+ const cachePath = resolveAntigravityLimitsCachePath({ home });
1240
+ const payload = {
1241
+ antigravity: {
1242
+ account_email: limits.account_email || null,
1243
+ account_plan: limits.account_plan || null,
1244
+ primary_window: limits.primary_window || null,
1245
+ secondary_window: limits.secondary_window || null,
1246
+ tertiary_window: limits.tertiary_window || null,
1247
+ cached_at: new Date(nowMs).toISOString(),
1248
+ },
1249
+ };
1250
+ try {
1251
+ fs.mkdirSync(path.dirname(cachePath), { recursive: true });
1252
+ const tmpPath = `${cachePath}.${process.pid}.tmp`;
1253
+ fs.writeFileSync(tmpPath, JSON.stringify(payload, null, 2), { encoding: "utf8", mode: 0o600 });
1254
+ fs.renameSync(tmpPath, cachePath);
1255
+ } catch (_error) {}
1256
+ }
1257
+
1258
+ function resolveLsofBinary({ commandRunner } = {}) {
1177
1259
  for (const candidate of ["/usr/sbin/lsof", "/usr/bin/lsof"]) {
1178
1260
  if (fs.existsSync(candidate)) return candidate;
1179
1261
  }
1180
- return null;
1262
+ return whichBinary("lsof", { commandRunner });
1181
1263
  }
1182
1264
 
1183
1265
  function parseListeningPorts(output) {
@@ -1193,7 +1275,7 @@ function parseListeningPorts(output) {
1193
1275
  }
1194
1276
 
1195
1277
  function listAntigravityPorts(pid, { commandRunner } = {}) {
1196
- const lsof = resolveLsofBinary();
1278
+ const lsof = resolveLsofBinary({ commandRunner });
1197
1279
  if (!lsof) {
1198
1280
  throw new Error("Antigravity port detection needs lsof. Install it, then retry.");
1199
1281
  }
@@ -1446,15 +1528,25 @@ async function probeAntigravityPort(port, csrfToken, { timeoutMs, requestFn } =
1446
1528
  }
1447
1529
  }
1448
1530
 
1449
- async function fetchAntigravityLimits({ commandRunner, requestFn, timeoutMs = 8000 } = {}) {
1531
+ async function fetchAntigravityLimits({ home, commandRunner, requestFn, timeoutMs = 8000, nowMs = Date.now() } = {}) {
1450
1532
  const processInfo = detectAntigravityProcess({ commandRunner });
1451
1533
  if (!processInfo.configured) {
1452
- return { configured: false };
1534
+ return readAntigravityLimitsCache({ home, nowMs }) || { configured: false };
1453
1535
  }
1454
1536
  if (processInfo.error) {
1455
1537
  return { configured: true, error: processInfo.error };
1456
1538
  }
1457
1539
 
1540
+ const finalize = (payload, normalizeOptions) => {
1541
+ const result = {
1542
+ configured: true,
1543
+ error: null,
1544
+ ...normalizeAntigravityResponse(payload, normalizeOptions),
1545
+ };
1546
+ writeAntigravityLimitsCache(result, { home, nowMs });
1547
+ return result;
1548
+ };
1549
+
1458
1550
  try {
1459
1551
  const ports = listAntigravityPorts(processInfo.pid, { commandRunner });
1460
1552
  let workingPort = null;
@@ -1478,11 +1570,7 @@ async function fetchAntigravityLimits({ commandRunner, requestFn, timeoutMs = 80
1478
1570
  timeoutMs,
1479
1571
  requestFn,
1480
1572
  });
1481
- return {
1482
- configured: true,
1483
- error: null,
1484
- ...normalizeAntigravityResponse(userStatus),
1485
- };
1573
+ return finalize(userStatus);
1486
1574
  } catch (primaryError) {
1487
1575
  const fallbackPort =
1488
1576
  Number.isFinite(processInfo.extensionPort) && processInfo.extensionPort > 0
@@ -1497,11 +1585,7 @@ async function fetchAntigravityLimits({ commandRunner, requestFn, timeoutMs = 80
1497
1585
  timeoutMs,
1498
1586
  requestFn,
1499
1587
  });
1500
- return {
1501
- configured: true,
1502
- error: null,
1503
- ...normalizeAntigravityResponse(modelConfigs, { fallbackToConfigs: true }),
1504
- };
1588
+ return finalize(modelConfigs, { fallbackToConfigs: true });
1505
1589
  }
1506
1590
  } catch (error) {
1507
1591
  const message = error?.message === "timeout"
@@ -1594,7 +1678,7 @@ async function getUsageLimits({
1594
1678
  withProviderTimeout(fetchGeminiLimits({ home, env, fetchImpl: providerFetch, commandRunner }), "Gemini", providerTimeoutMs)
1595
1679
  .catch((reason) => ({ configured: true, error: reason?.message || "Unknown error" })),
1596
1680
  Promise.resolve().then(() => fetchKiroLimits({ commandRunner, now })),
1597
- fetchAntigravityLimits({ commandRunner, requestFn }),
1681
+ fetchAntigravityLimits({ home, commandRunner, requestFn, nowMs }),
1598
1682
  withProviderTimeout(fetchCopilotLimits({ home, env, fetchImpl: providerFetch }), "GitHub Copilot", providerTimeoutMs)
1599
1683
  .catch((reason) => ({ configured: true, error: reason?.message || "Unknown error" })),
1600
1684
  ]);
@@ -1670,6 +1754,7 @@ module.exports = {
1670
1754
  normalizeAntigravityResponse,
1671
1755
  parseListeningPorts,
1672
1756
  detectAntigravityProcess,
1757
+ fetchAntigravityLimits,
1673
1758
  fetchCopilotLimits,
1674
1759
  readCopilotOauthToken,
1675
1760
  describeCopilotOtelStatus,
@@ -1 +0,0 @@
1
- @font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-cyrillic-400-normal-Ce5q_31Z.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-400-normal-BPBWmzPh.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-latin-ext-400-normal-Cgks_Qgx.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-400-normal-CxNRRMGd.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-latin-400-normal-LC9RFr9I.woff2) format("woff2"),url(/assets/geist-mono-latin-400-normal-CoULgQGM.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-cyrillic-500-normal-CJBLNVQT.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-500-normal-mNhfPmgl.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-latin-ext-500-normal-CQcGuCNt.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-500-normal-diTenJ8L.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-latin-500-normal-D3o2eNa9.woff2) format("woff2"),url(/assets/geist-mono-latin-500-normal-DOxI7kZ4.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/geist-mono-cyrillic-700-normal-VCNRadI3.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-700-normal-DH5Q319x.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/geist-mono-latin-ext-700-normal-YOllDaLV.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-700-normal-BX9f1BHp.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/geist-mono-latin-700-normal-D6izGJRP.woff2) format("woff2"),url(/assets/geist-mono-latin-700-normal-QGw08Lff.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/geist-mono-cyrillic-900-normal-DdrQ8KBw.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-900-normal-BKC3PZkM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/geist-mono-latin-ext-900-normal-CrmBTzU2.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-900-normal-Br6WNUGb.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/geist-mono-latin-900-normal-Cu5MFKsu.woff2) format("woff2"),url(/assets/geist-mono-latin-900-normal-CmoKXrdK.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:SF Mono,SFMono-Regular,ui-monospace,Menlo,Monaco,Consolas,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}:root.dark .oai-panel{background:linear-gradient(180deg,#1a1b1a,#151615);border-color:var(--oai-gray-800)}:root.dark .oai-panel--strong{background:linear-gradient(180deg,#282928,#1e201e);border-color:var(--oai-gray-700)}:root.dark .oai-card{background:linear-gradient(180deg,#1a1b1a,#151615);border-color:var(--oai-gray-800)}:root.dark .oai-card:hover{border-color:var(--oai-gray-700)}:root.dark .oai-card--accent{background:linear-gradient(180deg,#282928,#1e201e);border-color:var(--oai-gray-700)}:root.dark .oai-button-primary{background:var(--oai-gray-100);color:var(--oai-gray-950)}:root.dark .oai-button-primary:hover{background:var(--oai-gray-200)}:root.dark .oai-button-primary:active{background:var(--oai-gray-100)}:root.dark .oai-button-secondary{color:var(--oai-gray-100);border-color:var(--oai-gray-700)}:root.dark .oai-button-secondary:hover{background:var(--oai-gray-800)}:root.dark .oai-button-ghost{color:var(--oai-gray-500)}:root.dark .oai-button-ghost:hover{color:var(--oai-gray-100)}:root.dark .oai-input{background:var(--oai-gray-900);color:var(--oai-gray-100);border-color:var(--oai-gray-700)}:root.dark .oai-input::-moz-placeholder{color:var(--oai-gray-600)}:root.dark .oai-input::placeholder{color:var(--oai-gray-600)}:root.dark .oai-input:focus{border-color:var(--oai-blue)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-3{left:12px;right:12px}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-3{bottom:12px}.bottom-4{bottom:16px}.bottom-6{bottom:24px}.bottom-\[-11px\]{bottom:-11px}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:12px}.left-\[-250\%\]{left:-250%}.left-\[71px\]{left:71px}.right-0{right:0}.right-2{right:8px}.right-2\.5{right:.625rem}.right-3{right:12px}.right-4{right:16px}.right-\[-250\%\]{right:-250%}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:8px}.top-2\.5{top:.625rem}.top-20{top:80px}.top-3{top:12px}.top-4{top:16px}.top-\[-10px\]{top:-10px}.top-full{top:100%}.\!z-\[80\]{z-index:80!important}.\!z-\[9999\]{z-index:9999!important}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[101\]{z-index:101}.z-\[1\]{z-index:1}.z-\[3\]{z-index:3}.z-\[60\]{z-index:60}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.z-\[9999\]{z-index:9999}.order-1{order:1}.order-2{order:2}.-mx-4{margin-left:-16px;margin-right:-16px}.mx-1{margin-left:4px;margin-right:4px}.mx-2{margin-left:8px;margin-right:8px}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:4px;margin-bottom:4px}.my-2{margin-top:8px;margin-bottom:8px}.-mb-3{margin-bottom:-12px}.-mb-px{margin-bottom:-1px}.-mr-1{margin-right:-4px}.-mt-1{margin-top:-4px}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:4px}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:40px}.mb-12{margin-bottom:48px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-5{margin-bottom:20px}.mb-6{margin-bottom:24px}.mb-8{margin-bottom:32px}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:8px}.ml-4{margin-left:16px}.ml-auto{margin-left:auto}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:8px}.mr-auto{margin-right:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:4px}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-5{margin-top:20px}.mt-6{margin-top:24px}.mt-8{margin-top:32px}.mt-\[2px\]{margin-top:2px}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!h-10{height:40px!important}.h-1{height:4px}.h-1\.5{height:.375rem}.h-10{height:40px}.h-11{height:2.75rem}.h-12{height:48px}.h-14{height:3.5rem}.h-16{height:64px}.h-2{height:8px}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:12px}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:16px}.h-40{height:10rem}.h-5{height:20px}.h-6{height:24px}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:32px}.h-9{height:2.25rem}.h-\[14px\]{height:14px}.h-\[15px\]{height:15px}.h-\[18px\]{height:18px}.h-\[3px\]{height:3px}.h-\[50\%\]{height:50%}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-32{max-height:8rem}.max-h-\[384px\]{max-height:384px}.max-h-\[92vh\]{max-height:92vh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.min-h-0{min-height:0}.min-h-14{min-height:3.5rem}.min-h-7{min-height:1.75rem}.min-h-8{min-height:32px}.min-h-screen{min-height:100vh}.w-10{width:40px}.w-12{width:48px}.w-14{width:3.5rem}.w-16{width:64px}.w-2{width:8px}.w-2\.5{width:.625rem}.w-20{width:80px}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:12px}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:16px}.w-40{width:10rem}.w-44{width:11rem}.w-5{width:20px}.w-6{width:24px}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:32px}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[18px\]{width:18px}.w-\[220px\]{width:220px}.w-\[260px\]{width:260px}.w-\[300\%\]{width:300%}.w-\[30px\]{width:30px}.w-\[4\.5rem\]{width:4.5rem}.w-\[72px\]{width:72px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0}.min-w-14{min-width:3.5rem}.min-w-7{min-width:1.75rem}.min-w-8{min-width:32px}.min-w-\[140px\]{min-width:140px}.min-w-\[200px\]{min-width:200px}.min-w-\[220px\]{min-width:220px}.min-w-\[260px\]{min-width:260px}.min-w-\[420px\]{min-width:420px}.min-w-\[52px\]{min-width:52px}.min-w-\[6rem\]{min-width:6rem}.min-w-\[72px\]{min-width:72px}.min-w-\[var\(--anchor-width\)\]{min-width:var(--anchor-width)}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[1040px\]{max-width:1040px}.max-w-\[120px\]{max-width:120px}.max-w-\[420px\]{max-width:420px}.max-w-\[460px\]{max-width:460px}.max-w-\[72px\]{max-width:72px}.max-w-\[80vw\]{max-width:80vw}.max-w-\[min\(260px\,45vw\)\]{max-width:min(260px,45vw)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[18px\]{--tw-translate-x: 18px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[3px\]{--tw-translate-x: 3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-5{--tw-translate-y: 20px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes star-movement-bottom{0%{transform:translate(0);opacity:1}to{transform:translate(-100%);opacity:0}}.animate-star-movement-bottom{animation:star-movement-bottom linear infinite alternate}@keyframes star-movement-top{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.animate-star-movement-top{animation:star-movement-top linear infinite alternate}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[minmax\(0\,1fr\)_48px_48px_72px_72px_60px_60px\]{grid-template-columns:minmax(0,1fr) 48px 48px 72px 72px 60px 60px}.grid-cols-\[minmax\(0\,1fr\)_56px_60px\]{grid-template-columns:minmax(0,1fr) 56px 60px}.grid-cols-\[minmax\(0\,1fr\)_64px_48px\]{grid-template-columns:minmax(0,1fr) 64px 48px}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:4px}.gap-1\.5{gap:.375rem}.gap-10{gap:40px}.gap-16{gap:64px}.gap-2{gap:8px}.gap-2\.5{gap:.625rem}.gap-20{gap:80px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-5{gap:20px}.gap-6{gap:24px}.gap-8{gap:32px}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:8px;column-gap:8px}.gap-x-4{-moz-column-gap:16px;column-gap:16px}.gap-x-6{-moz-column-gap:24px;column-gap:24px}.gap-x-8{-moz-column-gap:32px;column-gap:32px}.gap-y-1{row-gap:4px}.gap-y-2{row-gap:8px}.gap-y-4{row-gap:16px}.gap-y-6{row-gap:24px}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(4px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4px * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(12px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(12px * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(16px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16px * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(20px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(20px * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(24px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(24px * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(32px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(32px * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-oai-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(245 245 245 / var(--tw-divide-opacity, 1))}.divide-oai-gray-200\/60>:not([hidden])~:not([hidden]){border-color:#e5e5e599}.divide-oai-gray-200\/70>:not([hidden])~:not([hidden]){border-color:#e5e5e5b3}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.text-balance{text-wrap:balance}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[11px\]{border-radius:11px}.rounded-\[1px\]{border-radius:1px}.rounded-\[22\/32px\]{border-radius:22/32px}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:12px}.rounded-md{border-radius:8px}.rounded-sm{border-radius:4px}.rounded-xl{border-radius:16px}.border{border-width:1px}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-oai-gray-200{--tw-border-opacity: 1 !important;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))!important}.border-amber-300\/60{border-color:#fcd34d99}.border-gray-500\/20{border-color:#6b728033}.border-oai-black{--tw-border-opacity: 1;border-color:rgb(10 10 10 / var(--tw-border-opacity, 1))}.border-oai-brand-300\/40{border-color:#6ee7b766}.border-oai-error{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-oai-gray-100{--tw-border-opacity: 1;border-color:rgb(245 245 245 / var(--tw-border-opacity, 1))}.border-oai-gray-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.border-oai-gray-300{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.border-oai-gray-300\/80{border-color:#d4d4d4cc}.border-oai-gray-50{--tw-border-opacity: 1;border-color:rgb(250 250 250 / var(--tw-border-opacity, 1))}.border-oai-gray-600{--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.border-oai-gray-700{--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.border-oai-gray-800{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.border-oai-gray-800\/50{border-color:#26262680}.border-oai-gray-900{--tw-border-opacity: 1;border-color:rgb(23 23 23 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-200\/70{border-color:#fecacab3}.border-transparent{border-color:transparent}.border-white\/40{border-color:#fff6}.border-t-white{--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.\!bg-red-600{--tw-bg-opacity: 1 !important;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))!important}.bg-\[\#0a0a0a\]{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-50\/50{background-color:#fffbeb80}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/40{background-color:#0006}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500\/\[0\.04\]{background-color:#6b72800a}.bg-green-500\/15{background-color:#22c55e26}.bg-oai-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-oai-black{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-oai-black\/30{background-color:#0a0a0a4d}.bg-oai-black\/\[0\.04\]{background-color:#0a0a0a0a}.bg-oai-black\/\[0\.06\]{background-color:#0a0a0a0f}.bg-oai-brand{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.bg-oai-brand-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.bg-oai-brand-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-oai-brand-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-oai-brand-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.bg-oai-gray-100{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.bg-oai-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.bg-oai-gray-200\/70{background-color:#e5e5e5b3}.bg-oai-gray-300{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.bg-oai-gray-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-oai-gray-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.bg-oai-gray-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.bg-oai-gray-900\/50{background-color:#17171780}.bg-oai-gray-950{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-oai-gray-950\/50{background-color:#0a0a0a80}.bg-oai-gray-950\/80{background-color:#0a0a0acc}.bg-oai-white{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/20{background-color:#fff3}.bg-white\/30{background-color:#ffffff4d}.bg-white\/40{background-color:#fff6}.bg-white\/70{background-color:#ffffffb3}.bg-white\/75{background-color:#ffffffbf}.bg-white\/80{background-color:#fffc}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-\[rgba\(138\,122\,255\,0\.6\)\]{--tw-gradient-from: rgba(138,122,255,.6) var(--tw-gradient-from-position);--tw-gradient-to: rgba(138, 122, 255, 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-oai-gray-100{--tw-gradient-from: #f5f5f5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 245 245 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-oai-white{--tw-gradient-from: #fafafa var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 250 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/30{--tw-gradient-from: rgb(255 255 255 / .3) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-\[rgba\(138\,122\,255\,0\.15\)\]{--tw-gradient-to: rgba(138, 122, 255, 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgba(138,122,255,.15) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-oai-gray-200{--tw-gradient-to: rgb(229 229 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #e5e5e5 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-oai-gray-50{--tw-gradient-to: rgb(250 250 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #fafafa var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-\[rgba\(138\,122\,255\,0\.05\)\]{--tw-gradient-to: rgba(138,122,255,.05) var(--tw-gradient-to-position)}.to-oai-gray-100{--tw-gradient-to: #f5f5f5 var(--tw-gradient-to-position)}.to-oai-gray-200{--tw-gradient-to: #e5e5e5 var(--tw-gradient-to-position)}.to-oai-gray-500{--tw-gradient-to: #737373 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-\[length\:200\%_100\%\]{background-size:200% 100%}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-oai-black{fill:#0a0a0a}.fill-oai-gray-200{fill:#e5e5e5}.fill-oai-gray-500{fill:#737373}.fill-oai-gray-700{fill:#404040}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:4px}.p-1\.5{padding:.375rem}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.p-5{padding:20px}.p-6{padding:24px}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:4px;padding-right:4px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:8px;padding-right:8px}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:12px;padding-right:12px}.px-4{padding-left:16px;padding-right:16px}.px-5{padding-left:20px;padding-right:20px}.px-6{padding-left:24px;padding-right:24px}.px-8{padding-left:32px;padding-right:32px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:4px;padding-bottom:4px}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:40px;padding-bottom:40px}.py-12{padding-top:48px;padding-bottom:48px}.py-16{padding-top:64px;padding-bottom:64px}.py-2{padding-top:8px;padding-bottom:8px}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:80px;padding-bottom:80px}.py-3{padding-top:12px;padding-bottom:12px}.py-4{padding-top:16px;padding-bottom:16px}.py-5{padding-top:20px;padding-bottom:20px}.py-6{padding-top:24px;padding-bottom:24px}.py-8{padding-top:32px;padding-bottom:32px}.py-\[5px\]{padding-top:5px;padding-bottom:5px}.pb-1{padding-bottom:4px}.pb-12{padding-bottom:48px}.pb-2{padding-bottom:8px}.pb-3{padding-bottom:12px}.pb-4{padding-bottom:16px}.pl-1{padding-left:4px}.pl-2{padding-left:8px}.pl-3{padding-left:12px}.pl-5{padding-left:20px}.pl-9{padding-left:2.25rem}.pr-1{padding-right:4px}.pr-2{padding-right:8px}.pr-3{padding-right:12px}.pr-8{padding-right:32px}.pr-9{padding-right:2.25rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:4px}.pt-2{padding-top:8px}.pt-3{padding-top:12px}.pt-4{padding-top:16px}.pt-5{padding-top:20px}.pt-8{padding-top:32px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:SF Mono,SFMono-Regular,ui-monospace,Menlo,Monaco,Consolas,monospace}.font-oai{font-family:OpenAI Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[6px\]{font-size:6px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-body-sm{font-size:14px;line-height:1.5;font-weight:400}.text-caption{font-size:12px;line-height:1.4;letter-spacing:.01em;font-weight:500}.text-label{font-size:11px;line-height:1.3;letter-spacing:.02em;font-weight:600}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.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)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.4em\]{letter-spacing:.4em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-oai-amber-dark{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-oai-black{--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.text-oai-brand{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-oai-brand-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-oai-brand-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-oai-brand-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-oai-brand-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-oai-error{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-oai-gray-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.text-oai-gray-300{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.text-oai-gray-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.text-oai-gray-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.text-oai-gray-600{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.text-oai-gray-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-oai-gray-800{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.text-oai-gray-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.text-oai-gray-950{--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.text-oai-white{--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/75{color:#ffffffbf}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.decoration-oai-gray-300{text-decoration-color:#d4d4d4}.decoration-oai-gray-400{text-decoration-color:#a3a3a3}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-oai-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(163 163 163 / var(--tw-placeholder-opacity, 1))}.placeholder-oai-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(163 163 163 / var(--tw-placeholder-opacity, 1))}.placeholder-oai-gray-600::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(82 82 82 / var(--tw-placeholder-opacity, 1))}.placeholder-oai-gray-600::placeholder{--tw-placeholder-opacity: 1;color:rgb(82 82 82 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_12px_32px_-12px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow: 0 12px 32px -12px rgba(0,0,0,.18);--tw-shadow-colored: 0 12px 32px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow: 0 1px 3px rgba(0,0,0,.18);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_20px_60px_-20px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow: 0 20px 60px -20px rgba(0,0,0,.25);--tw-shadow-colored: 0 20px 60px -20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_24px_60px_-20px_rgba\(15\,23\,42\,0\.25\)\]{--tw-shadow: 0 24px 60px -20px rgba(15,23,42,.25);--tw-shadow-colored: 0 24px 60px -20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-oai-lg{--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-oai-md{--tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/50{--tw-shadow-color: rgb(0 0 0 / .5);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-black\/10{--tw-ring-color: rgb(0 0 0 / .1)}.ring-black\/5{--tw-ring-color: rgb(0 0 0 / .05)}.ring-oai-black\/10{--tw-ring-color: rgb(10 10 10 / .1)}.ring-oai-black\/\[0\.08\]{--tw-ring-color: rgb(10 10 10 / .08)}.ring-oai-brand-500\/50{--tw-ring-color: rgb(16 185 129 / .5)}.ring-oai-gray-200{--tw-ring-opacity: 1;--tw-ring-color: rgb(229 229 229 / var(--tw-ring-opacity, 1))}.ring-oai-gray-200\/70{--tw-ring-color: rgb(229 229 229 / .7)}.ring-oai-gray-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(212 212 212 / var(--tw-ring-opacity, 1))}.ring-oai-gray-700{--tw-ring-opacity: 1;--tw-ring-color: rgb(64 64 64 / var(--tw-ring-opacity, 1))}.ring-white\/10{--tw-ring-color: rgb(255 255 255 / .1)}.ring-white\/50{--tw-ring-color: rgb(255 255 255 / .5)}.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)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--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-\[2px\]{--tw-backdrop-blur: blur(2px);-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(12px);-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(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-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-saturate-150{--tw-backdrop-saturate: saturate(1.5);-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-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-\[220ms\]{transition-duration:.22s}.ease-\[cubic-bezier\(0\.16\,1\,0\.3\,1\)\]{transition-timing-function:cubic-bezier(.16,1,.3,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.oai-text-body-sm{font-size:var(--text-body-sm);line-height:1.5;font-weight:400}.oai-text-caption{font-size:var(--text-caption);line-height:1.4;font-weight:500;letter-spacing:.01em}.oai-text-muted{color:var(--oai-gray-500)}.oai-bg-elevated{background:var(--oai-gray-50)}.oai-scrollbar{scrollbar-width:thin;scrollbar-color:var(--oai-gray-300) transparent;scrollbar-gutter:stable both-edges}.oai-scrollbar::-webkit-scrollbar{height:8px;width:8px}.oai-scrollbar::-webkit-scrollbar-track{background:transparent}.oai-scrollbar::-webkit-scrollbar-thumb{background:var(--oai-gray-300);border-radius:var(--radius-full)}.oai-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-400)}:root.dark .oai-text-muted{color:var(--oai-gray-500)}:root.dark .oai-text-secondary{color:var(--oai-gray-400)}:root.dark .oai-bg-surface{background:var(--oai-gray-900)}:root.dark .oai-bg-elevated{background:var(--oai-gray-100)}:root.dark .oai-scrollbar{scrollbar-color:var(--oai-gray-400) transparent}:root.dark .oai-scrollbar::-webkit-scrollbar-thumb{background:var(--oai-gray-400)}:root.dark .oai-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-500)}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}@keyframes countPulse{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.shimmer{background:linear-gradient(90deg,var(--oai-gray-100) 25%,var(--oai-gray-50) 50%,var(--oai-gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.clawd-animated>svg{width:100%;height:100%}@keyframes marquee-x{0%{transform:translate(0)}to{transform:translate(-50%)}}.animate-marquee-x{animation:marquee-x 14s linear infinite}:root.dark .shimmer{background:linear-gradient(90deg,var(--oai-gray-800) 25%,var(--oai-gray-700) 50%,var(--oai-gray-800) 75%);background-size:200% 100%}:root.dark .hover-lift:hover{box-shadow:0 12px 32px -8px #0006}.cost-modal-backdrop{position:fixed;inset:0;z-index:100;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:1;transition:opacity .2s ease-out}.cost-modal-backdrop[data-starting-style],.cost-modal-backdrop[data-ending-style]{opacity:0}.cost-modal-popup{opacity:1;transform:scale(1) translateY(0);transition:opacity .22s cubic-bezier(.16,1,.3,1),transform .26s cubic-bezier(.16,1,.3,1)}.cost-modal-popup[data-starting-style],.cost-modal-popup[data-ending-style]{opacity:0;transform:scale(.96) translateY(12px)}:root.dark .cost-modal-backdrop{background:#0009}.\[scrollbar-width\:none\]{scrollbar-width:none}:root{color-scheme:light;--oai-black: #0a0a0a;--oai-white: #fafafa;--oai-gray-50: oklch(98% .005 145);--oai-gray-100: oklch(96% .01 145);--oai-gray-200: oklch(90% .015 145);--oai-gray-300: oklch(83% .02 145);--oai-gray-400: oklch(70% .025 145);--oai-gray-500: oklch(55% .03 145);--oai-gray-600: oklch(45% .025 145);--oai-gray-700: oklch(35% .02 145);--oai-gray-800: oklch(25% .015 145);--oai-gray-900: oklch(18% .01 145);--oai-gray-950: oklch(12% .005 145);--brand-primary: #059669;--brand-primary-dark: #047857;--brand-primary-light: #10b981;--brand-50: #ecfdf5;--brand-100: #d1fae5;--brand-200: #a7f3d0;--brand-300: #6ee7b7;--brand-400: #34d399;--brand-500: #10b981;--brand-600: #059669;--brand-700: #047857;--brand-800: #065f46;--brand-900: #064e3b;--brand-950: #022c22;--forest: #10b981;--forest-dark: #059669;--forest-light: #34d399;--amber: #f59e0b;--amber-dark: #d97706;--amber-light: #fbbf24;--oai-blue: #059669;--oai-blue-dark: #047857;--oai-blue-light: #10b981;--oai-success: #10b981;--oai-warning: #f59e0b;--oai-error: #ef4444;--oai-info: #059669;--oai-font-sans: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, sans-serif;--oai-font-mono: "SF Mono", sfmono-regular, ui-monospace, menlo, monaco, consolas, monospace;--text-hero: 48px;--text-h1: 36px;--text-h2: 28px;--text-h3: 22px;--text-h4: 18px;--text-body: 16px;--text-body-sm: 14px;--text-caption: 12px;--text-label: 11px;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px}:root.dark{color-scheme:dark;--oai-black: #fafafa;--oai-white: #0a0a0a;--oai-gray-50: oklch(20% .002 145);--oai-gray-100: oklch(24% .003 145);--oai-gray-200: oklch(30% .004 145);--oai-gray-300: oklch(40% .005 145);--oai-gray-400: oklch(55% .006 145);--oai-gray-500: oklch(65% .005 145);--oai-gray-600: oklch(75% .004 145);--oai-gray-700: oklch(85% .003 145);--oai-gray-800: oklch(92% .002 145);--oai-gray-900: oklch(96% .001 145);--oai-gray-950: oklch(98% .001 145);--brand-primary: #10b981;--brand-primary-dark: #059669;--brand-primary-light: #34d399;--forest: #34d399;--forest-dark: #10b981;--forest-light: #6ee7b7;--oai-blue: #10b981;--oai-blue-dark: #059669;--oai-blue-light: #34d399;--oai-success: #34d399;--oai-warning: #fbbf24;--oai-error: #f87171;--oai-info: #10b981}html,body{height:100%}body{margin:0;background:var(--oai-white);color:var(--oai-black);font-family:var(--oai-font-sans);font-size:var(--text-body);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*:focus,*:focus-visible{outline:none!important;--tw-ring-shadow: 0 0 #0000 !important;--tw-ring-offset-shadow: 0 0 #0000 !important}html.native-app,html.native-app.dark,html.native-app body,html.native-app #root{background:transparent!important}html.native-app #root{min-height:100%}html.native-app{--tt-main-card-radius: 1rem}html.native-app .tt-native-main-card{border-radius:var(--tt-main-card-radius, 1rem)}.heatmap-scroll-thin{scrollbar-width:thin;scrollbar-color:var(--oai-gray-200) transparent}.heatmap-scroll-thin::-webkit-scrollbar{height:4px}.heatmap-scroll-thin::-webkit-scrollbar-track{background:transparent}.heatmap-scroll-thin::-webkit-scrollbar-thumb{background:var(--oai-gray-200);border-radius:2px}.heatmap-scroll-thin::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-400)}:root.dark .heatmap-scroll-thin{scrollbar-color:var(--oai-gray-600) transparent}:root.dark .heatmap-scroll-thin::-webkit-scrollbar-thumb{background:var(--oai-gray-600)}:root.dark .heatmap-scroll-thin::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-500)}.rdp-selected{background:var(--oai-black)!important;border-radius:0!important}.rdp-selected .rdp-day-btn{background:transparent!important;color:#fff!important;border-radius:0!important}.rdp-range-start{border-radius:8px 0 0 8px!important}.rdp-range-end{border-radius:0 8px 8px 0!important}.rdp-range-start.rdp-range-end{border-radius:8px!important}:root.dark .rdp-selected{background:var(--oai-white)!important}:root.dark .rdp-selected .rdp-day-btn{background:transparent!important;color:var(--oai-black)!important}:root.dark .rdp-oai svg.rdp-chevron{fill:var(--oai-gray-400)}.placeholder\:text-oai-gray-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.placeholder\:text-oai-gray-400::placeholder{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-x-0:before{content:var(--tw-content);left:0;right:0}.before\:top-full:before{content:var(--tw-content);top:100%}.before\:h-2\.5:before{content:var(--tw-content);height:.625rem}.before\:content-\[\'\'\]:before{--tw-content: "";content:var(--tw-content)}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:z-10:hover{z-index:10}.hover\:z-50:hover{z-index:50}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-125:hover{--tw-scale-x: 1.25;--tw-scale-y: 1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:\!border-oai-gray-300:hover{--tw-border-opacity: 1 !important;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))!important}.hover\:border-gray-500\/30:hover{border-color:#6b72804d}.hover\:border-oai-brand:hover{--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.hover\:border-oai-gray-200:hover{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.hover\:border-oai-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.hover\:border-oai-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(163 163 163 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:\!bg-red-700:hover{--tw-bg-opacity: 1 !important;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))!important}.hover\:bg-gray-500\/10:hover{background-color:#6b72801a}.hover\:bg-oai-brand-50\/50:hover{background-color:#ecfdf580}.hover\:bg-oai-brand-600:hover{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-100\/60:hover{background-color:#f5f5f599}.hover\:bg-oai-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-200\/50:hover{background-color:#e5e5e580}.hover\:bg-oai-gray-200\/60:hover{background-color:#e5e5e599}.hover\:bg-oai-gray-200\/70:hover{background-color:#e5e5e5b3}.hover\:bg-oai-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-50\/50:hover{background-color:#fafafa80}.hover\:bg-oai-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-white\/70:hover{background-color:#fafafab3}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/40:hover{background-color:#fff6}.hover\:\!text-oai-black:hover{--tw-text-opacity: 1 !important;color:rgb(10 10 10 / var(--tw-text-opacity, 1))!important}.hover\:text-oai-black:hover{--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.hover\:text-oai-brand:hover{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.hover\:text-oai-brand-300:hover{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.hover\:text-oai-brand-400:hover{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.hover\:text-oai-brand-dark:hover{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-300:hover{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-500:hover{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-600:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-700:hover{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-800:hover{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-900:hover{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-oai-brand-300:hover{text-decoration-color:#6ee7b7}.hover\:decoration-oai-gray-500:hover{text-decoration-color:#737373}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:grayscale-0:hover{--tw-grayscale: grayscale(0);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:\!border-oai-gray-400:focus{--tw-border-opacity: 1 !important;border-color:rgb(163 163 163 / var(--tw-border-opacity, 1))!important}.focus\:border-oai-brand:focus{--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.focus\:border-oai-brand-500:focus{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity, 1))}.focus\:border-oai-error:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-inset:focus{--tw-ring-inset: inset}.focus\:\!ring-oai-gray-400\/20:focus{--tw-ring-color: rgb(163 163 163 / .2) !important}.focus\:\!ring-oai-gray-400\/30:focus{--tw-ring-color: rgb(163 163 163 / .3) !important}.focus\:ring-oai-blue\/30:focus{--tw-ring-color: rgb(5 150 105 / .3)}.focus\:ring-oai-brand:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(5 150 105 / var(--tw-ring-opacity, 1))}.focus\:ring-oai-brand-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(16 185 129 / var(--tw-ring-opacity, 1))}.focus\:ring-oai-brand\/30:focus{--tw-ring-color: rgb(5 150 105 / .3)}.focus\:ring-oai-error\/30:focus{--tw-ring-color: rgb(239 68 68 / .3)}.focus\:ring-oai-gray-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(163 163 163 / var(--tw-ring-opacity, 1))}.focus\:ring-oai-gray-400\/30:focus{--tw-ring-color: rgb(163 163 163 / .3)}.focus\:ring-red-400\/30:focus{--tw-ring-color: rgb(248 113 113 / .3)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:\!outline-red-600:focus-visible{outline-color:#dc2626!important}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset: inset}.focus-visible\:ring-oai-brand-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(16 185 129 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-oai-brand\/40:focus-visible{--tw-ring-color: rgb(5 150 105 / .4)}.focus-visible\:ring-oai-brand\/50:focus-visible{--tw-ring-color: rgb(5 150 105 / .5)}.focus-visible\:ring-oai-gray-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(212 212 212 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-oai-gray-400\/40:focus-visible{--tw-ring-color: rgb(163 163 163 / .4)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-transparent:focus-visible{--tw-ring-offset-color: transparent}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.98\]:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-oai-brand-dark:active{--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity, 1))}.active\:bg-oai-brand-50:active{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.active\:bg-oai-gray-200:active{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.active\:bg-oai-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.active\:bg-oai-gray-900:active{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.active\:bg-oai-gray-950:active{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.active\:duration-100:active{transition-duration:.1s}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-oai-gray-200:disabled{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.disabled\:bg-oai-gray-300:disabled{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.disabled\:text-oai-gray-400:disabled{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.disabled\:text-oai-gray-500:disabled{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group\/gh:hover .group-hover\/gh\:visible{visibility:visible}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-oai-gray-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:bg-oai-gray-700{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.group\/col:hover .group-hover\/col\:opacity-100,.group\/gh:hover .group-hover\/gh\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:brightness-110{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.data-\[ending-style\]\:translate-y-2[data-ending-style],.data-\[starting-style\]\:translate-y-2[data-starting-style]{--tw-translate-y: 8px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[ending-style\]\:scale-\[0\.96\][data-ending-style]{--tw-scale-x: .96;--tw-scale-y: .96;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[ending-style\]\:scale-\[0\.97\][data-ending-style]{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[starting-style\]\:scale-\[0\.96\][data-starting-style]{--tw-scale-x: .96;--tw-scale-y: .96;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[starting-style\]\:scale-\[0\.97\][data-starting-style]{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[checked\]\:border-oai-black[data-checked]{--tw-border-opacity: 1;border-color:rgb(10 10 10 / var(--tw-border-opacity, 1))}.data-\[popup-open\]\:border-oai-gray-300[data-popup-open]{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.data-\[checked\]\:bg-oai-black[data-checked]{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.data-\[highlighted\]\:bg-oai-gray-100[data-highlighted]{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.data-\[ending-style\]\:opacity-0[data-ending-style],.data-\[starting-style\]\:opacity-0[data-starting-style]{opacity:0}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-white\/65{background-color:#ffffffa6}}.dark\:inline:is(.dark *){display:inline}.dark\:hidden:is(.dark *){display:none}.dark\:divide-oai-gray-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(38 38 38 / var(--tw-divide-opacity, 1))}.dark\:divide-oai-gray-800\/50:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#26262680}.dark\:divide-oai-gray-800\/60:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#26262699}.dark\:divide-oai-gray-800\/70:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#262626b3}.dark\:\!border-oai-gray-800:is(.dark *){--tw-border-opacity: 1 !important;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))!important}.dark\:border-amber-700\/40:is(.dark *){border-color:#b4530966}.dark\:border-gray-500\/30:is(.dark *){border-color:#6b72804d}.dark\:border-oai-brand-500\/30:is(.dark *){border-color:#10b9814d}.dark\:border-oai-gray-500\/60:is(.dark *){border-color:#73737399}.dark\:border-oai-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.dark\:border-oai-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:border-oai-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.dark\:border-oai-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(23 23 23 / var(--tw-border-opacity, 1))}.dark\:border-oai-white:is(.dark *){--tw-border-opacity: 1;border-color:rgb(250 250 250 / var(--tw-border-opacity, 1))}.dark\:border-red-900\/60:is(.dark *){border-color:#7f1d1d99}.dark\:border-white:is(.dark *){--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:#ffffff0f}.dark\:\!bg-red-600:is(.dark *){--tw-bg-opacity: 1 !important;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))!important}.dark\:bg-\[\#050505\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 5 5 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-900\/10:is(.dark *){background-color:#78350f1a}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-black\/50:is(.dark *){background-color:#00000080}.dark\:bg-black\/60:is(.dark *){background-color:#0009}.dark\:bg-emerald-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-500\/\[0\.06\]:is(.dark *){background-color:#6b72800f}.dark\:bg-gray-800\/40:is(.dark *){background-color:#1f293766}.dark\:bg-oai-black:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-brand-900\/10:is(.dark *){background-color:#064e3b1a}.dark\:bg-oai-brand-900\/30:is(.dark *){background-color:#064e3b4d}.dark\:bg-oai-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-700\/50:is(.dark *){background-color:#40404080}.dark\:bg-oai-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-800\/60:is(.dark *){background-color:#26262699}.dark\:bg-oai-gray-800\/70:is(.dark *){background-color:#262626b3}.dark\:bg-oai-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-900\/40:is(.dark *){background-color:#17171766}.dark\:bg-oai-gray-900\/50:is(.dark *){background-color:#17171780}.dark\:bg-oai-gray-900\/60:is(.dark *){background-color:#17171799}.dark\:bg-oai-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-950\/60:is(.dark *){background-color:#0a0a0a99}.dark\:bg-oai-gray-950\/70:is(.dark *){background-color:#0a0a0ab3}.dark\:bg-oai-gray-950\/80:is(.dark *){background-color:#0a0a0acc}.dark\:bg-oai-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-900\/20:is(.dark *){background-color:#7c2d1233}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/30:is(.dark *){background-color:#450a0a4d}.dark\:bg-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.dark\:bg-white\/\[0\.02\]:is(.dark *){background-color:#ffffff05}.dark\:bg-white\/\[0\.05\]:is(.dark *){background-color:#ffffff0d}.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:#ffffff14}.dark\:from-oai-gray-900:is(.dark *){--tw-gradient-from: #171717 var(--tw-gradient-from-position);--tw-gradient-to: rgb(23 23 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-oai-gray-950\/80:is(.dark *){--tw-gradient-from: rgb(10 10 10 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(10 10 10 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-white\/\[0\.04\]:is(.dark *){--tw-gradient-from: rgb(255 255 255 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-oai-gray-900\/80:is(.dark *){--tw-gradient-to: rgb(23 23 23 / .8) var(--tw-gradient-to-position)}.dark\:fill-oai-gray-300:is(.dark *){fill:#d4d4d4}.dark\:fill-oai-gray-400:is(.dark *){fill:#a3a3a3}.dark\:fill-oai-gray-700:is(.dark *){fill:#404040}.dark\:fill-white:is(.dark *){fill:#fff}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-oai-black:is(.dark *){--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.dark\:text-oai-brand-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-900:is(.dark *){--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-950:is(.dark *){--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.dark\:text-oai-white:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-sky-300:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:decoration-oai-gray-600:is(.dark *){text-decoration-color:#525252}.dark\:placeholder-oai-gray-500:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(115 115 115 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-oai-gray-500:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(115 115 115 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-oai-gray-600:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(82 82 82 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-oai-gray-600:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(82 82 82 / var(--tw-placeholder-opacity, 1))}.dark\:shadow-\[0_12px_32px_-12px_rgba\(0\,0\,0\,0\.6\)\]:is(.dark *){--tw-shadow: 0 12px 32px -12px rgba(0,0,0,.6);--tw-shadow-colored: 0 12px 32px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-\[0_20px_60px_-10px_rgba\(0\,0\,0\,0\.65\)\]:is(.dark *){--tw-shadow: 0 20px 60px -10px rgba(0,0,0,.65);--tw-shadow-colored: 0 20px 60px -10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-\[0_24px_60px_-20px_rgba\(0\,0\,0\,0\.7\)\]:is(.dark *){--tw-shadow: 0 24px 60px -20px rgba(0,0,0,.7);--tw-shadow-colored: 0 24px 60px -20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-\[0_2px_4px_rgba\(0\,0\,0\,0\.4\)\,0_8px_24px_rgba\(0\,0\,0\,0\.5\)\]:is(.dark *){--tw-shadow: 0 2px 4px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.5);--tw-shadow-colored: 0 2px 4px var(--tw-shadow-color), 0 8px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:ring-oai-gray-700:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(64 64 64 / var(--tw-ring-opacity, 1))}.dark\:ring-oai-gray-700\/70:is(.dark *){--tw-ring-color: rgb(64 64 64 / .7)}.dark\:ring-oai-gray-800:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(38 38 38 / var(--tw-ring-opacity, 1))}.dark\:ring-white\/10:is(.dark *){--tw-ring-color: rgb(255 255 255 / .1)}.dark\:ring-white\/\[0\.08\]:is(.dark *){--tw-ring-color: rgb(255 255 255 / .08)}.dark\:ring-offset-oai-gray-950:is(.dark *){--tw-ring-offset-color: #0a0a0a}.dark\:hue-rotate-180:is(.dark *){--tw-hue-rotate: hue-rotate(180deg);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)}.dark\:invert:is(.dark *){--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:placeholder\:text-oai-gray-600:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.dark\:placeholder\:text-oai-gray-600:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.dark\:hover\:\!border-oai-gray-700:hover:is(.dark *){--tw-border-opacity: 1 !important;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))!important}.dark\:hover\:border-gray-500\/40:hover:is(.dark *){border-color:#6b728066}.dark\:hover\:border-oai-gray-400:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(163 163 163 / var(--tw-border-opacity, 1))}.dark\:hover\:border-oai-gray-600:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.dark\:hover\:border-oai-gray-700:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:hover\:border-oai-gray-800:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.dark\:hover\:border-red-800:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.dark\:hover\:\!bg-red-500:hover:is(.dark *){--tw-bg-opacity: 1 !important;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))!important}.dark\:hover\:bg-oai-black\/10:hover:is(.dark *){background-color:#0a0a0a1a}.dark\:hover\:bg-oai-brand-950\/30:hover:is(.dark *){background-color:#022c224d}.dark\:hover\:bg-oai-gray-100:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-200:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-800\/50:hover:is(.dark *){background-color:#26262680}.dark\:hover\:bg-oai-gray-800\/60:hover:is(.dark *){background-color:#26262699}.dark\:hover\:bg-oai-gray-800\/70:hover:is(.dark *){background-color:#262626b3}.dark\:hover\:bg-oai-gray-900\/40:hover:is(.dark *){background-color:#17171766}.dark\:hover\:bg-oai-gray-900\/60:hover:is(.dark *){background-color:#17171799}.dark\:hover\:bg-oai-gray-900\/80:hover:is(.dark *){background-color:#171717cc}.dark\:hover\:bg-red-950\/30:hover:is(.dark *){background-color:#450a0a4d}.dark\:hover\:bg-white\/\[0\.04\]:hover:is(.dark *){background-color:#ffffff0a}.dark\:hover\:\!text-white:hover:is(.dark *){--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity, 1))!important}.dark\:hover\:text-oai-brand-light:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-gray-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:hover\:decoration-oai-gray-400:hover:is(.dark *){text-decoration-color:#a3a3a3}.dark\:focus\:\!border-oai-gray-500:focus:is(.dark *){--tw-border-opacity: 1 !important;border-color:rgb(115 115 115 / var(--tw-border-opacity, 1))!important}.dark\:focus\:border-oai-brand:focus:is(.dark *){--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.dark\:focus\:\!ring-oai-gray-500\/20:focus:is(.dark *){--tw-ring-color: rgb(115 115 115 / .2) !important}.dark\:focus-visible\:ring-oai-gray-600:focus-visible:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(82 82 82 / var(--tw-ring-opacity, 1))}.dark\:focus-visible\:ring-offset-oai-gray-950:focus-visible:is(.dark *){--tw-ring-offset-color: #0a0a0a}.dark\:active\:bg-oai-brand-900\/50:active:is(.dark *){background-color:#064e3b80}.dark\:active\:bg-oai-gray-200:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.dark\:active\:bg-oai-gray-300:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.dark\:active\:bg-oai-gray-700:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:active\:bg-oai-gray-800:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:disabled\:border-oai-gray-700:disabled:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:disabled\:bg-oai-gray-700:disabled:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:disabled\:text-oai-gray-400:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:disabled\:text-oai-gray-500:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.group:hover .dark\:group-hover\:bg-oai-gray-900\/60:is(.dark *){background-color:#17171799}.dark\:data-\[checked\]\:border-white[data-checked]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.dark\:data-\[popup-open\]\:border-oai-gray-700[data-popup-open]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:data-\[checked\]\:bg-white[data-checked]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.dark\:data-\[highlighted\]\:bg-oai-gray-800[data-highlighted]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}@supports (backdrop-filter: var(--tw)){.dark\:supports-\[backdrop-filter\]\:bg-oai-gray-950\/55:is(.dark *){background-color:#0a0a0a8c}}@media(min-width:640px){.sm\:mb-12{margin-bottom:48px}.sm\:mb-14{margin-bottom:3.5rem}.sm\:mb-5{margin-bottom:20px}.sm\:block{display:block}.sm\:inline{display:inline}.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\:gap-3{gap:12px}.sm\:gap-4{gap:16px}.sm\:p-5{padding:20px}.sm\:p-6{padding:24px}.sm\:p-7{padding:1.75rem}.sm\:px-6{padding-left:24px;padding-right:24px}.sm\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.sm\:py-16{padding-top:64px;padding-bottom:64px}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:pb-16{padding-bottom:64px}.sm\:pt-10{padding-top:40px}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}}@media(min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-7xl{font-size:4.5rem;line-height:1}}@media(min-width:1024px){.lg\:inset-auto{inset:auto}.lg\:bottom-6{bottom:24px}.lg\:right-6{right:24px}.lg\:top-24{top:6rem}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:max-h-\[calc\(100vh-7\.5rem\)\]{max-height:calc(100vh - 7.5rem)}.lg\:w-\[22rem\]{width:22rem}.lg\:w-\[340px\]{width:340px}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:gap-24{gap:6rem}.lg\:gap-3{gap:12px}.lg\:gap-36{gap:9rem}.lg\:gap-4{gap:16px}.lg\:gap-5{gap:20px}.lg\:border-l{border-left-width:1px}.lg\:border-t-0{border-top-width:0px}.lg\:py-16{padding-top:64px;padding-bottom:64px}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}.lg\:pb-3{padding-bottom:12px}.lg\:pl-0{padding-left:0}.lg\:pr-3{padding-right:12px}.lg\:text-\[4rem\]{font-size:4rem}.lg\:leading-\[1\.05\]{line-height:1.05}}@media(min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 24 24" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><title>Every Code</title><circle cx="12" cy="12" r="11" fill="none" stroke="currentColor" stroke-width="1.5"/><text x="12" y="16" font-family="ui-sans-serif,system-ui,sans-serif" font-size="11" font-weight="700" text-anchor="middle">Ec</text></svg>
@@ -1 +0,0 @@
1
- <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Kilo Code</title><path d="M0 0v24h24V0H0zm22.222 22.222H1.778V1.778h20.444v20.444zm-7.555-4.964h2.222v1.778h-2.794L12.89 17.83v-2.794h1.778v2.222zm4 0h-1.778v-2.222h-2.222v-1.778h2.793l1.207 1.207v2.793zm-7.556-2.591H9.333v-1.778h1.778v1.778zm-5.778-1.778h1.778v4h4v1.778H6.54L5.333 17.46V12.89zm13.334-3.556v1.778h-5.778V9.333h1.987V7.111h-1.987V5.333h2.558l1.206 1.207v2.793h2.014zm-11.556-2h2.222l1.778 1.778v2H9.333v-2H7.111v2H5.333V5.333h1.778v2zm4 0H9.333v-2h1.778v2z"></path></svg>
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 24 24" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><title>oh-my-pi</title><circle cx="12" cy="12" r="11" fill="none" stroke="currentColor" stroke-width="1.5"/><text x="12" y="17" font-family="ui-serif,Georgia,serif" font-size="14" font-weight="600" text-anchor="middle">π</text></svg>
@@ -1,60 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Token Tracker Share</title>
7
- <meta name="description" content="Share a Token Tracker dashboard snapshot with token usage insights across models, projects, and time windows." />
8
- <meta property="og:site_name" content="Token Tracker" />
9
- <meta property="og:title" content="Token Tracker Share" />
10
- <meta property="og:description" content="Share a Token Tracker dashboard snapshot with token usage insights across models, projects, and time windows." />
11
- <meta property="og:image" content="https://www.tokentracker.cc/dashboard-dark.png" />
12
- <meta property="og:type" content="website" />
13
- <meta property="og:url" content="https://www.tokentracker.cc/share" />
14
- <meta name="twitter:card" content="summary_large_image" />
15
- <meta name="twitter:title" content="Token Tracker Share" />
16
- <meta name="twitter:description" content="Share a Token Tracker dashboard snapshot with token usage insights across models, projects, and time windows." />
17
- <meta name="twitter:image" content="https://www.tokentracker.cc/dashboard-dark.png" />
18
- <style>
19
- :root {
20
- color-scheme: dark;
21
- }
22
-
23
- body {
24
- margin: 0;
25
- min-height: 100vh;
26
- display: flex;
27
- justify-content: center;
28
- align-items: flex-start;
29
- background: #050b08;
30
- }
31
-
32
- .frame {
33
- width: min(920px, 100%);
34
- padding: 24px 12px 48px;
35
- box-sizing: border-box;
36
- }
37
-
38
- img {
39
- width: 100%;
40
- height: auto;
41
- display: block;
42
- border-radius: 16px;
43
- box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
44
- }
45
- </style>
46
- </head>
47
- <body>
48
- <main class="frame">
49
- <img src="/wrapped-2025.png" alt="Share a Token Tracker dashboard snapshot with token usage insights across models, projects, and time windows." />
50
- </main>
51
- <script>
52
- (function () {
53
- var host = window.location.hostname;
54
- if (host === "www.tokentracker.cc") {
55
- window.location.replace("/");
56
- }
57
- })();
58
- </script>
59
- </body>
60
- </html>
@@ -1,41 +0,0 @@
1
- const { checkAndActivate } = require("../lib/activation-check");
2
-
3
- /**
4
- * 检测并激活未配置的 AI CLI 集成
5
- * 用于 hooks 或其他触发器调用
6
- */
7
- async function cmdActivateIfNeeded(argv) {
8
- const opts = parseArgs(argv);
9
-
10
- const results = await checkAndActivate({
11
- silent: opts.silent,
12
- autoConfigure: true,
13
- });
14
-
15
- if (!opts.silent) {
16
- if (results.length === 0) {
17
- console.log("所有 AI CLI 集成已配置完成");
18
- } else {
19
- for (const r of results) {
20
- const icon = r.action === "configured" ? "✅" : "❌";
21
- console.log(`${icon} ${r.displayName}: ${r.action}`);
22
- }
23
- }
24
- }
25
-
26
- // 如果有任何配置成功,返回 0,否则返回 1
27
- const hasSuccess = results.some(r => r.action === "configured");
28
- process.exitCode = hasSuccess ? 0 : 0; // 始终返回 0,不阻塞调用方
29
- }
30
-
31
- function parseArgs(argv) {
32
- const out = {
33
- silent: false,
34
- };
35
- for (const a of argv) {
36
- if (a === "--silent") out.silent = true;
37
- }
38
- return out;
39
- }
40
-
41
- module.exports = { cmdActivateIfNeeded };