tycono 0.1.60 → 0.1.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tycono",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
4
4
  "description": "Build an AI company. Watch them work.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -29,6 +29,7 @@ import { costRouter } from './routes/cost.js';
29
29
  import { syncRouter } from './routes/sync.js';
30
30
  import { gitRouter } from './routes/git.js';
31
31
  import { skillsRouter } from './routes/skills.js';
32
+ import { questsRouter } from './routes/quests.js';
32
33
  import { importKnowledge } from './services/knowledge-importer.js';
33
34
  import { AnthropicProvider, type LLMProvider } from './engine/llm-adapter.js';
34
35
  import { readConfig } from './services/company-config.js';
@@ -195,6 +196,7 @@ export function createExpressApp(): express.Application {
195
196
  app.use('/api/sync', syncRouter);
196
197
  app.use('/api/git', gitRouter);
197
198
  app.use('/api/skills', skillsRouter);
199
+ app.use('/api/quests', questsRouter);
198
200
 
199
201
  app.get('/api/health', (_req, res) => {
200
202
  res.json({ status: 'ok', companyRoot: COMPANY_ROOT });
@@ -0,0 +1,41 @@
1
+ import { Router, Request, Response, NextFunction } from 'express';
2
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { COMPANY_ROOT } from '../services/file-reader.js';
5
+
6
+ export const questsRouter = Router();
7
+
8
+ const QUEST_FILE = () => join(COMPANY_ROOT, '.tycono', 'quest-progress.json');
9
+
10
+ function readProgress(): Record<string, unknown> {
11
+ try {
12
+ return JSON.parse(readFileSync(QUEST_FILE(), 'utf-8'));
13
+ } catch {
14
+ return { completedQuests: [], activeChapter: 1, sideQuestsCompleted: [] };
15
+ }
16
+ }
17
+
18
+ function writeProgress(data: Record<string, unknown>) {
19
+ mkdirSync(join(COMPANY_ROOT, '.tycono'), { recursive: true });
20
+ writeFileSync(QUEST_FILE(), JSON.stringify(data, null, 2));
21
+ }
22
+
23
+ // GET /api/quests/progress
24
+ questsRouter.get('/progress', (_req: Request, res: Response, next: NextFunction) => {
25
+ try {
26
+ res.json(readProgress());
27
+ } catch (err) { next(err); }
28
+ });
29
+
30
+ // PUT /api/quests/progress
31
+ questsRouter.put('/progress', (req: Request, res: Response, next: NextFunction) => {
32
+ try {
33
+ const body = req.body;
34
+ if (!body || typeof body !== 'object') {
35
+ res.status(400).json({ error: 'Invalid body' });
36
+ return;
37
+ }
38
+ writeProgress(body);
39
+ res.json({ ok: true, ...body });
40
+ } catch (err) { next(err); }
41
+ });
@@ -12,6 +12,7 @@ import os from 'node:os';
12
12
  import { scaffold, getAvailableTeams, loadTeam } from '../services/scaffold.js';
13
13
  import type { ScaffoldConfig } from '../services/scaffold.js';
14
14
  import { importKnowledge } from '../services/knowledge-importer.js';
15
+ import { gitInit } from '../services/git-save.js';
15
16
  import { AnthropicProvider, type LLMProvider } from '../engine/llm-adapter.js';
16
17
  import { jobManager } from '../services/job-manager.js';
17
18
  import { applyConfig, readConfig, writeConfig } from '../services/company-config.js';
@@ -136,7 +137,10 @@ setupRouter.post('/scaffold', (req, res) => {
136
137
  }
137
138
  jobManager.refreshRunner();
138
139
 
139
- res.json({ ok: true, companyName, projectRoot, created });
140
+ // Auto git init (graceful skip if git not installed)
141
+ const gitResult = gitInit(projectRoot);
142
+
143
+ res.json({ ok: true, companyName, projectRoot, created, git: gitResult });
140
144
  } catch (err) {
141
145
  const message = err instanceof Error ? err.message : 'Scaffold failed';
142
146
  res.status(500).json({ error: message });
@@ -214,19 +214,49 @@ function buildCompanyContext(): string {
214
214
  }
215
215
  } catch { /* no org */ }
216
216
 
217
- // 3. Active projects
217
+ // 3. Active projects + current phase from tasks.md
218
218
  try {
219
219
  const projectsContent = readFile('projects/projects.md');
220
220
  const rows = parseMarkdownTable(projectsContent);
221
221
  const activeProjects = rows
222
222
  .filter(r => (r.status ?? r.상태 ?? '').toLowerCase() !== 'archived')
223
- .map(r => `- ${r.name ?? r.project ?? r.프로젝트 ?? ''} (${r.status ?? r.상태 ?? ''})`)
223
+ .map(r => {
224
+ const name = r.name ?? r.project ?? r.프로젝트 ?? '';
225
+ const status = r.status ?? r.상태 ?? '';
226
+ const folder = r.folder ?? r.path ?? r.경로 ?? '';
227
+ // Try to read tasks.md for current phase info
228
+ let phaseInfo = '';
229
+ if (folder) {
230
+ try {
231
+ const tasksPath = `${folder.replace(/^\//, '')}/tasks.md`;
232
+ const tasksContent = readFile(tasksPath);
233
+ // Extract current phase (look for "Current" or latest non-done phase)
234
+ const phaseMatch = tasksContent.match(/##\s+(Phase\s+\S+[^\n]*)/gi);
235
+ if (phaseMatch) phaseInfo = ` — ${phaseMatch[0].replace(/^##\s+/, '').slice(0, 60)}`;
236
+ } catch { /* no tasks.md */ }
237
+ }
238
+ return `- ${name} (${status}${phaseInfo})`;
239
+ })
224
240
  .slice(0, 5);
225
241
  if (activeProjects.length > 0) {
226
242
  parts.push(`Active Projects:\n${activeProjects.join('\n')}`);
227
243
  }
228
244
  } catch { /* no projects */ }
229
245
 
246
+ // 3b. Tech stack reality check (prevent hallucination about wrong tech)
247
+ try {
248
+ const config = readConfig(COMPANY_ROOT);
249
+ if (config.codeRoot) {
250
+ const pkgPath = path.join(config.codeRoot, 'package.json');
251
+ if (fs.existsSync(pkgPath)) {
252
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
253
+ const name = pkg.name ?? '';
254
+ const version = pkg.version ?? '';
255
+ parts.push(`Tech Stack: ${name}@${version} — TypeScript + React + Node.js (Express). NO Python in codebase. NO ongoing language migration.`);
256
+ }
257
+ }
258
+ } catch { /* no package.json */ }
259
+
230
260
  // 4. Knowledge highlights (hub TL;DRs, max 3)
231
261
  try {
232
262
  const knowledgeHub = readFile('knowledge/knowledge.md');
@@ -265,12 +295,24 @@ function buildCompanyContext(): string {
265
295
 
266
296
  /**
267
297
  * Build role-specific AKB context by pre-fetching relevant knowledge server-side.
268
- * Works with ANY engine (including claude-cli which doesn't support tool_use).
298
+ * This is the PRIMARY source of grounding for chat — must be rich enough that
299
+ * agents don't need to use tools (Haiku won't proactively search).
269
300
  */
270
301
  function buildRoleContext(roleId: string): string {
271
302
  const parts: string[] = [];
272
303
 
273
- // 1. Role's own journal (most recent 2 entries)
304
+ // 0. Role profile gives the agent its identity and work context
305
+ try {
306
+ const profilePath = path.join(COMPANY_ROOT, 'roles', roleId, 'profile.md');
307
+ if (fs.existsSync(profilePath)) {
308
+ const content = fs.readFileSync(profilePath, 'utf-8').trim();
309
+ if (content.length > 20) {
310
+ parts.push(`[Your Profile]\n${content.slice(0, 600)}`);
311
+ }
312
+ }
313
+ } catch { /* no profile */ }
314
+
315
+ // 1. Role's journal — latest entry with meaningful content (headers as summary)
274
316
  try {
275
317
  const journalDir = path.join(COMPANY_ROOT, 'roles', roleId, 'journal');
276
318
  if (fs.existsSync(journalDir)) {
@@ -280,49 +322,81 @@ function buildRoleContext(roleId: string): string {
280
322
  .slice(-2);
281
323
  for (const file of files) {
282
324
  const content = fs.readFileSync(path.join(journalDir, file), 'utf-8');
283
- // Extract title + first meaningful section (truncated)
325
+ // Extract all ### headers as work summary + first paragraph of each
326
+ const sections = content.match(/###\s+.+/g) ?? [];
284
327
  const title = content.match(/^#\s+(.+)/m)?.[1] ?? file;
285
- const body = content.split('\n').slice(1).join('\n').trim().slice(0, 400);
286
- parts.push(`[Your Journal: ${file}] ${title}\n${body}`);
328
+ const summary = sections.length > 0
329
+ ? sections.map(s => ` ${s.replace(/^###\s+/, '- ')}`).join('\n')
330
+ : content.split('\n').slice(1).join('\n').trim().slice(0, 300);
331
+ parts.push(`[Your Work Log: ${file}] ${title}\n${summary}`);
287
332
  }
288
333
  }
289
334
  } catch { /* no journal */ }
290
335
 
291
- // 2. Recent waves mentioning this role (last 3)
336
+ // 2. Current tasks assigned to this role (from all project tasks.md files)
337
+ try {
338
+ const projectsDir = path.join(COMPANY_ROOT, 'projects');
339
+ if (fs.existsSync(projectsDir)) {
340
+ const taskFiles = glob.sync('**/tasks.md', { cwd: projectsDir, absolute: false });
341
+ const roleTasks: string[] = [];
342
+ for (const tf of taskFiles.slice(0, 3)) {
343
+ const content = fs.readFileSync(path.join(projectsDir, tf), 'utf-8');
344
+ const rows = parseMarkdownTable(content);
345
+ const myTasks = rows.filter(r => {
346
+ const role = (r.role ?? r.Role ?? '').toLowerCase();
347
+ return role.includes(roleId);
348
+ });
349
+ for (const t of myTasks.slice(0, 5)) {
350
+ const id = t.id ?? t.ID ?? '';
351
+ const task = t.task ?? t.Task ?? t.title ?? '';
352
+ const status = t.status ?? t.Status ?? '';
353
+ if (task) roleTasks.push(`- ${id}: ${task} [${status}]`);
354
+ }
355
+ }
356
+ if (roleTasks.length > 0) {
357
+ parts.push(`[Your Assigned Tasks]\n${roleTasks.join('\n')}`);
358
+ }
359
+ }
360
+ } catch { /* no tasks */ }
361
+
362
+ // 3. Recent waves (broadened matching: roleId, role name, level keywords)
292
363
  try {
293
364
  const wavesDir = path.join(COMPANY_ROOT, 'operations', 'waves');
294
365
  if (fs.existsSync(wavesDir)) {
366
+ // Also get role name for matching
367
+ const tree = buildOrgTree(COMPANY_ROOT);
368
+ const node = tree.nodes.get(roleId);
369
+ const roleName = node?.name?.toLowerCase() ?? '';
370
+ const roleLevel = node?.level?.toLowerCase() ?? '';
371
+
295
372
  const waveFiles = fs.readdirSync(wavesDir)
296
373
  .filter(f => f.endsWith('.md'))
297
374
  .sort()
298
- .slice(-10); // scan last 10, pick up to 3 relevant
375
+ .slice(-10);
299
376
  const relevant: string[] = [];
300
377
  for (const file of waveFiles.reverse()) {
301
- if (relevant.length >= 3) break;
378
+ if (relevant.length >= 2) break;
302
379
  const content = fs.readFileSync(path.join(wavesDir, file), 'utf-8');
303
380
  const lower = content.toLowerCase();
304
- if (lower.includes(roleId) || lower.includes('all roles') || lower.includes('전체')) {
381
+ if (lower.includes(roleId) || lower.includes('all roles') || lower.includes('전체')
382
+ || (roleName && lower.includes(roleName))
383
+ || (roleLevel && lower.includes(roleLevel))) {
305
384
  const title = content.match(/^#\s+(.+)/m)?.[1] ?? file;
306
- const tldr = content.match(/TL;DR[\s\S]*?\n\n/)?.[0]?.trim() ?? '';
307
- const snippet = tldr || content.split('\n').slice(1, 6).join('\n').trim();
308
- relevant.push(`[Wave: ${file}] ${title}\n${snippet.slice(0, 300)}`);
385
+ const snippet = content.split('\n').slice(1, 8).join('\n').trim();
386
+ relevant.push(`[CEO Wave: ${file}] ${title}\n${snippet.slice(0, 400)}`);
309
387
  }
310
388
  }
311
389
  if (relevant.length > 0) parts.push(...relevant);
312
390
  }
313
391
  } catch { /* no waves */ }
314
392
 
315
- // 3. Recent standup (latest, only this role's section)
393
+ // 4. Recent standup (latest, this role's section)
316
394
  try {
317
395
  const standupDir = path.join(COMPANY_ROOT, 'operations', 'standup');
318
396
  if (fs.existsSync(standupDir)) {
319
- const standupFiles = fs.readdirSync(standupDir)
320
- .filter(f => f.endsWith('.md'))
321
- .sort()
322
- .slice(-1);
323
- for (const file of standupFiles) {
397
+ const files = fs.readdirSync(standupDir).filter(f => f.endsWith('.md')).sort().slice(-1);
398
+ for (const file of files) {
324
399
  const content = fs.readFileSync(path.join(standupDir, file), 'utf-8');
325
- // Try to extract this role's section from standup
326
400
  const rolePattern = new RegExp(`(## .*${roleId}.*|### .*${roleId}.*)([\\s\\S]*?)(?=\\n## |\\n### |$)`, 'i');
327
401
  const match = content.match(rolePattern);
328
402
  if (match) {
@@ -332,7 +406,7 @@ function buildRoleContext(roleId: string): string {
332
406
  }
333
407
  } catch { /* no standups */ }
334
408
 
335
- // 4. Recent decisions (last 2 approved — brief titles only, full list is in company context)
409
+ // 5. Recent decisions (last 3)
336
410
  try {
337
411
  const decisionsDir = path.join(COMPANY_ROOT, 'operations', 'decisions');
338
412
  if (fs.existsSync(decisionsDir)) {
@@ -344,8 +418,7 @@ function buildRoleContext(roleId: string): string {
344
418
  for (const file of files) {
345
419
  const content = fs.readFileSync(path.join(decisionsDir, file), 'utf-8');
346
420
  const title = content.match(/^#\s+(.+)/m)?.[1] ?? file;
347
- const summary = content.match(/## (?:Summary|TL;DR|요약)[\s\S]*?\n\n/)?.[0]?.trim() ?? '';
348
- decisions.push(`- ${title}${summary ? ': ' + summary.split('\n').slice(1).join(' ').trim().slice(0, 150) : ''}`);
421
+ decisions.push(`- ${title}`);
349
422
  }
350
423
  if (decisions.length > 0) {
351
424
  parts.push(`[Recent Decisions]\n${decisions.join('\n')}`);
@@ -353,8 +426,25 @@ function buildRoleContext(roleId: string): string {
353
426
  }
354
427
  } catch { /* no decisions */ }
355
428
 
429
+ // 6. Architecture highlights (always include — not just fallback)
430
+ try {
431
+ const techDebtPath = path.join(COMPANY_ROOT, 'architecture', 'tech-debt.md');
432
+ if (fs.existsSync(techDebtPath)) {
433
+ const tdContent = fs.readFileSync(techDebtPath, 'utf-8');
434
+ const rows = parseMarkdownTable(tdContent);
435
+ const active = rows
436
+ .filter(r => !(r.status ?? '').toLowerCase().includes('fixed') && !(r.status ?? '').toLowerCase().includes('done'))
437
+ .slice(0, 3)
438
+ .map(r => `- ${r.id ?? ''}: ${r.title ?? r.issue ?? ''} (${r.status ?? ''})`)
439
+ .filter(s => s.length > 10);
440
+ if (active.length > 0) {
441
+ parts.push(`[Active Tech Issues]\n${active.join('\n')}`);
442
+ }
443
+ }
444
+ } catch { /* no tech-debt */ }
445
+
356
446
  return parts.length > 0
357
- ? `\n\nYOUR KNOWLEDGE (real AKB context — reference this in conversation):\n${parts.join('\n\n')}`
447
+ ? `\n\nYOUR KNOWLEDGE (real AKB context — you MUST reference this in conversation):\n${parts.join('\n\n')}`
358
448
  : '';
359
449
  }
360
450
 
@@ -568,20 +658,25 @@ speechRouter.post('/chat', async (req: Request, res: Response, next: NextFunctio
568
658
  Persona: ${persona}
569
659
  ${workCtx}
570
660
  ${levelCtx}
571
- ${companyCtx}
572
- ${roleCtx}
573
661
 
574
662
  You are in the #${channelId} chat channel.${topicCtx}
575
663
  Members: ${memberList}
576
664
  ${relContext}
577
665
 
578
- ${roleStyle}
666
+ ═══ COMPANY & ROLE CONTEXT (READ THIS CAREFULLY) ═══
667
+ ${companyCtx}
668
+ ${roleCtx}
669
+ ═══ END CONTEXT ═══
670
+
671
+ GROUNDING (CRITICAL — READ BEFORE RESPONDING):
672
+ Everything above between ═══ markers is REAL data from your company's knowledge base.
673
+ You MUST base your conversation on this context. Mention specific projects, tasks, decisions, or work items BY NAME.
674
+ NEVER invent technologies, tools, migrations, file names, or projects that are NOT in the context above.
675
+ If the Tech Stack says "TypeScript + React + Node.js", do NOT mention Python, tc.py, or any language migration.
676
+ If you have assigned tasks listed, reference them. If you have journal entries, reference your recent work.
677
+ If you cannot find something specific to say from the context, say [SILENT] instead of making things up.
579
678
 
580
- GROUNDING (CRITICAL):
581
- You have been given real company knowledge above under "YOUR KNOWLEDGE". This is from your journal, recent CEO waves, standups, and decisions.
582
- You MUST reference this real context in your conversations — mention specific projects, decisions, tasks, or events by name.
583
- Do NOT generate generic workplace chatter. Every message should show you're aware of what's actually happening in the company.
584
- If your knowledge section mentions a specific decision or wave, reference it naturally (e.g. "after the test minimization decision..." or "CEO's wave about side panel...").
679
+ ${roleStyle}
585
680
 
586
681
  CONVERSATION RULES:
587
682
  1. Stay deeply in character — your expertise, vocabulary, and concerns should be DISTINCT from other roles.
@@ -151,6 +151,16 @@ function runOrThrow(cmd: string, cwd: string): string {
151
151
  return execSync(cmd, { cwd, encoding: 'utf-8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).trim();
152
152
  }
153
153
 
154
+ /** Check if git binary is available */
155
+ function isGitAvailable(): boolean {
156
+ try {
157
+ execSync('git --version', { timeout: 3000, stdio: ['pipe', 'pipe', 'pipe'] });
158
+ return true;
159
+ } catch {
160
+ return false;
161
+ }
162
+ }
163
+
154
164
  /** Check if directory is a git repository */
155
165
  function isGitRepo(root: string): boolean {
156
166
  return run('git rev-parse --is-inside-work-tree', root) === 'true';
@@ -161,7 +171,11 @@ function isGitRepo(root: string): boolean {
161
171
  * @param root - AKB repository root (COMPANY_ROOT)
162
172
  * @param repo - Repository type ('akb' or 'code'), default 'akb'
163
173
  */
164
- export function gitInit(root: string, repo: RepoType = 'akb'): { ok: boolean; message: string } {
174
+ export function gitInit(root: string, repo: RepoType = 'akb'): { ok: boolean; message: string; noGitBinary?: boolean } {
175
+ if (!isGitAvailable()) {
176
+ return { ok: false, message: 'git is not installed', noGitBinary: true };
177
+ }
178
+
165
179
  const repoRoot = resolveRepoRoot(root, repo);
166
180
 
167
181
  if (isGitRepo(repoRoot)) {
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-cyan-300:oklch(86.5% .127 207.078);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-400:oklch(71.4% .203 305.504);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start\!{inset-inline-start:var(--spacing)!important}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-16{top:calc(var(--spacing) * 16)}.top-\[5\%\]{top:5%}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-0\.5{right:calc(var(--spacing) * .5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.-left-2{left:calc(var(--spacing) * -2)}.-left-\[5px\]{left:-5px}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[44\]{z-index:44}.z-\[45\]{z-index:45}.z-\[60\]{z-index:60}.z-\[61\]{z-index:61}.z-\[62\]{z-index:62}.z-\[63\]{z-index:63}.z-\[70\]{z-index:70}.z-\[80\]{z-index:80}.z-\[100\]{z-index:100}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-auto{margin-top:auto}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-28{height:calc(var(--spacing) * 28)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-\[85vh\]{height:85vh}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\[60px\]{max-height:60px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[120px\]{max-height:120px}.max-h-\[160px\]{max-height:160px}.max-h-\[300px\]{max-height:300px}.max-h-\[380px\]{max-height:380px}.max-h-\[400px\]{max-height:400px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[240px\]{min-height:240px}.min-h-\[280px\]{min-height:280px}.min-h-\[400px\]{min-height:400px}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-\[10px\]{width:10px}.w-\[50px\]{width:50px}.w-\[480px\]{width:480px}.w-\[520px\]{width:520px}.w-\[560px\]{width:560px}.w-\[700px\]{width:700px}.w-\[720px\]{width:720px}.w-\[960px\]{width:960px}.w-full{width:100%}.w-px{width:1px}.max-w-\[85\%\]{max-width:85%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[95vw\]{max-width:95vw}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[400px\]{max-width:400px}.max-w-\[1100px\]{max-width:1100px}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.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))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-px{gap:1px}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-tl-sm{border-top-left-radius:var(--radius-sm)}.rounded-tr-sm{border-top-right-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--meeting-blue\)\]{border-color:var(--meeting-blue)}.border-\[var\(--terminal-border\)\]{border-color:var(--terminal-border)}.border-\[var\(--terminal-code-border\)\]{border-color:var(--terminal-code-border)}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/50{border-color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.border-amber-800\/30{border-color:#953d004d}@supports (color:color-mix(in lab,red,red)){.border-amber-800\/30{border-color:color-mix(in oklab,var(--color-amber-800) 30%,transparent)}}.border-blue-800\/30{border-color:#193cb84d}@supports (color:color-mix(in lab,red,red)){.border-blue-800\/30{border-color:color-mix(in oklab,var(--color-blue-800) 30%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-600{border-color:var(--color-gray-600)}.border-green-600{border-color:var(--color-green-600)}.border-green-800\/20{border-color:#01663033}@supports (color:color-mix(in lab,red,red)){.border-green-800\/20{border-color:color-mix(in oklab,var(--color-green-800) 20%,transparent)}}.border-green-800\/30{border-color:#0166304d}@supports (color:color-mix(in lab,red,red)){.border-green-800\/30{border-color:color-mix(in oklab,var(--color-green-800) 30%,transparent)}}.border-purple-400\/20{border-color:#c07eff33}@supports (color:color-mix(in lab,red,red)){.border-purple-400\/20{border-color:color-mix(in oklab,var(--color-purple-400) 20%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.border-red-800\/30{border-color:#9f07124d}@supports (color:color-mix(in lab,red,red)){.border-red-800\/30{border-color:color-mix(in oklab,var(--color-red-800) 30%,transparent)}}.border-red-800\/40{border-color:#9f071266}@supports (color:color-mix(in lab,red,red)){.border-red-800\/40{border-color:color-mix(in oklab,var(--color-red-800) 40%,transparent)}}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.border-white\/15{border-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.border-t-white{border-top-color:var(--color-white)}.bg-\[\#111\]{background-color:#111}.bg-\[var\(--accent\)\]\/10{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--accent\)\]\/10{background-color:color-mix(in oklab,var(--accent) 10%,transparent)}}.bg-\[var\(--desk-wood\)\]{background-color:var(--desk-wood)}.bg-\[var\(--floor-light\)\]{background-color:var(--floor-light)}.bg-\[var\(--hud-bg\)\]{background-color:var(--hud-bg)}.bg-\[var\(--hud-bg-alt\)\]{background-color:var(--hud-bg-alt)}.bg-\[var\(--meeting-blue\)\]{background-color:var(--meeting-blue)}.bg-\[var\(--terminal-bg\)\]{background-color:var(--terminal-bg)}.bg-\[var\(--terminal-bg-deeper\)\]{background-color:var(--terminal-bg-deeper)}.bg-\[var\(--terminal-border\)\]{background-color:var(--terminal-border)}.bg-\[var\(--terminal-border-hover\)\]{background-color:var(--terminal-border-hover)}.bg-\[var\(--terminal-inline-bg\)\]{background-color:var(--terminal-inline-bg)}.bg-\[var\(--terminal-surface\)\]{background-color:var(--terminal-surface)}.bg-\[var\(--terminal-surface-light\)\]{background-color:var(--terminal-surface-light)}.bg-\[var\(--terminal-text-secondary\)\]{background-color:var(--terminal-text-secondary)}.bg-\[var\(--wall\)\]{background-color:var(--wall)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-700{background-color:var(--color-amber-700)}.bg-amber-900\/20{background-color:#7b330633}@supports (color:color-mix(in lab,red,red)){.bg-amber-900\/20{background-color:color-mix(in oklab,var(--color-amber-900) 20%,transparent)}}.bg-amber-900\/30{background-color:#7b33064d}@supports (color:color-mix(in lab,red,red)){.bg-amber-900\/30{background-color:color-mix(in oklab,var(--color-amber-900) 30%,transparent)}}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400) 10%,transparent)}}.bg-blue-900\/20{background-color:#1c398e33}@supports (color:color-mix(in lab,red,red)){.bg-blue-900\/20{background-color:color-mix(in oklab,var(--color-blue-900) 20%,transparent)}}.bg-blue-900\/30{background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-900\/30{background-color:color-mix(in oklab,var(--color-blue-900) 30%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-400\/10{background-color:#05df721a}@supports (color:color-mix(in lab,red,red)){.bg-green-400\/10{background-color:color-mix(in oklab,var(--color-green-400) 10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-green-900\/10{background-color:#0d542b1a}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/10{background-color:color-mix(in oklab,var(--color-green-900) 10%,transparent)}}.bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/20{background-color:color-mix(in oklab,var(--color-green-900) 20%,transparent)}}.bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/30{background-color:color-mix(in oklab,var(--color-green-900) 30%,transparent)}}.bg-purple-400{background-color:var(--color-purple-400)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-900\/10{background-color:#82181a1a}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/10{background-color:color-mix(in oklab,var(--color-red-900) 10%,transparent)}}.bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white) 3%,transparent)}}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[var\(--terminal-bg-deeper\)\]{--tw-gradient-from:var(--terminal-bg-deeper);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.9em\]{font-size:.9em}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#E57373\]{color:#e57373}.text-\[var\(--active-green\)\]{color:var(--active-green)}.text-\[var\(--desk-dark\)\]{color:var(--desk-dark)}.text-\[var\(--terminal-text\)\]{color:var(--terminal-text)}.text-\[var\(--terminal-text-muted\)\]{color:var(--terminal-text-muted)}.text-\[var\(--terminal-text-secondary\)\]{color:var(--terminal-text-secondary)}.text-amber-300\/90{color:#ffd236e6}@supports (color:color-mix(in lab,red,red)){.text-amber-300\/90{color:color-mix(in oklab,var(--color-amber-300) 90%,transparent)}}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/70{color:#fcbb00b3}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/70{color:color-mix(in oklab,var(--color-amber-400) 70%,transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400) 80%,transparent)}}.text-amber-400\/90{color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/90{color:color-mix(in oklab,var(--color-amber-400) 90%,transparent)}}.text-blue-200\/80{color:#bedbffcc}@supports (color:color-mix(in lab,red,red)){.text-blue-200\/80{color:color-mix(in oklab,var(--color-blue-200) 80%,transparent)}}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-400\/80{color:#54a2ffcc}@supports (color:color-mix(in lab,red,red)){.text-blue-400\/80{color:color-mix(in oklab,var(--color-blue-400) 80%,transparent)}}.text-cyan-300\/70{color:#53eafdb3}@supports (color:color-mix(in lab,red,red)){.text-cyan-300\/70{color:color-mix(in oklab,var(--color-cyan-300) 70%,transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-300{color:var(--color-green-300)}.text-green-300\/90{color:#7bf1a8e6}@supports (color:color-mix(in lab,red,red)){.text-green-300\/90{color:color-mix(in oklab,var(--color-green-300) 90%,transparent)}}.text-green-400{color:var(--color-green-400)}.text-green-400\/60{color:#05df7299}@supports (color:color-mix(in lab,red,red)){.text-green-400\/60{color:color-mix(in oklab,var(--color-green-400) 60%,transparent)}}.text-green-400\/70{color:#05df72b3}@supports (color:color-mix(in lab,red,red)){.text-green-400\/70{color:color-mix(in oklab,var(--color-green-400) 70%,transparent)}}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400) 80%,transparent)}}.text-purple-400\/50{color:#c07eff80}@supports (color:color-mix(in lab,red,red)){.text-purple-400\/50{color:color-mix(in oklab,var(--color-purple-400) 50%,transparent)}}.text-purple-400\/70{color:#c07effb3}@supports (color:color-mix(in lab,red,red)){.text-purple-400\/70{color:color-mix(in oklab,var(--color-purple-400) 70%,transparent)}}.text-red-200\/70{color:#ffcacab3}@supports (color:color-mix(in lab,red,red)){.text-red-200\/70{color:color-mix(in oklab,var(--color-red-200) 70%,transparent)}}.text-red-200\/80{color:#ffcacacc}@supports (color:color-mix(in lab,red,red)){.text-red-200\/80{color:color-mix(in oklab,var(--color-red-200) 80%,transparent)}}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400) 80%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/15{color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.text-white\/15{color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.text-white\/25{color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\/30{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.placeholder-white\/20::placeholder{color:#fff3}@supports (color:color-mix(in lab,red,red)){.placeholder-white\/20::placeholder{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.placeholder-white\/25::placeholder{color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.placeholder-white\/25::placeholder{color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.accent-green-600{accent-color:var(--color-green-600)}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-\[0\.06\]{opacity:.06}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[-4px_0_20px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:-4px 0 20px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.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-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/name\:opacity-60:is(:where(.group\/name):hover *){opacity:.6}}.placeholder\:text-\[var\(--terminal-text-muted\)\]::placeholder{color:var(--terminal-text-muted)}@media(hover:hover){.hover\:border-\[var\(--accent\)\]\/50:hover{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:border-\[var\(--accent\)\]\/50:hover{border-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.hover\:border-\[var\(--terminal-border-hover\)\]:hover{border-color:var(--terminal-border-hover)}.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:bg-\[var\(--desk-wood\)\]:hover{background-color:var(--desk-wood)}.hover\:bg-\[var\(--terminal-inline-bg\)\]:hover{background-color:var(--terminal-inline-bg)}.hover\:bg-\[var\(--terminal-surface\)\]:hover{background-color:var(--terminal-surface)}.hover\:bg-\[var\(--terminal-surface-light\)\]:hover{background-color:var(--terminal-surface-light)}.hover\:bg-amber-900\/40:hover{background-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-900\/40:hover{background-color:color-mix(in oklab,var(--color-amber-900) 40%,transparent)}}.hover\:bg-black\/30:hover{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/30:hover{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.hover\:bg-black\/90:hover{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/90:hover{background-color:color-mix(in oklab,var(--color-black) 90%,transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-green-900\/40:hover{background-color:#0d542b66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-900\/40:hover{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}.hover\:bg-red-900\/10:hover{background-color:#82181a1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-900\/10:hover{background-color:color-mix(in oklab,var(--color-red-900) 10%,transparent)}}.hover\:bg-red-900\/50:hover{background-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-900\/50:hover{background-color:color-mix(in oklab,var(--color-red-900) 50%,transparent)}}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.hover\:bg-white\/\[0\.02\]:hover{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.02\]:hover{background-color:color-mix(in oklab,var(--color-white) 2%,transparent)}}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.06\]:hover{background-color:color-mix(in oklab,var(--color-white) 6%,transparent)}}.hover\:text-\[var\(--terminal-text\)\]:hover{color:var(--terminal-text)}.hover\:text-\[var\(--terminal-text-secondary\)\]:hover{color:var(--terminal-text-secondary)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:text-green-400\/60:hover{color:#05df7299}@supports (color:color-mix(in lab,red,red)){.hover\:text-green-400\/60:hover{color:color-mix(in oklab,var(--color-green-400) 60%,transparent)}}.hover\:text-red-400\/60:hover{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.hover\:text-red-400\/60:hover{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/50:hover{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/50:hover{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.hover\:text-white\/60:hover{color:#fff9}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/60:hover{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.hover\:text-white\/70:hover{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/70:hover{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\:border-\[\#F59E0B\]:focus{border-color:#f59e0b}.focus\:border-\[var\(--terminal-border-hover\)\]:focus{border-color:var(--terminal-border-hover)}.focus\:border-amber-800\/40:focus{border-color:#953d0066}@supports (color:color-mix(in lab,red,red)){.focus\:border-amber-800\/40:focus{border-color:color-mix(in oklab,var(--color-amber-800) 40%,transparent)}}.focus\:border-white\/25:focus{border-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.focus\:border-white\/25:focus{border-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.focus\:bg-white\/30:focus{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.focus\:bg-white\/30:focus{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:flex{display:flex}.sm\:inline{display:inline}}@media(min-width:48rem){.md\:flex{display:flex}}}:root{--floor-light:#dfe6ee;--floor-dark:#cdd6e0;--wall:var(--terminal-bg,#eef1f7);--wall-shadow:#b0b8c8;--desk-wood:#4a5568;--desk-dark:#374151;--office-border:var(--terminal-border,#cbd5e1);--office-surface:var(--hud-bg-alt,#e8ecf4);--office-code-bg:var(--hud-bg,#edf0f7);--monitor-glow:#60a5fa;--active-green:#34d399;--idle-amber:#fbbf24;--offline-grey:#9ca3af;--meeting-blue:#3b82f6;--accent:#6366f1;--color-cto:#1565c0;--color-cbo:#e65100;--color-pm:#2e7d32;--color-engineer:#4a148c;--color-designer:#ad1457;--color-qa:#00695c;--pixel-border:#4a5568;--pixel-font:"Courier New", monospace;--terminal-bg:#1e1e2e;--terminal-bg-deeper:#181825;--terminal-surface:var(--hud-bg-alt,#252536);--terminal-surface-light:#2d2d40;--terminal-border:#b4c8f014;--terminal-border-hover:#b4c8f02e;--terminal-text:#ebf0ffeb;--terminal-text-secondary:#c8d2f099;--terminal-text-muted:#b4c3e659;--terminal-scrollbar:#b4c8f01a;--terminal-scrollbar-hover:#b4c8f038;--hud-bg:#1a1a2a;--hud-bg-alt:#232335;--hud-border:#b4c8f01a;--terminal-code-bg:#181825;--terminal-code-text:#89b4fa;--terminal-code-border:#b4c8f00f;--terminal-inline-bg:#b4c8f014}body{background:var(--floor-dark);height:100dvh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}#root{flex-direction:column;height:100dvh;display:flex}@keyframes status-pulse{0%,to{box-shadow:0 0 6px #4caf5099}50%{box-shadow:0 0 14px #4caf50e6}}.status-dot-active{animation:2s ease-in-out infinite status-pulse}@keyframes monitor-glow{0%,to{box-shadow:0 0 6px #4a9eff4d}50%{box-shadow:0 0 10px #4a9eff99}}.monitor-active{animation:3s ease-in-out infinite monitor-glow}.side-panel{transition:transform .3s,right .3s;transform:translate(100%)}.side-panel.open{transform:translate(0)}.side-panel:not(.resizing){transition:transform .3s,right .3s,width .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fadeIn{animation:.3s ease-in-out fadeIn}.dimmer{opacity:0;pointer-events:none;transition:opacity .3s,right .3s}.dimmer.open{opacity:1;pointer-events:auto}@keyframes pixel-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes pixel-float{0%,to{opacity:1;transform:translateY(0)}50%{opacity:.6;transform:translateY(-6px)}}.pixel-card{background:var(--hud-bg-alt);border:3px solid var(--pixel-border);font-family:var(--pixel-font);cursor:pointer;image-rendering:pixelated;flex-direction:column;transition:border-color .15s;display:flex}.pixel-card:hover{border-color:var(--accent);z-index:10}.pixel-card.working{border-color:#ffd600;box-shadow:0 0 12px #ffd60040}.pixel-card--featured{border-width:3px;box-shadow:0 2px 12px #00000026}.pixel-card--featured .pixel-card-hdr{padding:6px 12px;font-size:10px}.pixel-card--featured .pixel-card-task{font-size:9px}.pixel-card-hdr{color:#fff;text-shadow:1px 1px #0006;flex-shrink:0;justify-content:space-between;align-items:center;padding:5px 10px;font-size:9px;font-weight:900;display:flex}.pixel-card-hdr .lvl{background:#0000004d;padding:0 4px;font-size:8px}.pixel-card-body{background:var(--terminal-surface);border-top:2px solid var(--pixel-border);border-bottom:2px solid var(--pixel-border);justify-content:center;align-items:flex-end;height:86px;padding-bottom:2px;display:flex;position:relative;overflow:hidden}.pixel-card--featured .pixel-card-body{height:100px}.pixel-desk{z-index:3;background:#6b5b4b;border:2px solid #4b3b2b;border-top-color:#8b7b6b;width:50%;height:12px;position:absolute;bottom:6px}.pixel-desk:before{content:"";background:#111;border:2px solid #333;width:14px;height:9px;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.pixel-sprite{z-index:2;font-size:28px;animation:1s steps(2,end) infinite pixel-bounce}.pixel-card-body canvas{z-index:1;margin-bottom:-4px;position:relative}.pixel-status-dot{border:2px solid #fff;width:7px;height:7px;position:absolute;bottom:6px;left:6px}.pixel-card-task{font-size:8px;font-family:var(--pixel-font);color:var(--terminal-text-secondary);border-top:1px solid var(--pixel-border);flex-shrink:0;align-items:flex-start;gap:4px;min-height:28px;padding:5px 10px;display:flex}.pixel-card-task-icon{flex-shrink:0;line-height:1.4}.pixel-card-task-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.pixel-card--featured .pixel-card-task{min-height:32px;font-size:9px}.pixel-card--hire{border-style:dashed;border-color:var(--pixel-border);cursor:pointer;justify-content:center;align-items:center;transition:border-color .15s,opacity .15s;display:flex}.pixel-card--hire:hover{border-color:var(--accent);opacity:.9}.pixel-card--hire-inner{flex-direction:column;align-items:center;gap:4px;padding:12px;display:flex}.pixel-card--hire-icon{color:var(--terminal-text-muted);font-size:20px;line-height:1}.pixel-card--hire-label{font-size:8px;font-family:var(--pixel-font);color:var(--terminal-text-muted);letter-spacing:1px;font-weight:900}.facility-card-compact{background:var(--hud-bg-alt);border:2px solid var(--pixel-border);font-family:var(--pixel-font);cursor:pointer;flex-direction:column;transition:border-color .15s;display:flex}.facility-card-compact:hover{border-color:var(--accent)}.fcc-hdr{color:#fff;text-shadow:1px 1px #0006;letter-spacing:1px;padding:3px 8px;font-size:8px;font-weight:900}.fcc-canvas{background:var(--terminal-surface);border-top:2px solid var(--pixel-border);justify-content:center;align-items:center;padding:4px 0;display:flex;overflow:hidden}.fcc-canvas canvas{max-height:64px}.fcc-body{border-top:2px solid var(--pixel-border);flex-direction:column;gap:2px;padding:6px 8px;display:flex}.fcc-desc{color:var(--terminal-text-secondary);opacity:.7;margin-bottom:2px;font-size:7px}.fcc-title{color:var(--terminal-text);font-size:9px;font-weight:900}.fcc-meta{color:var(--terminal-text-secondary);font-size:8px}.fcc-item{color:var(--terminal-text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:7px;overflow:hidden}.pixel-section-label{font-size:9px;font-weight:900;font-family:var(--pixel-font);text-transform:uppercase;letter-spacing:2px;color:var(--terminal-text-secondary);padding:0 2px}.office-board{transition:transform .2s}.office-board:hover{transform:translateY(-2px)}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.typing-cursor{animation:.8s step-end infinite cursor-blink}@keyframes subtle-float{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.meeting-room:hover{animation:2s ease-in-out infinite subtle-float}@keyframes wave-pulse{0%,to{box-shadow:0 0 #b71c1c66}50%{box-shadow:0 0 0 6px #b71c1c00}}.wave-btn{animation:3s ease-in-out infinite wave-pulse}@keyframes wave-edge-flow{0%{stroke-dashoffset:20px}to{stroke-dashoffset:0}}.wave-edge-flow{animation:1s linear infinite wave-edge-flow}.event-markdown h1,.event-markdown h2,.event-markdown h3,.event-markdown h4,.event-markdown h5,.event-markdown h6{margin:.5em 0 .25em;font-weight:700}.event-markdown h1{font-size:1.1em}.event-markdown h2{font-size:1em}.event-markdown h3{color:#86efacb3;font-size:.95em}.event-markdown p{margin:.25em 0}.event-markdown ul,.event-markdown ol{margin:.25em 0;padding-left:1.5em}.event-markdown li{margin:.1em 0}.event-markdown ul{list-style:outside}.event-markdown ol{list-style:decimal}.event-markdown code{background:#ffffff14;border-radius:3px;padding:.1em .35em;font-size:.9em}.event-markdown pre{background:#0000004d;border-radius:6px;margin:.4em 0;padding:.5em .75em;overflow-x:auto}.event-markdown pre code{background:0 0;padding:0}.event-markdown table{border-collapse:collapse;margin:.4em 0;font-size:.9em}.event-markdown th,.event-markdown td{border:1px solid #ffffff26;padding:.25em .5em}.event-markdown th{background:#ffffff0f;font-weight:600}.event-markdown strong{color:#86efac}.event-markdown blockquote{opacity:.8;border-left:3px solid #86efac4d;margin:.3em 0;padding-left:.75em}.event-markdown a{color:#60a5fa;text-decoration:underline}.event-markdown hr{border-color:#ffffff1a;margin:.5em 0}@keyframes toast-in{0%{opacity:0;transform:translate(120%)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(120%)}}.toast-enter{animation:.3s ease-out forwards toast-in}.toast-exit{animation:.3s ease-in forwards toast-out}.floor-grid{background-image:repeating-conic-gradient(var(--floor-light) 0% 25%,var(--floor-dark) 0% 50%);background-size:28px 28px}.floor-grid:after{content:"";pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg,#0000 0,#0000 3px,#00000008 3px,#00000008 4px);position:absolute;top:0;right:0;bottom:0;left:0}.office-markdown p{margin:.35em 0}.office-markdown ul,.office-markdown ol{margin:.35em 0;padding-left:1.25em}.office-markdown li{margin:.2em 0}.office-markdown h1,.office-markdown h2,.office-markdown h3,.office-markdown h4,.office-markdown h5,.office-markdown h6{color:var(--terminal-text);margin:.6em 0 .3em;font-weight:700}.office-markdown h1{font-size:1.15em}.office-markdown h2{border-bottom:1px solid var(--office-border);padding-bottom:.2em;font-size:1.05em}.office-markdown h3{font-size:.95em}.office-markdown strong{color:var(--terminal-text)}.office-markdown a{color:var(--accent);text-decoration:underline}.office-markdown blockquote{border-left:3px solid var(--office-border);color:var(--terminal-text-muted);margin:.5em 0;padding-left:.75em}.office-markdown hr{border:none;border-top:1px solid var(--office-border);margin:.6em 0}.office-table{border-collapse:collapse;width:100%;font-size:.85em}.office-table th,.office-table td{border:1px solid var(--office-border);text-align:left;padding:.35em .6em}.office-table th{background:var(--office-surface);color:var(--terminal-text);font-weight:600}.office-table td{color:var(--terminal-text-secondary)}.office-code-block{background:var(--office-code-bg);border:1px solid var(--office-border);border-radius:8px;overflow:hidden}.office-code-block pre{margin:0}.office-code-block code{color:var(--terminal-text-secondary);font-family:SF Mono,Fira Code,monospace}.terminal-resize-handle:hover{background:var(--terminal-border-hover)}.terminal-scrollbar::-webkit-scrollbar{width:6px}.terminal-scrollbar::-webkit-scrollbar-track{background:0 0}.terminal-scrollbar::-webkit-scrollbar-thumb{background:var(--terminal-scrollbar);border-radius:3px}.terminal-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--terminal-scrollbar-hover)}.terminal-tab-scroll::-webkit-scrollbar{height:2px}.terminal-tab-scroll::-webkit-scrollbar-track{background:0 0}.terminal-tab-scroll::-webkit-scrollbar-thumb{background:var(--terminal-scrollbar);border-radius:1px}.terminal-markdown p{margin:.25em 0}.terminal-markdown ul,.terminal-markdown ol{margin:.25em 0;padding-left:1.25em}.terminal-markdown li{margin:.15em 0}.terminal-markdown h1,.terminal-markdown h2,.terminal-markdown h3,.terminal-markdown h4,.terminal-markdown h5,.terminal-markdown h6{color:var(--terminal-text);margin:.5em 0 .25em;font-weight:700}.terminal-markdown h1{font-size:1.1em}.terminal-markdown h2{font-size:1em}.terminal-markdown h3{font-size:.95em}.terminal-markdown strong{color:#ebf0fff2}.terminal-markdown a{color:#89b4fa;text-decoration:underline}.terminal-markdown blockquote{border-left:3px solid var(--terminal-border-hover);color:var(--terminal-text-secondary);margin:.5em 0;padding-left:.75em}.terminal-markdown hr{border:none;border-top:1px solid var(--terminal-border);margin:.75em 0}.terminal-inline-code{background:var(--terminal-inline-bg);border-radius:3px;padding:.15em .35em;font-family:SF Mono,Fira Code,monospace;font-size:.9em}.terminal-code-block{background:var(--terminal-code-bg);border:1px solid var(--terminal-code-border);border-radius:8px;overflow:hidden}.terminal-code-block pre{margin:0}.terminal-code-block code{color:var(--terminal-code-text);font-family:SF Mono,Fira Code,monospace}.terminal-table{border-collapse:collapse;width:100%;font-size:.85em}.terminal-table th,.terminal-table td{border:1px solid var(--terminal-border);text-align:left;padding:.35em .5em}.terminal-table th{color:var(--terminal-text);background:#ffebcd0d;font-weight:600}.terminal-table td{color:var(--terminal-text-secondary)}.stream-activity-log{border:1px solid var(--terminal-border);background:var(--terminal-bg-deeper);border-radius:8px;margin-bottom:8px;overflow:hidden}.stream-activity-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:#b4c8f008;align-items:center;gap:6px;padding:6px 10px;display:flex}.stream-activity-pulse{background:#60a5fa;border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:1.5s ease-in-out infinite status-pulse-blue;display:inline-block}@keyframes status-pulse-blue{0%,to{box-shadow:0 0 4px #60a5fa80}50%{box-shadow:0 0 10px #60a5fae6}}.stream-activity-summary{font-size:11px;font-family:var(--pixel-font);color:var(--terminal-text-secondary);font-weight:700}.stream-activity-events{flex-direction:column;gap:1px;max-height:280px;padding:4px 10px 8px;display:flex;overflow-y:auto}.stream-event-thinking{border-left:3px solid #a855f780;padding:4px 0 4px 8px;animation:.15s ease-out stream-event-in}.stream-event-thinking-header{cursor:pointer;align-items:center;gap:5px;display:flex}.stream-event-thinking-icon{opacity:.7;background:#a855f7;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.stream-event-thinking-label{color:#c084fc;font-size:11px;font-weight:700;font-family:var(--pixel-font)}.stream-event-thinking-toggle{color:var(--terminal-text-muted);font-size:9px}.stream-event-thinking-content{color:var(--terminal-text-secondary);white-space:pre-wrap;word-break:break-word;max-height:100px;margin-top:4px;padding-left:2px;font-size:11px;line-height:1.5;overflow-y:auto}.stream-event-tool{flex-wrap:wrap;align-items:baseline;gap:4px;padding:3px 0;animation:.15s ease-out stream-event-in;display:flex}.stream-event-tool-badge{font-size:10px;font-weight:700;font-family:var(--pixel-font);color:#89b4fa;background:#89b4fa1f;border:1px solid #89b4fa40;border-radius:3px;flex-shrink:0;padding:1px 6px;line-height:1.5;display:inline-block}.stream-event-tool-path{color:var(--terminal-text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:280px;font-family:SF Mono,Fira Code,monospace;font-size:10px;overflow:hidden}.stream-event-tool-toggle{color:var(--terminal-text-muted);cursor:pointer;flex-shrink:0;font-size:9px}.stream-event-tool-detail{width:100%;color:var(--terminal-text-muted);white-space:pre-wrap;word-break:break-all;max-height:60px;margin-top:2px;padding-left:8px;font-family:SF Mono,Fira Code,monospace;font-size:9px;overflow-y:auto}.stream-event-dispatch{align-items:baseline;gap:6px;padding:3px 0;animation:.15s ease-out stream-event-in;display:flex}.stream-event-dispatch-badge{font-size:10px;font-weight:700;font-family:var(--pixel-font);color:#fbbf24;background:#fbbf241f;border:1px solid #fbbf2440;border-radius:3px;flex-shrink:0;padding:1px 6px;line-height:1.5;display:inline-block}.stream-event-dispatch-task{color:var(--terminal-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.stream-event-dispatch-progress{border-left:2px solid #fbbf2444;align-items:baseline;gap:6px;padding:2px 0 2px 12px;animation:.15s ease-out stream-event-in;display:flex}.stream-event-dispatch-progress-role{font-size:9px;font-weight:700;font-family:var(--pixel-font);color:#fbbf24;opacity:.7;flex-shrink:0}.stream-event-dispatch-progress-status{color:var(--terminal-text-muted);font-size:10px;font-style:italic}.stream-event-dispatch-progress-done{color:#4ade80;font-size:9px;font-weight:600}.stream-event-dispatch-progress-error{color:#f87171;font-size:9px;font-weight:600}@keyframes stream-event-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.td-scene{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.td-wrap{display:inline-block;position:relative}.td-canvas{image-rendering:pixelated;cursor:pointer}.td-overlay{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.td-nametag{letter-spacing:.5px;color:#fff;text-shadow:0 1px 2px #000000e6;white-space:nowrap;opacity:.9;align-items:center;gap:2px;font-family:Courier New,monospace;font-size:9px;font-weight:700;display:flex;position:absolute;transform:translate(-50%)}.td-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.td-lvl{color:gold;opacity:.85;margin-left:1px;font-size:7px}.td-bubble{color:#ccc;white-space:normal;word-break:break-word;-webkit-line-clamp:2;text-overflow:ellipsis;background:#0f0f19eb;border:1px solid #ffffff14;border-radius:8px;-webkit-box-orient:vertical;max-width:220px;padding:3px 8px;font-family:Courier New,monospace;font-size:9px;line-height:1.4;display:-webkit-box;position:absolute;overflow:hidden;transform:translate(-50%)}.td-bubble:after{content:"";border-top:4px solid #0f0f19eb;border-left:4px solid #0000;border-right:4px solid #0000;position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}.td-facility-label{letter-spacing:.5px;color:#fffc;white-space:nowrap;cursor:pointer;pointer-events:auto;background:#0000008c;border:1px solid #ffffff1a;border-radius:3px;padding:1px 5px;font-family:Courier New,monospace;font-size:8px;font-weight:700;transition:all .15s;position:absolute;transform:translate(-50%)}.td-facility-label:hover,.td-facility-label--hover{color:#fff;text-shadow:0 0 6px #fff6;background:#000000bf;border-color:#ffffff4d}@keyframes td-pulse{0%,to{opacity:1}50%{opacity:.4}}.quest-spotlight{box-shadow:0 0 0 2px var(--accent),0 0 12px 2px var(--accent);z-index:60;border-radius:6px;animation:1.2s ease-in-out infinite quest-glow;position:relative}@keyframes quest-glow{0%,to{box-shadow:0 0 0 2px var(--accent),0 0 12px 2px #6366f180}50%{box-shadow:0 0 0 3px var(--accent),0 0 20px 4px #6366f1cc}}.td-edit-btn{color:#8b949e;font-family:var(--pixel-font);cursor:pointer;image-rendering:auto;background:#141923d9;border:2px solid #8b949e4d;align-items:center;gap:4px;padding:6px 12px;font-size:10px;font-weight:900;transition:border-color .2s,color .2s,background .2s;display:flex;position:absolute;bottom:12px;left:12px}.td-edit-btn:hover{color:#fbbf24;border-color:#fbbf2499}.td-edit-btn--active{color:#3b82f6;background:#3b82f626;border-color:#3b82f6b3}.td-edit-btn__icon{font-size:14px;line-height:1}.td-scene--editing:after{content:"";pointer-events:none;z-index:50;border:4px solid #fbbf2499;animation:1.8s ease-in-out infinite edit-border-pulse;position:absolute;top:0;right:0;bottom:0;left:0}@keyframes edit-border-pulse{0%,to{border-color:#fbbf2466}50%{border-color:#fbbf24d9}}.td-edit-banner{color:#fbbf24;letter-spacing:2px;z-index:51;pointer-events:none;text-shadow:0 1px 3px #00000080;background:#fbbf2433;border:2px solid #fbbf24b3;border-radius:4px;padding:6px 24px;font-size:12px;font-weight:700;animation:1.8s ease-in-out infinite edit-banner-pulse;position:absolute;top:10px;left:50%;transform:translate(-50%)}.td-edit-banner__icon{margin-right:4px;font-size:14px}@keyframes edit-banner-pulse{0%,to{opacity:.7}50%{opacity:1}}.td-palette{image-rendering:auto;background:#141923e6;border:2px solid #8b949e4d;gap:2px;padding:4px 6px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.td-palette__item{cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:background .15s,border-color .15s;display:flex}.td-palette__item:hover{background:#ffffff1a;border-color:#fbbf2480}.td-palette__item--active{background:#3b82f640;border-color:#3b82f6b3}.theme-dropup{background:var(--hud-bg);border:2px solid var(--pixel-border);z-index:60;border-radius:6px;gap:4px;padding:6px 8px;display:flex;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 -4px 16px #00000080}.theme-dropup__item{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:4px;flex-direction:column;align-items:center;gap:3px;padding:4px 6px;transition:border-color .15s,background .15s;display:flex}.theme-dropup__item:hover{background:#ffffff0d;border-color:#fff3}.theme-dropup__item--active{border-color:var(--accent);background:#ffffff14}.theme-dropup__swatch{border:1px solid #ffffff26;border-radius:3px;gap:2px;padding:3px 5px;display:flex}.theme-dropup__name{font-size:11px}.td-hire-btn{color:#8b949e;font-family:var(--pixel-font);cursor:pointer;image-rendering:auto;background:#141923d9;border:2px dashed #8b949e66;align-items:center;gap:4px;padding:6px 12px;font-size:10px;font-weight:900;transition:border-color .2s,color .2s,background .2s;display:flex;position:absolute;bottom:12px;right:12px}.td-hire-btn:hover{color:#58a6ff;background:#141923f2;border-color:#58a6ff99}.td-hire-btn__icon{font-size:14px;line-height:1}.view-toggle-btn{font-family:var(--pixel-font);cursor:pointer;border:2px solid var(--pixel-border);background:var(--hud-bg-alt);color:var(--terminal-text);padding:2px 8px;font-size:10px;font-weight:900;transition:background .15s,border-color .15s}.view-toggle-btn.active{background:var(--terminal-bg);border-color:var(--terminal-border-hover);color:var(--active-green)}.customize-overlay{z-index:200;background:#000000a6;justify-content:center;align-items:center;animation:.15s ease-out customizeFadeIn;display:flex;position:fixed;top:0;right:0;bottom:0;left:0}@keyframes customizeFadeIn{0%{opacity:0}to{opacity:1}}.customize-modal{background:var(--hud-bg,#1a1a2a);border:3px solid var(--pixel-border,#4a5568);width:580px;max-width:95vw;max-height:90vh;font-family:var(--pixel-font);flex-direction:column;animation:.2s ease-out customizeSlideIn;display:flex}@keyframes customizeSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.customize-header{border-bottom:2px solid var(--pixel-border);background:var(--hud-bg-alt,#232335);justify-content:space-between;align-items:center;padding:0;display:flex}.customize-tabs{gap:0;display:flex}.customize-tab{font-family:var(--pixel-font);cursor:pointer;color:var(--terminal-text-secondary);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 16px;font-size:11px;font-weight:900;transition:all .15s}.customize-tab:hover{color:var(--terminal-text)}.customize-tab.active{color:var(--accent,#6366f1);border-bottom-color:var(--accent,#6366f1)}.customize-close{font-family:var(--pixel-font);cursor:pointer;width:32px;height:32px;color:var(--terminal-text-secondary);background:0 0;border:none;justify-content:center;align-items:center;margin-right:4px;font-size:12px;font-weight:900;display:flex}.customize-close:hover{color:#ef4444}.customize-body{flex:1;gap:20px;padding:16px;display:flex;overflow-y:auto}.customize-preview{flex-direction:column;align-items:center;gap:10px;min-width:140px;display:flex}.customize-preview-bg{background:var(--terminal-bg,#1e1e2e);border:2px solid var(--pixel-border);justify-content:center;align-items:center;padding:12px 16px 8px;display:flex}.customize-preview-name{color:var(--terminal-text);text-align:center;font-size:10px;font-weight:900}.customize-preview-actions{gap:6px;display:flex}.customize-colors{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.customize-row{flex-direction:column;gap:4px;display:flex}.customize-row-header{align-items:center;gap:8px;display:flex}.customize-row-label{color:var(--terminal-text-secondary);min-width:44px;font-size:10px;font-weight:900}.customize-row-current{border:2px solid var(--pixel-border);width:14px;height:14px}.customize-swatches{flex-wrap:wrap;gap:4px;display:flex}.customize-swatch{border:2px solid var(--pixel-border);cursor:pointer;width:22px;height:22px;padding:0;transition:transform .1s,outline-color .1s}.customize-swatch:hover{z-index:1;transform:scale(1.15)}.customize-btn{font-family:var(--pixel-font);cursor:pointer;color:var(--terminal-text-secondary);border:2px solid var(--pixel-border);background:0 0;padding:4px 10px;font-size:10px;font-weight:900;transition:all .15s}.customize-btn--random{background:var(--accent);color:#fff;border-color:var(--accent)}.customize-btn--random:hover{opacity:.85}.customize-btn--reset{color:var(--terminal-text-secondary);background:0 0}.customize-btn--reset:hover{color:var(--terminal-text)}.customize-btn--cancel{color:var(--terminal-text-secondary);background:0 0}.customize-btn--save{background:var(--active-green,#34d399);color:#000;border-color:var(--active-green)}.customize-btn--save:hover{opacity:.85}.customize-footer{border-top:2px solid var(--pixel-border);justify-content:flex-end;gap:8px;padding:10px 16px;display:flex}.customize-themes{grid-template-columns:repeat(3,1fr);gap:12px;width:100%;display:grid}.customize-theme-card{border:2px solid var(--pixel-border);cursor:pointer;font-family:var(--pixel-font);background:0 0;flex-direction:column;gap:6px;padding:0;transition:all .15s;display:flex}.customize-theme-card:hover{border-color:var(--terminal-text-secondary)}.customize-theme-card.active{border-color:var(--accent);box-shadow:0 0 8px var(--accent,#6366f1) 44}.customize-theme-preview{border:1px solid var(--pixel-border);flex-direction:column;height:64px;display:flex;overflow:hidden}.customize-theme-name{color:var(--terminal-text);text-align:center;padding:4px;font-size:10px;font-weight:900}.theme-btn{font-family:var(--pixel-font);cursor:pointer;border:2px solid var(--pixel-border);background:var(--hud-bg-alt);color:var(--terminal-text-secondary);padding:2px 6px;font-size:10px;font-weight:900;transition:all .15s}.theme-btn:hover{color:var(--terminal-text);border-color:var(--terminal-text-secondary)}.side-panel-chat{--terminal-bg:#f8f9fa;--terminal-bg-deeper:#f0f1f3;--terminal-surface:#fff;--terminal-surface-light:#eef0f4;--terminal-border:#00000014;--terminal-border-hover:#00000029;--terminal-text:#1a1a2e;--terminal-text-secondary:#1e28508c;--terminal-text-muted:#1e28504d;--terminal-scrollbar:#0000000f;--terminal-scrollbar-hover:#00000024;--terminal-code-bg:#f0f1f3;--terminal-code-text:#1565c0;--terminal-code-border:#0000000f;--terminal-inline-bg:#f0f1f3}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}