claude-code-session-manager 0.35.11 → 0.35.14

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.
@@ -1525,6 +1525,8 @@ async function spawnJob(job, runId, runDir, defaultCwd) {
1525
1525
 
1526
1526
  let actuallyFailed = false;
1527
1527
  let failedJobSnapshot = null;
1528
+ let needsInvestigationNow = false;
1529
+ let investigationJobSnapshot = null;
1528
1530
  await mutate((s) => {
1529
1531
  const i2 = s.jobs.findIndex((x) => x.slug === job.slug);
1530
1532
  if (i2 >= 0) {
@@ -1574,6 +1576,30 @@ async function spawnJob(job, runId, runDir, defaultCwd) {
1574
1576
  if (effectiveStatus === 'failed') {
1575
1577
  actuallyFailed = true;
1576
1578
  failedJobSnapshot = { ...s.jobs[i2] };
1579
+ } else if (effectiveStatus === 'needs_review') {
1580
+ // Same-tick auto-fix (feedback 2026-07-12): rather than waiting up to
1581
+ // 10 min for reverifyNeedsReview()'s periodic pass, check right here
1582
+ // whether this job qualifies for auto-fix (same eligibility rule
1583
+ // reverifyNeedsReview uses via selectAutoFixTargets) and, if so, spawn
1584
+ // the investigation immediately. Stamp autoFixAttempted BEFORE the
1585
+ // investigation fires (mirrors reverifyNeedsReview's auto-fix section)
1586
+ // so the periodic pass 10 min later sees it already attempted and
1587
+ // does not spawn a duplicate.
1588
+ const fixSlugExists = (slug) => fs.existsSync(path.join(PRDS_DIR, `${slug}.md`));
1589
+ if (
1590
+ process.env.SM_AUTOFIX_DISABLE !== '1' &&
1591
+ isEligibleForImmediateAutoFix(s.jobs[i2], s.jobs, fixSlugExists)
1592
+ ) {
1593
+ const isNoPlanRetry = s.jobs[i2].autoFixAttempted && s.jobs[i2].autoFixOutcome === 'no-plan';
1594
+ s.jobs[i2].autoFixAttempted = true;
1595
+ if (!s.jobs[i2].runId) s.jobs[i2].runId = runId;
1596
+ if (isNoPlanRetry) {
1597
+ s.jobs[i2].autoFixRetries = (s.jobs[i2].autoFixRetries ?? 0) + 1;
1598
+ delete s.jobs[i2].autoFixOutcome;
1599
+ }
1600
+ needsInvestigationNow = true;
1601
+ investigationJobSnapshot = { ...s.jobs[i2] };
1602
+ }
1577
1603
  }
1578
1604
  // Auto-promote: when a fix-* PRD completes successfully, the original
1579
1605
  // failed PRD's work is logically done. Flip its status to 'completed'
@@ -1632,6 +1658,11 @@ async function spawnJob(job, runId, runDir, defaultCwd) {
1632
1658
  console.error('[scheduler] spawnInvestigation error', job.slug, e);
1633
1659
  });
1634
1660
  }
1661
+ } else if (needsInvestigationNow && investigationJobSnapshot) {
1662
+ console.log(`[scheduler] needs_review ${job.slug} → immediate auto-fix investigation (not waiting for periodic reverify)`);
1663
+ spawnInvestigation(investigationJobSnapshot, runDir).catch((e) => {
1664
+ console.error('[scheduler] spawnInvestigation error', job.slug, e);
1665
+ });
1635
1666
  }
1636
1667
  } catch (e) {
1637
1668
  console.error('[scheduler] spawnJob error', job.slug, e);
@@ -1652,20 +1683,21 @@ function tickQueue() {
1652
1683
  const state = await readQueue();
1653
1684
  if (state.paused) {
1654
1685
  console.log('[scheduler] tickQueue skipped: paused');
1655
- return;
1686
+ return { fired: false, reason: 'paused' };
1656
1687
  }
1657
- if (cancelToken.cancelled) return;
1688
+ if (cancelToken.cancelled) return { fired: false, reason: 'cancelled' };
1658
1689
 
1659
1690
  await reconcile(state);
1660
1691
  const cap = ENV_CAP ?? state.config.concurrencyCap;
1661
- const batch = pickNextBatch(state.jobs, runningSet, cap);
1692
+ const { batch, reason: holdReason } = pickNextBatch(state.jobs, runningSet, cap);
1662
1693
  if (batch.length === 0) {
1663
1694
  // Queue drained — run the definition-of-done gate fire-and-forget.
1664
1695
  // Non-blocking: does not hold the mutate lock; errors are logged, not thrown.
1665
1696
  runDefinitionOfDoneOnDrain(state, { cancelToken }).catch((err) => {
1666
1697
  console.log(`[scheduler] dod-drain: ${err?.message ?? String(err)}`);
1667
1698
  });
1668
- return;
1699
+ if (holdReason) return { fired: false, reason: 'held', detail: holdReason };
1700
+ return { fired: false, reason: 'drained' };
1669
1701
  }
1670
1702
 
1671
1703
  const availableMb = getAvailableMemMb();
@@ -1678,7 +1710,7 @@ function tickQueue() {
1678
1710
  const threshold = RESERVED_HOST_MB + MIN_FREE_MB_PER_JOB * (runningSet.size + 1);
1679
1711
  console.log(`[scheduler] memory gate: available=${availableMb} MB < threshold=${threshold} MB (host reserve ${RESERVED_HOST_MB} + ${MIN_FREE_MB_PER_JOB}/job × ${runningSet.size + 1}) — deferring ${batch.length} job(s)`);
1680
1712
  lastMemGate = { availableMb, threshold, deferred: true, at: new Date().toISOString() };
1681
- return;
1713
+ return { fired: false, reason: 'memory-deferred', deferredCount: batch.length, availableMb, threshold };
1682
1714
  }
1683
1715
  const gatedBatch = batch.slice(0, allowed);
1684
1716
  if (gatedBatch.length < batch.length) {
@@ -1699,22 +1731,50 @@ function tickQueue() {
1699
1731
  // spawnJob is fire-and-forget; it calls tickQueue() on completion.
1700
1732
  spawnJob(job, runId, runDir, state.config.defaultCwd).catch(() => {});
1701
1733
  }
1734
+ return { fired: true, count: gatedBatch.length, group: gatedBatch[0]?.parallelGroup };
1702
1735
  });
1703
1736
  tickTail = next.catch(() => {});
1704
1737
  return next;
1705
1738
  }
1706
1739
 
1740
+ // Translates a tickQueue()/runDueJobs() outcome descriptor into a renderer-facing
1741
+ // ActionOutcome for the schedule:force-tick IPC handler.
1742
+ function forceTickOutcome(result) {
1743
+ if (!result) return { ok: true, kind: 'info', message: 'No pending jobs' };
1744
+ if (result.fired) {
1745
+ const groupSuffix = result.group !== undefined ? ` (group g${result.group})` : '';
1746
+ return { ok: true, kind: 'info', message: `Fired ${result.count} job(s)${groupSuffix}` };
1747
+ }
1748
+ switch (result.reason) {
1749
+ case 'drained':
1750
+ return { ok: true, kind: 'info', message: 'No pending jobs' };
1751
+ case 'paused':
1752
+ return { ok: true, kind: 'warn', message: 'Scheduler is paused' };
1753
+ case 'cancelled':
1754
+ return { ok: true, kind: 'warn', message: 'Batch cancelled — try again' };
1755
+ case 'memory-deferred':
1756
+ return { ok: true, kind: 'warn', message: `Deferred ${result.deferredCount} job(s) — low memory (${result.availableMb} MB available, need ${result.threshold} MB)` };
1757
+ case 'held': {
1758
+ const detail = String(result.detail ?? '').replace(/^\[scheduler\]\s*[\w-]+\s*(?:\[[^\]]*\])?:\s*/, '');
1759
+ return { ok: true, kind: 'warn', message: detail || 'Batch held' };
1760
+ }
1761
+ default:
1762
+ return { ok: true, kind: 'info', message: 'No pending jobs' };
1763
+ }
1764
+ }
1765
+
1707
1766
  async function runDueJobs() {
1708
1767
  const state = await readQueue();
1709
1768
  if (state.paused) {
1710
1769
  console.log('[scheduler] runDueJobs skipped: paused');
1711
- return;
1770
+ return { fired: false, reason: 'paused' };
1712
1771
  }
1713
1772
  cancelToken = { cancelled: false };
1714
- await tickQueue();
1773
+ const result = await tickQueue();
1715
1774
  // Clear the one-shot scheduledFor without waiting for jobs to settle.
1716
1775
  await mutate((s) => { s.scheduledFor = null; });
1717
1776
  await broadcast();
1777
+ return result;
1718
1778
  }
1719
1779
 
1720
1780
  // ---------- when-available launch logic ----------
@@ -2067,6 +2127,24 @@ function selectAutoFixTargets(jobs, { fixSlugExists, resolveJobRunId = resolveRu
2067
2127
  });
2068
2128
  }
2069
2129
 
2130
+ /**
2131
+ * Pure helper — no I/O by default (fixSlugExists is injectable). Answers
2132
+ * "does this single needs_review job qualify for an auto-fix investigation
2133
+ * right now?" by delegating to selectAutoFixTargets's eligibility rules
2134
+ * (same-1-attempt cap, depth cap, no fix sibling) against the full job list,
2135
+ * then checking whether this job is among the returned targets. Shared by
2136
+ * spawnJob's immediate same-tick path and (indirectly, via
2137
+ * selectAutoFixTargets itself) reverifyNeedsReview's periodic path, so both
2138
+ * use one eligibility definition rather than two divergent copies.
2139
+ */
2140
+ function isEligibleForImmediateAutoFix(job, allJobs, fixSlugExists) {
2141
+ const targets = selectAutoFixTargets(allJobs, {
2142
+ fixSlugExists,
2143
+ resolveJobRunId: () => job.runId,
2144
+ });
2145
+ return targets.some((t) => t.slug === job.slug);
2146
+ }
2147
+
2070
2148
  async function reverifyNeedsReview() {
2071
2149
  const snap = await readQueue();
2072
2150
  const candidates = snap.jobs.filter(isRescanCandidate);
@@ -2098,7 +2176,6 @@ async function reverifyNeedsReview() {
2098
2176
  }
2099
2177
  if (healed.length) {
2100
2178
  const healSet = new Set(healed);
2101
- const promoted = [];
2102
2179
  await mutate((s) => {
2103
2180
  for (const j of s.jobs) {
2104
2181
  if (j.status === 'needs_review' && healSet.has(j.slug)) {
@@ -2107,32 +2184,8 @@ async function reverifyNeedsReview() {
2107
2184
  delete j.verifierVerdict;
2108
2185
  }
2109
2186
  }
2110
- // Mirror the live-completion auto-promote (spawnJob, ~line 1583): a
2111
- // healed fix-plan job means its original's work is logically done too.
2112
- // Without this, a job healed here (boot/periodic reverify) never
2113
- // releases its original from needs_review — only a fix-plan job that
2114
- // completes during a live run gets promoted, leaving the boot-heal
2115
- // path unable to fully resolve the fix-plan lineages it just healed
2116
- // (2026-07-12: 521-fix-*/523-fix-* healed but their originals stayed
2117
- // stuck needs_review).
2118
- for (const slug of healed) {
2119
- if (!isFixPlanSlug(slug)) continue;
2120
- const orig = healTargetForFix(slug, s.jobs);
2121
- if (orig) {
2122
- const priorStatus = orig.status;
2123
- orig.status = 'completed';
2124
- orig.exitCode = 0;
2125
- orig.error = null;
2126
- orig.completedBy = slug;
2127
- if (priorStatus === 'needs_review') delete orig.verifierVerdict;
2128
- promoted.push(`${orig.slug} (was ${priorStatus})`);
2129
- }
2130
- }
2131
2187
  });
2132
2188
  console.log(`[scheduler] boot reverify: healed ${healed.length} stale needs_review → completed (${healed.join(', ')})`);
2133
- if (promoted.length) {
2134
- console.log(`[scheduler] boot reverify: auto-promoted ${promoted.length} original(s) via healed fix-plan job(s): ${promoted.join(', ')}`);
2135
- }
2136
2189
  await broadcast();
2137
2190
  }
2138
2191
  if (leftForReview.length) {
@@ -2140,6 +2193,38 @@ async function reverifyNeedsReview() {
2140
2193
  console.log(`[scheduler] boot reverify: left for review: ${detail}`);
2141
2194
  }
2142
2195
 
2196
+ // Mirror the live-completion auto-promote (spawnJob, ~line 1583): ANY
2197
+ // completed fix-plan job whose original is still needs_review/failed means
2198
+ // the original's work is logically done. Runs every pass (not just against
2199
+ // jobs healed THIS pass) and over ALL completed fix-plan jobs, not just
2200
+ // ones just-healed above — a fix-plan job healed by a PRIOR boot/periodic
2201
+ // pass, or completed via a live run, is just as valid a promotion source.
2202
+ // Idempotent: an already-promoted original has status !== 'needs_review'/
2203
+ // 'failed', so isPromotableOriginal excludes it on repeat passes — safe to
2204
+ // re-run unconditionally. (2026-07-12: 521-fix-*/523-fix-* healed on one
2205
+ // boot but their originals stayed stuck needs_review on every subsequent
2206
+ // boot/tick, because the promotion only ran inside `if (healed.length)`
2207
+ // scoped to that single pass's fresh heals.)
2208
+ const promoted = [];
2209
+ await mutate((s) => {
2210
+ for (const job of s.jobs) {
2211
+ if (job.status !== 'completed' || !isFixPlanSlug(job.slug)) continue;
2212
+ const orig = healTargetForFix(job.slug, s.jobs);
2213
+ if (!orig) continue;
2214
+ const priorStatus = orig.status;
2215
+ orig.status = 'completed';
2216
+ orig.exitCode = 0;
2217
+ orig.error = null;
2218
+ orig.completedBy = job.slug;
2219
+ if (priorStatus === 'needs_review') delete orig.verifierVerdict;
2220
+ promoted.push(`${orig.slug} (was ${priorStatus}, via ${job.slug})`);
2221
+ }
2222
+ });
2223
+ if (promoted.length) {
2224
+ console.log(`[scheduler] boot reverify: auto-promoted ${promoted.length} original(s): ${promoted.join(', ')}`);
2225
+ await broadcast();
2226
+ }
2227
+
2143
2228
  // Surface needs_review jobs that can never self-heal or get an auto-fix
2144
2229
  // investigation (no runId, no backfillable run dir) instead of leaving
2145
2230
  // them silently stranded. Also surface no-plan auto-fix jobs whose one
@@ -2256,8 +2341,13 @@ function registerScheduleHandlers() {
2256
2341
  // Bypass the billing-poll gate entirely — fire pending jobs immediately regardless of meter state.
2257
2342
  // Clears any existing pause first (same semantics as run-now).
2258
2343
  await clearPause('run-now');
2259
- runDueJobs().catch((e) => logs.writeLine({ level: 'error', scope: 'scheduler', message: 'runDueJobs error (force-tick)', meta: { error: e?.message } }));
2260
- return { ok: true };
2344
+ try {
2345
+ const result = await runDueJobs();
2346
+ return forceTickOutcome(result);
2347
+ } catch (e) {
2348
+ logs.writeLine({ level: 'error', scope: 'scheduler', message: 'runDueJobs error (force-tick)', meta: { error: e?.message } });
2349
+ return { ok: false, kind: 'error', message: `Failed to fire batch: ${e?.message ?? String(e)}` };
2350
+ }
2261
2351
  });
2262
2352
 
2263
2353
  // .default({}) so callers may omit the payload entirely (same as the old `partial || {}`).
@@ -2303,12 +2393,21 @@ function registerScheduleHandlers() {
2303
2393
  // handler already reconciles on read, but this gives the renderer an
2304
2394
  // explicit refresh path that also broadcasts so all views update.
2305
2395
  ipcMain.handle('schedule:rescan', async () => {
2306
- await mutate(async (state) => {
2396
+ const { added, removed } = await mutate(async (state) => {
2397
+ const before = new Set(state.jobs.map((j) => j.slug));
2307
2398
  await reconcile(state);
2308
- return null;
2399
+ const after = new Set(state.jobs.map((j) => j.slug));
2400
+ const added = [...after].filter((slug) => !before.has(slug)).length;
2401
+ const removed = [...before].filter((slug) => !after.has(slug)).length;
2402
+ return { added, removed };
2309
2403
  });
2310
2404
  await broadcast();
2311
- return { ok: true };
2405
+ let message;
2406
+ if (added === 0 && removed === 0) message = 'Rescanned — no changes';
2407
+ else if (added > 0 && removed === 0) message = `Rescanned — ${added} new PRD(s) picked up`;
2408
+ else if (added === 0 && removed > 0) message = `Rescanned — ${removed} PRD(s) removed from disk`;
2409
+ else message = `Rescanned — ${added} new PRD(s) picked up, ${removed} removed from disk`;
2410
+ return { ok: true, kind: 'info', message };
2312
2411
  });
2313
2412
 
2314
2413
  // Archive every non-running PRD and drop its entry from queue.json.
@@ -2726,4 +2825,4 @@ const remote = {
2726
2825
  },
2727
2826
  };
2728
2827
 
2729
- module.exports = { registerScheduleHandlers, attachWindow, init, ROOT, PRDS_DIR, selectHistoryJobs, parsePorcelain, FINISH_PROTOCOL, remote, pickNextBatch, pickForProject, reapDeadRunningJobs, pollRecoveryClearSource, memoryLimitedBatchSize, availableForJobs, reverifyNeedsReview, isRescanCandidate, isPromotableOriginal, selectAutoFixTargets, resolveRunId, isUnresolvableNeedsReview, healTargetForFix, buildInvestigationPrompt, committedInWindow, isFixPlanSlug, isFixPlanBeyondDepthCap, MAX_INVESTIGATION_DEPTH };
2828
+ module.exports = { registerScheduleHandlers, attachWindow, init, ROOT, PRDS_DIR, selectHistoryJobs, parsePorcelain, FINISH_PROTOCOL, remote, pickNextBatch, pickForProject, reapDeadRunningJobs, pollRecoveryClearSource, memoryLimitedBatchSize, availableForJobs, reverifyNeedsReview, isRescanCandidate, isPromotableOriginal, selectAutoFixTargets, isEligibleForImmediateAutoFix, resolveRunId, isUnresolvableNeedsReview, healTargetForFix, buildInvestigationPrompt, committedInWindow, isFixPlanSlug, isFixPlanBeyondDepthCap, MAX_INVESTIGATION_DEPTH };
@@ -1,3 +1,9 @@
1
+ export interface ActionOutcome {
2
+ ok: boolean;
3
+ kind?: 'info' | 'warn' | 'error';
4
+ message: string;
5
+ }
6
+
1
7
  export interface SpawnResult {
2
8
  pid: number;
3
9
  cwd: string;
@@ -1216,10 +1222,10 @@ export interface SessionManagerAPI {
1216
1222
  setConfig: (partial: Partial<ScheduleConfig & { supervisor?: Partial<SupervisorConfig> }>) => Promise<{ ok: boolean; config: ScheduleConfig }>;
1217
1223
  resetJob: (slug: string) => Promise<{ ok: boolean; error?: string }>;
1218
1224
  runNow: () => Promise<{ ok: boolean }>;
1219
- forceTick: () => Promise<{ ok: boolean }>;
1225
+ forceTick: () => Promise<ActionOutcome>;
1220
1226
  resume: () => Promise<{ ok: boolean }>;
1221
1227
  /** Re-scan prds/ and merge into queue.json; broadcasts updated state. */
1222
- rescan: () => Promise<{ ok: boolean }>;
1228
+ rescan: () => Promise<ActionOutcome>;
1223
1229
  /** Move all pending+failed PRDs to prds-archived/<ISO>/ and drop their
1224
1230
  * queue entries. Completed/running entries are preserved. */
1225
1231
  clearQueue: () => Promise<{ ok: boolean; archived: number; archivedTo: string | null }>;
@@ -1,32 +0,0 @@
1
- /**
2
- * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
- * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
- * https://github.com/chjj/term.js
5
- * @license MIT
6
- *
7
- * Permission is hereby granted, free of charge, to any person obtaining a copy
8
- * of this software and associated documentation files (the "Software"), to deal
9
- * in the Software without restriction, including without limitation the rights
10
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- * copies of the Software, and to permit persons to whom the Software is
12
- * furnished to do so, subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be included in
15
- * all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- * THE SOFTWARE.
24
- *
25
- * Originally forked from (with the author's permission):
26
- * Fabrice Bellard's javascript vt100 for jslinux:
27
- * http://bellard.org/jslinux/
28
- * Copyright (c) 2011 Fabrice Bellard
29
- * The original design remains. The terminal itself
30
- * has been extended to include xterm CSI codes, among
31
- * other features.
32
- */.xterm{cursor:text;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::-moz-selection{color:transparent}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;-moz-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}*,: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:Geist,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:IBM Plex Mono,JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.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{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.-left-\[10px\]{left:-10px}.-left-\[4px\]{left:-4px}.bottom-0{bottom:0}.bottom-10{bottom:2.5rem}.bottom-2{bottom:.5rem}.bottom-3{bottom:.75rem}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.right-0{right:0}.right-1\.5{right:.375rem}.right-11{right:2.75rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-12{top:3rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-9{top:2.25rem}.top-\[38px\]{top:38px}.top-full{top:100%}.top-px{top:1px}.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-\[200\]{z-index:200}.z-\[300\]{z-index:300}.z-\[400\]{z-index:400}.z-\[55\]{z-index:55}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2 / span 2}.-m-1{margin:-.25rem}.m-0{margin:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-\[18px\]{margin-left:18px;margin-right:18px}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-\[18px\]{margin-bottom:18px}.mb-\[22px\]{margin-bottom:22px}.mb-\[5px\]{margin-bottom:5px}.mb-px{margin-bottom:1px}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-\[18px\]{margin-top:18px}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-\[10px\]{height:10px}.h-\[13px\]{height:13px}.h-\[15px\]{height:15px}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[38px\]{height:38px}.h-\[52px\]{height:52px}.h-\[7px\]{height:7px}.h-\[80vh\]{height:80vh}.h-\[90vh\]{height:90vh}.h-\[9px\]{height:9px}.h-full{height:100%}.max-h-24{max-height:6rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-full{max-height:100%}.min-h-0{min-height:0px}.min-h-32{min-height:8rem}.min-h-\[140px\]{min-height:140px}.min-h-\[200px\]{min-height:200px}.min-h-\[26px\]{min-height:26px}.min-h-\[60px\]{min-height:60px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/5{width:40%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[10px\]{width:10px}.w-\[110px\]{width:110px}.w-\[13px\]{width:13px}.w-\[15px\]{width:15px}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[240px\]{width:240px}.w-\[280px\]{width:280px}.w-\[30px\]{width:30px}.w-\[344px\]{width:344px}.w-\[34px\]{width:34px}.w-\[38px\]{width:38px}.w-\[3px\]{width:3px}.w-\[420px\]{width:420px}.w-\[52px\]{width:52px}.w-\[600px\]{width:600px}.w-\[62px\]{width:62px}.w-\[640px\]{width:640px}.w-\[7px\]{width:7px}.w-\[840px\]{width:840px}.w-\[900px\]{width:900px}.w-\[9px\]{width:9px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[104px\]{min-width:104px}.min-w-\[200px\]{min-width:200px}.min-w-\[240px\]{min-width:240px}.min-w-\[280px\]{min-width:280px}.min-w-\[3\.5em\]{min-width:3.5em}.min-w-\[6rem\]{min-width:6rem}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[80px\]{min-width:80px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[1100px\]{max-width:1100px}.max-w-\[12rem\]{max-width:12rem}.max-w-\[16ch\]{max-width:16ch}.max-w-\[16rem\]{max-width:16rem}.max-w-\[180px\]{max-width:180px}.max-w-\[18rem\]{max-width:18rem}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[22rem\]{max-width:22rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[320px\]{max-width:320px}.max-w-\[420px\]{max-width:420px}.max-w-\[440px\]{max-width:440px}.max-w-\[500px\]{max-width:500px}.max-w-\[560px\]{max-width:560px}.max-w-\[600px\]{max-width:600px}.max-w-\[620px\]{max-width:620px}.max-w-\[70\%\]{max-width:70%}.max-w-\[760px\]{max-width:760px}.max-w-\[80\%\]{max-width:80%}.max-w-\[820px\]{max-width:820px}.max-w-\[8rem\]{max-width:8rem}.max-w-\[90\%\]{max-width:90%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[95vw\]{max-width:95vw}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-\[min\(96vw\,1400px\)\]{max-width:min(96vw,1400px)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.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-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))}.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-x-3\.5{--tw-translate-x: .875rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-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-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[116px_1fr_auto_auto\]{grid-template-columns:116px 1fr auto auto}.grid-cols-\[5rem_1fr_auto\]{grid-template-columns:5rem 1fr auto}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-cols-\[repeat\(auto-fit\,minmax\(160px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.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-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-\[18px\]{gap:18px}.gap-\[2px\]{gap:2px}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-\[22px\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(22px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(22px * 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-line>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(224 211 184 / var(--tw-divide-opacity, 1))}.divide-line\/60>:not([hidden])~:not([hidden]){border-color:#e0d3b899}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[11px\]{border-radius:11px}.rounded-\[12px\]{border-radius:12px}.rounded-\[13px\]{border-radius:13px}.rounded-\[14px\]{border-radius:14px}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[7px\]{border-radius:7px}.rounded-\[9px\]{border-radius:9px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-t-\[10px\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-br-sm{border-bottom-right-radius:.125rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-sage\/40{border-color:#6f7d5266!important}.border-\[\#8e641a\]\/40{border-color:#8e641a66}.border-\[\#b8443c\]\/40{border-color:#b8443c66}.border-\[\#e8cdb9\]{--tw-border-opacity: 1;border-color:rgb(232 205 185 / var(--tw-border-opacity, 1))}.border-\[\#eccdbe\]{--tw-border-opacity: 1;border-color:rgb(236 205 190 / var(--tw-border-opacity, 1))}.border-accent{--tw-border-opacity: 1;border-color:rgb(184 92 52 / var(--tw-border-opacity, 1))}.border-accent-muted{--tw-border-opacity: 1;border-color:rgb(232 169 136 / var(--tw-border-opacity, 1))}.border-accent\/30{border-color:#b85c344d}.border-accent\/40{border-color:#b85c3466}.border-accent\/50{border-color:#b85c3480}.border-accent\/60{border-color:#b85c3499}.border-amber-400\/25{border-color:#fbbf2440}.border-amber-400\/30{border-color:#fbbf244d}.border-amber-500\/15{border-color:#f59e0b26}.border-amber-500\/25{border-color:#f59e0b40}.border-amber-500\/40{border-color:#f59e0b66}.border-amber-700{--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.border-amber-700\/50{border-color:#b4530980}.border-amber-700\/60{border-color:#b4530999}.border-amber-800\/60{border-color:#92400e99}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-900\/40{border-color:#1e3a8a66}.border-butter{--tw-border-opacity: 1;border-color:rgb(228 184 90 / var(--tw-border-opacity, 1))}.border-butter\/60{border-color:#e4b85a99}.border-green-800\/60{border-color:#16653499}.border-hive-plum{--tw-border-opacity: 1;border-color:rgb(138 90 110 / var(--tw-border-opacity, 1))}.border-hive-slate{--tw-border-opacity: 1;border-color:rgb(95 111 134 / var(--tw-border-opacity, 1))}.border-hive-teal{--tw-border-opacity: 1;border-color:rgb(79 125 114 / var(--tw-border-opacity, 1))}.border-honey\/30{border-color:#d3a23c4d}.border-line{--tw-border-opacity: 1;border-color:rgb(224 211 184 / var(--tw-border-opacity, 1))}.border-line\/30{border-color:#e0d3b84d}.border-line\/50{border-color:#e0d3b880}.border-line\/60{border-color:#e0d3b899}.border-orange-800\/60{border-color:#9a341299}.border-purple-900\/40{border-color:#581c8766}.border-red-400\/30{border-color:#f871714d}.border-red-500\/20{border-color:#ef444433}.border-red-500\/40{border-color:#ef444466}.border-red-500\/50{border-color:#ef444480}.border-red-500\/70{border-color:#ef4444b3}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-red-700\/50{border-color:#b91c1c80}.border-red-700\/60{border-color:#b91c1c99}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.border-red-800\/40{border-color:#991b1b66}.border-red-800\/60{border-color:#991b1b99}.border-red-900\/40{border-color:#7f1d1d66}.border-red-900\/50{border-color:#7f1d1d80}.border-red-900\/60{border-color:#7f1d1d99}.border-rule{--tw-border-opacity: 1;border-color:rgb(217 201 168 / var(--tw-border-opacity, 1))}.border-sage{--tw-border-opacity: 1;border-color:rgb(111 125 82 / var(--tw-border-opacity, 1))}.border-sage\/30{border-color:#6f7d524d}.border-sage\/40{border-color:#6f7d5266}.border-sage\/50{border-color:#6f7d5280}.border-sage\/60{border-color:#6f7d5299}.border-transparent{border-color:transparent}.border-white\/10{border-color:#ffffff1a}.border-white\/5{border-color:#ffffff0d}.border-yellow-600\/50{border-color:#ca8a0480}.border-yellow-600\/60{border-color:#ca8a0499}.border-yellow-800\/40{border-color:#854d0e66}.border-yellow-900\/40{border-color:#713f1266}.bg-\[\#2a2118\]{--tw-bg-opacity: 1;background-color:rgb(42 33 24 / var(--tw-bg-opacity, 1))}.bg-\[\#8e641a\]\/10{background-color:#8e641a1a}.bg-\[\#b8443c\]\/10{background-color:#b8443c1a}.bg-\[\#c0503a\]{--tw-bg-opacity: 1;background-color:rgb(192 80 58 / var(--tw-bg-opacity, 1))}.bg-\[\#c0503a\]\/20{background-color:#c0503a33}.bg-\[\#e4ebd6\]{--tw-bg-opacity: 1;background-color:rgb(228 235 214 / var(--tw-bg-opacity, 1))}.bg-\[\#e5ecd8\]{--tw-bg-opacity: 1;background-color:rgb(229 236 216 / var(--tw-bg-opacity, 1))}.bg-\[\#f0d9c8\]{--tw-bg-opacity: 1;background-color:rgb(240 217 200 / var(--tw-bg-opacity, 1))}.bg-\[\#f5e9df\]{--tw-bg-opacity: 1;background-color:rgb(245 233 223 / var(--tw-bg-opacity, 1))}.bg-\[\#f8e8e0\]{--tw-bg-opacity: 1;background-color:rgb(248 232 224 / var(--tw-bg-opacity, 1))}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(184 92 52 / var(--tw-bg-opacity, 1))}.bg-accent-muted\/30{background-color:#e8a9884d}.bg-accent-muted\/40{background-color:#e8a98866}.bg-accent\/10{background-color:#b85c341a}.bg-accent\/15{background-color:#b85c3426}.bg-accent\/20{background-color:#b85c3433}.bg-accent\/\[0\.06\]{background-color:#b85c340f}.bg-amber-100\/40{background-color:#fef3c766}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-400\/10{background-color:#fbbf241a}.bg-amber-400\/15{background-color:#fbbf2426}.bg-amber-400\/20{background-color:#fbbf2433}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/20{background-color:#f59e0b33}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-amber-950\/10{background-color:#451a031a}.bg-amber-950\/50{background-color:#451a0380}.bg-amber-950\/60{background-color:#451a0399}.bg-bg{--tw-bg-opacity: 1;background-color:rgb(246 239 225 / var(--tw-bg-opacity, 1))}.bg-bg-elev{--tw-bg-opacity: 1;background-color:rgb(239 230 211 / var(--tw-bg-opacity, 1))}.bg-bg-elev\/40{background-color:#efe6d366}.bg-bg-elev\/50{background-color:#efe6d380}.bg-bg-elev\/60{background-color:#efe6d399}.bg-bg-elev\/80{background-color:#efe6d3cc}.bg-bg-elev\/85{background-color:#efe6d3d9}.bg-bg-hi{--tw-bg-opacity: 1;background-color:rgb(251 246 236 / var(--tw-bg-opacity, 1))}.bg-bg-hi\/40{background-color:#fbf6ec66}.bg-bg\/40{background-color:#f6efe166}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/65{background-color:#000000a6}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-950\/30{background-color:#1725544d}.bg-butter{--tw-bg-opacity: 1;background-color:rgb(228 184 90 / var(--tw-bg-opacity, 1))}.bg-butter\/20{background-color:#e4b85a33}.bg-butter\/25{background-color:#e4b85a40}.bg-butter\/30{background-color:#e4b85a4d}.bg-current{background-color:currentColor}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-fg{--tw-bg-opacity: 1;background-color:rgb(42 34 26 / var(--tw-bg-opacity, 1))}.bg-fg-faint{--tw-bg-opacity: 1;background-color:rgb(138 122 96 / var(--tw-bg-opacity, 1))}.bg-fg\/5{background-color:#2a221a0d}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-900\/30{background-color:#14532d4d}.bg-green-950\/50{background-color:#052e1680}.bg-hive-plum{--tw-bg-opacity: 1;background-color:rgb(138 90 110 / var(--tw-bg-opacity, 1))}.bg-hive-slate{--tw-bg-opacity: 1;background-color:rgb(95 111 134 / var(--tw-bg-opacity, 1))}.bg-hive-teal{--tw-bg-opacity: 1;background-color:rgb(79 125 114 / var(--tw-bg-opacity, 1))}.bg-honey{--tw-bg-opacity: 1;background-color:rgb(211 162 60 / var(--tw-bg-opacity, 1))}.bg-honey\/10{background-color:#d3a23c1a}.bg-honey\/15{background-color:#d3a23c26}.bg-line{--tw-bg-opacity: 1;background-color:rgb(224 211 184 / var(--tw-bg-opacity, 1))}.bg-orange-950\/50{background-color:#43140780}.bg-purple-950\/30{background-color:#3b07644d}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/5{background-color:#ef44440d}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-red-950{--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.bg-red-950\/10{background-color:#450a0a1a}.bg-red-950\/20{background-color:#450a0a33}.bg-red-950\/30{background-color:#450a0a4d}.bg-red-950\/40{background-color:#450a0a66}.bg-red-950\/50{background-color:#450a0a80}.bg-red-950\/60{background-color:#450a0a99}.bg-red-950\/95{background-color:#450a0af2}.bg-rule{--tw-bg-opacity: 1;background-color:rgb(217 201 168 / var(--tw-bg-opacity, 1))}.bg-sage{--tw-bg-opacity: 1;background-color:rgb(111 125 82 / var(--tw-bg-opacity, 1))}.bg-sage\/10{background-color:#6f7d521a}.bg-sage\/15{background-color:#6f7d5226}.bg-sage\/20{background-color:#6f7d5233}.bg-sage\/25{background-color:#6f7d5240}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-950\/20{background-color:#42200633}.bg-yellow-950\/30{background-color:#4220064d}.bg-zinc-500{--tw-bg-opacity: 1;background-color:rgb(113 113 122 / var(--tw-bg-opacity, 1))}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-14{padding-left:3.5rem;padding-right:3.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.px-\[15px\]{padding-left:15px;padding-right:15px}.px-\[18px\]{padding-left:18px;padding-right:18px}.px-\[22px\]{padding-left:22px;padding-right:22px}.px-\[9px\]{padding-left:9px;padding-right:9px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-9{padding-top:2.25rem;padding-bottom:2.25rem}.py-\[14px\]{padding-top:14px;padding-bottom:14px}.py-\[15px\]{padding-top:15px;padding-bottom:15px}.py-\[18px\]{padding-top:18px;padding-bottom:18px}.py-\[22px\]{padding-top:22px;padding-bottom:22px}.py-\[3px\]{padding-top:3px;padding-bottom:3px}.py-\[7px\]{padding-top:7px;padding-bottom:7px}.py-\[9px\]{padding-top:9px;padding-bottom:9px}.py-px{padding-top:1px;padding-bottom:1px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-7{padding-bottom:1.75rem}.pb-\[10px\]{padding-bottom:10px}.pb-\[15px\]{padding-bottom:15px}.pb-\[9px\]{padding-bottom:9px}.pl-1{padding-left:.25rem}.pl-12{padding-left:3rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-9{padding-left:2.25rem}.pl-\[3\.75rem\]{padding-left:3.75rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.pt-\[12vh\]{padding-top:12vh}.pt-\[14px\]{padding-top:14px}.pt-\[15px\]{padding-top:15px}.pt-\[15vh\]{padding-top:15vh}.pt-\[8vh\]{padding-top:8vh}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:IBM Plex Mono,JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.font-sans{font-family:Geist,system-ui,sans-serif}.font-serif{font-family:Newsreader,Georgia,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14\.5px\]{font-size:14.5px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[19px\]{font-size:19px}.text-\[22px\]{font-size:22px}.text-\[30px\]{font-size:30px}.text-\[34px\]{font-size:34px}.text-\[38px\]{font-size:38px}.text-\[40px\]{font-size:40px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.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-\[1\.1\]{line-height:1.1}.leading-\[1\.45\]{line-height:1.45}.leading-\[1\.4\]{line-height:1.4}.leading-\[1\.55\]{line-height:1.55}.leading-\[1\.5\]{line-height:1.5}.leading-loose{line-height:2}.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\.01em\]{letter-spacing:-.01em}.tracking-\[0\.01em\]{letter-spacing:.01em}.tracking-\[0\.06em\]{letter-spacing:.06em}.tracking-\[0\.07em\]{letter-spacing:.07em}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-\[0\.6px\]{letter-spacing:.6px}.tracking-\[0\.7px\]{letter-spacing:.7px}.tracking-\[0\.8px\]{letter-spacing:.8px}.tracking-\[6px\]{letter-spacing:6px}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.\!text-sage{--tw-text-opacity: 1 !important;color:rgb(111 125 82 / var(--tw-text-opacity, 1))!important}.text-\[\#7a5416\]{--tw-text-opacity: 1;color:rgb(122 84 22 / var(--tw-text-opacity, 1))}.text-\[\#8a2f28\]{--tw-text-opacity: 1;color:rgb(138 47 40 / var(--tw-text-opacity, 1))}.text-\[\#9a3f1f\]{--tw-text-opacity: 1;color:rgb(154 63 31 / var(--tw-text-opacity, 1))}.text-\[\#c0503a\]{--tw-text-opacity: 1;color:rgb(192 80 58 / var(--tw-text-opacity, 1))}.text-\[\#e8ddc9\]{--tw-text-opacity: 1;color:rgb(232 221 201 / var(--tw-text-opacity, 1))}.text-accent{--tw-text-opacity: 1;color:rgb(184 92 52 / var(--tw-text-opacity, 1))}.text-accent-dark{--tw-text-opacity: 1;color:rgb(129 64 36 / var(--tw-text-opacity, 1))}.text-accent\/80{color:#b85c34cc}.text-accent\/90{color:#b85c34e6}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-400\/70{color:#fbbf24b3}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-bg{--tw-text-opacity: 1;color:rgb(246 239 225 / var(--tw-text-opacity, 1))}.text-blue-300\/90{color:#93c5fde6}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-400\/80{color:#60a5facc}.text-butter{--tw-text-opacity: 1;color:rgb(228 184 90 / var(--tw-text-opacity, 1))}.text-fg{--tw-text-opacity: 1;color:rgb(42 34 26 / var(--tw-text-opacity, 1))}.text-fg-dim{--tw-text-opacity: 1;color:rgb(91 74 54 / var(--tw-text-opacity, 1))}.text-fg-faint{--tw-text-opacity: 1;color:rgb(138 122 96 / var(--tw-text-opacity, 1))}.text-fg-faint\/30{color:#8a7a604d}.text-fg-faint\/40{color:#8a7a6066}.text-fg-faint\/50{color:#8a7a6080}.text-fg-faint\/60{color:#8a7a6099}.text-fg-faint\/70{color:#8a7a60b3}.text-fg\/40{color:#2a221a66}.text-fg\/50{color:#2a221a80}.text-fg\/70{color:#2a221ab3}.text-fg\/85{color:#2a221ad9}.text-green-200{--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-400\/70{color:#4ade80b3}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-500\/70{color:#22c55eb3}.text-hive-plum{--tw-text-opacity: 1;color:rgb(138 90 110 / var(--tw-text-opacity, 1))}.text-hive-slate{--tw-text-opacity: 1;color:rgb(95 111 134 / var(--tw-text-opacity, 1))}.text-hive-teal{--tw-text-opacity: 1;color:rgb(79 125 114 / var(--tw-text-opacity, 1))}.text-honey-dark{--tw-text-opacity: 1;color:rgb(123 86 14 / var(--tw-text-opacity, 1))}.text-orange-200{--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.text-purple-400\/80{color:#c084fccc}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-300\/70{color:#fca5a5b3}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\/60{color:#f8717199}.text-red-400\/70{color:#f87171b3}.text-red-400\/80{color:#f87171cc}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-rule{--tw-text-opacity: 1;color:rgb(217 201 168 / var(--tw-text-opacity, 1))}.text-sage{--tw-text-opacity: 1;color:rgb(111 125 82 / var(--tw-text-opacity, 1))}.text-sage-dark{--tw-text-opacity: 1;color:rgb(78 87 57 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/75{color:#ffffffbf}.text-yellow-200{--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.text-yellow-300{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-400\/80{color:#facc15cc}.text-yellow-500\/70{color:#eab308b3}.text-yellow-500\/80{color:#eab308cc}.text-yellow-500\/90{color:#eab308e6}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-fg-faint::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(138 122 96 / var(--tw-placeholder-opacity, 1))}.placeholder-fg-faint::placeholder{--tw-placeholder-opacity: 1;color:rgb(138 122 96 / var(--tw-placeholder-opacity, 1))}.accent-accent{accent-color:#b85c34}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(184\,92\,52\,0\.25\)\]{--tw-shadow: 0 0 0 1px rgba(184,92,52,.25);--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_0_\#e0d3b8\]{--tw-shadow: 0 2px 0 #e0d3b8;--tw-shadow-colored: 0 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-\[0_2px_0_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow: 0 2px 0 rgba(0,0,0,.18);--tw-shadow-colored: 0 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-\[inset_0_0_0_1px\]{--tw-shadow: inset 0 0 0 1px;--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-line{--tw-shadow-color: #e0d3b8;--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.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-accent{--tw-ring-opacity: 1;--tw-ring-color: rgb(184 92 52 / var(--tw-ring-opacity, 1))}.ring-accent\/20{--tw-ring-color: rgb(184 92 52 / .2)}.ring-butter{--tw-ring-opacity: 1;--tw-ring-color: rgb(228 184 90 / var(--tw-ring-opacity, 1))}.ring-hive-plum{--tw-ring-opacity: 1;--tw-ring-color: rgb(138 90 110 / var(--tw-ring-opacity, 1))}.ring-hive-slate{--tw-ring-opacity: 1;--tw-ring-color: rgb(95 111 134 / var(--tw-ring-opacity, 1))}.ring-hive-teal{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 125 114 / var(--tw-ring-opacity, 1))}.ring-line{--tw-ring-opacity: 1;--tw-ring-color: rgb(224 211 184 / var(--tw-ring-opacity, 1))}.ring-red-400{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.ring-red-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.ring-sage{--tw-ring-opacity: 1;--tw-ring-color: rgb(111 125 82 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.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-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)}.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-\[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-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[writing-mode\:vertical-rl\]{writing-mode:vertical-rl}.burn-proj-stripe{background-image:repeating-linear-gradient(45deg,#6f7d52 0px,#6f7d52 4px,transparent 4px,transparent 8px)}.tiptap-content h1{font-size:1.5rem;font-weight:600;margin:.75rem 0 .5rem;line-height:1.3;color:#2a221a;font-family:Newsreader,Georgia,serif}.tiptap-content h2{font-size:1.25rem;font-weight:600;margin:.75rem 0 .4rem;line-height:1.3;color:#2a221a;font-family:Newsreader,Georgia,serif}.tiptap-content h3{font-size:1.1rem;font-weight:600;margin:.6rem 0 .3rem;line-height:1.3;color:#2a221a;font-family:Newsreader,Georgia,serif}.tiptap-content p{margin:.4rem 0;color:#2a221a;line-height:1.6}.tiptap-content ul{list-style:disc;padding-left:1.5rem;margin:.4rem 0;color:#2a221a}.tiptap-content ol{list-style:decimal;padding-left:1.5rem;margin:.4rem 0;color:#2a221a}.tiptap-content li{margin:.15rem 0}.tiptap-content blockquote{border-left:3px solid #d9c9a8;padding-left:.75rem;color:#5b4a36;margin:.4rem 0;font-style:italic}.tiptap-content code{background:#fbf6ec;color:#b85c34;padding:.1em .35em;border-radius:3px;font-size:.88em;font-family:IBM Plex Mono,ui-monospace,monospace;border:1px solid #e0d3b8}.tiptap-content pre{background:#fbf6ec;color:#2a221a;padding:.75rem 1rem;border-radius:6px;overflow-x:auto;margin:.5rem 0;font-size:.85em;font-family:IBM Plex Mono,ui-monospace,monospace;border:1px solid #e0d3b8}.tiptap-content pre code{background:none;padding:0;color:inherit;font-size:inherit;border:0}.tiptap-content a{color:#b85c34;text-decoration:underline}.tiptap-content hr{border:none;border-top:1px solid #d9c9a8;margin:.75rem 0}.tiptap-content strong{font-weight:600}.tiptap-content em{font-style:italic}.tiptap-content:focus{outline:none}.markdown-body{color:#2a221a}.markdown-body h1{font-size:1.9rem;font-weight:600;margin:1.4rem 0 .7rem;line-height:1.25;font-family:Newsreader,Georgia,serif}.markdown-body h2{font-size:1.5rem;font-weight:600;margin:1.2rem 0 .6rem;line-height:1.3;font-family:Newsreader,Georgia,serif;border-bottom:1px solid #e6dcc4;padding-bottom:.2rem}.markdown-body h3{font-size:1.2rem;font-weight:600;margin:1rem 0 .4rem;line-height:1.3;font-family:Newsreader,Georgia,serif}.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;margin:.8rem 0 .3rem;font-family:Newsreader,Georgia,serif}.markdown-body p{margin:.6rem 0;line-height:1.7}.markdown-body ul{list-style:disc;padding-left:1.6rem;margin:.5rem 0}.markdown-body ol{list-style:decimal;padding-left:1.6rem;margin:.5rem 0}.markdown-body li{margin:.2rem 0;line-height:1.6}.markdown-body li>input[type=checkbox]{margin-right:.4rem}.markdown-body blockquote{border-left:3px solid #d9c9a8;padding-left:.85rem;color:#5b4a36;margin:.6rem 0;font-style:italic}.markdown-body code{background:#fbf6ec;color:#b85c34;padding:.1em .35em;border-radius:3px;font-size:.88em;font-family:IBM Plex Mono,ui-monospace,monospace;border:1px solid #e0d3b8}.markdown-body pre{background:#fbf6ec;color:#2a221a;padding:.8rem 1rem;border-radius:6px;overflow-x:auto;margin:.7rem 0;font-size:.85em;font-family:IBM Plex Mono,ui-monospace,monospace;border:1px solid #e0d3b8}.markdown-body pre code{background:none;padding:0;color:inherit;font-size:inherit;border:0}.markdown-body a{color:#b85c34;text-decoration:underline}.markdown-body hr{border:none;border-top:1px solid #d9c9a8;margin:1rem 0}.markdown-body strong{font-weight:600}.markdown-body em{font-style:italic}.markdown-body img{max-width:100%;border-radius:4px}.markdown-body table{border-collapse:collapse;margin:.7rem 0;font-size:.9em}.markdown-body th,.markdown-body td{border:1px solid #e0d3b8;padding:.35rem .6rem;text-align:left}.markdown-body th{background:#f1e7d2;font-weight:600}.markdown-body h1[id],.markdown-body h2[id],.markdown-body h3[id]{scroll-margin-top:1rem}.prose-chat--plan{border:1px solid #8e641a40;border-radius:14px;background:#8e641a0d}.prose-chat--plan ul,.prose-chat--plan ol{list-style:none;padding-left:1.4rem;margin:.4rem 0}.prose-chat--plan li{position:relative;margin:.3rem 0}.prose-chat--plan li:before{content:"✓";position:absolute;left:-1.4rem;color:#4d7a4d;font-weight:600}html,body,#root{height:100%;margin:0;overflow:hidden}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#efe6d3}::-webkit-scrollbar-thumb{background:#d9c9a8;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#c8b88f}.placeholder\:text-fg-dim::-moz-placeholder{--tw-text-opacity: 1;color:rgb(91 74 54 / var(--tw-text-opacity, 1))}.placeholder\:text-fg-dim::placeholder{--tw-text-opacity: 1;color:rgb(91 74 54 / var(--tw-text-opacity, 1))}.placeholder\:text-fg-faint::-moz-placeholder{--tw-text-opacity: 1;color:rgb(138 122 96 / var(--tw-text-opacity, 1))}.placeholder\:text-fg-faint::placeholder{--tw-text-opacity: 1;color:rgb(138 122 96 / var(--tw-text-opacity, 1))}.placeholder\:text-fg-faint\/40::-moz-placeholder{color:#8a7a6066}.placeholder\:text-fg-faint\/40::placeholder{color:#8a7a6066}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-width:0px}.even\:bg-bg-elev\/40:nth-child(2n){background-color:#efe6d366}.hover\:border-accent:hover{--tw-border-opacity: 1;border-color:rgb(184 92 52 / var(--tw-border-opacity, 1))}.hover\:border-accent\/30:hover{border-color:#b85c344d}.hover\:border-accent\/40:hover{border-color:#b85c3466}.hover\:border-accent\/60:hover{border-color:#b85c3499}.hover\:border-amber-400\/60:hover{border-color:#fbbf2499}.hover\:border-fg-faint:hover{--tw-border-opacity: 1;border-color:rgb(138 122 96 / var(--tw-border-opacity, 1))}.hover\:border-red-400\/50:hover{border-color:#f8717180}.hover\:border-red-400\/60:hover{border-color:#f8717199}.hover\:bg-\[\#b8443c\]\/10:hover{background-color:#b8443c1a}.hover\:bg-accent:hover{--tw-bg-opacity: 1;background-color:rgb(184 92 52 / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/25:hover{background-color:#b85c3440}.hover\:bg-accent\/40:hover{background-color:#b85c3466}.hover\:bg-accent\/90:hover{background-color:#b85c34e6}.hover\:bg-amber-900\/20:hover{background-color:#78350f33}.hover\:bg-bg:hover{--tw-bg-opacity: 1;background-color:rgb(246 239 225 / var(--tw-bg-opacity, 1))}.hover\:bg-bg-elev:hover{--tw-bg-opacity: 1;background-color:rgb(239 230 211 / var(--tw-bg-opacity, 1))}.hover\:bg-bg-elev\/20:hover{background-color:#efe6d333}.hover\:bg-bg-elev\/50:hover{background-color:#efe6d380}.hover\:bg-bg-hi:hover{--tw-bg-opacity: 1;background-color:rgb(251 246 236 / var(--tw-bg-opacity, 1))}.hover\:bg-bg-hi\/40:hover{background-color:#fbf6ec66}.hover\:bg-bg-hi\/50:hover{background-color:#fbf6ec80}.hover\:bg-bg-hi\/60:hover{background-color:#fbf6ec99}.hover\:bg-bg-hi\/70:hover{background-color:#fbf6ecb3}.hover\:bg-bg-hi\/80:hover{background-color:#fbf6eccc}.hover\:bg-bg\/40:hover{background-color:#f6efe166}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-900\/40:hover{background-color:#1e3a8a66}.hover\:bg-red-500:hover{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.hover\:bg-red-900\/20:hover{background-color:#7f1d1d33}.hover\:bg-red-950\/30:hover{background-color:#450a0a4d}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-yellow-600:hover{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(184 92 52 / var(--tw-text-opacity, 1))}.hover\:text-amber-300:hover{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.hover\:text-amber-400:hover{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.hover\:text-bg:hover{--tw-text-opacity: 1;color:rgb(246 239 225 / var(--tw-text-opacity, 1))}.hover\:text-fg:hover{--tw-text-opacity: 1;color:rgb(42 34 26 / var(--tw-text-opacity, 1))}.hover\:text-fg-dim:hover{--tw-text-opacity: 1;color:rgb(91 74 54 / var(--tw-text-opacity, 1))}.hover\:text-red-300:hover{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-125:hover{--tw-brightness: brightness(1.25);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-accent:focus{--tw-border-opacity: 1;border-color:rgb(184 92 52 / var(--tw-border-opacity, 1))}.focus\:border-accent\/40:focus{border-color:#b85c3466}.focus\:border-accent\/50:focus{border-color:#b85c3480}.focus\:border-fg-faint:focus{--tw-border-opacity: 1;border-color:rgb(138 122 96 / 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-inset:focus{--tw-ring-inset: inset}.focus\:ring-accent:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(184 92 52 / var(--tw-ring-opacity, 1))}.active\:bg-accent\/60:active{background-color:#b85c3499}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-rule:disabled{--tw-border-opacity: 1;border-color:rgb(217 201 168 / var(--tw-border-opacity, 1))}.disabled\:bg-rule:disabled{--tw-bg-opacity: 1;background-color:rgb(217 201 168 / var(--tw-bg-opacity, 1))}.disabled\:text-rule:disabled{--tw-text-opacity: 1;color:rgb(217 201 168 / var(--tw-text-opacity, 1))}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:hidden{display:none}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-70{opacity:.7}@media(min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1280px){.xl\:sticky{position:sticky}.xl\:top-6{top:1.5rem}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_340px\]{grid-template-columns:minmax(0,1fr) 340px}.xl\:grid-cols-\[minmax\(0\,1fr\)_380px\]{grid-template-columns:minmax(0,1fr) 380px}.xl\:p-9{padding:2.25rem}}.\[\&\>span\]\:w-full>span{width:100%}.\[\&_p\]\:max-w-lg p{max-width:32rem}.\[\&_pre\]\:max-w-none pre{max-width:none}