auto-coder-web 0.1.25__py3-none-any.whl → 0.1.26__py3-none-any.whl

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.
@@ -1,42 +1,39 @@
1
1
  from fastapi import APIRouter, Request, HTTPException, Depends
2
+ from autocoder.auto_coder_runner import get_memory, configure
2
3
 
3
4
  router = APIRouter()
4
5
 
5
- async def get_auto_coder_runner(request: Request):
6
- """获取AutoCoderRunner实例作为依赖"""
7
- return request.app.state.auto_coder_runner
8
6
 
9
7
  @router.get("/api/conf")
10
- async def get_conf(
11
- auto_coder_runner = Depends(get_auto_coder_runner)
12
- ):
8
+ async def get_conf():
13
9
  """获取配置信息"""
14
- return {"conf": auto_coder_runner.get_config()}
10
+ memory = get_memory()
11
+ return {"conf": memory["conf"]}
12
+
15
13
 
16
14
  @router.post("/api/conf")
17
15
  async def config(
18
16
  request: Request,
19
- auto_coder_runner = Depends(get_auto_coder_runner)
20
17
  ):
21
18
  """更新配置信息"""
22
19
  data = await request.json()
23
20
  try:
24
21
  for key, value in data.items():
25
- auto_coder_runner.configure(key, str(value))
22
+ configure(f"{key}:{str(value)}")
26
23
  return {"status": "success"}
27
24
  except Exception as e:
28
25
  raise HTTPException(status_code=400, detail=str(e))
29
26
 
27
+
30
28
  @router.delete("/api/conf/{key}")
31
29
  async def delete_config(
32
- key: str,
33
- auto_coder_runner = Depends(get_auto_coder_runner)
30
+ key: str
34
31
  ):
35
32
  """删除配置项"""
36
33
  try:
37
- result = auto_coder_runner.drop_config(key)
38
- return result
34
+ configure(f"/drop {key}")
35
+ return {"status": "success"}
39
36
  except ValueError as e:
40
37
  raise HTTPException(status_code=404, detail=str(e))
41
38
  except Exception as e:
42
- raise HTTPException(status_code=400, detail=str(e))
39
+ raise HTTPException(status_code=400, detail=str(e))
@@ -1,40 +1,108 @@
1
+ from typing import List
2
+ import asyncio
1
3
  from fastapi import APIRouter, Request, HTTPException, Depends
2
4
  from autocoder.agent.auto_filegroup import AutoFileGroup
3
5
  from autocoder.utils import operate_config_api
6
+ from autocoder.auto_coder_runner import get_memory,save_memory, load_memory
7
+ import json
8
+ import os
4
9
 
5
10
  router = APIRouter()
6
11
 
7
- async def get_file_group_manager(request: Request):
8
- """获取FileGroupManager实例作为依赖"""
9
- return request.app.state.file_group_manager
10
12
 
11
13
  async def get_project_path(request: Request):
12
14
  """获取项目路径作为依赖"""
13
15
  return request.app.state.project_path
14
16
 
15
- async def get_auto_coder_runner(request: Request):
16
- """获取AutoCoderRunner实例作为依赖"""
17
- return request.app.state.auto_coder_runner
17
+
18
+ def _create_file_group(group_name: str, description: str):
19
+ memory = get_memory()
20
+ if group_name in memory["current_files"]["groups"]:
21
+ return None
22
+
23
+ memory["current_files"]["groups"][group_name] = []
24
+
25
+ if "groups_info" not in memory["current_files"]:
26
+ memory["current_files"]["groups_info"] = {}
27
+
28
+ memory["current_files"]["groups_info"][group_name] = {
29
+ "query_prefix": description
30
+ }
31
+ save_memory()
32
+
33
+
34
+ def _add_files_to_group(project_path: str, name: str, files: List[str]):
35
+ memory = get_memory()
36
+ for file in files:
37
+ memory["current_files"]["groups"][name].append(
38
+ os.path.join(project_path, file))
39
+ save_memory()
40
+
41
+
42
+ def _remove_file_from_group(project_path: str, name: str, files: List[str]):
43
+ memory = get_memory()
44
+ for file in files:
45
+ memory["current_files"]["groups"][name].remove(
46
+ os.path.join(project_path, file))
47
+ save_memory()
48
+
49
+
50
+ def _update_group_description(name: str, description: str):
51
+ memory = get_memory()
52
+ memory["current_files"]["groups_info"][name]["query_prefix"] = description
53
+ save_memory()
54
+
55
+
56
+ def _get_groups(project_path: str):
57
+ memory = get_memory()
58
+ v = [
59
+ {
60
+ "name": group_name,
61
+ "files": memory["current_files"]["groups"][group_name],
62
+ "description": memory["current_files"]["groups_info"][group_name]["query_prefix"]
63
+ } for group_name in memory["current_files"]["groups"]
64
+ ]
65
+ return v
66
+
67
+ def _switch_groups(group_names: List[str]):
68
+ memory = get_memory()
69
+ new_files = []
70
+ for group_name in group_names:
71
+ files = memory["current_files"]["groups"][group_name]
72
+ new_files.extend(files)
73
+ memory["current_files"]["files"] = new_files
74
+ memory["current_files"]["current_groups"] = group_names
75
+ save_memory()
76
+
77
+
78
+ def _delete_file_group(project_path: str, group_name: str):
79
+ memory = get_memory()
80
+ if group_name not in memory["current_files"]["groups"]:
81
+ return None
82
+ del memory["current_files"]["groups"][group_name]
83
+ if group_name in memory["current_files"]["groups_info"]:
84
+ del memory["current_files"]["groups_info"][group_name]
85
+ save_memory()
86
+
18
87
 
19
88
  @router.post("/api/file-groups")
20
89
  async def create_file_group(
21
- request: Request,
22
- file_group_manager = Depends(get_file_group_manager)
90
+ request: Request
23
91
  ):
24
92
  data = await request.json()
25
- name = data.get("name")
93
+ group_name = data.get("name")
26
94
  description = data.get("description", "")
27
- group = await file_group_manager.create_group(name, description)
28
- return group
95
+ await asyncio.to_thread(_create_file_group, group_name, description)
96
+ return {"status": "success", "message": f"Created group: {group_name}"}
97
+
29
98
 
30
99
  @router.post("/api/file-groups/auto")
31
100
  async def auto_create_groups(
32
101
  request: Request,
33
- file_group_manager = Depends(get_file_group_manager),
34
- project_path: str = Depends(get_project_path),
35
- auto_coder_runner = Depends(get_auto_coder_runner)
36
- ):
102
+ project_path: str = Depends(get_project_path)
103
+ ):
37
104
  try:
105
+ memory = get_memory()
38
106
  data = await request.json()
39
107
  file_size_limit = data.get("file_size_limit", 100)
40
108
  skip_diff = data.get("skip_diff", False)
@@ -42,7 +110,7 @@ async def auto_create_groups(
42
110
 
43
111
  # Create AutoFileGroup instance
44
112
  auto_grouper = AutoFileGroup(
45
- operate_config_api.get_llm(auto_coder_runner.memory),
113
+ operate_config_api.get_llm(memory),
46
114
  project_path,
47
115
  skip_diff=skip_diff,
48
116
  file_size_limit=file_size_limit,
@@ -54,67 +122,71 @@ async def auto_create_groups(
54
122
 
55
123
  # Create groups using file_group_manager
56
124
  for group in groups:
57
- await file_group_manager.create_group(
58
- name=group.name,
59
- description=group.description
60
- )
125
+ await asyncio.to_thread(_create_file_group,
126
+ name=group.name,
127
+ description=group.description
128
+ )
61
129
  # Add files to the group
62
- await file_group_manager.add_files_to_group(
63
- group.name,
64
- group.urls
65
- )
130
+ await asyncio.to_thread(_add_files_to_group,
131
+ group.name,
132
+ group.urls
133
+ )
66
134
 
67
135
  return {"status": "success", "message": f"Created {len(groups)} groups"}
68
136
  except Exception as e:
69
137
  raise HTTPException(status_code=500, detail=str(e))
70
138
 
139
+
71
140
  @router.post("/api/file-groups/switch")
72
141
  async def switch_file_groups(
73
- request: Request,
74
- file_group_manager = Depends(get_file_group_manager)
142
+ request: Request
75
143
  ):
76
144
  data = await request.json()
77
145
  group_names = data.get("group_names", [])
78
- result = await file_group_manager.switch_groups(group_names)
79
- return result
146
+ await asyncio.to_thread(_switch_groups, group_names)
147
+ return {"status": "success", "message": f"Switched to groups: {group_names}"}
148
+
80
149
 
81
150
  @router.delete("/api/file-groups/{name}")
82
151
  async def delete_file_group(
83
152
  name: str,
84
- file_group_manager = Depends(get_file_group_manager)
153
+ project_path: str = Depends(get_project_path)
85
154
  ):
86
- await file_group_manager.delete_group(name)
87
- return {"status": "success"}
155
+ await asyncio.to_thread(_delete_file_group, project_path, name)
156
+ return {"status": "success", "message": f"Deleted group: {name}"}
157
+
88
158
 
89
159
  @router.post("/api/file-groups/{name}/files")
90
160
  async def add_files_to_group(
91
- name: str,
161
+ name: str,
92
162
  request: Request,
93
- file_group_manager = Depends(get_file_group_manager)
163
+ project_path: str = Depends(get_project_path)
94
164
  ):
95
165
  data = await request.json()
96
166
  files = data.get("files", [])
97
167
  description = data.get("description")
98
168
  if description is not None:
99
- group = await file_group_manager.update_group_description(name, description)
169
+ await asyncio.to_thread(_update_group_description, name, description)
100
170
  else:
101
- group = await file_group_manager.add_files_to_group(name, files)
102
- return group
171
+ await asyncio.to_thread(_add_files_to_group, project_path, name, files)
172
+ return {"status": "success", "message": f"Added files to group: {name}"}
173
+
103
174
 
104
175
  @router.delete("/api/file-groups/{name}/files")
105
176
  async def remove_files_from_group(
106
- name: str,
177
+ name: str,
107
178
  request: Request,
108
- file_group_manager = Depends(get_file_group_manager)
179
+ project_path: str = Depends(get_project_path)
109
180
  ):
110
181
  data = await request.json()
111
182
  files = data.get("files", [])
112
- group = await file_group_manager.remove_files_from_group(name, files)
113
- return group
183
+ await asyncio.to_thread(_remove_file_from_group, project_path, name, files)
184
+ return {"status": "success", "message": f"Removed files from group: {name}"}
185
+
114
186
 
115
187
  @router.get("/api/file-groups")
116
188
  async def get_file_groups(
117
- file_group_manager = Depends(get_file_group_manager)
189
+ project_path: str = Depends(get_project_path)
118
190
  ):
119
- groups = await file_group_manager.get_groups()
120
- return {"groups": groups}
191
+ groups = await asyncio.to_thread(_get_groups, project_path)
192
+ return {"groups": groups}
@@ -37,6 +37,7 @@ async def get_files(
37
37
  project_path: str = Depends(get_project_path)
38
38
  ):
39
39
  tree = get_directory_tree(project_path)
40
+ # print(tree)
40
41
  return {"tree": tree}
41
42
 
42
43
  @router.put("/api/file/{path:path}")
auto_coder_web/proxy.py CHANGED
@@ -43,7 +43,7 @@ import yaml
43
43
  import git
44
44
  import hashlib
45
45
  from datetime import datetime
46
- from autocoder.utils import operate_config_api
46
+ from auto_coder_web.auto_coder_runner_wrapper import AutoCoderRunnerWrapper
47
47
  from .routers import todo_router, settings_router, auto_router, commit_router, chat_router, coding_router
48
48
  from expert_routers import history_router
49
49
  from .common_router import completions_router, file_router, auto_coder_conf_router, chat_list_router, file_group_router
@@ -323,10 +323,7 @@ class ProxyServer:
323
323
 
324
324
  self.setup_static_files()
325
325
  self.project_path = project_path
326
-
327
- self.auto_coder_runner = AutoCoderRunner(project_path, product_mode=product_mode)
328
- self.file_group_manager = FileGroupManager(self.auto_coder_runner)
329
-
326
+ self.auto_coder_runner = AutoCoderRunnerWrapper(project_path, product_mode=product_mode)
330
327
  self.setup_routes()
331
328
  self.client = httpx.AsyncClient()
332
329
 
@@ -353,6 +350,11 @@ class ProxyServer:
353
350
 
354
351
  def setup_routes(self):
355
352
 
353
+ # Store project_path in app state for dependency injection
354
+ self.app.state.project_path = self.project_path
355
+ # Store auto_coder_runner in app state for dependency injection
356
+ self.app.state.auto_coder_runner = self.auto_coder_runner
357
+
356
358
  self.app.include_router(todo_router.router)
357
359
  self.app.include_router(settings_router.router)
358
360
  self.app.include_router(auto_router.router)
@@ -364,14 +366,7 @@ class ProxyServer:
364
366
  self.app.include_router(file_router.router)
365
367
  self.app.include_router(auto_coder_conf_router.router)
366
368
  self.app.include_router(chat_list_router.router)
367
- self.app.include_router(file_group_router.router)
368
-
369
- # Store project_path in app state for dependency injection
370
- self.app.state.project_path = self.project_path
371
- # Store auto_coder_runner in app state for dependency injection
372
- self.app.state.auto_coder_runner = self.auto_coder_runner
373
- # Store file_group_manager in app state for dependency injection
374
- self.app.state.file_group_manager = self.file_group_manager
369
+ self.app.include_router(file_group_router.router)
375
370
 
376
371
  @self.app.on_event("shutdown")
377
372
  async def shutdown_event():
auto_coder_web/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.1.25"
1
+ __version__ = "0.1.26"
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "files": {
3
- "main.css": "/static/css/main.95277c5f.css",
4
- "main.js": "/static/js/main.66c37ccf.js",
3
+ "main.css": "/static/css/main.b9764291.css",
4
+ "main.js": "/static/js/main.a707a18c.js",
5
5
  "static/js/453.d855a71b.chunk.js": "/static/js/453.d855a71b.chunk.js",
6
6
  "index.html": "/index.html",
7
- "main.95277c5f.css.map": "/static/css/main.95277c5f.css.map",
8
- "main.66c37ccf.js.map": "/static/js/main.66c37ccf.js.map",
7
+ "main.b9764291.css.map": "/static/css/main.b9764291.css.map",
8
+ "main.a707a18c.js.map": "/static/js/main.a707a18c.js.map",
9
9
  "453.d855a71b.chunk.js.map": "/static/js/453.d855a71b.chunk.js.map"
10
10
  },
11
11
  "entrypoints": [
12
- "static/css/main.95277c5f.css",
13
- "static/js/main.66c37ccf.js"
12
+ "static/css/main.b9764291.css",
13
+ "static/js/main.a707a18c.js"
14
14
  ]
15
15
  }
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.66c37ccf.js"></script><link href="/static/css/main.95277c5f.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.a707a18c.js"></script><link href="/static/css/main.b9764291.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -0,0 +1,6 @@
1
+ /*
2
+ ! tailwindcss v3.4.14 | MIT License | https://tailwindcss.com
3
+ */body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:14px;line-height:1.5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-slide-in{animation:slideIn .3s ease-out forwards}.animate-pulse{animation:pulse 2s infinite}.transition-all{transition-duration:.3s}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1}::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.diff-viewer-tabs .ant-tabs-nav{margin-bottom:0!important}.diff-viewer-tabs .ant-tabs-tab{background-color:#1a2234!important;border:1px solid #374151!important;border-bottom:none!important;border-radius:6px 6px 0 0!important;margin-right:2px!important;padding:0!important;transition:all .3s}.diff-viewer-tabs .ant-tabs-tab-active{background-color:#2d3748!important;border-color:#4b5563!important}.diff-viewer-tabs .ant-tabs-content-holder{background-color:#111827;border-top:1px solid #374151}.diff-viewer-tabs .ant-tabs-content{background-color:#111827;height:100%}.custom-tabs-bar{margin:0!important;padding:0!important}.bg-\[#1F2937\]::-webkit-scrollbar-track,.bg-\[\#111827\]::-webkit-scrollbar-track{background:#1f2937}.bg-\[#1F2937\]::-webkit-scrollbar-thumb,.bg-\[\#111827\]::-webkit-scrollbar-thumb{background:#4b5563}.bg-\[#1F2937\]::-webkit-scrollbar-thumb:hover,.bg-\[\#111827\]::-webkit-scrollbar-thumb:hover{background:#6b7280}.custom-modal .ant-modal-content{background-color:#1f2937;border:1px solid #4b5563;box-shadow:0 4px 12px #00000080;color:#fff}.custom-modal .ant-modal-header{background-color:#1f2937;border-bottom:1px solid #4b5563;padding:16px 24px}.custom-modal .ant-modal-title{color:#fff}.custom-modal .ant-modal-close{color:#9ca3af}.custom-modal .ant-modal-close:hover{color:#e5e7eb}.custom-modal .ant-modal-footer{background-color:#1f2937;border-top:1px solid #4b5563;padding:12px 24px}.custom-modal .ant-modal-footer .ant-btn-default{background-color:initial;border-color:#4b5563;color:#e5e7eb}.custom-modal .ant-modal-footer .ant-btn-default:hover{background-color:#374151;border-color:#6b7280}.custom-modal .ant-modal-footer .ant-btn-primary:not(:disabled){background-color:#8b5cf6;border-color:#8b5cf6}.custom-modal .ant-modal-footer .ant-btn-primary:not(:disabled):hover{background-color:#7c3aed;border-color:#7c3aed}.file-tree-container{background-color:#1e1e1e;border-right:1px solid #333;display:flex;flex-direction:column;font-size:.9rem;height:100%}.file-tree-header{align-items:center;background-color:#252525;border-bottom:1px solid #333;display:flex;justify-content:space-between;padding:8px 12px}.file-tree-header-title{color:#e0e0e0;font-size:.95rem;font-weight:500;-webkit-user-select:none;user-select:none}.file-tree-actions{display:flex;gap:8px}.action-button{align-items:center;background:#0000;border:none;border-radius:4px;color:#aaa;cursor:pointer;display:flex;justify-content:center;padding:4px;transition:all .2s ease}.action-button:hover{background-color:#ffffff1a;color:#fff}.file-tree-search{background-color:#252525;border-bottom:1px solid #333;padding:8px 12px}.file-tree-content{flex:1 1;overflow-y:auto;padding:4px 0}.custom-input{background-color:#2c2c2c!important;border-color:#444!important;border-radius:4px!important;color:#ddd!important;transition:all .3s ease!important}.custom-input:focus-within,.custom-input:hover{border-color:#1890ff!important}.custom-input input{color:#ddd!important}.custom-input .ant-input-prefix{color:#999!important}.file-tree-container .ant-tree{background-color:initial!important}.file-tree-container .ant-tree-node-content-wrapper{border-radius:2px;padding:2px 4px;transition:all .2s ease}.file-tree-container .ant-tree-node-content-wrapper:hover{background-color:#ffffff1a!important}.file-tree-container .ant-tree-node-selected{background-color:#1890ff33!important}.file-tree-container .ant-tree-switcher{color:#aaa}.file-tree-container .ant-tree-title{color:#e0e0e0;font-size:.9rem}.file-node{gap:6px}.file-icon,.file-node{align-items:center;display:flex}.file-icon{font-size:1rem;height:16px;justify-content:center;width:16px}.file-icon.folder{color:#e8c37b}.file-icon.file{color:#9cdcfe}.file-icon.file-js,.file-icon.file-jsx,.file-icon.file-ts,.file-icon.file-tsx{color:#4fc1ff}.file-icon.file-css,.file-icon.file-less,.file-icon.file-scss{color:#ce9178}.file-icon.file-json{color:#fad67d}.file-icon.file-md{color:#c586c0}.file-icon.file-html{color:#e06c75}.file-icon.file-py{color:#4ec9b0}.empty-state{align-items:center;color:#777;display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;text-align:center}.empty-state-icon{font-size:2rem;margin-bottom:12px;opacity:.6}.empty-state-text{font-size:.9rem}.path-breadcrumb{color:#888;font-size:.8rem;margin-top:2px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor-container{background-color:#1e1e1e;height:100%;width:100%}.code-editor-container{background-color:#1e1e1e;display:flex;flex-direction:column;height:100%}.code-editor-header{background-color:#252526;border-bottom:1px solid #333;padding:8px 12px}.code-editor-header-content{align-items:center;display:flex;justify-content:space-between}.file-info{align-items:center;display:flex;gap:8px}.file-path{color:#ddd;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-button{align-items:center;background-color:#0e639c;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:14px;gap:6px;padding:6px 12px;transition:background-color .2s}.save-button:hover{background-color:#17b}.save-button:disabled{cursor:not-allowed;opacity:.5}.code-editor-content{display:flex;flex:1 1;overflow:hidden}.file-tree-panel{height:100%;overflow:hidden;width:250px}.editor-panel{flex:1 1;height:100%}.file-directory-selector{background-color:#111827;border-right:1px solid #4b556380;display:flex;flex-direction:column;height:100%;transition:all .2s ease}.search-container{border-bottom:1px solid #4b55634d;padding:12px}.search-header{align-items:center;display:flex;gap:8px;margin-bottom:8px}.view-mode-toggle{flex-shrink:0}.view-mode-toggle .ant-radio-button-wrapper{background-color:#1f2937cc!important;border-color:#4b556380!important;color:#e5e7eb!important}.view-mode-toggle .ant-radio-button-wrapper-checked{background-color:#3b82f6!important;border-color:#3b82f6!important;color:#fff!important}.directory-breadcrumb{border-bottom:1px solid #4b556333;color:#9ca3af;flex-wrap:wrap;font-size:12px;margin-bottom:8px;padding:4px 0}.breadcrumb-item,.directory-breadcrumb{align-items:center;display:flex;gap:4px}.breadcrumb-item .ant-btn{color:#d1d5db;font-size:12px;height:auto;min-height:24px;padding:0 4px}.breadcrumb-item .ant-btn:hover{background-color:#3b82f61a;color:#3b82f6}.search-input.ant-input-affix-wrapper{background-color:#1f2937cc!important;border:1px solid #4b556380!important;border-radius:6px!important;box-shadow:0 1px 2px #0000001a;flex:1 1;transition:all .2s ease}.filter-icon{color:#9ca3af;cursor:pointer;transition:color .2s}.filter-icon:hover{color:#d1d5db}.search-input.ant-input-affix-wrapper:focus,.search-input.ant-input-affix-wrapper:hover{border-color:#3b82f6!important;box-shadow:0 0 0 2px #3b82f61a}.search-input .ant-input{background-color:initial!important;color:#e5e7eb!important}.search-input .ant-input::placeholder{color:#9ca3afcc!important}.action-buttons{display:flex;gap:8px;margin-top:10px}.add-button.ant-btn{background-color:#2563eb!important;border-color:#1d4ed8!important;border-radius:6px;box-shadow:0 1px 2px #0000001a;height:32px;padding:4px 12px;transition:all .2s ease}.add-button.ant-btn:hover:not(:disabled){background-color:#1d4ed8!important;box-shadow:0 2px 4px #00000026;transform:translateY(-1px)}.add-button.ant-btn:disabled{background-color:#2563eb80!important;border-color:#1d4ed880!important;color:#e5e7eb80!important}.select-all-button.ant-btn{background-color:#1f2937cc!important;border-color:#4b556380!important;border-radius:6px;color:#e5e7eb!important;height:32px;padding:4px 12px;transition:all .2s ease}.select-all-button.ant-btn:hover{background-color:#374151cc!important;border-color:#6b728080!important}.file-tree-container{flex:1 1;margin-top:4px;overflow:auto;padding:8px;scrollbar-color:#4b5563 #1f2937;scrollbar-width:thin}.file-tree-container::-webkit-scrollbar{width:6px}.file-tree-container::-webkit-scrollbar-track{background:#1f293780;border-radius:6px}.file-tree-container::-webkit-scrollbar-thumb{background-color:#4b5563b3;border:1px solid #1f293780;border-radius:6px}.file-tree-container::-webkit-scrollbar-thumb:hover{background-color:#6b7280b3}.custom-dark-tree.ant-tree{background-color:initial!important;color:#e5e7eb!important;font-size:13px!important}.custom-dark-tree .ant-tree-treenode{padding:2px 0!important;transition:all .15s ease}.custom-dark-tree .ant-tree-node-content-wrapper{border-radius:4px!important;color:#e5e7eb!important;padding:2px 4px!important;transition:all .15s ease}.custom-dark-tree .ant-tree-node-content-wrapper:hover{background-color:#374151b3!important}.custom-dark-tree .ant-tree-node-selected{background-color:#1e40af99!important}.custom-dark-tree .ant-tree-checkbox-inner{background-color:#37415180!important;border-color:#4b5563b3!important;transition:all .15s ease}.custom-dark-tree .ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#2563eb!important;border-color:#2563eb!important}.custom-dark-tree .ant-tree-switcher{color:#9ca3afcc!important;transition:all .15s ease}.custom-dark-tree .ant-tree-switcher:hover{color:#d1d5dbe6!important}.custom-dark-tree .ant-tree-title{color:#e5e7eb!important;max-width:100%;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease;white-space:nowrap}.file-context-menu{background-color:#1f2937!important;border:1px solid #4b556399!important;border-radius:6px!important;box-shadow:0 4px 12px #0000004d!important;min-width:160px!important;padding:6px 0!important}.file-context-menu .ant-menu-item{color:#e5e7eb!important;font-size:13px!important;padding:6px 12px!important;transition:all .15s ease!important}.file-context-menu .ant-menu-item:hover{background-color:#3b82f626!important;color:#60a5fa!important}.file-context-menu .ant-menu-item-disabled{color:#e5e7eb66!important}.file-context-menu .ant-menu-item .anticon{margin-right:8px!important}.context-menu-wrapper{z-index:1050}.custom-dark-tree .file-icon{font-size:14px;margin-right:6px;opacity:.8}.custom-dark-tree .folder-icon{color:#d97706!important}.file-node-title{align-items:center;display:flex;width:100%}.file-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-highlight{background-color:#eab3084d;border-radius:2px;font-weight:700;padding:0 2px}.file-list-view{width:100%}.file-list-item{background-color:initial!important;border:none!important;border-radius:4px!important;cursor:pointer;margin-bottom:2px!important;padding:4px 8px!important;transition:all .15s ease}.file-list-item:hover{background-color:#37415180!important}.file-list-item.selected{background-color:#1e40af80!important}.file-list-icon{background-color:initial!important}.file-list-title{font-size:13px!important}.file-list-item .ant-checkbox-wrapper,.file-list-title{color:#e5e7eb!important}.file-type-filter-menu{background-color:#1f2937!important;border:1px solid #4b556399!important;border-radius:6px!important;box-shadow:0 4px 12px #0000004d!important;max-height:300px;overflow-y:auto;padding:6px 0!important}.file-type-filter-menu .ant-menu-item-group-title{color:#60a5fa!important;font-size:12px!important;padding:6px 12px!important}.file-type-filter-menu .ant-menu-item{padding:6px 12px!important}.file-type-filter-menu .ant-checkbox-wrapper{color:#e5e7eb!important;font-size:13px!important}.file-type-filter-menu .ant-checkbox-inner{background-color:#1f2937cc!important;border-color:#4b556399!important}.file-type-filter-menu .ant-checkbox-checked .ant-checkbox-inner{background-color:#3b82f6!important;border-color:#3b82f6!important}.dark-mode-table .ant-table{color:#e5e7eb!important}.dark-mode-table .ant-table-thead>tr>th{background-color:#1f2937!important;border-bottom:1px solid #374151!important;color:#e5e7eb!important}.dark-mode-table .ant-table-tbody>tr>td{border-bottom:1px solid #374151!important;transition:background .2s}.dark-mode-table .ant-table-tbody>tr:hover>td{background-color:#374151!important}.dark-mode-table .ant-table-tbody>tr.ant-table-row-selected>td{background-color:#1e40af!important}.dark-mode-table .ant-empty-description{color:#9ca3af!important}.dark-mode-table .ant-table-placeholder{background-color:#111827!important;border-bottom:1px solid #374151!important}.dark-mode-table .ant-empty{color:#9ca3af!important}.dark-mode-table .ant-empty-img-simple-g{stroke:#4b5563!important}.dark-mode-table .ant-empty-img-simple-path{fill:#1f2937!important}.dark-mode-table .ant-empty-img-simple-ellipse{fill:#374151!important}.ant-empty-img-default-path{fill:#1f2937!important}.ant-empty-img-default-g{stroke:#4b5563!important}.ant-empty-img-default-ellipse{fill:#374151!important}.custom-empty-container{background-color:#111827!important;border-radius:8px;padding:24px}.dark-theme-modal .ant-modal-content{background-color:#1f2937!important;box-shadow:0 8px 30px #00000080!important}.dark-theme-modal .ant-modal-header{background-color:#1f2937!important;border-bottom:1px solid #374151!important}.dark-theme-modal .ant-modal-footer{border-top:1px solid #374151!important}.dark-theme-modal .ant-btn-default{background-color:#374151!important;border-color:#4b5563!important;color:#e5e7eb!important}.dark-theme-modal .ant-btn-default:hover{background-color:#4b5563!important;border-color:#6b7280!important}.dark-theme-modal .ant-btn-primary{background-color:#2563eb!important;border-color:#1d4ed8!important}.dark-theme-modal .ant-btn-primary:hover{background-color:#1d4ed8!important;border-color:#1e40af!important}div{scrollbar-color:#4b5563 #1f2937;scrollbar-width:thin}div::-webkit-scrollbar{height:8px;width:8px}div::-webkit-scrollbar-track{background:#1f2937}div::-webkit-scrollbar-thumb{background-color:#4b5563;border:2px solid #1f2937;border-radius:4px}div::-webkit-scrollbar-corner{background-color:#1f2937}.ant-input,.ant-input-affix-wrapper,.ant-input-number,.ant-select-dropdown,.ant-select-selector{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.ant-input-affix-wrapper:hover,.ant-input-number:hover,.ant-input:hover,.ant-select-selector:hover{border-color:#4b5563!important}.ant-input-affix-wrapper-focused,.ant-input-number-focused,.ant-input:focus,.ant-select-focused .ant-select-selector{border-color:#3b82f6!important;box-shadow:0 0 0 2px #3b82f633!important}.ant-input-affix-wrapper .ant-input{background-color:initial!important;border:none!important}.ant-checkbox-inner{background-color:#374151!important;border-color:#4b5563!important}.ant-checkbox-checked .ant-checkbox-inner{background-color:#2563eb!important;border-color:#2563eb!important}.custom-empty-state .ant-empty-image{filter:invert(20%) sepia(10%) saturate(200%) hue-rotate(180deg) brightness(95%) contrast(80%);opacity:.6}.custom-empty-state .ant-empty-description{color:#9ca3af!important}.empty-files-container{align-items:center;background-color:#111827;border-radius:8px;color:#9ca3af;display:flex;height:100%;justify-content:center;padding:24px}.dark-mode-table .ant-table-cell,.dark-mode-table .ant-table-container,.dark-mode-table .ant-table-content{background-color:initial!important}.ant-empty-normal .ant-empty-image{height:60px}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{border:0;height:0;left:-9999em;margin:0;opacity:0;overflow:hidden;padding:0;position:absolute;resize:none;top:0;white-space:nowrap;width:0;z-index:-5}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;bottom:0;cursor:default;left:0;overflow-y:scroll;position:absolute;right:0;top:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{left:0;position:absolute;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;left:-9999em;line-height:normal;position:absolute;top:0;visibility:hidden}.xterm.enable-mouse-events{cursor:default}.xterm .xterm-cursor-pointer,.xterm.xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{bottom:0;color:#0000;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:10}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{height:1px;left:-9999px;overflow:hidden;position:absolute;width:1px}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{position:absolute;z-index:6}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{pointer-events:none;position:absolute;right:0;top:0;z-index:8}.xterm-decoration-top{position:relative;z-index:2}.split-container{display:flex;height:100%;width:100%}.gutter{position:relative}.gutter.gutter-horizontal{cursor:col-resize}.gutter:after{background-color:#9ca3af;border-radius:2px;content:"";height:20px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:4px}.gutter:hover:after{background-color:#f3f4f6}.split-container>div{height:100%;min-width:0;overflow:hidden}.task-status-card{background-color:#2d2d2d;border:1px solid #374151;box-shadow:0 2px 8px #00000026;margin-bottom:16px;width:100%}.task-status-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.task-status-loading{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;padding:40px 0}.task-status-footer{display:flex;justify-content:flex-end;padding-top:8px}.todo-container{background-color:initial}.todo-column{background-color:#1a1a1a;border:1px solid #2d2d2d;min-height:200px;overflow:hidden;position:relative;transition:all .2s ease;transition:all .3s ease-in-out}.todo-column:hover{border-color:#3d3d3d}.todo-column.is-dragging-over{background:#3b82f61a;border-color:#3b82f6;transition:background .2s ease}.todo-card{background-color:#2d2d2d;border:1px solid #374151;cursor:move;transition:all .2s ease;-webkit-user-select:none;user-select:none}.todo-card:hover{background-color:#374151;box-shadow:0 2px 4px #0000001a;transform:translateY(-1px)}.todo-card.is-dragging{border-color:#3b82f6;box-shadow:0 4px 8px #3b82f633;opacity:.8;transform:scale(1.02)}.todo-title{color:#e5e7eb;font-size:14px;line-height:1.4}.todo-due-date{color:#9ca3af;font-size:12px;margin-top:4px}.todo-tags{display:flex;flex-wrap:wrap;gap:4px}.ant-modal-title{color:#e5e7eb!important}.ant-modal-close{color:#9ca3af!important}.ant-modal-close:hover{color:#e5e7eb!important}.custom-input{border-color:#374151!important}.custom-select .ant-select-selector{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:#1e293b}.custom-scrollbar::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#475569}.custom-scrollbar{scrollbar-color:#4b5563 #374151;scrollbar-width:thin}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .3s ease-in-out}.loading-spinner{animation:spin 1s ease-in-out infinite;border:3px solid #3b82f64d;border-radius:50%;border-top-color:#3b82f6;display:inline-block;height:30px;width:30px}.bg-gray-750{background-color:#222933}.task-split-result-view{animation:slideDown .3s ease-in-out;border-radius:8px;box-shadow:0 4px 12px #00000040;overflow:hidden}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.task-split-result-view .ant-typography{transition:color .3s ease}.task-split-result-view .ant-collapse-item{border-radius:6px;margin-bottom:8px;overflow:hidden}.task-split-result-view .ant-card{transition:all .3s ease}.task-split-result-view .ant-card:hover{box-shadow:0 6px 12px #00000026;transform:translateY(-1px)}.task-split-result-view .ant-divider{margin:16px 0}.task-split-result-view .ant-tag{transition:all .3s ease}.task-split-result-view .ant-tag:hover{transform:scale(1.05)}.todo-board{gap:1rem}.todo-column.flex.w-full{animation:scaleUp .3s ease-in-out}@keyframes scaleUp{0%{transform:scale(.98)}to{transform:scale(1)}}.todo-column.flex-1{animation:fadeIn .3s ease-in-out}.todo-column.maximized{flex:1 0 100%}.todo-column .maximize-button{opacity:.7;transition:opacity .2s ease}.todo-column:hover .maximize-button{opacity:1}.todo-column-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.75rem}.todo-column-header h3{font-weight:500;margin:0}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
4
+ ! tailwindcss v3.4.14 | MIT License | https://tailwindcss.com
5
+ */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}*{scrollbar-color:auto;scrollbar-width:auto}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-2{right:-.5rem}.-right-4{right:-1rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-24{bottom:6rem}.left-0{left:0}.left-10{left:2.5rem}.left-2{left:.5rem}.left-3\.5{left:.875rem}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-bottom:.125rem;margin-top:.125rem}.my-4{margin-bottom:1rem;margin-top:1rem}.-ml-1{margin-left:-.25rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[80vh\]{height:80vh}.h-\[calc\(100\%-80px\)\]{height:calc(100% - 80px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[150px\]{max-height:150px}.max-h-\[calc\(100vh-220px\)\]{max-height:calc(100vh - 220px)}.max-h-screen{max-height:100vh}.min-h-\[120px\]{min-height:120px}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[50px\]{width:50px}.w-\[80\%\]{width:80%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[180px\]{max-width:180px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-45{--tw-rotate:45deg}.rotate-45,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(0px*(1 - var(--tw-space-x-reverse)));margin-right:calc(0px*var(--tw-space-x-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-l{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-r-lg{border-bottom-right-radius:.5rem;border-top-right-radius:.5rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-tl-none{border-top-left-radius:0}.rounded-tr-none{border-top-right-radius:0}.border{border-width:1px}.border-0{border-width:0}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-\[\#374151\]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-gray-700\/50{border-color:#37415180}.border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-r-transparent{border-right-color:#0000}.bg-\[\#111827\]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-\[\#1F2937\]{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-\[\#1e1e1e\]{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity))}.bg-\[\#1f1f1f\]{--tw-bg-opacity:1;background-color:rgb(31 31 31/var(--tw-bg-opacity))}.bg-\[\#2d2d2d\]{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-900\/30{background-color:#1e3a8a4d}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-700\/50{background-color:#37415180}.bg-gray-700\/70{background-color:#374151b3}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-gray-800\/50{background-color:#1f293780}.bg-gray-800\/60{background-color:#1f293799}.bg-gray-800\/90{background-color:#1f2937e6}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.bg-red-900\/80{background-color:#7f1d1dcc}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-opacity-25{--tw-bg-opacity:0.25}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-70{--tw-bg-opacity:0.7}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:#f59e0b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:#3b82f600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-900\/70{--tw-gradient-from:#1e3a8ab3 var(--tw-gradient-from-position);--tw-gradient-to:#1e3a8a00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-gray-800{--tw-gradient-from:#1f2937 var(--tw-gradient-from-position);--tw-gradient-to:#1f293700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-900\/70{--tw-gradient-from:#14532db3 var(--tw-gradient-from-position);--tw-gradient-to:#14532d00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from:#6366f1 var(--tw-gradient-from-position);--tw-gradient-to:#6366f100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-800{--tw-gradient-from:#6b21a8 var(--tw-gradient-from-position);--tw-gradient-to:#6b21a800 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-900\/70{--tw-gradient-from:#581c87b3 var(--tw-gradient-from-position);--tw-gradient-to:#581c8700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-indigo-600{--tw-gradient-to:#4f46e5 var(--tw-gradient-to-position)}.to-indigo-900\/70{--tw-gradient-to:#312e81b3 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to:#ea580c var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.to-purple-700{--tw-gradient-to:#7e22ce var(--tw-gradient-to-position)}.to-teal-900\/70{--tw-gradient-to:#134e4ab3 var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pl-16{padding-left:4rem}.pl-4{padding-left:1rem}.pr-1{padding-right:.25rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pt-0\.5{padding-top:.125rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xs{font-size:.625rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tracking-wider{letter-spacing:.05em}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-transparent{color:#0000}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-inner,.shadow-lg{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.shadow-blue-500\/20{--tw-shadow-color:#3b82f633;--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline:2px solid #0000;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.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(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.scrollbar{scrollbar-color:initial initial;scrollbar-color:var(--scrollbar-thumb,initial) var(--scrollbar-track,initial)}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track);background-color:var(--scrollbar-track-hover,var(--scrollbar-track))}.scrollbar::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track);background-color:var(--scrollbar-track-active,var(--scrollbar-track-hover,var(--scrollbar-track)))}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb);background-color:var(--scrollbar-thumb-hover,var(--scrollbar-thumb))}.scrollbar::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb);background-color:var(--scrollbar-thumb-active,var(--scrollbar-thumb-hover,var(--scrollbar-thumb)))}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner);background-color:var(--scrollbar-corner-hover,var(--scrollbar-corner))}.scrollbar::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner);background-color:var(--scrollbar-corner-active,var(--scrollbar-corner-hover,var(--scrollbar-corner)))}.scrollbar{scrollbar-width:auto}.scrollbar::-webkit-scrollbar{display:block;height:16px;height:var(--scrollbar-height,16px);width:16px;width:var(--scrollbar-width,16px)}.scrollbar-thin{scrollbar-color:initial initial;scrollbar-color:var(--scrollbar-thumb,initial) var(--scrollbar-track,initial)}.scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar-thin::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track);background-color:var(--scrollbar-track-hover,var(--scrollbar-track))}.scrollbar-thin::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track);background-color:var(--scrollbar-track-active,var(--scrollbar-track-hover,var(--scrollbar-track)))}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb);background-color:var(--scrollbar-thumb-hover,var(--scrollbar-thumb))}.scrollbar-thin::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb);background-color:var(--scrollbar-thumb-active,var(--scrollbar-thumb-hover,var(--scrollbar-thumb)))}.scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar-thin::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner);background-color:var(--scrollbar-corner-hover,var(--scrollbar-corner))}.scrollbar-thin::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner);background-color:var(--scrollbar-corner-active,var(--scrollbar-corner-hover,var(--scrollbar-corner)))}.scrollbar-thin{scrollbar-width:thin}.scrollbar-thin::-webkit-scrollbar{display:block;height:8px;width:8px}.scrollbar-track-gray-800{--scrollbar-track:#1f2937!important}.scrollbar-thumb-gray-700{--scrollbar-thumb:#374151!important}body,html{background-color:#1a1a1a;margin:0}#root,body,html{height:100%}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track{background:#2d2d2d}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.custom-select .ant-select-selector{background-color:#374151!important;border-color:#4b5563!important;color:#fff!important;font-size:12px!important;height:24px!important;padding:0 6px!important}.custom-select .ant-select-selection-placeholder{color:#9ca3af!important}.custom-select .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.custom-select .ant-select-dropdown{background-color:#374151!important;border:1px solid #4b5563!important}.custom-select .ant-select-item{color:#fff!important}.custom-select .ant-select-item-option-active{background-color:#4b5563!important}.custom-select .ant-select-item-option-selected{background-color:#6b7280!important}.custom-select .ant-select-selection-search input{color:#fff!important}.custom-select .ant-select-clear{background-color:initial!important;color:#9ca3af!important}.custom-select .ant-select-arrow{color:#9ca3af!important}.dark-theme-modal .ant-modal-title{color:#e5e7eb!important}.dark-theme-modal .ant-modal-close{color:#9ca3af!important}.dark-theme-modal .ant-modal-close:hover{color:#e5e7eb!important}.dark-theme-list .ant-list-item{border-color:#374151!important}.dark-theme-list .ant-list-item:hover{background-color:#374151!important}.dark-theme-input{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.dark-theme-input::placeholder{color:#9ca3af!important}.dark-theme-input:focus,.dark-theme-input:hover{border-color:#6366f1!important;box-shadow:0 0 0 2px #6366f133!important}.split{display:flex;flex-direction:row}.gutter{background-color:#4b5563;cursor:col-resize;width:2px!important}.gutter:hover{background-color:#6b7280}.custom-input{background-color:#1f2937!important;border-color:#4b5563!important;color:#e5e7eb!important}.custom-input::placeholder{color:#9ca3af!important;opacity:1!important}.custom-input:focus,.custom-input:hover{border-color:#6366f1!important;box-shadow:0 0 0 2px #6366f133!important}.custom-input input{background-color:initial!important;color:#e5e7eb!important}.custom-input .anticon{color:#9ca3af!important}.dark-mode-table,.dark-mode-table .ant-table{background-color:initial!important}.dark-mode-table .ant-table-thead>tr>th{background-color:#374151!important}.dark-mode-table .ant-table-tbody>tr>td,.dark-mode-table .ant-table-thead>tr>th{border-bottom:1px solid #4b5563!important;color:#fff!important}.dark-mode-table .ant-table-tbody>tr:hover>td{background-color:#4b5563!important}.dark-mode-table .ant-table-row-expand-icon{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.dark-mode-table .nested-table{margin:0!important;padding:0!important}.dark-mode-table .nested-table .ant-table-tbody>tr>td{background-color:#1f2937!important}.dark-mode-table .nested-table .ant-table-tbody>tr:hover>td{background-color:#374151!important}.last\:border-b-0:last-child{border-bottom-width:0}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-\[\#2D3748\]:hover{--tw-bg-opacity:1;background-color:rgb(45 55 72/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-gray-700\/50:hover{background-color:#37415180}.hover\:bg-gray-700\/80:hover{background-color:#374151cc}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:from-amber-600:hover{--tw-gradient-from:#d97706 var(--tw-gradient-from-position);--tw-gradient-to:#d9770600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-blue-600:hover{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:#2563eb00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:to-indigo-700:hover{--tw-gradient-to:#4338ca var(--tw-gradient-to-position)}.hover\:to-orange-700:hover{--tw-gradient-to:#c2410c var(--tw-gradient-to-position)}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-sm:hover{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-blue-500\/30:hover{--tw-shadow-color:#3b82f64d;--tw-shadow:var(--tw-shadow-colored)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-offset-gray-800:focus{--tw-ring-offset-color:#1f2937}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:640px){.sm\:px-0{padding-left:0;padding-right:0}}
6
+ /*# sourceMappingURL=main.b9764291.css.map*/