tycono 0.1.41 → 0.1.43

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.
@@ -8,8 +8,16 @@
8
8
  * - SAVE_PATHS의 AKB 파일만 stage (유저 소스코드 미포함)
9
9
  * - git 없으면 graceful 비활성화
10
10
  * - remote 없으면 commit만 (push skip)
11
+ *
12
+ * Dual-Repo Support (DG-001):
13
+ * - repo='akb': AKB repo (COMPANY_ROOT), SAVE_PATHS 필터 적용
14
+ * - repo='code': Code repo (codeRoot), SAVE_PATHS 필터 비활성화
11
15
  */
12
16
  import { execSync } from 'node:child_process';
17
+ import { readFileSync } from 'node:fs';
18
+ import { join } from 'node:path';
19
+
20
+ export type RepoType = 'akb' | 'code';
13
21
 
14
22
  export interface GitStatus {
15
23
  dirty: boolean;
@@ -63,6 +71,58 @@ const SAVE_PATHS = [
63
71
  'CLAUDE.md',
64
72
  ];
65
73
 
74
+ interface TyconoConfig {
75
+ companyName: string;
76
+ engine: string;
77
+ createdAt: string;
78
+ codeRoot?: string;
79
+ }
80
+
81
+ /**
82
+ * Read codeRoot from .tycono/config.json
83
+ * @param akbRoot - AKB repository root (COMPANY_ROOT)
84
+ * @returns codeRoot path if configured, undefined otherwise
85
+ */
86
+ function getCodeRoot(akbRoot: string): string | undefined {
87
+ try {
88
+ const configPath = join(akbRoot, '.tycono', 'config.json');
89
+ const content = readFileSync(configPath, 'utf-8');
90
+ const config: TyconoConfig = JSON.parse(content);
91
+ return config.codeRoot;
92
+ } catch {
93
+ return undefined;
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Resolve repository root based on repo type
99
+ * @param akbRoot - AKB repository root (COMPANY_ROOT)
100
+ * @param repo - Repository type ('akb' or 'code')
101
+ * @returns Resolved repository root path
102
+ * @throws Error if repo='code' but codeRoot not configured
103
+ */
104
+ function resolveRepoRoot(akbRoot: string, repo: RepoType = 'akb'): string {
105
+ if (repo === 'akb') {
106
+ return akbRoot;
107
+ }
108
+
109
+ const codeRoot = getCodeRoot(akbRoot);
110
+ if (!codeRoot) {
111
+ throw new Error('codeRoot not configured in .tycono/config.json');
112
+ }
113
+
114
+ return codeRoot;
115
+ }
116
+
117
+ /**
118
+ * Check if SAVE_PATHS filter should be applied
119
+ * @param repo - Repository type
120
+ * @returns true if filter should be applied (AKB only)
121
+ */
122
+ function shouldFilterPaths(repo: RepoType = 'akb'): boolean {
123
+ return repo === 'akb';
124
+ }
125
+
66
126
  function run(cmd: string, cwd: string): string {
67
127
  try {
68
128
  return execSync(cmd, { cwd, encoding: 'utf-8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).trim();
@@ -80,24 +140,36 @@ function isGitRepo(root: string): boolean {
80
140
  return run('git rev-parse --is-inside-work-tree', root) === 'true';
81
141
  }
82
142
 
83
- /** Initialize a new git repository */
84
- export function gitInit(root: string): { ok: boolean; message: string } {
85
- if (isGitRepo(root)) {
143
+ /**
144
+ * Initialize a new git repository
145
+ * @param root - AKB repository root (COMPANY_ROOT)
146
+ * @param repo - Repository type ('akb' or 'code'), default 'akb'
147
+ */
148
+ export function gitInit(root: string, repo: RepoType = 'akb'): { ok: boolean; message: string } {
149
+ const repoRoot = resolveRepoRoot(root, repo);
150
+
151
+ if (isGitRepo(repoRoot)) {
86
152
  return { ok: true, message: 'Already a git repository' };
87
153
  }
88
154
  try {
89
- runOrThrow('git init', root);
90
- runOrThrow('git add -A', root);
91
- runOrThrow('git commit -m "Initial commit by Tycono"', root);
155
+ runOrThrow('git init', repoRoot);
156
+ runOrThrow('git add -A', repoRoot);
157
+ runOrThrow('git commit -m "Initial commit by Tycono"', repoRoot);
92
158
  return { ok: true, message: 'Git repository initialized with initial commit' };
93
159
  } catch (err) {
94
160
  return { ok: false, message: err instanceof Error ? err.message : 'git init failed' };
95
161
  }
96
162
  }
97
163
 
98
- /** Get current git status. Returns noGit=true if not a git repo. */
99
- export function getGitStatus(root: string): GitStatus {
100
- if (!isGitRepo(root)) {
164
+ /**
165
+ * Get current git status. Returns noGit=true if not a git repo.
166
+ * @param root - AKB repository root (COMPANY_ROOT)
167
+ * @param repo - Repository type ('akb' or 'code'), default 'akb'
168
+ */
169
+ export function getGitStatus(root: string, repo: RepoType = 'akb'): GitStatus {
170
+ const repoRoot = resolveRepoRoot(root, repo);
171
+
172
+ if (!isGitRepo(repoRoot)) {
101
173
  return {
102
174
  dirty: false,
103
175
  modified: [],
@@ -110,17 +182,22 @@ export function getGitStatus(root: string): GitStatus {
110
182
  };
111
183
  }
112
184
 
113
- const porcelain = run('git status --porcelain', root);
185
+ const porcelain = run('git status --porcelain', repoRoot);
114
186
  const lines = porcelain ? porcelain.split('\n').filter(Boolean) : [];
115
187
 
116
188
  const modified: string[] = [];
117
189
  const untracked: string[] = [];
190
+ const applyFilter = shouldFilterPaths(repo);
118
191
 
119
192
  for (const line of lines) {
120
193
  const status = line.substring(0, 2);
121
194
  const file = line.substring(3);
122
- // Filter to save paths only — never include user source code
123
- if (!SAVE_PATHS.some(p => file.startsWith(p))) continue;
195
+
196
+ // For CODE repo, include all files; for AKB, filter to SAVE_PATHS only
197
+ if (applyFilter && !SAVE_PATHS.some(p => file.startsWith(p))) {
198
+ continue;
199
+ }
200
+
124
201
  if (status.includes('?')) {
125
202
  untracked.push(file);
126
203
  } else {
@@ -129,19 +206,19 @@ export function getGitStatus(root: string): GitStatus {
129
206
  }
130
207
 
131
208
  let lastCommit: GitStatus['lastCommit'] = null;
132
- const logLine = run('git log -1 --format=%H%n%s%n%aI', root);
209
+ const logLine = run('git log -1 --format=%H%n%s%n%aI', repoRoot);
133
210
  if (logLine) {
134
211
  const [sha, message, date] = logLine.split('\n');
135
212
  if (sha) lastCommit = { sha, message: message ?? '', date: date ?? '' };
136
213
  }
137
214
 
138
- const branch = run('git rev-parse --abbrev-ref HEAD', root) || 'unknown';
139
- const hasRemote = !!run('git remote', root);
215
+ const branch = run('git rev-parse --abbrev-ref HEAD', repoRoot) || 'unknown';
216
+ const hasRemote = !!run('git remote', repoRoot);
140
217
 
141
218
  let synced = true;
142
219
  if (hasRemote) {
143
- const local = run('git rev-parse HEAD', root);
144
- const remote = run(`git rev-parse origin/${branch}`, root);
220
+ const local = run('git rev-parse HEAD', repoRoot);
221
+ const remote = run(`git rev-parse origin/${branch}`, repoRoot);
145
222
  synced = !!local && local === remote;
146
223
  }
147
224
 
@@ -157,37 +234,44 @@ export function getGitStatus(root: string): GitStatus {
157
234
  };
158
235
  }
159
236
 
160
- /** Commit + push save-tracked files */
161
- export function gitSave(root: string, message?: string): SaveResult {
162
- if (!isGitRepo(root)) {
237
+ /**
238
+ * Commit + push save-tracked files
239
+ * @param root - AKB repository root (COMPANY_ROOT)
240
+ * @param message - Optional commit message
241
+ * @param repo - Repository type ('akb' or 'code'), default 'akb'
242
+ */
243
+ export function gitSave(root: string, message?: string, repo: RepoType = 'akb'): SaveResult {
244
+ const repoRoot = resolveRepoRoot(root, repo);
245
+
246
+ if (!isGitRepo(repoRoot)) {
163
247
  throw new Error('Not a git repository. Run "git init" first.');
164
248
  }
165
249
 
166
- const status = getGitStatus(root);
250
+ const status = getGitStatus(root, repo);
167
251
  if (!status.dirty) {
168
252
  throw new Error('No changes to save');
169
253
  }
170
254
 
171
255
  const allFiles = [...status.modified, ...status.untracked];
172
256
 
173
- // Stage only save-tracked files
257
+ // Stage files
174
258
  for (const file of allFiles) {
175
- runOrThrow(`git add "${file}"`, root);
259
+ runOrThrow(`git add "${file}"`, repoRoot);
176
260
  }
177
261
 
178
262
  const prefix = '[tycono] ';
179
263
  const commitMsg = message
180
264
  ? `${prefix}${message}`
181
265
  : `${prefix}Save — ${new Date().toISOString().slice(0, 16)} (${allFiles.length} files)`;
182
- runOrThrow(`git commit -m "${commitMsg.replace(/"/g, '\\"')}"`, root);
266
+ runOrThrow(`git commit -m "${commitMsg.replace(/"/g, '\\"')}"`, repoRoot);
183
267
 
184
- const sha = run('git rev-parse HEAD', root);
268
+ const sha = run('git rev-parse HEAD', repoRoot);
185
269
 
186
270
  let pushed = false;
187
271
  let pushError: string | undefined;
188
272
  if (status.hasRemote) {
189
273
  try {
190
- runOrThrow(`git push origin ${status.branch}`, root);
274
+ runOrThrow(`git push origin ${status.branch}`, repoRoot);
191
275
  pushed = true;
192
276
  } catch (err) {
193
277
  pushError = err instanceof Error ? err.message : 'Push failed';
@@ -203,11 +287,18 @@ export function gitSave(root: string, message?: string): SaveResult {
203
287
  };
204
288
  }
205
289
 
206
- /** Get commit history */
207
- export function gitHistory(root: string, limit = 20): CommitInfo[] {
208
- if (!isGitRepo(root)) return [];
290
+ /**
291
+ * Get commit history
292
+ * @param root - AKB repository root (COMPANY_ROOT)
293
+ * @param limit - Maximum number of commits to retrieve
294
+ * @param repo - Repository type ('akb' or 'code'), default 'akb'
295
+ */
296
+ export function gitHistory(root: string, limit = 20, repo: RepoType = 'akb'): CommitInfo[] {
297
+ const repoRoot = resolveRepoRoot(root, repo);
298
+
299
+ if (!isGitRepo(repoRoot)) return [];
209
300
 
210
- const log = run(`git log --format=%H%n%h%n%s%n%aI -n ${limit}`, root);
301
+ const log = run(`git log --format=%H%n%h%n%s%n%aI -n ${limit}`, repoRoot);
211
302
  if (!log) return [];
212
303
 
213
304
  const lines = log.split('\n');
@@ -225,18 +316,28 @@ export function gitHistory(root: string, limit = 20): CommitInfo[] {
225
316
  return commits;
226
317
  }
227
318
 
228
- /** Restore files from a previous commit (non-destructive: creates new commit) */
229
- export function gitRestore(root: string, sha: string, paths?: string[]): RestoreResult {
230
- if (!isGitRepo(root)) {
319
+ /**
320
+ * Restore files from a previous commit (non-destructive: creates new commit)
321
+ * @param root - AKB repository root (COMPANY_ROOT)
322
+ * @param sha - Commit SHA to restore from
323
+ * @param paths - Optional paths to restore (defaults to SAVE_PATHS for AKB, all for CODE)
324
+ * @param repo - Repository type ('akb' or 'code'), default 'akb'
325
+ */
326
+ export function gitRestore(root: string, sha: string, paths?: string[], repo: RepoType = 'akb'): RestoreResult {
327
+ const repoRoot = resolveRepoRoot(root, repo);
328
+
329
+ if (!isGitRepo(repoRoot)) {
231
330
  throw new Error('Not a git repository');
232
331
  }
233
332
 
234
- const targetPaths = paths?.length ? paths : SAVE_PATHS;
333
+ // For CODE repo without explicit paths, restore everything (use '.')
334
+ // For AKB repo, use SAVE_PATHS
335
+ const targetPaths = paths?.length ? paths : (repo === 'code' ? ['.'] : SAVE_PATHS);
235
336
  const restoredFiles: string[] = [];
236
337
 
237
338
  for (const p of targetPaths) {
238
339
  try {
239
- runOrThrow(`git checkout ${sha} -- "${p}"`, root);
340
+ runOrThrow(`git checkout ${sha} -- "${p}"`, repoRoot);
240
341
  restoredFiles.push(p);
241
342
  } catch {
242
343
  // Path may not exist in that commit — skip
@@ -248,10 +349,10 @@ export function gitRestore(root: string, sha: string, paths?: string[]): Restore
248
349
  }
249
350
 
250
351
  const msg = `[tycono] Restore from ${sha.slice(0, 7)} (${restoredFiles.length} paths)`;
251
- runOrThrow('git add -A', root);
252
- runOrThrow(`git commit -m "${msg}"`, root);
352
+ runOrThrow('git add -A', repoRoot);
353
+ runOrThrow(`git commit -m "${msg}"`, repoRoot);
253
354
 
254
- const newSha = run('git rev-parse HEAD', root);
355
+ const newSha = run('git rev-parse HEAD', repoRoot);
255
356
 
256
357
  return { commitSha: newSha, restoredFiles };
257
358
  }
@@ -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-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-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-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--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-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--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-\[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-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-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)}.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-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\/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-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-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-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-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-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-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)}.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)}.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-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--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}.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-nowrap{white-space:nowrap}.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-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\/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\/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\/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}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.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-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))}.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-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-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\: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-white:hover{color:var(--color-white)}.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}}.focus\:border-\[\#F59E0B\]:focus{border-color:#f59e0b}.focus\:border-\[var\(--terminal-border-hover\)\]:focus{border-color:var(--terminal-border-hover)}.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}.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-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}}.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-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-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}