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.
- auto_coder_web/common_router/auto_coder_conf_router.py +11 -14
- auto_coder_web/common_router/file_group_router.py +115 -43
- auto_coder_web/common_router/file_router.py +1 -0
- auto_coder_web/proxy.py +8 -13
- auto_coder_web/version.py +1 -1
- auto_coder_web/web/asset-manifest.json +6 -6
- auto_coder_web/web/index.html +1 -1
- auto_coder_web/web/static/css/main.b9764291.css +6 -0
- auto_coder_web/web/static/css/main.b9764291.css.map +1 -0
- auto_coder_web/web/static/js/{main.66c37ccf.js → main.a707a18c.js} +3 -3
- auto_coder_web/web/static/js/{main.66c37ccf.js.LICENSE.txt → main.a707a18c.js.LICENSE.txt} +4 -2
- auto_coder_web/web/static/js/{main.66c37ccf.js.map → main.a707a18c.js.map} +1 -1
- {auto_coder_web-0.1.25.dist-info → auto_coder_web-0.1.26.dist-info}/METADATA +1 -1
- {auto_coder_web-0.1.25.dist-info → auto_coder_web-0.1.26.dist-info}/RECORD +17 -17
- auto_coder_web/web/static/css/main.95277c5f.css +0 -6
- auto_coder_web/web/static/css/main.95277c5f.css.map +0 -1
- {auto_coder_web-0.1.25.dist-info → auto_coder_web-0.1.26.dist-info}/WHEEL +0 -0
- {auto_coder_web-0.1.25.dist-info → auto_coder_web-0.1.26.dist-info}/entry_points.txt +0 -0
- {auto_coder_web-0.1.25.dist-info → auto_coder_web-0.1.26.dist-info}/top_level.txt +0 -0
@@ -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
|
-
|
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
|
-
|
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
|
-
|
38
|
-
return
|
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
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
93
|
+
group_name = data.get("name")
|
26
94
|
description = data.get("description", "")
|
27
|
-
|
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
|
-
|
34
|
-
|
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(
|
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
|
58
|
-
|
59
|
-
|
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
|
63
|
-
|
64
|
-
|
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
|
-
|
79
|
-
return
|
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
|
-
|
153
|
+
project_path: str = Depends(get_project_path)
|
85
154
|
):
|
86
|
-
await
|
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
|
-
|
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
|
-
|
169
|
+
await asyncio.to_thread(_update_group_description, name, description)
|
100
170
|
else:
|
101
|
-
|
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
|
-
|
179
|
+
project_path: str = Depends(get_project_path)
|
109
180
|
):
|
110
181
|
data = await request.json()
|
111
182
|
files = data.get("files", [])
|
112
|
-
|
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
|
-
|
189
|
+
project_path: str = Depends(get_project_path)
|
118
190
|
):
|
119
|
-
groups = await
|
120
|
-
return {"groups": groups}
|
191
|
+
groups = await asyncio.to_thread(_get_groups, project_path)
|
192
|
+
return {"groups": groups}
|
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
|
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.
|
1
|
+
__version__ = "0.1.26"
|
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
|
-
"main.css": "/static/css/main.
|
4
|
-
"main.js": "/static/js/main.
|
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.
|
8
|
-
"main.
|
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.
|
13
|
-
"static/js/main.
|
12
|
+
"static/css/main.b9764291.css",
|
13
|
+
"static/js/main.a707a18c.js"
|
14
14
|
]
|
15
15
|
}
|
auto_coder_web/web/index.html
CHANGED
@@ -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.
|
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*/
|