sillyspec 3.9.1 → 3.10.1

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.
Files changed (69) hide show
  1. package/.claude/skills/sillyspec-commit/SKILL.md +1 -1
  2. package/.claude/skills/sillyspec-continue/SKILL.md +1 -1
  3. package/.claude/skills/sillyspec-explore/SKILL.md +9 -0
  4. package/.claude/skills/sillyspec-plan/SKILL.md +0 -35
  5. package/.claude/skills/sillyspec-resume/SKILL.md +5 -5
  6. package/.claude/skills/sillyspec-state/SKILL.md +1 -1
  7. package/.claude/skills/sillyspec-workspace/SKILL.md +1 -1
  8. package/README.md +7 -6
  9. package/SKILL.md +15 -10
  10. package/package.json +1 -1
  11. package/packages/dashboard/dist/assets/index-BcM2J-hv.css +1 -0
  12. package/packages/dashboard/dist/assets/{index-RsLVPAy7.js → index-DpLHK4jv.js} +974 -974
  13. package/packages/dashboard/dist/index.html +16 -17
  14. package/packages/dashboard/dist/prototype-dashboard.html +836 -0
  15. package/packages/dashboard/dist/prototype-overview.html +256 -0
  16. package/packages/dashboard/public/prototype-dashboard.html +836 -0
  17. package/packages/dashboard/public/prototype-overview.html +256 -0
  18. package/packages/dashboard/server/index.js +18 -13
  19. package/packages/dashboard/server/parser.js +109 -1
  20. package/packages/dashboard/server/watcher.js +14 -6
  21. package/packages/dashboard/src/App.vue +414 -186
  22. package/packages/dashboard/src/components/ActionBar.vue +10 -1
  23. package/packages/dashboard/src/components/CommandPalette.vue +5 -1
  24. package/packages/dashboard/src/components/DocPreview.vue +105 -8
  25. package/packages/dashboard/src/components/DocTree.vue +75 -19
  26. package/packages/dashboard/src/components/HResizeHandle.vue +48 -0
  27. package/packages/dashboard/src/components/PipelineView.vue +23 -4
  28. package/packages/dashboard/src/components/ProjectCard.vue +187 -0
  29. package/packages/dashboard/src/components/ProjectOverview.vue +113 -139
  30. package/packages/dashboard/src/components/VResizeHandle.vue +61 -0
  31. package/packages/dashboard/src/composables/useDashboard.js +28 -0
  32. package/packages/dashboard/src/composables/useLayout.js +131 -0
  33. package/src/index.js +7 -0
  34. package/src/init.js +17 -10
  35. package/src/migrate.js +5 -5
  36. package/src/progress.js +2 -1
  37. package/src/run.js +141 -64
  38. package/src/stages/archive.js +14 -8
  39. package/src/stages/brainstorm.js +29 -4
  40. package/src/stages/execute.js +115 -35
  41. package/src/stages/explore.js +34 -0
  42. package/src/stages/index.js +11 -6
  43. package/src/stages/plan.js +86 -15
  44. package/src/stages/quick.js +1 -1
  45. package/src/stages/scan.js +51 -12
  46. package/src/stages/status.js +1 -1
  47. package/src/stages/verify.js +35 -6
  48. package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +0 -97
  49. package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +0 -51
  50. package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +0 -29
  51. package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +0 -34
  52. package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +0 -13
  53. package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +0 -43
  54. package/.sillyspec/changes/auto-mode/design.md +0 -50
  55. package/.sillyspec/changes/auto-mode/proposal.md +0 -19
  56. package/.sillyspec/changes/auto-mode/requirements.md +0 -21
  57. package/.sillyspec/changes/auto-mode/tasks.md +0 -7
  58. package/.sillyspec/changes/brainstorm-archive/2026-04-05-dashboard-design.md +0 -206
  59. package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +0 -199
  60. package/.sillyspec/changes/dashboard/design.md +0 -219
  61. package/.sillyspec/changes/dashboard/design.md.braindraft +0 -206
  62. package/.sillyspec/changes/run-command-design/design.md +0 -1230
  63. package/.sillyspec/changes/unified-docs-design/design.md +0 -199
  64. package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
  65. package/.sillyspec/knowledge/INDEX.md +0 -8
  66. package/.sillyspec/knowledge/uncategorized.md +0 -3
  67. package/.sillyspec/plans/2026-04-05-dashboard.md +0 -737
  68. package/.sillyspec/projects/sillyspec.yaml +0 -3
  69. package/packages/dashboard/dist/assets/index-CntACGUN.css +0 -1
@@ -50,7 +50,7 @@ cat "$LATEST/tasks.md" 2>/dev/null
50
50
 
51
51
  来源 C — 阶段产出(scan/brainstorm/plan/archive 等):
52
52
  检查 .sillyspec/ 下新增或修改的文件,根据路径识别来源阶段:
53
- - docs/<project>/scan/*.md → scan 产出
53
+ - .sillyspec/docs/<project>/scan/*.md → scan 产出
54
54
  - changes/<name>/design.md → brainstorm 产出
55
55
  - changes/<name>/proposal.md → brainstorm 产出
56
56
  - changes/<name>/tasks.md → plan 产出
@@ -26,7 +26,7 @@ description: 自动判断并执行下一步
26
26
  3. 有设计文档但没有对应变更?
27
27
  → 提示运行 /sillyspec:propose <name>
28
28
 
29
- 4. 有 docs/*/scan/ 但没有进行中的工作?
29
+ 4. 有 .sillyspec/docs/*/scan/ 但没有进行中的工作?
30
30
  → 提示运行 /sillyspec:brainstorm "你的想法"
31
31
 
32
32
  5. 什么都没有?
@@ -17,6 +17,15 @@ description: 自由思考模式 — 讨论、画图、调研,不写代码
17
17
  ## 话题
18
18
  $ARGUMENTS
19
19
 
20
+ ## 执行
21
+
22
+ **你必须先使用 exec 工具(shell)执行以下命令读取统一 CLI prompt:**
23
+
24
+ 1. 运行 `sillyspec run explore` — 读取输出的探索模式 prompt
25
+ 2. 按照输出的 prompt 和本技能约束执行探索
26
+ 3. 探索告一段落后,运行 `sillyspec run explore --done --input "<用户原始话题>" --output "你的摘要"`
27
+ 4. **禁止**在没有运行 CLI 的情况下自行决定流程
28
+
20
29
  ## 这是什么模式
21
30
 
22
31
  **探索模式用于思考,不用于实现。** 你可以读文件、搜代码、调查代码库,但绝对不能写代码或实现功能。如果用户要求实现,提醒他们先退出探索模式。
@@ -13,40 +13,5 @@ description: 编写实现计划 — 2-5 分钟粒度,精确到文件路径和
13
13
  4. 重复 2-3 直到阶段完成
14
14
  5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
15
 
16
- ## 子代理并行优化(可选)
17
-
18
- 当 CLI 进入"写任务蓝图 task-N.md"步骤时(Step 5 之后),可以用子代理并行加速:
19
-
20
- 1. 读取 plan.md,统计任务数量
21
- 2. 为每个 task-N.md 启动一个独立子代理
22
- 3. 每个子代理的任务:
23
- - 读取 design.md 和 plan.md
24
- - 读取相关源文件
25
- - 按格式要求写 task-N.md 并保存
26
- 4. 所有子代理完成后,继续 CLI 的下一步(审查一致性)
27
-
28
- **子代理 prompt 模板:**
29
- ```
30
- 你是计划编写者。请为以下任务编写详细蓝图。
31
-
32
- 任务:${taskName}
33
- 变更目录:${changeDir}
34
- 文件路径:${changeDir}/tasks/task-${taskNum}.md
35
-
36
- 要求:
37
- 1. 读取 design.md 和 plan.md 了解上下文
38
- 2. 读取相关源文件了解现有代码
39
- 3. 按以下格式编写任务蓝图并保存到文件:
40
- - 修改文件列表
41
- - 实现要求
42
- - 接口定义/数据结构
43
- - 边界处理
44
- - 参考
45
- - TDD 步骤
46
- - 验收标准(checkbox)
47
- ```
48
-
49
- **注意:** 手动跑 plan 时不用子代理(串行即可),auto skill 中建议用子代理并行。
50
-
51
16
  ## 用户指令
52
17
  $ARGUMENTS
@@ -17,7 +17,7 @@ description: 恢复工作 — 从中断处继续
17
17
  ### 1. 读取 progress.json
18
18
 
19
19
  ```bash
20
- sillyspec progress show 2>/dev/null
20
+ sillyspec run resume --status 2>/dev/null
21
21
  ```
22
22
 
23
23
  ### 2. 如果有 progress.json
@@ -45,7 +45,7 @@ sillyspec progress show 2>/dev/null
45
45
 
46
46
  **不需要执行 Git 操作或文件探测。** progress.json 已经包含所有信息。
47
47
 
48
- 使用 `sillyspec progress show` 查看。
48
+ 使用 `sillyspec run resume --status` 查看。
49
49
 
50
50
  然后问用户:
51
51
  1. 直接继续执行下一步
@@ -80,7 +80,7 @@ cat .sillyspec/ROADMAP.md 2>/dev/null
80
80
 
81
81
  检查各阶段状态并输出阶段进度表(同步骤 2 格式)。
82
82
 
83
- 同时**运行 `sillyspec progress init`**,将探测到的信息写入 progress.json,后续命令执行时会自动更新。
83
+ 同时**运行 `sillyspec run resume --init`**,将探测到的信息写入 progress.json,后续命令执行时会自动更新。
84
84
 
85
85
  #### 如果是普通变更(无 MASTER.md)
86
86
 
@@ -102,10 +102,10 @@ cat .sillyspec/ROADMAP.md 2>/dev/null
102
102
  - 有部分 codebase 文档(如只有 STACK 和 STRUCTURE)→ 说明快扫或深扫中断
103
103
  - 缺失的文档列表直接展示给用户,告知 `/sillyspec:scan` 会自动跳过已存在的文档
104
104
 
105
- **同时运行 `sillyspec progress init`** 记录推断的状态。
105
+ **同时运行 `sillyspec run resume --init`** 记录推断的状态。
106
106
 
107
107
  ### 4. 关键原则
108
108
 
109
109
  - **不需要 HANDOFF.json**。progress.json 是唯一的恢复数据源。
110
110
  - **progress.json 不需要 Git 提交**(已在 .runtime/ 下,被 .gitignore 忽略)。
111
- - **每次命令执行完自动更新 progress.json**(通过 `sillyspec progress` CLI),不需要用户手动保存。
111
+ - **每次命令执行完自动更新 progress.json**(通过 `sillyspec run <stage> --done`),不需要用户手动保存。
@@ -10,7 +10,7 @@ description: 查看当前工作状态 — 显示 progress.json 内容
10
10
  ### 1. 读取 progress.json
11
11
 
12
12
  ```bash
13
- sillyspec progress show 2>/dev/null
13
+ sillyspec run state --status 2>/dev/null
14
14
  ```
15
15
 
16
16
  ### 2. 如果有 progress.json
@@ -95,7 +95,7 @@ for f in .sillyspec/projects/*.yaml; do
95
95
  cd "$proj_path"
96
96
  ls .sillyspec/ 2>/dev/null
97
97
  cat .sillyspec/PROJECT.md 2>/dev/null
98
- ls docs/${proj_name}/scan/ 2>/dev/null | wc -l
98
+ ls .sillyspec/docs/${proj_name}/scan/ 2>/dev/null | wc -l
99
99
  cd -
100
100
  done
101
101
  ```
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <img src="logo.jpg" width="80" />
3
3
  </p>
4
4
 
5
- # SillySpec v3.0 — 规范驱动开发工具包
5
+ # SillySpec v3.9 — 规范驱动开发工具包
6
6
 
7
7
  > 融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
8
8
  > Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
@@ -42,10 +42,8 @@ npx sillyspec init --dir /path/to/project
42
42
 
43
43
  | 工具 | `--tool` 参数 | 输出目录 | 格式 |
44
44
  |---|---|---|---|
45
- | Claude Code (commands) | `claude` | `.claude/commands/sillyspec/` | slash commands |
46
- | Claude Code (skills) | `claude_skills` | `.claude/skills/sillyspec-<name>/` | SKILL.md |
47
- | Cursor | `cursor` | `.cursor/commands/` | custom commands |
48
- | Codex | `codex` | `~/.agents/skills/sillyspec-<name>/` | SKILL.md |
45
+ | Claude Code | `claude` | `.claude/skills/sillyspec-<name>/` | SKILL.md |
46
+ | Codex | `codex` | `.codex/skills/sillyspec-<name>/` | SKILL.md |
49
47
  | OpenCode | `opencode` | `.opencode/skills/sillyspec-<name>/` | SKILL.md |
50
48
  | OpenClaw | `openclaw` | `.openclaw/skills/sillyspec-<name>/` | SKILL.md |
51
49
 
@@ -70,7 +68,7 @@ claude --dangerously-skip-permissions
70
68
 
71
69
  ```
72
70
  绿地:init → brainstorm → plan → execute → [verify] → archive
73
- 棕地:scan → brainstorm → plan → execute → [verify] → archive
71
+ 棕地:scan → brainstorm → plan → execute → verify → archive
74
72
  大模块:brainstorm(多图) → 拆分 → MASTER.md → stage-1 全流程 → stage-2 全流程 → ... → archive
75
73
  ```
76
74
 
@@ -113,6 +111,9 @@ claude --dangerously-skip-permissions
113
111
 
114
112
  ```bash
115
113
  sillyspec run <stage> 执行阶段步骤(brainstorm/plan/execute/verify 等)
114
+ sillyspec run scan 代码扫描
115
+ sillyspec run quick 快速任务
116
+ sillyspec run explore 自由探索
116
117
  sillyspec run <stage> --done 完成当前步骤并输出下一步
117
118
  sillyspec run <stage> --status 查看阶段进度
118
119
  sillyspec progress show 显示当前项目状态
package/SKILL.md CHANGED
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: sillyspec
3
- description: "规范驱动开发工具包 v3.6。绿地项目用 /sillyspec:init,棕地项目用 /sillyspec:scan。可用命令:init、scan、scan-quick、explore、brainstorm、plan、execute、verify、archive、commitexport、status、resume、continue、quickstate、workspace、workspace-sync。"
4
- version: "3.6.1"
3
+ description: "规范驱动开发工具包 v3.9。绿地项目用 /sillyspec:init,棕地项目用 /sillyspec:scan。主线:scan、brainstorm、plan、execute、verify、archive。辅助:quickexplore、status、doctor、resume、continue、commitexport、workspace。"
4
+ version: "3.9.1"
5
5
  ---
6
6
 
7
- # SillySpec v3.6
7
+ # SillySpec v3.9
8
8
 
9
9
  融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
10
10
  Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
@@ -22,11 +22,11 @@ Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
22
22
 
23
23
  ```
24
24
  绿地:init → brainstorm → plan → execute → [verify] → archive
25
- 棕地:scan → brainstorm → plan → execute → [verify] → archive
25
+ 棕地:scan → brainstorm → plan → execute → verify → archive
26
26
  工作区:workspace → (init/scan per project) → brainstorm → ...
27
27
  ```
28
28
 
29
- ## 19 个命令
29
+ ## 命令
30
30
 
31
31
  ### 核心流程
32
32
 
@@ -52,16 +52,21 @@ Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
52
52
  | `/sillyspec:state` | 查看当前工作状态 |
53
53
  | `/sillyspec:commit` | 智能提交 |
54
54
  | `/sillyspec:export` | 导出成功方案为可复用模板 |
55
- | `/sillyspec:scan-quick` | 快速扫描(STACK + STRUCTURE) |
55
+ | `/sillyspec:doctor` | 项目自检 |
56
56
  | `/sillyspec:workspace` | 多项目工作区管理 |
57
- | `/sillyspec:workspace-sync` | 同步工作区子项目状态 |
58
57
 
59
58
  ## CLI 命令
60
59
 
61
60
  ```bash
62
- sillyspec status [--json] 显示当前项目状态
63
- sillyspec next [--json] 显示下一步命令
64
- sillyspec check [--json] 检查文档完整性
61
+ sillyspec run scan 执行代码扫描阶段
62
+ sillyspec run brainstorm 执行需求探索阶段
63
+ sillyspec run plan 执行实现计划阶段
64
+ sillyspec run execute 执行开发阶段
65
+ sillyspec run verify 执行验证阶段
66
+ sillyspec run archive 执行归档阶段
67
+ sillyspec run quick 快速任务
68
+ sillyspec run explore 自由探索
69
+ sillyspec progress show 显示当前项目状态
65
70
  sillyspec setup 安装推荐 MCP 工具
66
71
  sillyspec setup --list 查看已安装 MCP 状态
67
72
  sillyspec init 初始化(零交互,自动检测工具)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sillyspec",
3
- "version": "3.9.1",
3
+ "version": "3.10.1",
4
4
  "description": "SillySpec CLI — 流程状态机,让 AI 严格按步骤来",
5
5
  "icon": "logo.jpg",
6
6
  "homepage": "https://sillyspec.ppdmq.top/",
@@ -0,0 +1 @@
1
+ .line-clamp-2[data-v-4d22d782]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.doc-tree[data-v-a51c27a2]{height:100%;min-height:0;display:flex;flex-direction:column;background:#fff}.doc-tree-search[data-v-a51c27a2]{flex-shrink:0;padding:10px 12px 8px;border-bottom:1px solid #F0F0F3}.doc-tree-list[data-v-a51c27a2]{flex:1;min-height:0;overflow:auto;padding:8px 12px 14px}.doc-tree-list[data-v-a51c27a2] .n-tree-node-content__text{white-space:normal;line-height:1.35;overflow-wrap:anywhere}.doc-preview-shell[data-v-a804f0ed]{height:100%;min-height:0;display:flex;flex-direction:column;background:#fff}.doc-empty[data-v-a804f0ed]{height:100%;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;font-size:12px;color:#636366;font-family:JetBrains Mono,monospace}.doc-toolbar[data-v-a804f0ed]{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid #F0F0F3}.doc-title[data-v-a804f0ed]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;color:#1c1c1e}.doc-preview-scroll[data-v-a804f0ed]{flex:1;min-height:0;overflow:auto;padding:14px 16px 22px}.doc-modal-body[data-v-a804f0ed]{max-height:min(72vh,760px);overflow:auto;padding-right:4px}.doc-preview[data-v-a804f0ed]{font-size:13px;line-height:1.7;color:#374151;overflow-wrap:anywhere}.doc-preview-large[data-v-a804f0ed]{font-size:14px;line-height:1.75}.doc-preview[data-v-a804f0ed] h1{color:#d97706;font-size:18px;font-weight:700;margin:0 0 16px;border-bottom:1px solid #E5E5EA;padding-bottom:8px}.doc-preview-large[data-v-a804f0ed] h1{font-size:22px}.doc-preview[data-v-a804f0ed] h2{color:#1c1c1e;font-size:15px;font-weight:600;margin:20px 0 10px}.doc-preview-large[data-v-a804f0ed] h2{font-size:17px}.doc-preview[data-v-a804f0ed] h3{color:#d97706;font-size:14px;font-weight:600;margin:16px 0 8px}.doc-preview[data-v-a804f0ed] p{margin:8px 0}.doc-preview[data-v-a804f0ed] strong{color:#1c1c1e;font-weight:600}.doc-preview[data-v-a804f0ed] a{color:#d97706;text-decoration:none}.doc-preview[data-v-a804f0ed] a:hover{text-decoration:underline}.doc-preview[data-v-a804f0ed] code{background:#e5e5ea;color:#1c1c1e;padding:1px 5px;border-radius:3px;font-size:12px;font-family:JetBrains Mono,monospace}.doc-preview[data-v-a804f0ed] pre{background:#1c1c1e;color:#e5e5e7;border:1px solid #E5E5EA;border-radius:6px;padding:12px 16px;overflow-x:auto;font-size:12px;margin:8px 0;line-height:1.5}.doc-preview[data-v-a804f0ed] pre code{background:none;color:inherit;padding:0;border-radius:0;font-size:inherit}.doc-preview[data-v-a804f0ed] ul,.doc-preview[data-v-a804f0ed] ol{padding-left:20px;margin:8px 0;color:#374151}.doc-preview[data-v-a804f0ed] li{margin:4px 0}.doc-preview[data-v-a804f0ed] blockquote{border-left:3px solid #D97706;padding-left:12px;margin:12px 0;color:#636366;font-style:italic}.doc-preview[data-v-a804f0ed] table{width:100%;border-collapse:collapse;margin:12px 0;font-size:12px}.doc-preview[data-v-a804f0ed] thead th{background:#f0f0f3;color:#1c1c1e;font-weight:600;text-align:left;padding:8px 12px;border:1px solid #E5E5EA}.doc-preview[data-v-a804f0ed] tbody td{padding:6px 12px;border:1px solid #E5E5EA;color:#374151}.doc-preview[data-v-a804f0ed] tbody tr:hover{background:#f9fafb}.doc-preview[data-v-a804f0ed] hr{border:none;border-top:1px solid #E5E5EA;margin:16px 0}.docs-panel[data-v-656ea40b]{min-height:0}.docs-tree-pane[data-v-656ea40b]{width:clamp(220px,42%,320px);min-width:180px}.project-card[data-v-814734b8]{width:280px;height:120px;background:#fff;border:2px solid #E5E7EB;border-radius:12px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;transition:all .2s;flex-shrink:0}.project-card[data-v-814734b8]:hover{border-color:#d97706;box-shadow:0 4px 12px #d9770626}.project-card.selected[data-v-814734b8]{border-color:#d97706;box-shadow:0 0 0 3px #d9770633}.card-header[data-v-814734b8]{display:flex;justify-content:space-between;align-items:flex-start}.project-name[data-v-814734b8]{font-size:16px;font-weight:600;color:#1a1a1a}.last-active[data-v-814734b8]{font-size:11px;color:#9ca3af}.stage-badge[data-v-814734b8]{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.stage-badge.in-progress[data-v-814734b8]{background:#dbeafe;color:#1d4ed8}.stage-badge.completed[data-v-814734b8]{background:#d1fae5;color:#047857}.stage-badge.pending[data-v-814734b8]{background:#f3f4f6;color:#6b7280}.progress-section[data-v-814734b8]{display:flex;align-items:center;gap:8px}.progress-bar[data-v-814734b8]{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.progress-fill[data-v-814734b8]{height:100%;border-radius:3px;transition:width .3s}.progress-fill.in-progress[data-v-814734b8]{background:#3b82f6}.progress-fill.completed[data-v-814734b8]{background:#10b981}.progress-fill.pending[data-v-814734b8]{background:#9ca3af}.progress-text[data-v-814734b8]{font-size:12px;font-weight:600;color:#374151}.overview-section[data-v-863782e3]{height:100%;background:#fff;padding:16px 24px;display:flex;flex-direction:column}.section-header[data-v-863782e3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title[data-v-863782e3]{font-size:18px;font-weight:600;color:#1a1a1a;display:flex;align-items:center;gap:8px}.badge[data-v-863782e3]{font-size:12px;padding:2px 8px;background:#e5e7eb;border-radius:10px;color:#6b7280;font-weight:500}.section-actions[data-v-863782e3]{display:flex;gap:8px;align-items:center}.btn[data-v-863782e3]{padding:6px 12px;border-radius:6px;border:none;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}.btn[data-v-863782e3]:hover{opacity:.9}.btn-secondary[data-v-863782e3]{background:#e5e7eb;color:#374151}.btn-icon[data-v-863782e3]{padding:6px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border-radius:6px}.btn-icon[data-v-863782e3]:hover{background:#e5e7eb}.cards-container[data-v-863782e3]{flex:1;display:flex;gap:16px;overflow-x:auto;overflow-y:hidden;padding-bottom:8px}.cards-container[data-v-863782e3]::-webkit-scrollbar{height:8px}.cards-container[data-v-863782e3]::-webkit-scrollbar-track{background:#f3f4f6;border-radius:4px}.cards-container[data-v-863782e3]::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-smoothing:grayscale}#app{width:100vw;height:100vh;overflow:hidden;min-width:0}body.resizing{-webkit-user-select:none;user-select:none}body.resizing *{cursor:inherit!important}@media(max-width:1280px){.detail-section-title{font-size:11px}.detail-value{font-size:13px}.log-entry{font-size:11px}}.detail-column,.activity-column{padding:18px 20px}.pipeline-column{border-left:1px solid #EEF0F4;border-right:1px solid #EEF0F4}.pipeline-column>*{min-width:0;padding-left:18px;padding-right:18px}.activity-column{gap:12px}.activity-column .detail-section-title{padding:0;margin-bottom:0}.activity-column>.flex-1{padding:0}.project-info{min-width:0}.detail-section-title{font-size:12px;font-weight:600;color:#9ca3af;text-transform:uppercase;margin-bottom:12px}.detail-item{margin-bottom:16px}.detail-label{font-size:11px;color:#9ca3af;margin-bottom:4px}.detail-value{font-size:14px;color:#1a1a1a;font-weight:500;min-width:0;overflow-wrap:anywhere;word-break:break-word;line-height:1.45}.detail-path{font-size:12px;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;white-space:normal}.log-entry{font-family:JetBrains Mono,monospace;font-size:12px;padding:8px;background:#f9fafb;border-radius:4px;margin-bottom:8px;color:#374151}.log-entry.success{color:#047857;background:#d1fae5}.log-entry.error{color:#dc2626;background:#fee2e2}.fade-in{animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-400:oklch(70.7% .022 261.325);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--animate-pulse-dot:pulse-dot 1.5s ease-in-out infinite}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:calc(var(--spacing) * 0)}.left-5{left:calc(var(--spacing) * 5)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-\[2px\]{height:2px}.h-\[6px\]{height:6px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-72{max-height:calc(var(--spacing) * 72)}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-\[2px\]{width:2px}.w-\[4px\]{width:4px}.w-\[340px\]{width:340px}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse-dot{animation:var(--animate-pulse-dot)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-\[\#D97706\]{background-color:#d97706}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.bg-white\/30{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-px{padding-block:1px}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-\[3px\]{padding-left:3px}.text-center{text-align:center}.font-\[DM_Sans\,sans-serif\]{font-family:DM Sans,sans-serif}.font-\[JetBrains_Mono\,monospace\]{font-family:JetBrains Mono,monospace}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[18px\]{font-size:18px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-\[0\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-black{color:var(--color-black)}.text-gray-400{color:var(--color-gray-400)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hover\:bg-\[\#D97706\]:hover{background-color:#d97706}.hover\:bg-\[\#FEF3C7\]:hover{background-color:#fef3c7}}.active\:bg-\[\#D97706\]:active{background-color:#d97706}}@keyframes pulse-glow{0%,to{box-shadow:0 0 #fbbf2466}50%{box-shadow:0 0 12px 2px #fbbf2426}}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.5)}}@keyframes breathe{0%,to{opacity:.5}50%{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slide-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes glow-border{0%,to{border-color:#fbbf2426}50%{border-color:#fbbf2480}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.font-mono-log{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.noise-bg{position:relative}.noise-bg:before{content:"";pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");position:absolute;top:0;right:0;bottom:0;left:0}.accent-stripe{background:repeating-linear-gradient(-45deg,#0000,#0000 8px,#fbbf2408 8px,#fbbf2408 9px)}.progress-gradient{background:linear-gradient(90deg,#fbbf24,#f59e0b,#fb923c)}.skeleton-shimmer{background:linear-gradient(90deg,#1a1e28 25%,#2a3040,#1a1e28 75%) 0 0/200% 100%;animation:1.5s ease-in-out infinite shimmer}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#2a3040;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#3a4555}*{scrollbar-width:thin;scrollbar-color:#2a2a2d transparent}::selection{color:#fbbf24;background:#fbbf2433}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}