@polderlabs/bizar 3.23.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -16
- package/bizar-dash/.bizar/activity.log +3 -0
- package/bizar-dash/.bizar/graph/.graphify_analysis.json +1540 -0
- package/bizar-dash/.bizar/graph/.graphify_labels.json +1 -0
- package/bizar-dash/.bizar/graph/GRAPH_REPORT.md +404 -0
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/0661b816358db84dfdb7f10443db8a61152fd20b3fee950caf8fbf32920a1790.json +1 -0
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/16da06d774142a6e5d74829ad982531286a6193ef798de8f593db029e123ec32.json +1 -0
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/27e5697c01254c69c64c5a33896669073b40afb5ba88375102ae77fa5404136d.json +1 -0
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/532997898027254aa4c0932243dc71d2f55888181232b65974961934997dc85b.json +1 -0
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/84e3451a64c7f99f0cd6a88b0748d7426780486f53ab4935b7476b28c08f8293.json +1 -0
- package/bizar-dash/.bizar/graph/cache/ast/v0.8.46/88e5ea5f3e78fa69353fe9e6a8d1a05391d54605e25600cb125531eb5a6432ff.json +1 -0
- package/bizar-dash/.bizar/graph/cache/stat-index.json +1 -0
- package/bizar-dash/.bizar/graph/graph.html +307 -0
- package/bizar-dash/.bizar/graph/graph.json +40267 -0
- package/bizar-dash/.bizar/graph/manifest.json +762 -0
- package/bizar-dash/.graphifyignore +40 -0
- package/bizar-dash/.obsidian/README.md +14 -0
- package/bizar-dash/.obsidian/daily/2026-06-25.md +9 -0
- package/bizar-dash/.obsidian/vault.json +7 -0
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/SKILL.md +103 -0
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/assets/template.html +338 -0
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/example.html +81 -0
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/open-design.json +172 -0
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/references/checklist.md +44 -0
- package/bizar-dash/.od-skills/web-prototype-e1429c1737/references/layouts.md +247 -0
- package/bizar-dash/CHANGELOG.md +474 -0
- package/bizar-dash/DESIGN.md +136 -0
- package/bizar-dash/dist/assets/main-B3RgW6FS.js +331 -0
- package/bizar-dash/dist/assets/main-B3RgW6FS.js.map +1 -0
- package/bizar-dash/dist/assets/main-DlJ8wgLR.css +1 -0
- package/bizar-dash/dist/assets/mobile-CsZQAswA.css +1 -0
- package/bizar-dash/dist/assets/mobile-DbxIw8BG.js +2 -0
- package/bizar-dash/dist/assets/mobile-DbxIw8BG.js.map +1 -0
- package/bizar-dash/dist/assets/mobile-Dvq2d53Y.js +354 -0
- package/bizar-dash/dist/assets/mobile-Dvq2d53Y.js.map +1 -0
- package/bizar-dash/dist/index.html +40 -0
- package/bizar-dash/dist/mobile.html +22 -0
- package/bizar-dash/plans/debug-plan/comments.json +1 -0
- package/bizar-dash/plans/debug-plan/meta.json +10 -0
- package/bizar-dash/plans/debug-plan/plan.json +174 -0
- package/bizar-dash/scripts/smoke-bg-retry.mjs +246 -0
- package/bizar-dash/src/cli/dashboard-ports.mjs +488 -0
- package/bizar-dash/src/cli.mjs +522 -0
- package/bizar-dash/src/server/activity-log.mjs +174 -0
- package/bizar-dash/src/server/agents-store.mjs +465 -0
- package/bizar-dash/src/server/api.mjs +138 -0
- package/bizar-dash/src/server/artifact-template.html +810 -0
- package/bizar-dash/src/server/artifacts-store.mjs +733 -0
- package/bizar-dash/src/server/auth.mjs +381 -0
- package/bizar-dash/src/server/background-store.mjs +447 -0
- package/bizar-dash/src/server/bg-poller.mjs +305 -0
- package/bizar-dash/src/server/bg-retry.mjs +574 -0
- package/bizar-dash/src/server/browser.mjs +40 -0
- package/bizar-dash/src/server/diagnostics-store.mjs +148 -0
- package/bizar-dash/src/server/dialog-poller.mjs +105 -0
- package/bizar-dash/src/server/dialog-store.mjs +177 -0
- package/bizar-dash/src/server/glyphs/mdx-compiler.mjs +583 -0
- package/bizar-dash/src/server/lib/path-safe.mjs +283 -0
- package/bizar-dash/src/server/memory-git.mjs +329 -0
- package/bizar-dash/src/server/memory-lightrag.mjs +767 -0
- package/bizar-dash/src/server/memory-schema.mjs +145 -0
- package/bizar-dash/src/server/memory-secrets.mjs +84 -0
- package/bizar-dash/src/server/memory-store.mjs +471 -0
- package/bizar-dash/src/server/mod-security.mjs +398 -0
- package/bizar-dash/src/server/mods-loader.mjs +1067 -0
- package/bizar-dash/src/server/notifications-store.mjs +243 -0
- package/bizar-dash/src/server/obsidian-store.mjs +318 -0
- package/bizar-dash/src/server/opencode-runner.mjs +279 -0
- package/bizar-dash/src/server/pair-store.mjs +138 -0
- package/bizar-dash/src/server/projects-store.mjs +364 -0
- package/bizar-dash/src/server/providers-store.mjs +789 -0
- package/bizar-dash/src/server/routes/_shared.mjs +415 -0
- package/bizar-dash/src/server/routes/activity.mjs +110 -0
- package/bizar-dash/src/server/routes/agents.mjs +134 -0
- package/bizar-dash/src/server/routes/artifacts.mjs +279 -0
- package/bizar-dash/src/server/routes/auth.mjs +69 -0
- package/bizar-dash/src/server/routes/background.mjs +165 -0
- package/bizar-dash/src/server/routes/chat.mjs +485 -0
- package/bizar-dash/src/server/routes/config.mjs +129 -0
- package/bizar-dash/src/server/routes/diagnostics.mjs +50 -0
- package/bizar-dash/src/server/routes/dialogs.mjs +86 -0
- package/bizar-dash/src/server/routes/fs.mjs +429 -0
- package/bizar-dash/src/server/routes/history.mjs +78 -0
- package/bizar-dash/src/server/routes/memory.mjs +658 -0
- package/bizar-dash/src/server/routes/misc.mjs +89 -0
- package/bizar-dash/src/server/routes/mods.mjs +359 -0
- package/bizar-dash/src/server/routes/notifications.mjs +54 -0
- package/bizar-dash/src/server/routes/obsidian.mjs +239 -0
- package/bizar-dash/src/server/routes/opencode-sessions.mjs +55 -0
- package/bizar-dash/src/server/routes/overview.mjs +91 -0
- package/bizar-dash/src/server/routes/pair.mjs +67 -0
- package/bizar-dash/src/server/routes/projects.mjs +175 -0
- package/bizar-dash/src/server/routes/providers.mjs +47 -0
- package/bizar-dash/src/server/routes/schedules.mjs +104 -0
- package/bizar-dash/src/server/routes/settings.mjs +51 -0
- package/bizar-dash/src/server/routes/skills.mjs +76 -0
- package/bizar-dash/src/server/routes/tasks.mjs +468 -0
- package/bizar-dash/src/server/routes/themes.mjs +51 -0
- package/bizar-dash/src/server/routes-v2/auth.mjs +59 -0
- package/bizar-dash/src/server/routes-v2/events.mjs +107 -0
- package/bizar-dash/src/server/routes-v2/health.mjs +21 -0
- package/bizar-dash/src/server/routes-v2/index.mjs +90 -0
- package/bizar-dash/src/server/routes-v2/sessions.mjs +111 -0
- package/bizar-dash/src/server/schedules-runner.mjs +369 -0
- package/bizar-dash/src/server/schedules-store.mjs +268 -0
- package/bizar-dash/src/server/search-store.mjs +220 -0
- package/bizar-dash/src/server/serve-info.mjs +684 -0
- package/bizar-dash/src/server/server.mjs +796 -0
- package/bizar-dash/src/server/settings-store.mjs +45 -0
- package/bizar-dash/src/server/skills-store.mjs +300 -0
- package/bizar-dash/src/server/state.mjs +437 -0
- package/bizar-dash/src/server/tailscale-store.mjs +113 -0
- package/bizar-dash/src/server/task-delegator.mjs +824 -0
- package/bizar-dash/src/server/tasks-store.mjs +508 -0
- package/bizar-dash/src/server/tui.mjs +923 -0
- package/bizar-dash/src/server/update-store.mjs +168 -0
- package/bizar-dash/src/server/v2-auth-file.mjs +99 -0
- package/bizar-dash/src/server/v2-event-bus.mjs +128 -0
- package/bizar-dash/src/server/watcher.mjs +81 -0
- package/bizar-dash/src/server/yaml.mjs +238 -0
- package/bizar-dash/src/web/App.tsx +718 -0
- package/bizar-dash/src/web/MobileApp.tsx +408 -0
- package/bizar-dash/src/web/components/ArtifactCreateDialog.tsx +95 -0
- package/bizar-dash/src/web/components/ArtifactListDialog.tsx +55 -0
- package/bizar-dash/src/web/components/ArtifactViewer.tsx +143 -0
- package/bizar-dash/src/web/components/AuditDialog.tsx +79 -0
- package/bizar-dash/src/web/components/BgStatusBadge.tsx +32 -0
- package/bizar-dash/src/web/components/Button.tsx +56 -0
- package/bizar-dash/src/web/components/CanvasContextMenu.tsx +68 -0
- package/bizar-dash/src/web/components/Card.tsx +40 -0
- package/bizar-dash/src/web/components/CollapsibleSection.tsx +72 -0
- package/bizar-dash/src/web/components/CommandDialog.tsx +66 -0
- package/bizar-dash/src/web/components/EmptyState.tsx +30 -0
- package/bizar-dash/src/web/components/FileBrowser.tsx +633 -0
- package/bizar-dash/src/web/components/HelpDialog.tsx +55 -0
- package/bizar-dash/src/web/components/KillConfirmDialog.tsx +88 -0
- package/bizar-dash/src/web/components/Modal.tsx +215 -0
- package/bizar-dash/src/web/components/Notifications.tsx +241 -0
- package/bizar-dash/src/web/components/SearchModal.tsx +224 -0
- package/bizar-dash/src/web/components/Sidebar.tsx +66 -0
- package/bizar-dash/src/web/components/Spinner.tsx +19 -0
- package/bizar-dash/src/web/components/StatusBadge.tsx +25 -0
- package/bizar-dash/src/web/components/Tag.tsx +28 -0
- package/bizar-dash/src/web/components/Toast.tsx +150 -0
- package/bizar-dash/src/web/components/Topbar.tsx +368 -0
- package/bizar-dash/src/web/components/VisualPlanDialog.tsx +58 -0
- package/bizar-dash/src/web/components/chat/AgentChip.tsx +68 -0
- package/bizar-dash/src/web/components/chat/ChatBubble.tsx +60 -0
- package/bizar-dash/src/web/components/chat/ChatThread.tsx +88 -0
- package/bizar-dash/src/web/components/chat/ChatTopBar.tsx +50 -0
- package/bizar-dash/src/web/components/chat/Composer.tsx +164 -0
- package/bizar-dash/src/web/components/chat/ConfirmModal.tsx +54 -0
- package/bizar-dash/src/web/components/chat/EmptyState.tsx +21 -0
- package/bizar-dash/src/web/components/chat/FirstRunGreeting.tsx +18 -0
- package/bizar-dash/src/web/components/chat/FloatingComposer.tsx +32 -0
- package/bizar-dash/src/web/components/chat/InfoPanel.tsx +119 -0
- package/bizar-dash/src/web/components/chat/LoadingSkeleton.tsx +19 -0
- package/bizar-dash/src/web/components/chat/MessageBubble.tsx +60 -0
- package/bizar-dash/src/web/components/chat/SessionList.tsx +153 -0
- package/bizar-dash/src/web/components/chat/StreamingIndicator.tsx +9 -0
- package/bizar-dash/src/web/components/chat/SuggestionCards.tsx +55 -0
- package/bizar-dash/src/web/components/chat/WelcomeScreen.tsx +36 -0
- package/bizar-dash/src/web/components/chat/index.ts +20 -0
- package/bizar-dash/src/web/components/chat/useAutoGrowTextarea.ts +18 -0
- package/bizar-dash/src/web/components/chat/useChat.ts +219 -0
- package/bizar-dash/src/web/components/chat/useSlashCommands.ts +47 -0
- package/bizar-dash/src/web/index.html +37 -0
- package/bizar-dash/src/web/lib/api.ts +193 -0
- package/bizar-dash/src/web/lib/markdown.tsx +59 -0
- package/bizar-dash/src/web/lib/types.ts +668 -0
- package/bizar-dash/src/web/lib/utils.ts +114 -0
- package/bizar-dash/src/web/lib/ws.ts +176 -0
- package/bizar-dash/src/web/main.tsx +34 -0
- package/bizar-dash/src/web/mobile/MobileApp.tsx +278 -0
- package/bizar-dash/src/web/mobile/MobileBottomNav.tsx +38 -0
- package/bizar-dash/src/web/mobile/MobileTopbar.tsx +115 -0
- package/bizar-dash/src/web/mobile/components/MobileBottomSheet.tsx +182 -0
- package/bizar-dash/src/web/mobile/components/MobileListItem.tsx +64 -0
- package/bizar-dash/src/web/mobile/components/MobileModal.tsx +123 -0
- package/bizar-dash/src/web/mobile/views/MobileActivity.tsx +273 -0
- package/bizar-dash/src/web/mobile/views/MobileAgents.tsx +374 -0
- package/bizar-dash/src/web/mobile/views/MobileArtifactCanvas.tsx +439 -0
- package/bizar-dash/src/web/mobile/views/MobileArtifacts.tsx +143 -0
- package/bizar-dash/src/web/mobile/views/MobileChat.tsx +180 -0
- package/bizar-dash/src/web/mobile/views/MobileConfig.tsx +175 -0
- package/bizar-dash/src/web/mobile/views/MobileHistory.tsx +191 -0
- package/bizar-dash/src/web/mobile/views/MobileMods.tsx +149 -0
- package/bizar-dash/src/web/mobile/views/MobileMore.tsx +121 -0
- package/bizar-dash/src/web/mobile/views/MobileNotifications.tsx +137 -0
- package/bizar-dash/src/web/mobile/views/MobilePlans.tsx +26 -0
- package/bizar-dash/src/web/mobile/views/MobileSchedules.tsx +685 -0
- package/bizar-dash/src/web/mobile/views/MobileSearchModal.tsx +172 -0
- package/bizar-dash/src/web/mobile/views/MobileSettings.tsx +388 -0
- package/bizar-dash/src/web/mobile/views/MobileSkills.tsx +153 -0
- package/bizar-dash/src/web/mobile/views/MobileTasks.tsx +564 -0
- package/bizar-dash/src/web/mobile.html +20 -0
- package/bizar-dash/src/web/mobile.tsx +13 -0
- package/bizar-dash/src/web/styles/chat.css +198 -0
- package/bizar-dash/src/web/styles/glyphs.css +960 -0
- package/bizar-dash/src/web/styles/main.css +8855 -0
- package/bizar-dash/src/web/styles/mobile-chat.css +5 -0
- package/bizar-dash/src/web/styles/mobile.css +1960 -0
- package/bizar-dash/src/web/views/Activity.tsx +1203 -0
- package/bizar-dash/src/web/views/Agents.tsx +701 -0
- package/bizar-dash/src/web/views/Artifacts.tsx +1480 -0
- package/bizar-dash/src/web/views/BackgroundAgents.tsx +450 -0
- package/bizar-dash/src/web/views/Chat.tsx +190 -0
- package/bizar-dash/src/web/views/Config.tsx +2063 -0
- package/bizar-dash/src/web/views/History.tsx +335 -0
- package/bizar-dash/src/web/views/ModView.tsx +207 -0
- package/bizar-dash/src/web/views/Mods.tsx +693 -0
- package/bizar-dash/src/web/views/Overview.tsx +812 -0
- package/bizar-dash/src/web/views/Providers.tsx +302 -0
- package/bizar-dash/src/web/views/Schedules.tsx +802 -0
- package/bizar-dash/src/web/views/Settings.tsx +1787 -0
- package/bizar-dash/src/web/views/Skills.tsx +431 -0
- package/bizar-dash/src/web/views/Tasks.tsx +1523 -0
- package/bizar-dash/src/web/views/glyphs/GlyphRenderer.tsx +613 -0
- package/bizar-dash/src/web/views/glyphs/components.tsx +1098 -0
- package/bizar-dash/templates/mod/FORMAT.md +76 -0
- package/bizar-dash/templates/mod/hello-mod/README.md +19 -0
- package/bizar-dash/templates/mod/hello-mod/agents/greeter.md +8 -0
- package/bizar-dash/templates/mod/hello-mod/commands/hello.md +6 -0
- package/bizar-dash/templates/mod/hello-mod/mod.json +20 -0
- package/bizar-dash/templates/mod/hello-mod/routes/ping.mjs +9 -0
- package/bizar-dash/templates/mod/hello-mod/views/HelloView.tsx +10 -0
- package/bizar-dash/tests/dashboard-ports.test.mjs +138 -0
- package/bizar-dash/tests/graphify-mod-spawn.node.test.mjs +90 -0
- package/bizar-dash/tests/memory-cli.test.mjs +542 -0
- package/bizar-dash/tests/memory-config.test.mjs +422 -0
- package/bizar-dash/tests/memory-git.test.mjs +246 -0
- package/bizar-dash/tests/memory-lightrag.test.mjs +153 -0
- package/bizar-dash/tests/memory-protocol-drift.test.mjs +45 -0
- package/bizar-dash/tests/memory-schema.test.mjs +198 -0
- package/bizar-dash/tests/memory-secrets.test.mjs +121 -0
- package/bizar-dash/tests/memory-store.test.mjs +390 -0
- package/bizar-dash/tests/memory-sync.test.mjs +141 -0
- package/bizar-dash/tests/mod-instructions.node.test.mjs +188 -0
- package/bizar-dash/tests/mod-security.test.mjs +273 -0
- package/bizar-dash/tests/mod-upgrade.node.test.mjs +357 -0
- package/bizar-dash/tests/no-agent-browser.node.test.mjs +98 -0
- package/bizar-dash/tests/obsidian-back-compat.test.mjs +199 -0
- package/bizar-dash/tests/opencode-runner.test.mjs +172 -0
- package/bizar-dash/tests/path-safe.test.mjs +108 -0
- package/bizar-dash/tests/providers-store-backup-keys.node.test.mjs +333 -0
- package/bizar-dash/tests/smoke-v2.mjs +212 -0
- package/bizar-dash/tests/strip-thinking.test.mjs +175 -0
- package/bizar-dash/tests/submit-feedback.test.mjs +353 -0
- package/bizar-dash/tests/tmux-wrap.test.mjs +145 -0
- package/bizar-dash/tests/yaml.test.mjs +128 -0
- package/bizar-dash/tsconfig.json +23 -0
- package/bizar-dash/vite.config.ts +27 -0
- package/cli/atomic.mjs +73 -0
- package/cli/banner.mjs +1 -1
- package/cli/bin.mjs +44 -47
- package/cli/bootstrap.mjs +1 -1
- package/cli/copy.mjs +25 -16
- package/cli/dev-link.mjs +17 -1
- package/cli/doctor.mjs +4 -4
- package/cli/doctor.test.mjs +2 -2
- package/cli/init.mjs +135 -1
- package/cli/install.mjs +31 -39
- package/cli/memory-constants.mjs +59 -0
- package/cli/memory.mjs +1436 -0
- package/cli/service.mjs +5 -6
- package/cli/utils.mjs +6 -3
- package/config/AGENTS.md +7 -7
- package/config/agents/_shared/AGENT_BASELINE.md +59 -61
- package/config/opencode.json +13 -38
- package/config/skills/memory-protocol/SKILL.md +105 -0
- package/config/skills/obsidian/SKILL.md +270 -65
- package/install.sh +59 -19
- package/package.json +49 -14
- package/packages/sdk/LICENSE +21 -0
- package/packages/sdk/README.md +80 -0
- package/packages/sdk/src/client.ts +183 -0
- package/packages/sdk/src/errors.ts +120 -0
- package/packages/sdk/src/events.ts +153 -0
- package/packages/sdk/src/index.ts +63 -0
- package/packages/sdk/src/types.ts +176 -0
- package/packages/sdk/src/version.ts +4 -0
- package/packages/sdk/tests/client.test.ts +217 -0
- package/packages/sdk/tests/errors.test.ts +108 -0
- package/packages/sdk/tests/events.test.ts +139 -0
- package/packages/sdk/tests/fixtures/fetch-mock.ts +152 -0
- package/packages/sdk/tests/fixtures/sse-mock.ts +30 -0
- package/packages/sdk/tsconfig.json +25 -0
- package/packages/sdk/vitest.config.ts +9 -0
- package/plugins/bizar/LICENSE +21 -0
- package/plugins/bizar/README.md +448 -0
- package/plugins/bizar/dist/index.js +29901 -0
- package/plugins/bizar/index.ts +1491 -0
- package/plugins/bizar/scripts/check-forbidden-imports.sh +33 -0
- package/plugins/bizar/src/background-state.ts +551 -0
- package/plugins/bizar/src/background.ts +1250 -0
- package/plugins/bizar/src/commands-impl.ts +464 -0
- package/plugins/bizar/src/commands.ts +1168 -0
- package/plugins/bizar/src/dashboard-client.ts +233 -0
- package/plugins/bizar/src/event-stream.ts +606 -0
- package/plugins/bizar/src/fingerprint.ts +120 -0
- package/plugins/bizar/src/handoff.ts +79 -0
- package/plugins/bizar/src/http-client.ts +467 -0
- package/plugins/bizar/src/key-rotation.ts +218 -0
- package/plugins/bizar/src/logger.ts +144 -0
- package/plugins/bizar/src/loop.ts +176 -0
- package/plugins/bizar/src/opencode-runner.ts +390 -0
- package/plugins/bizar/src/options.ts +421 -0
- package/plugins/bizar/src/plan-fs.ts +323 -0
- package/plugins/bizar/src/reasoning-clean.ts +454 -0
- package/plugins/bizar/src/report.ts +178 -0
- package/plugins/bizar/src/research-prompt.ts +35 -0
- package/plugins/bizar/src/serve-info.ts +228 -0
- package/plugins/bizar/src/serve.ts +496 -0
- package/plugins/bizar/src/settings.ts +349 -0
- package/plugins/bizar/src/state.ts +298 -0
- package/plugins/bizar/src/tools/bg-collect.ts +104 -0
- package/plugins/bizar/src/tools/bg-get-comments.ts +239 -0
- package/plugins/bizar/src/tools/bg-kill.ts +87 -0
- package/plugins/bizar/src/tools/bg-spawn.ts +401 -0
- package/plugins/bizar/src/tools/bg-status.ts +99 -0
- package/plugins/bizar/src/tools/open-kb.ts +191 -0
- package/plugins/bizar/src/tools/plan-action.ts +767 -0
- package/plugins/bizar/src/tools/read-glyph-feedback.ts +170 -0
- package/plugins/bizar/src/tools/wait-for-feedback.ts +402 -0
- package/plugins/bizar/tests/attach-handler-bug.test.ts +169 -0
- package/plugins/bizar/tests/background-state.test.ts +277 -0
- package/plugins/bizar/tests/background.test.ts +402 -0
- package/plugins/bizar/tests/block.test.ts +195 -0
- package/plugins/bizar/tests/canonical-key-order.test.ts +75 -0
- package/plugins/bizar/tests/commands-impl.test.ts +442 -0
- package/plugins/bizar/tests/commands.test.ts +584 -0
- package/plugins/bizar/tests/config.test.ts +122 -0
- package/plugins/bizar/tests/dashboard-client.test.ts +159 -0
- package/plugins/bizar/tests/dispose.test.ts +336 -0
- package/plugins/bizar/tests/event-stream.test.ts +409 -0
- package/plugins/bizar/tests/event.test.ts +262 -0
- package/plugins/bizar/tests/fingerprint.test.ts +162 -0
- package/plugins/bizar/tests/http-client.test.ts +404 -0
- package/plugins/bizar/tests/init-helpers.test.ts +203 -0
- package/plugins/bizar/tests/integration/slash-command.test.ts +348 -0
- package/plugins/bizar/tests/integration/tool-routing.test.ts +314 -0
- package/plugins/bizar/tests/key-rotation.test.ts +396 -0
- package/plugins/bizar/tests/loop.test.ts +397 -0
- package/plugins/bizar/tests/options.test.ts +276 -0
- package/plugins/bizar/tests/reasoning-clean.test.ts +422 -0
- package/plugins/bizar/tests/serve.test.ts +339 -0
- package/plugins/bizar/tests/settings.test.ts +351 -0
- package/plugins/bizar/tests/stall-think.test.ts +750 -0
- package/plugins/bizar/tests/state.test.ts +276 -0
- package/plugins/bizar/tests/tools/bg-collect.test.ts +337 -0
- package/plugins/bizar/tests/tools/bg-get-comments.test.ts +485 -0
- package/plugins/bizar/tests/tools/bg-kill.test.ts +235 -0
- package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +147 -0
- package/plugins/bizar/tests/tools/bg-spawn.test.ts +311 -0
- package/plugins/bizar/tests/tools/bg-status.test.ts +217 -0
- package/plugins/bizar/tests/tools/opencode-runner.test.ts +115 -0
- package/plugins/bizar/tests/tools/plan-action.test.ts +599 -0
- package/plugins/bizar/tests/tools/read-glyph-feedback.test.ts +253 -0
- package/plugins/bizar/tests/tools/wait-for-feedback.test.ts +390 -0
- package/plugins/bizar/tests/update-deadlock.test.ts +145 -0
- package/plugins/bizar/tsconfig.json +29 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.chat-shell{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg);color:var(--text)}.chat-topbar{display:flex;align-items:center;gap:.5rem;height:48px;box-sizing:border-box;padding:0 1rem;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg)}.chat-topbar-project{display:flex;align-items:center;gap:.375rem;height:32px;padding:0 .75rem;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:.8125rem;font-weight:500;cursor:pointer;max-width:240px}.chat-topbar-project:hover{background:var(--bg-2)}.chat-topbar-project-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-topbar-spacer{flex:1}.chat-topbar-btn{height:32px;padding:0 .75rem;background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-muted);font-size:.8125rem;font-weight:500;cursor:pointer}.chat-topbar-btn:hover{background:var(--bg-1);color:var(--text)}.chat-topbar-btn.active{background:var(--bg-2);border-color:var(--border);color:var(--text)}.chat-body{display:flex;flex:1;min-height:0}.chat-sessions{width:200px;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg);border-right:1px solid var(--border);overflow:hidden;transition:width var(--motion-slow) var(--motion-ease)}@media (min-width: 1400px){.chat-sessions{width:220px}}.chat-sessions-hidden{width:0;border-right:none;opacity:0;pointer-events:none}.chat-sessions-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1rem .5rem;flex-shrink:0}.chat-sessions-header-title{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.chat-sessions-count{font-size:.6875rem;font-weight:600;padding:.0625rem .4375rem;background:var(--bg-2);border-radius:999px;color:var(--text-muted);font-variant-numeric:tabular-nums}.chat-sessions-toggle{display:flex;gap:2px;margin:0 .75rem .5rem;padding:2px;background:var(--bg-1);border-radius:var(--radius-sm)}.chat-sessions-toggle-btn{flex:1;padding:.25rem .375rem;background:transparent;border:none;border-radius:3px;font-size:.6875rem;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all var(--motion-base) var(--motion-ease);white-space:nowrap}.chat-sessions-toggle-btn:hover{color:var(--text)}.chat-sessions-toggle-btn.active{background:var(--bg-2);color:var(--text)}.chat-sessions-new{display:flex;align-items:center;justify-content:center;gap:.375rem;margin:.5rem .75rem .75rem;padding:.5rem;background:transparent;border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text);font-size:.8125rem;font-weight:500;cursor:pointer;transition:all var(--motion-base) var(--motion-ease)}.chat-sessions-new:hover:not(:disabled){background:var(--bg-1);border-color:var(--border-strong);border-style:solid}.chat-sessions-new:disabled{opacity:.4;cursor:not-allowed}.chat-sessions-list{list-style:none;margin:0;padding:0 .375rem .75rem;overflow-y:auto;flex:1;min-height:0}.chat-sessions-item{display:flex;flex-direction:column;gap:.125rem;padding:.5rem .625rem;margin:.0625rem 0;border-radius:var(--radius-sm);cursor:pointer}.chat-sessions-item:hover{background:var(--bg-1)}.chat-sessions-item.active{background:var(--bg-2)}.chat-sessions-item-id{font-family:var(--font-mono);font-size:.75rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-sessions-item-meta{font-size:.6875rem;color:var(--text-muted)}.chat-sessions-item-opencode{opacity:.8}.chat-sessions-item-opencode .chat-sessions-item-id{font-family:var(--font-sans)}.chat-sessions-item-icon{flex-shrink:0;color:var(--text-muted);margin-top:2px}.chat-sessions-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:1rem}.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg);position:relative}.chat-thread{flex:1;overflow-y:auto;padding:1.5rem 2rem;display:flex;flex-direction:column;gap:1rem}.chat-thread:has(.chat-welcome){padding:0;align-items:center;justify-content:flex-start}.chat-welcome{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;padding:6vh 2rem 2rem;width:100%;max-width:920px}.chat-welcome-h1{margin:0;font-size:clamp(2.25rem,5vw,3.5rem);font-weight:700;line-height:1.1;letter-spacing:-.02em}.chat-greeting-hello{background:var(--gradient-hello);-webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block}.chat-greeting-name{background:var(--gradient-name);-webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block}.chat-welcome-subtitle{font-size:clamp(1.125rem,2vw,1.5rem);font-weight:500;color:var(--text-muted);margin:.5rem 0 0;letter-spacing:-.005em}.chat-suggestions{display:grid;grid-template-columns:1fr;gap:.75rem;width:100%;max-width:920px;margin-top:2.5rem}@media (min-width: 600px){.chat-suggestions{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1100px){.chat-suggestions{grid-template-columns:repeat(4,1fr)}}.chat-suggestion{display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.125rem;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;text-align:left;font:inherit;color:var(--text);transition:all var(--motion-base) var(--motion-ease);min-height:120px}.chat-suggestion:hover{transform:translateY(-2px);border-color:var(--border-strong);background:var(--bg-2)}.chat-suggestion-title{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;line-height:1.3}.chat-suggestion-title span{flex:1}.chat-suggestion-preview{font-size:.75rem;color:var(--text-muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.chat-message{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.875rem 1.125rem;transition:border-color var(--motion-base) var(--motion-ease);max-width:880px;width:100%;align-self:flex-start}.chat-message-user{background:var(--bg-2)}.chat-message-pinned{border-left:2px solid var(--accent)}.chat-message-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.chat-message-role{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.chat-message-agent{font-family:var(--font-mono);font-size:.75rem;color:var(--accent)}.chat-message-time{font-size:.6875rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.chat-message-pin{font-size:.6875rem;color:var(--accent);font-weight:600}.chat-message-actions{margin-left:auto;display:flex;gap:.125rem;opacity:0;transition:opacity var(--motion-base) var(--motion-ease)}.chat-message:hover .chat-message-actions,.chat-message:focus-within .chat-message-actions{opacity:1}.chat-msg-action-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer}.chat-msg-action-btn:hover{background:var(--bg-2);color:var(--text)}.chat-msg-action-btn-danger:hover{color:var(--error)}.chat-message-content{font-size:.9375rem;line-height:1.6;color:var(--text);word-wrap:break-word}.markdown-body p{margin:.5em 0}.markdown-body p:first-child{margin-top:0}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:.75em 0 .5em;font-weight:600}.markdown-body code{font-family:var(--font-mono);font-size:.875em;background:var(--bg-2);padding:.0625em .25em;border-radius:3px}.markdown-body pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem;overflow-x:auto}.markdown-body pre code{background:transparent;padding:0}.markdown-body ul,.markdown-body ol{margin:.5em 0;padding-left:1.5em}.markdown-body blockquote{border-left:2px solid var(--border-strong);margin:.5em 0;padding:0 0 0 .75em;color:var(--text-muted)}.markdown-body a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.chat-composer-wrap{position:sticky;bottom:0;left:0;right:0;padding:.5rem 1rem 1rem;background:linear-gradient(to top,var(--bg) 0%,var(--bg) 50%,transparent 100%);pointer-events:none;z-index:10;max-width:100%}.chat-composer-wrap>*{pointer-events:auto}.chat-composer-pill{max-width:min(880px,100%);margin:0 auto;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 4px 32px #0006;transition:border-color var(--motion-base) var(--motion-ease)}.chat-composer-pill:focus-within{border-color:var(--accent)}.chat-composer{display:flex;flex-direction:column;gap:.375rem;padding:.5rem .625rem}.chat-composer-suggestions{display:flex;flex-direction:column;gap:.125rem;margin:-.25rem 0 .25rem;padding:.25rem;background:var(--bg-2);border-radius:var(--radius-md);max-height:240px;overflow-y:auto}.chat-composer-suggestion{display:flex;align-items:center;gap:.5rem;padding:.5rem .625rem;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:.8125rem;text-align:left;cursor:pointer}.chat-composer-suggestion:hover{background:var(--bg)}.chat-composer-suggestion .mono{font-family:var(--font-mono);font-size:.75rem;color:var(--accent);min-width:80px}.chat-composer-attachments{display:flex;flex-wrap:wrap;gap:.25rem;padding:0 .25rem}.chat-composer-attachment-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.1875rem .4375rem;background:var(--bg-2);border-radius:999px;font-size:.75rem;color:var(--text)}.chat-composer-attachment-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;padding:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer}.chat-composer-input{display:flex;align-items:flex-end;gap:.375rem}.chat-composer-textarea{flex:1;min-width:0;width:100%;resize:none;background:transparent;border:none;outline:none;color:var(--text);font:inherit;font-size:.9375rem;line-height:1.5;padding:.5rem;max-height:200px;overflow-y:auto}.chat-composer-textarea::placeholder{color:var(--text-muted)}.chat-attach-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer}.chat-attach-btn:hover{background:var(--bg-2);color:var(--text)}.chat-send-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer}.chat-send-btn:hover:not(:disabled){background:color-mix(in oklab,var(--accent),white 15%);transform:scale(1.05)}.chat-send-btn:disabled{background:var(--bg-2);color:var(--text-muted);cursor:not-allowed}.chat-agent-chip{position:relative;flex-shrink:0}.chat-agent-chip-btn{display:flex;align-items:center;gap:.375rem;height:32px;padding:0 .625rem;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:.8125rem;font-weight:500;cursor:pointer;min-width:100px;max-width:160px}.chat-agent-chip-btn>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}.chat-agent-chip-btn:hover{background:var(--bg);border-color:var(--border-strong)}.chat-agent-chip-btn .rotated{transform:rotate(180deg);transition:transform var(--motion-base) var(--motion-ease)}.chat-agent-chip-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:60;min-width:200px;max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:.375rem;background:var(--bg-1);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:0 -8px 24px #0006}.chat-agent-chip-menu button{display:flex;align-items:center;padding:.5rem .75rem;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:.8125rem;text-align:left;cursor:pointer}.chat-agent-chip-menu button:hover{background:var(--bg-2)}.chat-agent-chip-menu button[aria-selected=true]{background:var(--accent);color:#fff}.chat-info{width:240px;flex-shrink:0;display:flex;flex-direction:column;gap:.625rem;padding:1rem;background:var(--bg);border-left:1px solid var(--border);overflow-y:auto}@media (min-width: 1400px){.chat-info{width:260px}}.chat-info-hidden{width:0;padding:0;border-left:none;opacity:0;pointer-events:none;overflow:hidden}.chat-info-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem .875rem}.chat-info-card-title{display:flex;align-items:center;gap:.4375rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.5rem;width:100%;background:transparent;border:none;padding:0;text-align:left}.chat-info-card-title-button{cursor:pointer}.chat-info-card-title-button:hover{color:var(--text)}.chat-info-card-count{margin-left:auto;font-size:.6875rem;background:var(--bg-2);padding:.0625rem .375rem;border-radius:999px;color:var(--text-muted);font-weight:500}.chat-info-card-chevron{color:var(--text-muted);transition:transform var(--motion-base) var(--motion-ease)}.chat-info-card-chevron.open{transform:rotate(180deg)}.chat-info-card-toggle{margin-top:.4375rem;padding:.25rem 0;background:transparent;border:none;color:var(--text-muted);font-size:.6875rem;font-weight:500;cursor:pointer;text-align:left}.chat-info-card-toggle:hover{color:var(--text)}.env-table{display:grid;grid-template-columns:auto 1fr;gap:.25rem .625rem;margin:0;font-size:.75rem}.env-table dt{color:var(--text-muted)}.env-table dd{margin:0;color:var(--text);font-family:var(--font-mono);font-size:.6875rem}.env-table dd.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-mini-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.1875rem;max-height:200px;overflow-y:auto}.mod-mini{display:flex;align-items:center;gap:.4375rem;padding:.25rem 0;font-size:.75rem}.mod-mini-name{font-family:var(--font-mono);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.mod-mini-meta{font-size:.6875rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-mini-pill{font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.0625rem .375rem;border-radius:999px}.mod-mini-pill.on{background:color-mix(in oklab,var(--success),transparent 70%);color:var(--success)}.mod-mini-pill.off{background:var(--bg-2);color:var(--text-muted)}.mono{font-family:var(--font-mono)}.muted{color:var(--text-muted)}.chat-loading-skeleton{display:flex;flex-direction:column;gap:.75rem;padding:1rem 0}.chat-loading-skeleton-bubble{display:flex;flex-direction:column;gap:.5rem;padding:.875rem 1.125rem;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:600px}.chat-loading-skeleton-meta{height:12px;width:80px;background:var(--bg-2);border-radius:4px;animation:skeleton-pulse 1.4s ease-in-out infinite}.chat-loading-skeleton-line{height:12px;background:var(--bg-2);border-radius:4px;animation:skeleton-pulse 1.4s ease-in-out infinite}.chat-loading-skeleton-line.short{width:60%}@keyframes skeleton-pulse{0%,to{opacity:.6}50%{opacity:1}}.chat-streaming-indicator{display:inline-flex;align-items:center;gap:4px;padding:.5rem 1rem}.chat-streaming-indicator span{display:inline-block;width:6px;height:6px;background:var(--text-muted);border-radius:50%;animation:streaming-bounce 1.4s ease-in-out infinite}.chat-streaming-indicator span:nth-child(2){animation-delay:.16s}.chat-streaming-indicator span:nth-child(3){animation-delay:.32s}@keyframes streaming-bounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.chat-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;gap:.625rem}.chat-empty-state-icon{color:var(--text-muted);opacity:.6}.chat-empty-state-title{font-size:1rem;font-weight:600;color:var(--text);margin:0}.chat-empty-state-message{font-size:.8125rem;color:var(--text-muted);margin:0;max-width:320px}.chat-empty-state-action{margin-top:.5rem}@media (min-width: 768px) and (max-width: 1024px){.chat-sessions{position:fixed!important;left:0;top:48px;bottom:0;width:280px;z-index:100;border-right:1px solid var(--border);background:var(--bg);transform:translate(-100%);transition:transform var(--motion-slow) var(--motion-ease)}.chat-sessions:not(.chat-sessions-hidden){transform:translate(0)}.chat-info{width:220px}}@media (max-width: 767.98px){.chat-sessions,.chat-info{position:fixed!important;top:48px;bottom:0;width:85vw;max-width:320px;z-index:100;background:var(--bg)}.chat-sessions{left:0;border-right:1px solid var(--border);transform:translate(-100%);transition:transform var(--motion-slow) var(--motion-ease)}.chat-sessions:not(.chat-sessions-hidden){transform:translate(0)}.chat-info{right:0;border-left:1px solid var(--border);transform:translate(100%);transition:transform var(--motion-slow) var(--motion-ease)}.chat-info:not(.chat-info-hidden){transform:translate(0)}.chat-thread{padding:1rem}.chat-welcome{padding:3rem 1rem 1rem}.chat-composer-wrap{padding:.5rem .5rem .75rem}.chat-composer-pill{border-radius:var(--radius-md)}.chat-agent-chip-btn{min-width:80px;padding:0 .5rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (max-width: 480px){.chat-composer-wrap{padding:.375rem .375rem .5rem}.chat-welcome-h1{font-size:1.875rem}}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:Inter var,Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";font-size:14px;line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,pre,.mono{font-family:var(--mono)}::selection{background:var(--accent-bg);color:var(--accent-2)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:root{--bg: #0b0e14;--bg-elev: #12161f;--bg-elev-2: #1a1f2b;--bg-elev-3: #232a39;--border: #232a39;--border-strong: #2d3648;--text: #c9d1d9;--text-dim: #b4bcd0;--text-muted: var(--text-dim);--text-strong: #f0f6fc;--accent: #8b5cf6;--accent-2: #a78bfa;--accent-3: #c4b5fd;--accent-bg: rgba(139, 92, 246, .12);--accent-border: rgba(139, 92, 246, .4);--accent-glow: rgba(139, 92, 246, .18);--accent-soft: rgba(139, 92, 246, .08);--success: #34d399;--warning: #fbbf24;--error: #f87171;--info: #60a5fa;--success-soft: rgba(52, 211, 153, .15);--error-soft: rgba(248, 113, 113, .12);--warning-soft: rgba(251, 191, 36, .15);--syntax-key: #79c0ff;--syntax-string: #a5d6ff;--syntax-number: #ffa657;--syntax-boolean: #ff7b72;--syntax-null: #ff7b72;--overlay-bg: rgba(0, 0, 0, .6);--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Cascadia Code", Consolas, monospace;--font-sans: "Inter var", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-color: rgba(0, 0, 0, .45);--shadow-color-strong: rgba(0, 0, 0, .6);--shadow-1: 0 1px 2px var(--shadow-color);--shadow-2: 0 4px 12px var(--shadow-color);--shadow-3: 0 12px 32px var(--shadow-color);--shadow-glow: 0 0 0 1px var(--accent-border), 0 8px 32px var(--accent-glow);--bg-elevated: var(--bg-elev);--surface-2: var(--bg-elev-2);--motion-base: .18s;--motion-slow: .28s;--ease: cubic-bezier(.4, 0, .2, 1);--surface-0: var(--bg);--surface-1: color-mix(in oklab, var(--bg) 92%, var(--text) 8%);--surface-2: color-mix(in oklab, var(--bg) 84%, var(--text) 16%);--success: oklch(.72 .16 145);--warning: oklch(.78 .14 70);--error: oklch(.66 .2 25);--info: oklch(.72 .13 235);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--motion-fast: .12s;--motion-base: .2s;--motion-slow: .32s;--motion-ease: cubic-bezier(.2, 0, 0, 1);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--bg-1: #18181b;--bg-2: #27272a;--radius-pill: 999px;--gradient-hello: linear-gradient( 90deg, color-mix(in oklab, var(--accent), white 25%) 0%, var(--accent) 100% );--gradient-name: linear-gradient( 90deg, var(--accent) 0%, color-mix(in oklab, var(--accent), oklch(.55 .22 25) 35%) 60%, color-mix(in oklab, var(--accent), oklch(.55 .22 25) 65%) 100% );color-scheme:dark}[data-theme=light]{--bg: #f7f8fa;--bg-elev: #ffffff;--bg-elev-2: #f0f3f8;--bg-elev-3: #e6ebf2;--border: #e2e8f0;--border-strong: #cbd5e1;--text: #1f2937;--text-dim: #475569;--text-strong: #0f172a;--accent: #7c3aed;--accent-2: #6d28d9;--accent-3: #5b21b6;--accent-bg: rgba(124, 58, 237, .08);--accent-border: rgba(124, 58, 237, .3);--accent-glow: rgba(124, 58, 237, .18);--accent-soft: rgba(124, 58, 237, .06);--success: #059669;--warning: #d97706;--error: #dc2626;--info: #2563eb;--success-soft: rgba(5, 150, 105, .12);--error-soft: rgba(220, 38, 38, .08);--warning-soft: rgba(217, 119, 6, .12);--syntax-key: #0969da;--syntax-string: #0a3069;--syntax-number: #953800;--syntax-boolean: #cf222e;--syntax-null: #cf222e;--shadow-color: rgba(15, 23, 42, .08);--shadow-color-strong: rgba(15, 23, 42, .16);--shadow-1: 0 1px 2px var(--shadow-color);--shadow-2: 0 4px 12px var(--shadow-color);--shadow-3: 0 12px 32px var(--shadow-color);--surface-1: color-mix(in oklab, var(--bg) 92%, var(--text) 8%);--surface-2: color-mix(in oklab, var(--bg) 84%, var(--text) 16%);--success: oklch(.62 .16 145);--warning: oklch(.72 .14 70);--error: oklch(.6 .2 25);--info: oklch(.62 .13 235);--bg-1: #f4f4f5;--bg-2: #e4e4e7;color-scheme:light}.app{display:flex;flex-direction:column;height:100vh;background:radial-gradient(circle at 0% 0%,var(--accent-bg),transparent 50%),var(--bg);background-attachment:fixed}.view{max-width:1400px;margin:0 auto;width:100%;display:flex;flex-direction:column;gap:var(--space-5);animation:view-in var(--motion-slow) var(--ease);min-height:0}@keyframes view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.view-chat,.view-config{height:100%;min-height:0}.view-chat{max-width:1600px}.app[data-active-tab=chat]>.layout-body>.content{padding:0;max-width:none;overflow:hidden}.app[data-active-tab=artifacts]>.layout-body>.content,.app[data-active-tab=skills]>.layout-body>.content{padding:0;max-width:none}.view-chat-fullscreen,.view-plans-fullscreen,.view-skills-fullscreen{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;width:100%;height:100%;max-width:none;margin:0;background:var(--bg)}.view-chat-fullscreen>.chat-layout,.view-plans-fullscreen>.plans-body,.view-skills-fullscreen>.skills-body{flex:1;min-height:0;width:100%}.view-loading{display:flex;flex-direction:column;gap:var(--space-3);align-items:center;justify-content:center;min-height:60vh;color:var(--text-dim)}.loading{display:flex;flex-direction:column;gap:var(--space-3);align-items:center;justify-content:center;min-height:100vh;color:var(--text-dim)}.boot-error{max-width:560px;margin:var(--space-12) auto;padding:var(--space-6);background:var(--bg-elev);border:1px solid var(--error);border-radius:var(--radius-lg);box-shadow:var(--shadow-2)}.boot-error h2{margin:0 0 var(--space-3);color:var(--error)}.boot-error code{background:var(--bg);padding:2px 6px;border-radius:var(--radius-sm);font-size:12px}.topbar{display:flex;flex-direction:column;flex-shrink:0;min-height:56px;background:color-mix(in srgb,var(--bg-elev) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar-row{display:flex;align-items:center;height:56px;flex-shrink:0;padding:0 var(--space-5);gap:var(--space-4);width:100%;min-width:0}.topbar-spacer{flex:1;min-width:0}.tabs-row{display:flex;gap:2px;padding:0 var(--space-5);height:40px;align-items:center;overflow-x:auto;scrollbar-width:none;border-top:1px solid var(--border)}.tabs-row::-webkit-scrollbar{display:none}.brand{display:flex;align-items:center;gap:var(--space-2);-webkit-user-select:none;user-select:none}.brand-logo{font-size:22px;line-height:1;filter:drop-shadow(0 0 12px var(--accent-border))}.brand-title{font-weight:600;font-size:15px;letter-spacing:-.01em;color:var(--text-strong)}.brand-version{font-family:var(--font-mono);font-size:10px;color:var(--text-dim);padding:2px 7px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;font-weight:500}.tab{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;color:var(--text-dim);padding:6px 12px;border-radius:999px;cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap;transition:background var(--motion-base) var(--ease),color var(--motion-base) var(--ease),border-color var(--motion-base) var(--ease),transform var(--motion-fast) var(--ease)}.tab:hover{color:var(--text);background:var(--bg-elev-2)}.tab:active{transform:scale(.98)}.tab-active{color:var(--accent-3);background:var(--accent-bg);border-color:var(--accent-border)}.tab-icon{flex-shrink:0}.topbar-right{display:flex;align-items:center;gap:var(--space-3)}.ws-status{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-family:var(--font-mono);color:var(--text-dim);padding:4px 10px;border-radius:999px;background:var(--bg-elev-2);border:1px solid var(--border);text-transform:capitalize}.ws-dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim);position:relative}.ws-connected .ws-dot{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.ws-connecting .ws-dot{background:var(--warning);animation:pulse 1.4s ease-in-out infinite}.ws-disconnected .ws-dot{background:var(--error)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.view-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.view-header-text{display:flex;flex-direction:column;gap:4px;min-width:0}.view-title{display:inline-flex;align-items:center;gap:var(--space-2);font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--text-strong);margin:0}.view-subtitle{font-size:13px;color:var(--text-dim);margin:0}.view-actions{display:inline-flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);transition:border-color var(--motion-base) var(--ease),transform var(--motion-base) var(--ease),box-shadow var(--motion-base) var(--ease)}.card-elevated{background:var(--bg-elev)}.card-outlined{background:transparent}.card-filled{background:var(--bg-elev-2);border-color:var(--border-strong)}.card-interactive{cursor:pointer}.card-interactive:hover{border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-2)}.card-title{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text-strong);margin:0;letter-spacing:-.005em}.card-meta{font-size:12px;color:var(--text-dim)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--radius);cursor:pointer;font-weight:500;white-space:nowrap;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease),box-shadow var(--motion-fast) var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-size-sm{padding:4px 10px;font-size:12px}.btn-size-md{padding:7px 14px;font-size:13px}.btn-size-lg{padding:10px 18px;font-size:14px}.btn-icon{padding:6px;width:30px;height:30px}.btn-primary{background:var(--accent);color:#fff;border:1px solid var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2)}.btn-accent{background:var(--accent-bg);color:var(--accent-2);border:1px solid var(--accent-border)}.btn-secondary{background:var(--bg-elev-2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-elev-3)}.btn-ghost{background:transparent;color:var(--text-dim);border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-elev-2);color:var(--text)}.btn-danger{background:transparent;color:var(--error);border:1px solid var(--error)}.btn-danger:hover:not(:disabled){background:var(--error-soft)}.btn-success{background:var(--success);color:var(--text-strong);border:1px solid var(--success)}.btn-success:hover:not(:disabled){filter:brightness(1.08)}.btn-loading{pointer-events:none}.btn-spinner{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}.hint-key{opacity:.7;margin-left:2px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--radius-sm);background:transparent;color:var(--text-dim);border:1px solid transparent;cursor:pointer;transition:all var(--motion-fast) var(--ease)}.icon-btn:hover{background:var(--bg-elev-2);color:var(--text);border-color:var(--border)}.icon-btn-danger:hover{background:var(--error-soft);color:var(--error);border-color:var(--error)}.w-full{width:100%}.input,.textarea,.select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:7px 12px;width:100%;font-size:13px;transition:border-color var(--motion-fast) var(--ease),box-shadow var(--motion-fast) var(--ease)}.textarea{resize:vertical;min-height:80px;font-family:var(--font-mono);font-size:12px;line-height:1.55}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='%238b95a8' d='M2 4l4 4 4-4z'/></svg>");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}[data-theme=light] .select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='%2364748b' d='M2 4l4 4 4-4z'/></svg>")}.select-sm{padding:4px 28px 4px 10px;font-size:12px;height:30px}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.textarea.invalid{border-color:var(--error)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field-label{font-size:12px;font-weight:500;color:var(--text-dim);letter-spacing:.01em}.field-help{font-size:11px;color:var(--text-dim)}.checkbox-row{display:flex;align-items:center;gap:var(--space-2);padding:6px 0;font-size:13px;cursor:pointer;color:var(--text)}.checkbox-row input{width:auto;cursor:pointer;accent-color:var(--accent)}.radio-row{display:flex;gap:var(--space-3)}.radio-label{display:inline-flex;align-items:center;gap:4px;font-size:13px;cursor:pointer}.radio-label input{width:auto;accent-color:var(--accent)}.capitalize{text-transform:capitalize}.tabular-nums{font-variant-numeric:tabular-nums}.text-error{color:var(--error)}.muted{color:var(--text-dim)}.text-sm{font-size:12px}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:10px;font-family:var(--font-mono);font-weight:500;background:var(--bg-elev-2);color:var(--text-dim);border:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em}.badge-dot:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor}.badge-success{color:var(--success);border-color:var(--success-soft)}.badge-warning{color:var(--warning);border-color:var(--warning-soft)}.badge-error{color:var(--error);border-color:var(--error-soft)}.badge-info{color:var(--info);border-color:var(--info)}.badge-accent{color:var(--accent-2);border-color:var(--accent-border)}.badge-neutral{color:var(--text-dim)}.tag{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:999px;font-size:10px;font-family:var(--font-mono);background:var(--accent-bg);color:var(--accent-2);border:1px solid var(--accent-border)}.tag-remove{background:transparent;border:none;color:inherit;cursor:pointer;padding:0 0 0 2px;font-size:12px;line-height:1;opacity:.7}.tag-remove:hover{opacity:1}.spinner{display:inline-block;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.spinner-sm{width:12px;height:12px}.spinner-md{width:18px;height:18px}.spinner-lg{width:32px;height:32px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}@media (max-width: 1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.stat-grid{grid-template-columns:1fr}}.stat-card{flex-direction:row;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5)}.stat-card-icon{width:40px;height:40px;border-radius:var(--radius);background:var(--accent-bg);color:var(--accent-2);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.stat-card-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.stat-card-value{font-size:26px;font-weight:700;color:var(--text-strong);letter-spacing:-.02em;line-height:1.05}.stat-card-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em}.stat-card-arrow{color:var(--text-dim);font-size:18px;transition:transform var(--motion-base) var(--ease)}.stat-card:hover .stat-card-arrow{transform:translate(2px);color:var(--accent-2)}.overview-hero{padding:var(--space-8);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;margin-bottom:var(--space-6)}.overview-hero-title{font-size:26px;font-weight:700;margin:0 0 var(--space-2);color:var(--text-strong);letter-spacing:-.01em}.overview-hero-subtitle{font-size:14px;color:var(--text-dim);margin:0 0 var(--space-6);max-width:480px;margin-left:auto;margin-right:auto}.overview-hero-form{display:flex;flex-direction:column;gap:var(--space-3);max-width:720px;margin:0 auto}.overview-hero-input{padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.5;resize:vertical;min-height:88px;transition:border-color var(--motion-fast) var(--ease),box-shadow var(--motion-fast) var(--ease)}.overview-hero-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.overview-hero-input:disabled{opacity:.5;cursor:not-allowed}.overview-hero-noframe{padding:80px 24px 48px;text-align:center;max-width:1100px;margin:0 auto;width:100%}.overview-hero-noframe h1{font-size:48px;font-weight:800;line-height:1.1;margin:0 0 12px;letter-spacing:-.02em;background:linear-gradient(135deg,var(--text-strong) 0%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;color:var(--text-strong)}.overview-hero-noframe .overview-hero-subtitle{font-size:16px;color:var(--text-dim);margin:0 auto 32px;max-width:620px}.overview-hero-form-noframe{display:flex;flex-direction:column;gap:var(--space-3);max-width:900px;margin:0 auto}.overview-input-hero{width:100%;min-height:160px;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--bg-elev);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.5;resize:vertical;box-shadow:var(--shadow-2);transition:border-color .12s var(--ease),box-shadow .12s var(--ease)}.overview-input-hero:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-3),0 0 0 4px var(--accent-glow)}.overview-input-hero::placeholder{color:var(--text-dim)}.overview-input-hero:disabled{opacity:.5;cursor:not-allowed}.overview-quick-actions-row{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center;margin-top:var(--space-5)}.overview-feed{max-width:1100px;margin:48px auto 0;width:100%}.overview-feed-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.overview-feed-head-actions{display:inline-flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.activity-hidden-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-3);padding:8px 12px;border-radius:var(--radius);border:1px dashed color-mix(in srgb,var(--accent) 35%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--bg-elev-2));font-size:12px;color:var(--text-dim)}.overview-feed h2{font-size:20px;font-weight:700;color:var(--text-strong);margin:0 0 var(--space-3)}@media (max-width: 700px){.overview-hero-noframe{padding:48px 16px 32px}.overview-hero-noframe h1{font-size:32px}}.overview-quick-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center;margin-top:var(--space-4)}.overview-quick-chip{padding:5px 12px;border:1px solid var(--border);border-radius:999px;background:var(--bg-elev-2);color:var(--text-dim);font-size:12px;cursor:pointer;transition:all var(--motion-fast) var(--ease);font-family:inherit}.overview-quick-chip:hover{background:var(--bg-elev-3);color:var(--text);border-color:var(--border-strong)}.quick-actions{gap:var(--space-3)}.quick-actions-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.overview-cols{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--space-4)}@media (max-width: 1000px){.overview-cols{grid-template-columns:1fr}}.activity-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:360px;overflow-y:auto}.activity-item{display:grid;grid-template-columns:60px 130px 1fr;gap:var(--space-3);padding:8px var(--space-2);font-size:12px;border-radius:var(--radius-sm);font-family:var(--font-mono);border-left:2px solid var(--border);align-items:baseline}.activity-item:hover{background:var(--bg-elev-2)}.activity-ts{color:var(--text-dim);white-space:nowrap}.activity-kind{color:var(--accent-2)}.activity-msg{color:var(--text);word-break:break-word;overflow:hidden;text-overflow:ellipsis}.activity-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-3)}.activity-card{--accent-rule: var(--accent);display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:box-shadow var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease),background var(--motion-base) var(--ease);position:relative;overflow:hidden}.activity-card:before{content:"";position:absolute;top:0;left:14px;right:14px;height:2px;border-radius:999px;background:var(--accent-rule);pointer-events:none}.activity-card:hover{box-shadow:var(--shadow-2);transform:translateY(-1px);background:var(--bg-elev-3)}.activity-card-info{--accent-rule: var(--accent)}.activity-card-success{--accent-rule: var(--success)}.activity-card-warning{--accent-rule: var(--warning)}.activity-card-error{--accent-rule: var(--error)}.activity-card-expanded{grid-column:1 / -1}.activity-card-icon{flex-shrink:0;width:24px;height:24px;margin-top:1px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent-rule) 14%,var(--bg))}.activity-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.activity-card-kind{color:var(--text-dim);font-family:var(--font-mono);text-transform:lowercase}.activity-card-msg{color:var(--text);word-break:break-word;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.activity-card-detail{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2);overflow-x:auto;margin-top:var(--space-1);white-space:pre-wrap;word-break:break-all}.activity-card-time{flex-shrink:0;white-space:nowrap;color:var(--text-dim)}.activity-feed-list-wrap{position:relative}.activity-feed-list-wrap-collapsed{max-height:31rem;overflow:hidden}.activity-feed-list{display:flex;flex-direction:column;gap:6px}.activity-feed-fade{position:absolute;left:0;right:0;bottom:0;height:8rem;background:linear-gradient(to bottom,rgba(8,11,18,0),var(--bg));pointer-events:none}.activity-feed-row{display:flex;align-items:stretch;gap:0;width:100%;padding:0;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-elev-2) 82%,transparent);transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.activity-feed-row:hover{background:var(--bg-elev-2);border-color:color-mix(in srgb,var(--accent) 24%,var(--border))}.activity-feed-row-main{flex:1;display:flex;align-items:flex-start;gap:var(--space-3);padding:10px 12px;background:transparent;border:0;text-align:left;color:inherit;font:inherit;cursor:pointer;min-width:0}.activity-feed-hide-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;flex-shrink:0;border:0;border-left:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;opacity:0;transition:opacity var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease);border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.activity-feed-row:hover .activity-feed-hide-btn,.activity-feed-hide-btn:focus-visible{opacity:1}.activity-feed-hide-btn:hover{background:color-mix(in srgb,var(--error) 14%,transparent);color:var(--error)}.activity-feed-icon{width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:color-mix(in srgb,currentColor 12%,var(--bg))}.activity-feed-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.activity-feed-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.activity-feed-title{font-size:13px;font-weight:600;color:var(--text)}.activity-feed-summary{color:var(--text-dim);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.activity-feed-time{white-space:nowrap}.activity-log-toolbar{display:flex;align-items:center;gap:var(--space-3);margin:0 0 var(--space-3);flex-wrap:wrap}.activity-log-search{position:relative;flex:1;min-width:200px;display:flex;align-items:center}.activity-log-search>svg{position:absolute;left:10px;color:var(--text-dim);pointer-events:none}.activity-log-search>.input{padding-left:30px;width:100%}.activity-log-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);-webkit-user-select:none;user-select:none;cursor:pointer}.activity-log-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto;max-height:480px;background:var(--bg-elev-2)}.activity-log-table{width:100%;border-collapse:collapse;font-size:12px}.activity-log-table thead{position:sticky;top:0;background:color-mix(in srgb,var(--bg-elev-3) 92%,var(--bg-elev-2));z-index:1}.activity-log-table th{text-align:left;padding:8px 12px;font-weight:600;color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border)}.activity-log-table td{padding:6px 12px;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent);vertical-align:top}.activity-log-table tbody tr:last-child td{border-bottom:0}.activity-log-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.activity-log-row-hidden{opacity:.55}.activity-log-row-hidden .activity-log-kind{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--text-dim) 60%,transparent)}.activity-log-kind{font-family:var(--font-mono, ui-monospace, monospace);color:var(--accent);white-space:nowrap}.activity-log-detail{color:var(--text);word-break:break-word}.activity-log-time{color:var(--text-dim);white-space:nowrap;font-size:11px}.activity-log-state-tag{font-size:10px;padding:2px 6px;border-radius:4px;background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success);text-transform:uppercase;letter-spacing:.04em}.env-table,.about-table{display:grid;grid-template-columns:max-content 1fr;gap:6px var(--space-4);margin:0;font-size:13px}.env-table dt,.about-table dt{color:var(--text-dim);font-size:12px}.env-table dd,.about-table dd{margin:0;color:var(--text)}.overview-footer{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim);padding-top:var(--space-3);border-top:1px solid var(--border)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);text-align:center;color:var(--text-dim)}.empty-icon{color:var(--text-dim);opacity:.7}.empty-title{font-weight:600;color:var(--text);font-size:15px;margin-top:var(--space-2)}.empty-message{font-size:13px;max-width:420px}.empty-action{margin-top:var(--space-3)}.agent-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}@media (max-width: 1100px){.agent-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 700px){.agent-grid{grid-template-columns:1fr}}.agent-card{gap:var(--space-2)}.agent-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.agent-card-name{font-weight:600;font-family:var(--font-mono);color:var(--accent-2);font-size:15px}.agent-card-desc{font-size:12px;color:var(--text-dim);line-height:1.5;min-height:36px}.agent-card-meta{display:flex;justify-content:space-between;font-size:11px;font-family:var(--font-mono);color:var(--text-dim)}.agent-card-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.invoke-form{display:flex;flex-direction:column;gap:var(--space-3)}.invoke-form-meta{font-size:11px}.invoke-form-desc{margin:0;font-size:13px;color:var(--text-dim)}.new-plan-form{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.new-plan-form .input{flex:1;min-width:200px}.plans-layout{display:grid;grid-template-columns:340px 1fr;gap:var(--space-4);min-height:500px}@media (max-width: 1000px){.plans-layout{grid-template-columns:1fr}}.plans-list-col{display:flex;flex-direction:column;gap:var(--space-3);max-height:calc(100vh - 280px);overflow-y:auto;padding-right:4px}.plans-canvas-col{display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;min-height:500px}.plan-card{gap:var(--space-2)}.plan-card-selected{border-color:var(--accent);box-shadow:var(--shadow-glow)}.plan-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.plan-card-title{font-weight:600;color:var(--text-strong);font-size:14px}.plan-card-slug,.plan-card-meta{font-size:11px;color:var(--text-dim)}.plan-card-actions{display:flex;gap:var(--space-2)}.plan-canvas{display:flex;flex-direction:column;flex:1;min-height:0}.plan-canvas-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-elev-2)}.plan-canvas-title{font-weight:600;font-size:14px;color:var(--text-strong)}.plan-canvas-meta{font-size:11px;color:var(--text-dim);margin-top:2px;font-family:var(--font-mono)}.plan-canvas-actions{display:flex;gap:var(--space-2)}.plan-canvas-area{flex:1;position:relative;overflow:hidden;background:var(--bg);min-height:360px}.canvas-root{position:relative;flex:1;min-height:0;cursor:grab;overflow:hidden}.canvas-grid-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,var(--border) 1px,transparent 1px);background-size:24px 24px;background-position:0 0;opacity:.5;pointer-events:none}.canvas-inner{position:absolute;top:0;left:0;transform-origin:0 0}.canvas-element{position:absolute;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);cursor:pointer;transition:border-color var(--motion-base) var(--ease),box-shadow var(--motion-base) var(--ease),transform var(--motion-fast) var(--ease);min-width:140px}.canvas-element:hover{border-color:var(--accent-border);transform:translateY(-1px);box-shadow:var(--shadow-2)}.canvas-element-selected{border-color:var(--accent);box-shadow:var(--shadow-glow)}.canvas-element-type{font-family:var(--font-mono);font-size:10px;color:var(--accent-2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.canvas-element-title{font-weight:600;font-size:13px;color:var(--text-strong);margin-bottom:4px}.canvas-element-content{font-size:11px;color:var(--text-dim);line-height:1.5;white-space:pre-wrap;word-break:break-word}.canvas-connections{position:absolute;pointer-events:none;overflow:visible}.canvas-hint{position:absolute;bottom:var(--space-3);right:var(--space-3);font-size:11px;color:var(--text-dim);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:4px 8px;pointer-events:none}.plan-canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-dim);text-align:center;padding:var(--space-6)}.plan-canvas-comments{border-top:1px solid var(--border);padding:var(--space-3) var(--space-4);background:var(--bg-elev-2);max-height:220px;overflow-y:auto}.plan-canvas-comments-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text);margin:0 0 var(--space-2)}.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.comment-item{padding:var(--space-2) var(--space-3);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius)}.comment-head{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:4px}.comment-author{font-size:11px;font-weight:600;color:var(--accent-2)}.comment-time{font-size:11px}.comment-text{font-size:12px;color:var(--text);line-height:1.5}.comment-thread{margin-top:var(--space-2);padding-left:var(--space-3);border-left:2px solid var(--border);display:flex;flex-direction:column;gap:4px}.comment-reply{display:flex;gap:var(--space-2);font-size:11px;align-items:baseline}.comment-reply-text{color:var(--text-dim)}.agent-card-head{flex-wrap:wrap;gap:var(--space-2)}.agent-card-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.agent-card-name{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--text-strong);font-size:14px;min-width:0}.agent-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.agent-card-category{font-size:10px;padding:1px 7px;border-radius:999px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-family:var(--font-mono)}.agent-card-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.agent-card-tag{font-size:10px;padding:1px 6px;background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text-dim);border-radius:999px}.agent-card-activity{display:flex;flex-direction:column;gap:2px;margin-top:6px;padding:6px 8px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);font-size:11px}.agent-card-row{display:inline-flex;align-items:center;gap:6px;font-size:11px}.agent-card-row code{font-size:10px;background:var(--bg);padding:1px 4px;border-radius:3px;border:1px solid var(--border)}.agent-card-error{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:11px;color:var(--error)}.agent-card-expanded{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.agent-card-status-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.agent-card-path{font-size:10px;background:var(--bg);padding:1px 4px;border-radius:3px;border:1px solid var(--border);overflow:hidden;text-overflow:ellipsis}.agent-tags-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--text-dim);font-size:11px;margin-top:-8px}.task-bulk-bar{display:flex;align-items:center;gap:var(--space-3);padding:8px 12px;background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:var(--radius);font-size:13px;flex-wrap:wrap}.task-bulk-bar-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.task-bulk-bar>.text-sm{display:inline-flex;align-items:center;gap:4px}.provider-active-card{margin-bottom:var(--space-4);position:relative;overflow:hidden}.provider-active-card:before{content:"";position:absolute;top:0;left:18px;right:18px;height:2px;border-radius:999px;background:var(--accent);pointer-events:none}.provider-active-body{display:flex;flex-direction:column;gap:4px;margin-top:var(--space-2)}.provider-active-name{font-weight:600;font-size:15px}.provider-active-model code{font-size:12px;background:var(--bg-elev-2);padding:1px 5px;border-radius:3px}.provider-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.provider-card{display:flex;flex-direction:column;gap:var(--space-2)}.provider-card-disabled{opacity:.6}.provider-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.provider-card-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.provider-card-name{display:flex;align-items:center;gap:6px;font-weight:600;font-size:14px}.provider-card-url{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.provider-card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.provider-card-stats{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim)}.provider-models-section{display:flex;flex-direction:column;gap:4px}.provider-models-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:var(--accent);padding:0;font-size:12px;text-align:left}.provider-models-toggle:hover{text-decoration:underline}.provider-models-list{list-style:none;margin:0;display:flex;flex-direction:column;gap:3px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px}.provider-model-item{font-size:11px;color:var(--text-dim)}.provider-model-item code{font-size:11px;color:var(--text)}.provider-card-footer{display:flex;align-items:center;gap:4px;margin-top:auto;padding-top:var(--space-2);border-top:1px solid var(--border)}.skills-categories{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.skill-category{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text-dim);border-radius:999px;font-size:12px;cursor:pointer;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease);font-family:inherit}.skill-category:hover{background:var(--bg-elev-3);color:var(--text)}.skill-category-active{background:var(--accent-bg);color:var(--accent-2);border-color:var(--accent-border)}.skill-category-count{margin-left:auto;font-size:10px;padding:1px 5px;background:var(--bg-elev-3);border-radius:999px;color:var(--text-muted)}.skills-section{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.skills-section-title{display:inline-flex;align-items:center;gap:6px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin:0;font-weight:600}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-3)}.skill-card{display:flex;flex-direction:column;gap:6px}.skill-card-disabled{opacity:.55}.skill-card-skeleton{height:160px;background:linear-gradient(90deg,var(--bg-elev-2),var(--bg-elev-3),var(--bg-elev-2));background-size:200% 100%;animation:skeleton-pulse 1.4s linear infinite;border-radius:var(--radius-lg);border:1px solid var(--border)}@keyframes skeleton-pulse{0%{background-position:100% 0}to{background-position:-100% 0}}.skill-card-head{display:flex;align-items:center;gap:var(--space-2);min-width:0}.skill-card-icon{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius);flex-shrink:0;color:var(--accent-2)}.skill-card-title-area{flex:1;min-width:0}.skill-card-title{font-weight:600;color:var(--text-strong);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-card-source{font-size:10px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-card-desc{font-size:12px;color:var(--text);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:3em}.skill-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px;color:var(--text-dim)}.skill-card-tag{font-size:10px;padding:1px 6px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;color:var(--text-dim)}.skill-card-actions{display:flex;gap:4px;flex-wrap:wrap;margin-top:auto}.skill-detail{display:flex;flex-direction:column;gap:var(--space-2)}.skill-detail-source{font-size:11px}.skill-detail-desc{font-size:13px;line-height:1.5;color:var(--text)}.skill-detail-meta{display:flex;flex-direction:column;gap:4px;font-size:12px}.skill-detail-tags{display:flex;flex-wrap:wrap;gap:4px}.skill-detail-cmd{font-size:11px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;white-space:pre-wrap;word-break:break-all;margin:0;color:var(--accent-2)}.stuck-banner{display:flex;align-items:center;gap:var(--space-3);padding:8px 16px;background:color-mix(in srgb,var(--error) 15%,var(--bg-elev));border-bottom:1px solid var(--error);color:var(--text);font-size:13px;flex-shrink:0}.stuck-banner .icon-btn{margin-left:auto}.stuck-banner>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.55}}.is-working{animation:pulse-soft 1.6s var(--ease) infinite;position:relative}.is-working:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;border:1px solid var(--info);pointer-events:none;animation:pulse-soft 1.6s var(--ease) infinite}.is-stuck{position:relative}.is-stuck:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;border:1px solid var(--error);pointer-events:none}.plans-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.plans-editor-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:10px 16px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-elev) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-shrink:0;min-width:0}.plans-editor-bar-left,.plans-editor-bar-right{display:flex;align-items:center;gap:var(--space-2);min-width:0}.plans-editor-bar-right{flex-shrink:0}.plans-editor-meta{display:flex;align-items:center;gap:var(--space-2);min-width:0}.plans-editor-title{font-weight:600;font-size:14px;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:360px}.plans-editor-slug{font-size:11px;color:var(--text-dim)}.plans-body{flex:1;min-height:0;display:grid;grid-template-columns:1fr 320px;min-width:0}.plans-body:has(.plans-comments-panel-closed),.plans-body:not(:has(.plans-comments-panel)){grid-template-columns:1fr}@media (max-width: 1000px){.plans-body{grid-template-columns:1fr}}.plans-canvas-wrap{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;position:relative;height:100%}.canvas-toolbar{display:flex;align-items:center;gap:6px;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--bg-elev-2);font-size:11px;flex-shrink:0}.canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.canvas-element-head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:-12px -12px 8px;padding:6px 10px;border-bottom:1px solid var(--border);border-radius:8px 8px 0 0}.canvas-element-type{display:inline-flex;align-items:center;gap:4px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;color:var(--text-dim);margin:0}.canvas-element-type span{color:inherit}.canvas-element-actions{display:inline-flex;align-items:center;gap:4px}.canvas-element-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 5px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;font-size:10px;color:var(--text-dim);font-family:var(--font-mono)}.canvas-element-handle{border:0;background:transparent;color:var(--text-dim);cursor:grab;font-size:10px;padding:2px 4px;border-radius:3px;line-height:1}.canvas-element-handle:hover{background:var(--bg-elev-2);color:var(--text)}.canvas-element-handle:active{cursor:grabbing}.canvas-element-status{margin-top:6px;font-size:10px}.canvas-connection{cursor:pointer;pointer-events:all}.canvas-connection:hover line{stroke:var(--error);stroke-width:2}.canvas-connection-label{font-family:var(--font-mono);font-size:10px;fill:var(--accent-2);paint-order:stroke;stroke:var(--bg);stroke-width:3;pointer-events:all}.plans-comments-panel{display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--bg-elev);min-height:0;min-width:0}.plans-comments-panel-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.plans-comments-panel-head .card-title{margin:0;display:flex;align-items:center;gap:6px}.plans-comments-panel-list{flex:1;overflow-y:auto;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3);min-height:0}.plans-comments-panel-form{display:flex;flex-direction:column;gap:6px;padding:var(--space-3);border-top:1px solid var(--border);background:var(--bg-elev-2);flex-shrink:0}.plans-comments-panel-form .textarea{min-height:60px;resize:vertical}.plans-comments-panel-form .btn{align-self:flex-end}.plan-comment{padding:8px 10px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius)}.plan-comment-head{display:flex;align-items:center;gap:6px;margin-bottom:4px}.plan-comment-author{font-size:11px;font-weight:600;color:var(--accent-2)}.plan-comment-time{font-size:10px}.plan-comment-head .icon-btn{margin-left:auto;width:22px;height:22px}.plan-comment-text{font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.plan-config-form,.plan-element-form{display:flex;flex-direction:column;gap:6px}.view-plans-embedded{position:static;inset:auto;z-index:auto;background:transparent;border:1px solid var(--border);border-radius:var(--radius-lg);margin:var(--space-4)}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}@media (max-width: 900px){.project-grid{grid-template-columns:1fr}}.project-card{gap:var(--space-2)}.project-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.project-card-path{font-size:11px;color:var(--text-dim);word-break:break-all}.project-card-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.search-input{position:relative;display:inline-flex;align-items:center}.search-input>svg{position:absolute;left:10px;color:var(--text-dim)}.search-input .input{padding-left:32px;width:220px}.search-input>.icon-btn{position:absolute;right:4px;width:20px;height:20px}.kanban{display:grid;grid-template-columns:repeat(4,minmax(260px,1fr));gap:var(--space-4);align-items:start;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x proximity}.kanban-column{scroll-snap-align:start;min-width:260px}@media (max-width: 1100px){.kanban{grid-template-columns:repeat(4,280px)}}@media (max-width: 700px){.kanban{grid-template-columns:280px}}.kanban-column{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;max-height:calc(100vh - 240px);transition:border-color var(--motion-base) var(--ease),background var(--motion-base) var(--ease)}.kanban-column-drop{border-color:var(--accent);background:var(--accent-bg)}.kanban-col-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-shrink:0}.kanban-col-count{font-size:11px;color:var(--text-dim);background:var(--bg);padding:2px 8px;border-radius:999px;border:1px solid var(--border);font-family:var(--font-mono)}.kanban-col-body{flex:1;overflow-y:auto;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);min-height:120px}.kanban-empty{text-align:center;color:var(--text-dim);font-size:12px;padding:var(--space-5) 0}.kanban-col-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--border);flex-shrink:0}.task-card{--accent-rule: transparent;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);cursor:pointer;position:relative;overflow:hidden;transition:border-color var(--motion-base) var(--ease),box-shadow var(--motion-base) var(--ease),transform var(--motion-fast) var(--ease),background var(--motion-base) var(--ease)}.task-card:before{content:"";position:absolute;top:0;left:12px;right:12px;height:2px;border-radius:999px;background:var(--accent-rule);pointer-events:none}.task-card:hover{border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-2)}.task-card-focused{outline:2px solid var(--accent);outline-offset:-2px}.task-card-checkbox{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:2px;cursor:pointer;color:var(--text-dim);border-radius:3px;flex-shrink:0;transition:color var(--motion-fast) var(--ease)}.task-card-checkbox:hover,.task-card-checkbox-on{color:var(--accent)}.task-card.priority-high{--accent-rule: var(--error)}.task-card.priority-low{--accent-rule: var(--text-dim)}.task-card.priority-normal{--accent-rule: var(--info)}.task-card-head{display:flex;align-items:flex-start;gap:var(--space-2);margin-bottom:6px}.priority-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:6px}.task-card-title{font-weight:600;font-size:13px;color:var(--text-strong);flex:1;word-break:break-word;line-height:1.4}.task-card-desc{font-size:12px;color:var(--text-dim);line-height:1.5;margin-bottom:var(--space-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-card-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:var(--space-2)}.task-card-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.task-card-time{font-size:10px;font-family:var(--font-mono)}.task-card-actions{display:inline-flex;gap:2px}.task-form{display:flex;flex-direction:column;gap:var(--space-2)}.task-form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.task-form-field{display:flex;flex-direction:column;gap:var(--space-2)}@keyframes task-move{0%{background:var(--accent-bg)}to{background:transparent}}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}@media (max-width: 1000px){.config-grid{grid-template-columns:1fr}}.config-textarea{min-height:360px;font-family:var(--font-mono);font-size:12px;line-height:1.55;width:100%;white-space:pre}.config-textarea.invalid{border-color:var(--error)}.json-tree{font-family:var(--font-mono);font-size:12px;line-height:1.6;white-space:pre;overflow-x:auto;max-height:380px;overflow-y:auto;padding:var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.diff-card{gap:var(--space-2)}.diff-view{font-size:11px;line-height:1.5;max-height:300px;overflow-y:auto;padding:var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.diff-line{padding:0 var(--space-2);white-space:pre}.diff-line-removed{color:var(--error);background:var(--error-soft)}.diff-line-added{color:var(--success);background:var(--success-soft)}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.settings-subnav{display:flex;align-items:center;gap:4px;margin:0 0 var(--space-4);padding:4px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-elev-2) 70%,transparent);overflow-x:auto;scrollbar-width:thin;position:sticky;top:56px;z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.settings-subnav-button{display:inline-flex;align-items:center;height:28px;padding:0 12px;border:0;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--text-dim);font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.settings-subnav-button:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--text)}.settings-subnav-button-active{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.settings-subnav-button-active:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}.view-settings .view-subtitle{color:var(--text)}.view-settings .field-label{color:var(--text);font-weight:500}.view-settings .field-help{color:var(--text-muted)}.view-settings .card-title{color:var(--text-strong);font-weight:600}.view-settings .settings-subnav-button{color:var(--text-muted)}.view-settings .settings-subnav-button:hover{color:var(--text)}.view-settings .settings-subnav-button-active{color:var(--accent-2)}.view-settings .settings-section-wrap>h2,.view-settings .settings-section-wrap>h3{color:var(--text-strong);font-weight:600}.settings-grid[data-active-section]>[data-section]:not([data-section=""]){display:none}.settings-grid[data-active-section=theme]>[data-section=theme]{display:block}.settings-grid[data-active-section=layout]>[data-section=layout]{display:block}.settings-grid[data-active-section=general]>[data-section=general]{display:block}.settings-grid[data-active-section=service]>[data-section=service]{display:block}.settings-grid[data-active-section=tailscale]>[data-section=tailscale]{display:block}.settings-grid[data-active-section=notifications]>[data-section=notifications]{display:block}.settings-grid[data-active-section=auth]>[data-section=auth]{display:block}.settings-grid[data-active-section=agents]>[data-section=agents]{display:block}.settings-grid[data-active-section=dashboard]>[data-section=dashboard]{display:block}.settings-grid[data-active-section=background]>[data-section=background]{display:block}.settings-grid[data-active-section=updates]>[data-section=updates]{display:block}.settings-grid[data-active-section=activity-log]>[data-section=activity-log]{display:block}.settings-grid[data-active-section=about]>[data-section=about]{display:block}.settings-grid[data-active-section=diagnostics]>[data-section=diagnostics]{display:block}.settings-filter-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);grid-column:1 / -1;margin:0 0 var(--space-3);padding:10px 14px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 8%,var(--bg-elev-2));font-size:12px;color:var(--text)}.settings-filter-clear{display:inline-flex;align-items:center;height:24px;padding:0 10px;border:0;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--accent);font-size:12px;font-weight:500;cursor:pointer;transition:background var(--motion-fast) var(--ease)}.settings-filter-clear:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}.settings-subnav-button-all{font-weight:600;border-right:1px solid var(--border);border-radius:calc(var(--radius) - 2px) 0 0 calc(var(--radius) - 2px)}.settings-section-wrap,[id^=settings-]{scroll-margin-top:100px}@media (max-width: 900px){.settings-grid{grid-template-columns:1fr}}.theme-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.theme-card{flex:1;min-width:100px;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:var(--text-dim);transition:border-color var(--motion-base) var(--ease),background var(--motion-base) var(--ease),color var(--motion-base) var(--ease)}.theme-card:hover{border-color:var(--border-strong);color:var(--text)}.theme-card-active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-2)}.theme-card-label{font-size:12px;font-weight:500}.theme-card-swatch{width:100%;height:24px;border-radius:var(--radius-sm);border:1px solid var(--border)}.theme-card-swatch-dark{background:linear-gradient(135deg,#0b0e14,#1a1f2b)}.theme-card-swatch-light{background:linear-gradient(135deg,#f7f8fa,#e6ebf2)}.theme-card-swatch-system{background:linear-gradient(135deg,#0b0e14,#0b0e14 50%,#f7f8fa 50%,#f7f8fa)}.theme-presets{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.theme-preset{display:flex;flex-direction:column;align-items:center;gap:4px;padding:var(--space-2) var(--space-3);border:1.5px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);cursor:pointer;font-size:11px;color:var(--text-muted);transition:border-color var(--motion-fast),background var(--motion-fast)}.theme-preset:hover{border-color:var(--accent);background:var(--bg-elevated)}.theme-preset-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--bg-elevated));color:var(--accent)}.theme-preset-swatch{width:20px;height:20px;border-radius:50%;border:1.5px solid rgba(255,255,255,.15);display:block}.theme-preset-name{white-space:nowrap}.skills-categories-list{display:flex;flex-direction:column;gap:var(--space-3)}.skills-category{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.skills-category-summary{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--bg-elevated);cursor:pointer;font-weight:600;font-size:13px;color:var(--text);-webkit-user-select:none;user-select:none;list-style:none}.skills-category-summary::-webkit-details-marker{display:none}.skills-category-summary:before{content:"▶";font-size:9px;color:var(--text-muted);transition:transform var(--motion-fast);margin-right:var(--space-2)}details[open] .skills-category-summary:before{transform:rotate(90deg)}.skills-category-name{display:flex;align-items:center;gap:var(--space-2)}.skills-category .skills-grid{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border)}.icon-btn-active{background:color-mix(in srgb,var(--accent) 15%,var(--bg-elevated));color:var(--accent);border-color:var(--accent)}.toast-stack{position:fixed;bottom:var(--space-5);right:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000;pointer-events:none;max-width:420px}.toast{--accent-rule: var(--accent);display:inline-flex;align-items:center;gap:var(--space-2);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;box-shadow:var(--shadow-3);font-size:13px;pointer-events:auto;animation:toast-in var(--motion-slow) var(--ease);min-width:240px;color:var(--text);position:relative;overflow:hidden}.toast:before{content:"";position:absolute;top:0;left:12px;right:12px;height:2px;border-radius:999px;background:var(--accent-rule);pointer-events:none}.toast-icon{flex-shrink:0}.toast-message{flex:1;word-break:break-word}.toast-close{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:2px;display:inline-flex}.toast-close:hover{color:var(--text)}.toast-success{--accent-rule: var(--success)}.toast-success .toast-icon{color:var(--success)}.toast-error{--accent-rule: var(--error)}.toast-error .toast-icon{color:var(--error)}.toast-warning{--accent-rule: var(--warning)}.toast-warning .toast-icon{color:var(--warning)}.toast-info .toast-icon{color:var(--info)}@keyframes toast-in{0%{transform:translate(110%);opacity:0}to{transform:translate(0);opacity:1}}.modal-stack{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;pointer-events:none}.modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:var(--space-4);pointer-events:auto;animation:fade-in var(--motion-base) var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(560px,100%);max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--shadow-3);animation:modal-in var(--motion-slow) var(--ease);overflow:hidden}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.modal-title{font-size:16px;font-weight:600;margin:0;color:var(--text-strong)}.modal-body{flex:1;overflow-y:auto;padding:var(--space-5);font-size:13px;line-height:1.55}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--border);background:var(--bg-elev-2)}.modal-footer-actions{display:flex;gap:var(--space-2);justify-content:flex-end;width:100%}.file-browser{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-elev);font-size:13px;outline:none}.file-browser-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--bg-elev-2);min-height:36px}.file-browser-breadcrumb-item{display:inline-flex;align-items:center;gap:2px}.file-browser-breadcrumb-sep{color:var(--text-dim);font-size:11px;margin:0 1px}.file-browser-breadcrumb-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px 4px;border-radius:var(--radius-sm);font-size:12px;font-family:inherit;transition:color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.file-browser-breadcrumb-btn:hover{color:var(--text);background:var(--bg-elev-3)}.file-browser-breadcrumb-btn:last-child{color:var(--text-strong);font-weight:500}.file-browser-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--bg)}.file-browser-toolbar-left{display:flex;align-items:center;gap:var(--space-1)}.file-browser-tool-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--radius-sm);background:transparent;color:var(--text-dim);border:1px solid transparent;cursor:pointer;transition:all var(--motion-fast) var(--ease)}.file-browser-tool-btn:hover:not(:disabled){background:var(--bg-elev-2);color:var(--text);border-color:var(--border)}.file-browser-tool-btn:disabled{opacity:.35;cursor:not-allowed}.file-browser-chips{display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-1)}.file-browser-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:20px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text-dim);font-size:11px;cursor:pointer;font-family:inherit;transition:all var(--motion-fast) var(--ease)}.file-browser-chip:hover{border-color:var(--accent-border);color:var(--accent-2);background:var(--accent-bg)}.file-browser-count-hint{font-size:11px;color:var(--text-dim);white-space:nowrap}.file-browser-mkdir{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.file-browser-mkdir-input{background:var(--bg);color:var(--text);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:2px 6px;font-size:12px;height:24px;box-shadow:0 0 0 2px var(--accent-bg);width:100%;font-family:var(--font-sans)}.file-browser-mkdir-input:focus{outline:none;border-color:var(--accent)}.file-browser-mkdir-input:disabled{opacity:.5}.file-browser-mkdir-error{font-size:10px;color:var(--error);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-browser-mkdir-hint{font-size:10px;color:var(--text-dim);white-space:nowrap}.file-browser-truncated-banner{padding:6px 12px;font-size:11px;color:var(--warning);background:var(--warning-soft);border-bottom:1px solid rgba(251,191,36,.2);line-height:1.4}.file-browser-error{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#ef444414;border-bottom:1px solid rgba(239,68,68,.2);color:var(--error);font-size:12px}.file-browser-retry{margin-left:auto;background:none;border:1px solid var(--error);border-radius:var(--radius-sm);color:var(--error);cursor:pointer;font-size:11px;padding:1px 6px;font-family:inherit;transition:all var(--motion-fast) var(--ease)}.file-browser-retry:hover{background:#ef44441f}.file-browser-body{display:grid;grid-template-columns:40% 60%;overflow:hidden}.file-browser-pane{overflow-y:auto;overflow-x:hidden}.file-browser-tree{border-right:1px solid var(--border);background:var(--bg)}.file-browser-flat{background:var(--bg-elev)}.file-browser-tree-list{list-style:none;margin:0;padding:0}.file-browser-tree-row{display:flex;align-items:center;gap:2px;padding-right:var(--space-2);min-height:28px;cursor:default}.file-browser-tree-row:hover{background:var(--bg-elev-2)}.file-browser-tree-toggle{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0;background:none;border:none;color:var(--text-dim);cursor:pointer;padding:0;border-radius:var(--radius-sm);transition:color var(--motion-fast) var(--ease)}.file-browser-tree-toggle:hover{color:var(--text)}.file-browser-tree-name{display:inline-flex;align-items:center;gap:5px;background:none;border:none;color:var(--text);font-size:12px;font-family:inherit;cursor:pointer;padding:2px 4px;border-radius:var(--radius-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--motion-fast) var(--ease);flex:1}.file-browser-tree-name:hover{color:var(--accent-2)}.file-browser-flat-header{display:grid;grid-template-columns:1fr auto;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--border);background:var(--bg-elev-2);font-size:11px;font-weight:500;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;z-index:1}.file-browser-flat-header span:last-child{color:var(--text-dim)}.file-browser-flat-list{display:flex;flex-direction:column}.file-browser-row{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:var(--space-2);padding:5px var(--space-3);cursor:default;min-height:30px;transition:background var(--motion-fast) var(--ease);color:var(--text)}.file-browser-row:hover:not(.file-browser-row--disabled){background:var(--bg-elev-2)}.file-browser-row--selected{background:var(--accent-bg);outline:1px solid var(--accent-border)}.file-browser-row--active{background:var(--accent-bg)}.file-browser-row--file{opacity:.45}.file-browser-row--disabled{cursor:not-allowed}.file-browser-row-icon{display:inline-flex;align-items:center;color:var(--text-dim);flex-shrink:0}.file-browser-row--dir .file-browser-row-icon{color:var(--accent-2)}.file-browser-row-name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-browser-row-type{font-size:11px;color:var(--text-dim);white-space:nowrap}.file-browser-empty{display:flex;align-items:center;justify-content:center;height:120px;color:var(--text-dim);font-size:13px;font-style:italic}.file-browser-footer-hint{padding:var(--space-2) var(--space-3);border-top:1px solid var(--border);background:var(--bg-elev-2);font-size:11px;color:var(--text-dim)}.file-browser-footer-hint kbd{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 3px;border:1px solid var(--border-strong);border-radius:3px;font-size:10px;font-family:var(--font-mono);background:var(--bg-elev-3);color:var(--text-dim)}.file-browser-skeleton-wrap{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3)}.file-browser-skeleton-row{height:14px;border-radius:var(--radius-sm);background:var(--bg-elev-2);animation:skeleton-pulse 1.4s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:.5}50%{opacity:1}}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.code-block{background:var(--bg);padding:var(--space-3);border-radius:var(--radius);border:1px solid var(--border);font-size:12px;margin:var(--space-2) 0 0;overflow-x:auto}kbd{display:inline-flex;align-items:center;padding:1px 6px;border-radius:var(--radius-sm);background:var(--bg-elev-2);border:1px solid var(--border);border-bottom-width:2px;font-family:var(--font-mono);font-size:10px;color:var(--text-dim)}@media (max-width: 800px){.topbar{padding:0 var(--space-3);gap:var(--space-3)}.brand-version,.tab-label{display:none}.content{padding:var(--space-4)}.ws-status .ws-label{display:none}}.canvas-context-menu{position:fixed;min-width:180px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-3);z-index:1000;padding:4px;display:flex;flex-direction:column;animation:fade-in var(--motion-fast) var(--ease)}.canvas-context-menu-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:none;background:transparent;color:var(--text);font-size:13px;cursor:pointer;text-align:left;border-radius:var(--radius-sm);width:100%;font-family:inherit;transition:background var(--motion-fast) var(--ease)}.canvas-context-menu-item:hover{background:var(--bg-elev-2)}.canvas-context-menu-item:disabled{opacity:.5;cursor:not-allowed}.canvas-context-menu-sep{height:1px;background:var(--border);margin:4px 0}.plan-canvas-wrapper{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;width:100%;height:100%;overflow:hidden}.plan-canvas-floating-controls{position:absolute;top:16px;left:16px;right:16px;display:flex;gap:8px;align-items:center;padding:8px 14px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);z-index:10;flex-wrap:wrap}.plan-canvas-floating-controls h3{margin:0;font-size:14px;font-weight:600;color:var(--text-strong);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand-logo{color:var(--accent);font-size:22px;line-height:1;display:inline-flex;align-items:center;justify-content:center;filter:drop-shadow(0 0 12px var(--accent-border));transition:filter var(--motion-base) var(--ease)}.project-selector{position:relative}.project-selector-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);border-radius:6px;font-size:13px;cursor:pointer;transition:background var(--motion-fast) var(--ease);max-width:200px}.project-selector-btn:hover{background:var(--bg-elev-3)}.project-selector-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.project-selector-menu{position:absolute;top:calc(100% + 4px);left:0;min-width:280px;background:var(--bg-elev-2);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow-2);z-index:100;padding:4px}.project-selector-menu-head{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.project-selector-list{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto}.project-selector-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:6px;border:0;width:100%;background:transparent;color:inherit;text-align:left;cursor:pointer;font-size:13px}.project-selector-item:hover{background:var(--bg-elev-3)}.project-selector-item.active{background:var(--accent-bg);color:var(--accent-2)}.project-selector-item-status{font-size:10px;text-transform:uppercase;color:var(--text-dim)}.project-selector-empty{padding:8px 10px;font-size:12px}.topbar-search{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px;color:var(--text-dim);font-size:13px;cursor:pointer;min-width:180px;transition:background var(--motion-fast) var(--ease)}.topbar-search:hover{background:var(--bg-elev-3)}.topbar-search span{flex:1;text-align:left}.topbar-search kbd{font-family:var(--font-mono);font-size:10px;padding:1px 5px;background:var(--bg-elev-3);border:1px solid var(--border);border-radius:3px}.search-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-bg);display:flex;align-items:flex-start;justify-content:center;z-index:200;padding-top:12vh}.search-modal{width:640px;max-width:90vw;max-height:70vh;background:var(--bg-elev-2);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-3);display:flex;flex-direction:column;overflow:hidden}.search-modal-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border)}.search-modal-input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-size:15px}.search-modal-scopes{display:flex;gap:4px;padding:6px 12px;border-bottom:1px solid var(--border)}.search-scope{padding:3px 8px;background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;color:var(--text-dim);font-size:11px;cursor:pointer}.search-scope-active{background:var(--accent-bg);color:var(--accent-2);border-color:var(--accent-border)}.search-modal-body{flex:1;overflow-y:auto;padding:8px 0}.search-group{margin-bottom:8px}.search-group-head{padding:4px 16px;font-size:10px;text-transform:uppercase;color:var(--text-dim);letter-spacing:.05em}.search-result{display:flex;align-items:center;gap:12px;width:100%;padding:6px 16px;background:transparent;border:none;text-align:left;color:var(--text);cursor:pointer}.search-result:hover,.search-result-active{background:var(--bg-elev-3)}.search-result-type{font-size:10px;padding:1px 5px;background:var(--accent-bg);color:var(--accent-2);border-radius:3px;text-transform:uppercase}.search-result-label{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-modal-foot{padding:6px 16px;font-size:11px;border-top:1px solid var(--border)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.project-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:14px;display:flex;flex-direction:column;gap:8px;transition:border-color var(--motion-fast) var(--ease)}.project-card:hover{border-color:var(--border-strong)}.project-card-active{border-color:var(--accent);box-shadow:var(--shadow-glow)}.project-card-head{display:flex;align-items:center;gap:8px}.project-card-name{font-weight:600;flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis}.project-card-status{font-size:9px;padding:1px 5px;border-radius:3px;text-transform:uppercase;letter-spacing:.05em}.status-on{background:var(--success-soft);color:var(--success)}.status-neutral{background:var(--bg-elev-2);color:var(--text-dim)}.status-error{background:var(--error-soft);color:var(--error)}.project-card-path{font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card-meta{font-size:11px;color:var(--text-dim)}.project-card-actions{display:flex;gap:4px;margin-top:auto}.project-picker{margin-bottom:var(--space-4)}.mod-mini-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.mod-mini{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:4px 0;font-size:12px}.mod-mini-name{font-family:var(--font-mono);color:var(--text)}.mod-mini-meta{color:var(--text-dim);font-size:11px}.autodetect-banner{padding:0;margin-bottom:var(--space-3);overflow:hidden}.autodetect-head{display:flex;align-items:center;gap:var(--space-2);padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--motion-fast) var(--ease)}.autodetect-head:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.autodetect-title{font-weight:600;font-size:13px;color:var(--text-strong)}.autodetect-spacer{flex:1}.autodetect-body{padding:0 14px 14px;border-top:1px solid var(--border)}.autodetect-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}.autodetect-table thead{background:color-mix(in srgb,var(--bg-elev-3) 92%,var(--bg-elev-2))}.autodetect-table th{text-align:left;padding:6px 10px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);border-bottom:1px solid var(--border)}.autodetect-table td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent);vertical-align:middle}.autodetect-table tbody tr:last-child td{border-bottom:0}.autodetect-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.autodetect-status{font-family:var(--font-mono, ui-monospace, monospace);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.mods-registry-card{padding:0;overflow:hidden}.mods-registry-head{display:flex;align-items:center;gap:var(--space-2);padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--motion-fast) var(--ease)}.mods-registry-head:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.mods-registry-title{font-weight:600;font-size:13px;color:var(--text-strong)}.mods-registry-spacer{flex:1}.mods-registry-body{padding:0 16px 16px;border-top:1px solid var(--border)}.mods-registry-error{display:flex;align-items:center;gap:6px;padding:12px;font-size:12px;color:var(--error);background:color-mix(in srgb,var(--error) 8%,transparent);border-radius:var(--radius);margin-top:12px}.mods-registry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-3);margin-top:12px}.mod-registry-card{display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-elev-2) 60%,transparent);transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.mod-registry-card:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--border));background:var(--bg-elev-2)}.mod-registry-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.mod-registry-card-name{font-size:13px;font-weight:600;color:var(--text-strong)}.mod-registry-version{font-family:var(--font-mono, ui-monospace, monospace);font-size:10px;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);padding:1px 6px;border-radius:4px}.mod-registry-version-upgrade{background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning)}.mod-registry-card-desc{font-size:12px;color:var(--text-dim);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mod-registry-card-meta{display:flex;align-items:center;gap:8px;font-size:11px}.mod-registry-link{color:var(--accent);text-decoration:none}.mod-registry-link:hover{text-decoration:underline}.mod-registry-perms{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:10px;color:var(--text-dim);margin-top:4px}.mod-registry-perm{padding:1px 5px;border-radius:3px;background:color-mix(in srgb,var(--text-dim) 12%,transparent);font-family:var(--font-mono, ui-monospace, monospace)}.mod-registry-perm-more{font-size:10px;color:var(--text-dim)}.mod-registry-card-actions{margin-top:auto;display:flex;justify-content:flex-end;padding-top:6px}.mod-mini-pill{font-size:9px;padding:1px 5px;border-radius:3px;text-transform:uppercase}.mod-mini-pill-on{background:var(--success-soft);color:var(--success)}.mod-mini-pill-off{background:var(--bg-elev-2);color:var(--text-dim)}.mods-layout{display:grid;grid-template-columns:360px 1fr;gap:var(--space-4)}.mods-list{display:flex;flex-direction:column;gap:8px;max-height:70vh;overflow-y:auto}.mod-list-item{padding:12px;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:border-color var(--motion-fast) var(--ease)}.mod-list-item:hover{border-color:var(--border-strong)}.mod-list-item-active{border-color:var(--accent)}.mod-list-item-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:6px}.mod-list-item-name{font-weight:600;font-size:14px}.mod-list-item-meta{font-size:11px;color:var(--text-dim)}.mod-list-item-desc{font-size:12px;color:var(--text-dim);margin-bottom:6px}.mod-list-item-status{font-size:11px}.ellipsis-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mod-files{margin-top:var(--space-3)}.mod-files ul{list-style:none;padding:0;margin:0;font-size:12px}.mod-files li{display:flex;gap:8px;padding:2px 0}.mod-file-cat{font-size:10px;text-transform:uppercase;color:var(--text-dim);min-width:64px}.mod-instructions{margin-top:var(--space-3);border-top:1px solid var(--border-soft, rgba(255,255,255,.06));padding-top:var(--space-2)}.mod-instructions-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.mod-instructions-head:hover{color:var(--accent)}.mod-instructions-spacer{flex:1}.mod-instructions-body{margin-top:var(--space-2);padding:var(--space-2);background:#ffffff05;border-radius:6px;border:1px solid var(--border-soft, rgba(255,255,255,.04))}.mod-instructions-section{margin-bottom:var(--space-2)}.mod-instructions-section:last-child{margin-bottom:0}.mod-instructions-section-title{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-dim, rgba(255,255,255,.5));letter-spacing:.04em;margin-bottom:6px}.mod-instructions-file{margin-bottom:4px}.mod-instructions-file-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:4px 8px;background:#ffffff08;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.mod-instructions-file-head:hover{background:#ffffff0f}.mod-instructions-content{margin:4px 0 8px;padding:8px;font-size:11px;font-family:var(--font-mono, ui-monospace, monospace);background:#0000004d;border:1px solid var(--border-soft, rgba(255,255,255,.05));border-radius:4px;max-height:240px;overflow:auto;white-space:pre-wrap;word-break:break-word}.mod-instructions-actions{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px dashed var(--border-soft, rgba(255,255,255,.05));display:flex;justify-content:flex-end}.mod-view-iframe-pane{display:flex;flex-direction:column;height:100%;width:100%;min-height:0}.mod-view-iframe-header{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border-soft, rgba(255,255,255,.06));background:var(--bg-elev-1, rgba(255,255,255,.02));font-size:12px;font-weight:500}.mod-view-iframe-label{display:flex;align-items:center;gap:8px}.mod-view-iframe-actions{margin-left:auto;display:flex;gap:4px}.mod-view-iframe{flex:1;width:100%;border:0;background:#fff}.mod-views-hint{border-left:2px solid var(--accent, #6366f1)}.tab-separator{display:inline-block;width:1px;height:18px;background:var(--border-soft, rgba(255,255,255,.12));margin:0 6px;align-self:center}.tab-badge{display:inline-block;font-size:9px;text-transform:uppercase;letter-spacing:.06em;padding:1px 5px;border-radius:8px;background:#6366f12e;color:var(--accent, #6366f1);margin-left:6px;font-weight:600}.sidebar-section-divider{height:1px;background:var(--border-soft, rgba(255,255,255,.06));margin:12px 8px 4px}.sidebar-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim, rgba(255,255,255,.5));padding:4px 12px;margin-bottom:2px;font-weight:600}.sidebar-tab-mod .sidebar-tab-label:after{content:"";display:inline-block;width:4px;height:4px;margin-left:6px;border-radius:50%;background:var(--accent, #6366f1);vertical-align:middle}.schedule-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-3)}.schedule-card-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.schedule-card-name{font-weight:600;font-size:14px}.schedule-card-meta{font-size:11px;color:var(--text-dim)}.schedule-card-action{font-size:12px;margin:8px 0}.schedule-card-times{display:flex;justify-content:space-between;font-size:12px;margin-bottom:6px}.schedule-card-history summary{cursor:pointer;font-size:11px;color:var(--text-dim);display:inline-flex;align-items:center;gap:4px}.schedule-card-history ul{list-style:none;padding:0;margin:6px 0 0;font-size:12px}.schedule-card-history li{padding:2px 0;border-bottom:1px solid var(--border)}.schedule-form .task-form-row{margin-top:12px}.tag{font-size:10px;padding:1px 5px;border-radius:3px;background:var(--bg-elev-2);color:var(--text-dim);display:inline-block;margin-right:4px}.tag-success{background:var(--success-soft);color:var(--success)}.tag-error{background:var(--error-soft);color:var(--error)}.tag-neutral{background:var(--bg-elev-2);color:var(--text-dim)}.color-row{display:flex;gap:6px;align-items:center}.color-input{padding:0;width:36px;height:28px}.theme-colors{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin:var(--space-3) 0}.layout-row{display:flex;gap:6px}.layout-card{flex:1;padding:10px;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;cursor:pointer;text-align:center;font-size:12px}.layout-card-active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-2)}.config-advanced{margin-top:0;overflow:hidden}.config-advanced-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;background:transparent;border:none;color:var(--text);font-size:14px;font-weight:600;cursor:pointer;padding:14px 20px;text-align:left;font-family:inherit;transition:background var(--motion-fast) var(--ease)}.config-advanced-head:hover{background:var(--bg-elev-2)}.config-advanced-head-left{display:flex;align-items:center;gap:var(--space-3);min-width:0}.config-advanced-head-title{font-weight:600;font-size:14px}.config-advanced-head-desc{font-weight:400;font-size:12px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.config-advanced-body{border-top:1px solid var(--border);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.config-advanced-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:0;flex-wrap:wrap}.config-advanced-tabs .tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:transparent;border:1px solid transparent;border-bottom:2px solid transparent;color:var(--text-dim);cursor:pointer;font-size:13px;font-family:inherit;border-radius:var(--radius) var(--radius) 0 0;transition:color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease);white-space:nowrap}.config-advanced-tabs .tab:hover{color:var(--text);background:var(--bg-elev-2)}.config-advanced-tabs .tab-active{color:var(--accent-2);background:var(--accent-bg);border-bottom-color:var(--accent)}.config-advanced-panel{padding:var(--space-4) 0;min-height:320px}.diagnostics-card{margin-bottom:var(--space-3)}.diagnostics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:var(--space-3)}.diagnostic-tile{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px;padding:8px 10px}.diagnostic-tile-label{font-size:10px;color:var(--text-dim);text-transform:uppercase}.diagnostic-tile-value{font-size:14px;margin-top:2px}.diagnostic-counts{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-dim);margin-bottom:var(--space-3)}.diagnostic-errors ul{list-style:none;margin:0;font-size:11px;max-height:200px;overflow-y:auto;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:8px}.diagnostic-errors li{padding:2px 0}.link-btn{background:transparent;border:none;color:var(--accent-2);cursor:pointer;padding:0}.provider-row,.mcp-row{padding:var(--space-3)}.provider-row-head,.mcp-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.provider-name,.mcp-name{font-weight:600}.provider-id{font-size:11px;color:var(--text-dim)}.provider-meta{font-size:12px;display:flex;flex-direction:column;gap:4px}.debug-log{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:8px;font-size:11px;max-height:320px;overflow-y:auto}.task-card-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.task-card-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;padding:1px 5px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:3px;color:var(--text-dim)}.task-card-timer{border-left:3px solid var(--warning)}.task-card-timer-pill{display:inline-flex;align-items:center;gap:2px;font-size:10px;padding:1px 5px;background:var(--warning);color:var(--bg);border-radius:3px}.task-detail{display:flex;flex-direction:column;gap:var(--space-3)}.task-detail-meta{display:flex;gap:16px;font-size:12px;color:var(--text-dim);flex-wrap:wrap}.task-detail-row{display:flex;gap:6px;align-items:center;margin:6px 0}.task-detail-desc{font-size:13px;white-space:pre-wrap}.task-comments,.task-activity{list-style:none;margin:8px 0 0;padding:0;font-size:12px;max-height:200px;overflow-y:auto}.task-comments li,.task-activity li{padding:4px 0;border-bottom:1px solid var(--border)}.agent-form{display:flex;flex-direction:column;gap:4px}.agent-tools{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px 0}html[data-compact-mode=true]{--space-1: 2px;--space-2: 4px;--space-3: 8px;--space-4: 12px;--space-5: 16px;--space-6: 20px}html[data-compact-mode=true] .kanban-col-header{padding:4px}html[data-compact-mode=true] .task-card{padding:6px}html[data-animations=false] *{animation-duration:0s!important;transition-duration:0s!important}.app>.layout-body{display:flex;flex:1;min-height:0;min-width:0;overflow:hidden}.app[data-layout=topnav]>.layout-body{flex-direction:column}.app[data-layout=sidebar]>.layout-body,.app[data-layout=both]>.layout-body{flex-direction:row}.app>.layout-body>.content{flex:1;min-width:0;min-height:0;overflow:auto;padding:var(--space-6);position:relative}.sidebar{width:220px;flex-shrink:0;background:color-mix(in srgb,var(--bg-elev) 88%,transparent);border-right:1px solid var(--border);padding:var(--space-3) var(--space-2);overflow-y:auto;overscroll-behavior:contain}.sidebar-nav{display:flex;flex-direction:column;gap:2px;min-width:0}.sidebar-tab{display:flex;align-items:center;gap:var(--space-3);padding:9px 12px;border:1px solid transparent;background:transparent;color:var(--text-dim);border-radius:var(--radius);cursor:pointer;font-size:13px;font-weight:500;text-align:left;transition:background var(--motion-base) var(--ease),color var(--motion-base) var(--ease),border-color var(--motion-base) var(--ease),transform var(--motion-fast) var(--ease);width:100%;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:inherit}.sidebar-tab:hover{background:var(--bg-elev-2);color:var(--text)}.sidebar-tab:active{transform:scale(.99)}.sidebar-tab-active{background:var(--accent-bg);color:var(--accent-3);border-color:var(--accent-border)}.sidebar-tab-active:hover{background:var(--accent-bg);color:var(--accent-3)}.sidebar-tab-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}@media (max-width: 900px){.sidebar{position:fixed;top:56px;left:0;bottom:0;z-index:50;transform:translate(-100%);transition:transform var(--motion-base) var(--ease);box-shadow:var(--shadow-3)}.sidebar.open{transform:translate(0)}.app>.layout-body>.content{padding:var(--space-4)}}@media (max-width: 600px){.app>.layout-body>.content{padding:var(--space-3)}}.view-activity{display:flex;flex-direction:column;height:100%;min-height:0}.activity-layout{display:flex;flex:1;gap:var(--space-4);min-height:0}.activity-timeline-panel{flex:1;min-height:0;overflow-y:auto}.timeline-list{display:flex;flex-direction:column;gap:1px}.timeline-event{display:grid;grid-template-columns:160px 28px 1fr;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);font-size:13px}.timeline-event:hover{background:var(--bg-elevated)}.timeline-time{color:var(--text-muted);font-size:11px;font-family:var(--font-mono, monospace);white-space:nowrap}.timeline-icon{display:flex;align-items:center;justify-content:center}.timeline-message{color:var(--text)}.timeline-node{grid-column:3;font-size:11px;color:var(--text-muted);margin-top:2px}.activity-canvas{position:relative;flex:1;min-width:0;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.activity-canvas svg{display:block}.activity-zoom-controls{position:absolute;top:12px;right:12px;display:flex;gap:6px;align-items:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:4px 6px;box-shadow:var(--shadow-1)}.activity-legend{position:absolute;bottom:12px;left:12px;display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;font-size:11px;box-shadow:var(--shadow-1);max-width:70%}.activity-legend .legend-item{display:flex;align-items:center;gap:4px;color:var(--text-muted)}.activity-legend .legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.activity-legend .legend-sep{width:1px;height:12px;background:var(--border)}.activity-detail{width:360px;flex-shrink:0;overflow-y:auto}.activity-detail-meta{display:flex;flex-direction:column;gap:4px;font-size:12px;margin-bottom:var(--space-3)}.activity-detail-meta>div{display:flex;justify-content:space-between;gap:8px}.activity-detail-desc{font-size:12px;color:var(--text-muted);padding:8px;background:var(--bg);border-radius:var(--radius);margin-bottom:var(--space-3);white-space:pre-wrap;word-break:break-word}.activity-detail-create,.activity-detail-bg,.activity-detail-comments{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.bg-output{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:8px;font-family:var(--font-mono, monospace);font-size:11px;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-all;color:var(--text)}.bg-output-actions{display:flex;gap:6px}.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:260px;overflow-y:auto}.comment-item{padding:8px;background:var(--bg);border-radius:var(--radius);border:1px solid var(--border)}.comment-head{display:flex;justify-content:space-between;font-size:11px;margin-bottom:4px}.comment-text{font-size:13px;white-space:pre-wrap;word-break:break-word}.comment-input-row{display:flex;gap:6px}.comment-input-row .input{flex:1}@media (max-width: 900px){.activity-layout{flex-direction:column}.activity-detail{width:100%;max-height:400px}}.submit-task-form{display:flex;flex-direction:column;gap:var(--space-3)}.submit-task-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:500;color:var(--text)}.submit-task-form label>.field-hint{font-weight:400;font-size:11px;color:var(--text-muted)}.submit-task-form textarea{font-family:var(--font-sans);resize:vertical;min-height:80px}.agent-hierarchy{display:flex;flex-direction:column;gap:var(--space-3)}.agent-level-group{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3)}.agent-level-head{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-2)}.agent-level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-2)}.agent-card-mini{padding:10px 12px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:4px;position:relative}.agent-card-mini-name{font-weight:600;display:flex;align-items:center;gap:6px}.agent-card-mini-role{font-size:11px;color:var(--text-muted)}.agent-card-mini-status{display:inline-block;padding:1px 6px;border-radius:999px;font-size:10px;margin-top:2px;align-self:flex-start}button:focus-visible,[role=button]:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,.task-card:focus-visible,.plan-card:focus-visible,.agent-card-mini:focus-visible,.activity-canvas:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.btn,.icon-btn{transition:background-color .12s var(--ease),border-color .12s var(--ease),color .12s var(--ease),box-shadow .12s var(--ease)}.empty-state{padding:var(--space-6);text-align:center;color:var(--text-muted)}.empty-state h3{margin:var(--space-3) 0 var(--space-1);font-size:16px;color:var(--text)}.empty-state p{font-size:13px;max-width:480px;margin:0 auto var(--space-3)}.updates-current ul,.updates-latest ul{list-style:none;padding:0;margin:12px 0}.updates-current li,.updates-latest li{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border:1px solid var(--border);border-radius:6px;margin-bottom:4px;font-size:13px}.updates-current-version code{color:var(--success)}.updates-outdated{background:var(--accent-bg)}.updates-outdated code{color:var(--accent);font-weight:600}.updates-badge{display:inline-block;margin-left:8px;padding:2px 6px;background:var(--accent);color:#fff;font-size:10px;border-radius:4px;text-transform:uppercase}.updates-actions{display:flex;gap:8px;margin:16px 0}.updates-error{margin-top:12px;padding:10px 12px;background:var(--accent-bg);border:1px solid var(--error);border-radius:6px;color:var(--error);font-size:13px;display:flex;align-items:center;gap:8px}.updates-results{margin-top:16px;padding:12px;background:var(--surface-2);border-radius:6px}.updates-result.ok{color:var(--success)}.updates-result.err{color:var(--error)}.updates-progress-rows{margin:12px 0;display:flex;flex-direction:column;gap:6px}.updates-pkg-row{display:flex;flex-direction:column;padding:10px 12px;border:1px solid var(--border);border-radius:6px;gap:6px}.updates-pkg-row-header{display:flex;justify-content:space-between;align-items:center}.updates-pkg-name{font-size:13px;font-weight:500}.updates-pkg-status{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.updates-pkg-status .icon-success{color:var(--success)}.updates-pkg-status .icon-error{color:var(--error)}.updates-pkg-logs{font-size:11px;color:var(--text-muted);margin-top:4px}.updates-pkg-logs summary{cursor:pointer;padding:2px 0}.updates-pkg-logs pre{margin-top:6px;padding:8px;background:var(--surface-2);border-radius:4px;font-size:11px;max-height:160px;overflow:auto;white-space:pre-wrap;word-break:break-all;color:var(--text-muted)}.updates-pkg-error{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--error);margin-top:2px}.config-layout{display:grid;grid-template-columns:220px 1fr;gap:var(--space-5);align-items:start;min-height:0}@media (max-width: 900px){.config-layout{grid-template-columns:1fr}}.config-nav{display:flex;flex-direction:column;gap:2px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-2);position:sticky;top:0}.config-nav-item{display:flex;align-items:center;gap:var(--space-3);padding:9px 12px;background:transparent;border:1px solid transparent;color:var(--text-dim);border-radius:var(--radius);cursor:pointer;font-size:13px;font-weight:500;text-align:left;font-family:inherit;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease);width:100%}.config-nav-item:hover{background:var(--bg-elev-2);color:var(--text)}.config-nav-item-active{background:var(--accent-bg);color:var(--accent-2);border-color:var(--accent-border)}.config-nav-item-active:hover{background:var(--accent-bg);color:var(--accent-2)}.config-content{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.provider-row,.mcp-row{display:flex;flex-direction:column;gap:var(--space-2)}.provider-row-head,.mcp-row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-width:0}.provider-name,.mcp-name{font-weight:600;color:var(--text-strong);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.provider-id,.mcp-id{font-size:11px;color:var(--text-dim);font-family:var(--font-mono);margin-top:2px}.provider-actions,.mcp-actions{display:inline-flex;align-items:center;gap:var(--space-2);flex-shrink:0}.provider-meta,.mcp-meta{font-size:12px;color:var(--text-dim);display:flex;flex-wrap:wrap;gap:var(--space-3)}.provider-meta code,.mcp-meta code{background:var(--bg-elev-2);padding:1px 6px;border-radius:4px;color:var(--text);font-size:11px}.provider-list,.mcp-list{display:flex;flex-direction:column;gap:var(--space-3)}.toggle-row{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-row input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}.tasks-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-md)}.tasks-toolbar-group{display:inline-flex;align-items:center;gap:6px}.tasks-toolbar-label{font-size:11px;color:var(--text-dim);font-weight:500;text-transform:uppercase;letter-spacing:.04em;margin-right:4px}.tasks-toolbar-spacer{flex:1}.tasks-toolbar-divider{width:1px;height:20px;background:var(--border);margin:0 4px}.activity-timeline-canvas{position:relative;flex:1;min-height:0;width:100%;height:100%;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.activity-timeline-svg{width:100%;height:100%;display:block;cursor:grab}.activity-timeline-svg:active{cursor:grabbing}.timeline-event-circle{cursor:pointer;transition:r .12s var(--ease)}.timeline-event-circle:hover{r:7}.timeline-event-label{font-size:10px;fill:var(--text);font-family:var(--font-mono);pointer-events:none}.timeline-lane-label{font-size:11px;fill:var(--text-dim);font-weight:600;pointer-events:none}.timeline-axis-label{font-size:10px;fill:var(--text-dim);font-family:var(--font-mono)}.timeline-connector{stroke:var(--border);stroke-width:1;fill:none}.timeline-grid-line{stroke:var(--border);stroke-width:.5;opacity:.5}.activity-mode-toggle{display:inline-flex;align-items:center;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);padding:2px;gap:2px}.activity-mode-toggle button{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:transparent;border:none;color:var(--text-dim);border-radius:var(--radius-sm);font-size:12px;cursor:pointer;font-family:inherit}.activity-mode-toggle button.active{background:var(--bg-elev);color:var(--text-strong);box-shadow:var(--shadow-1)}.history-list{display:flex;flex-direction:column;gap:var(--space-4)}.history-project{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.history-project-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.history-project-name{font-size:16px;font-weight:700;color:var(--text-strong);display:inline-flex;align-items:center;gap:8px}.history-project-meta{font-size:11px;color:var(--text-dim);font-family:var(--font-mono)}.history-project-stats{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:12px}.history-project-stat{display:inline-flex;align-items:baseline;gap:4px}.history-project-stat-num{font-weight:700;color:var(--text-strong);font-variant-numeric:tabular-nums}.history-timeline-mini{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto}.history-timeline-row{display:grid;grid-template-columns:90px 80px 1fr;gap:var(--space-3);font-size:12px;padding:4px 8px;border-radius:var(--radius-sm);align-items:center;border-bottom:1px solid var(--border)}.history-timeline-row:last-child{border-bottom:none}.history-timeline-ts{font-family:var(--font-mono);color:var(--text-dim);font-size:11px}.history-timeline-kind{font-weight:600;font-size:11px;color:var(--accent-2)}.history-timeline-msg{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-3)}.modal-form-row label{font-size:12px;font-weight:500;color:var(--text-dim)}.modal-form-row .checkbox-row{margin:0}.modal-form-row textarea{min-height:64px}.modal-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}@media (max-width: 600px){.modal-form-grid{grid-template-columns:1fr}}.tl-view{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-1)}.tl-mode-toggle{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.tl-zoom-group{display:inline-flex;align-items:center;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);padding:2px;gap:2px}.tl-zoom-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--text-dim);font-family:var(--font-mono);font-size:11px;font-weight:600;padding:4px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.tl-zoom-btn:hover{color:var(--text);background:var(--bg-elev)}.tl-zoom-btn-active{background:var(--accent);color:var(--text-strong)}.tl-zoom-btn-active:hover{background:var(--accent-2);color:var(--text-strong)}.tl-body{display:grid;grid-template-columns:280px 1fr 0;flex:1;min-height:0;min-width:0;transition:grid-template-columns var(--motion-base) var(--ease)}.tl-body-stream-collapsed{grid-template-columns:0 1fr 0}.tl-view-detail-open .tl-body{grid-template-columns:280px 1fr 360px}.tl-view-detail-open .tl-body.tl-body-stream-collapsed{grid-template-columns:0 1fr 360px}.tl-stream{border-right:1px solid var(--border);background:var(--bg-elev);display:flex;flex-direction:column;min-height:0;overflow:hidden}.tl-stream-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-shrink:0}.tl-stream-head h3{margin:0;font-size:12px;font-weight:600;color:var(--text-strong);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:var(--space-2)}.tl-stream-list{flex:1;overflow-y:auto;padding:var(--space-2);display:flex;flex-direction:column;gap:2px}.tl-stream-empty{padding:var(--space-4);text-align:center;color:var(--text-dim);font-size:12px}.tl-stream-event{display:grid;grid-template-columns:56px 24px 1fr;gap:var(--space-2);align-items:center;padding:var(--space-2) var(--space-2);border-radius:var(--radius);font-size:12px;background:transparent;border:1px solid transparent;animation:tl-fadein .4s var(--ease);transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.tl-stream-event:hover{background:var(--bg-elev-2);border-color:var(--border)}.tl-stream-event-time{font-family:var(--font-mono);color:var(--text-dim);font-size:10px;white-space:nowrap}.tl-stream-event-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;background:var(--bg);border:1px solid var(--border)}.tl-stream-event-text{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.tl-canvas-wrap{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;background:var(--bg)}.tl-canvas-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--bg-elev);font-size:12px;flex-shrink:0;gap:var(--space-3);flex-wrap:wrap}.tl-canvas-toolbar-left{display:flex;align-items:center;gap:var(--space-3);min-width:0;flex-wrap:wrap}.tl-canvas-mode{font-family:var(--font-mono);font-size:11px;color:var(--success);font-weight:600;letter-spacing:.04em}.tl-canvas-range{font-family:var(--font-mono);font-size:11px;color:var(--text-dim);white-space:nowrap}.tl-canvas-legend{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;color:var(--text-dim);font-size:11px}.tl-legend-item{display:inline-flex;align-items:center;gap:4px}.tl-legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.tl-legend-dot-dashed{background:transparent!important;border:1.5px dashed currentColor}.tl-legend-sep{width:1px;height:12px;background:var(--border)}.tl-canvas-scroll{flex:1;min-height:0;overflow:auto;position:relative}.tl-canvas{display:block;-webkit-user-select:none;user-select:none}.tl-lane-bg{pointer-events:none}.tl-lane-label{font-size:11px;font-weight:600;fill:var(--text);pointer-events:none;-webkit-user-select:none;user-select:none}.tl-lane-label-sub{font-size:9px;fill:var(--text-dim);pointer-events:none;-webkit-user-select:none;user-select:none;font-family:var(--font-mono)}.tl-task-bar{transition:filter var(--motion-fast) var(--ease)}.tl-task-bar:hover{filter:brightness(1.15)}.tl-task-bar rect{transition:fill-opacity var(--motion-base) var(--ease),stroke-opacity var(--motion-base) var(--ease),stroke-width var(--motion-fast) var(--ease)}.tl-task-bar-doing rect{animation:tl-pulse 1.6s ease-in-out infinite}.tl-task-bar-done rect{filter:saturate(.7)}.tl-task-bar-queued rect{stroke-dasharray:4 4}.tl-task-bar-selected rect{filter:drop-shadow(0 0 6px var(--accent-glow))}.tl-event-marker-group{pointer-events:none}.tl-event-marker-group circle{transition:r var(--motion-fast) var(--ease)}.tl-event-marker-group:hover circle{r:5.5}.tl-now-line{pointer-events:none;filter:drop-shadow(0 0 4px rgba(248,113,113,.45))}.tl-now-marker{pointer-events:none}.tl-detail{border-left:1px solid var(--border);background:var(--bg-elev);display:flex;flex-direction:column;min-height:0;overflow-y:auto;padding:var(--space-3)}.tl-detail-enter{animation:tl-detail-enter var(--motion-slow) var(--ease)}.tl-detail .card{display:flex;flex-direction:column;gap:var(--space-3)}.tl-detail-meta{display:flex;flex-direction:column;gap:4px;font-size:12px;padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.tl-detail-meta>div{display:flex;justify-content:space-between;gap:var(--space-2);align-items:center}.tl-detail-meta code{font-size:11px;background:var(--bg-elev-2);padding:1px 6px;border-radius:var(--radius-sm)}.tl-detail-desc{font-size:12px;color:var(--text);padding:var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.tl-detail-create,.tl-detail-bg,.tl-detail-comments{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border)}.tl-detail-bg .tl-form-row,.tl-detail-create .tl-form-row{display:flex;gap:var(--space-2);align-items:center}.tl-detail-bg .tl-form-row .input,.tl-detail-create .tl-form-row .input{flex:1}.tl-bg-output{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);font-family:var(--font-mono);font-size:11px;color:var(--text);max-height:240px;overflow:auto;white-space:pre-wrap;word-break:break-word;margin:0}.tl-bg-output-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}@keyframes tl-pulse{0%,to{stroke-opacity:1}50%{stroke-opacity:.35}}@keyframes tl-fadein{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:none}}@keyframes tl-detail-enter{0%{transform:translate(16px);opacity:0}to{transform:none;opacity:1}}@media (max-width: 900px){.tl-body{grid-template-columns:1fr}.tl-view-detail-open .tl-body{grid-template-columns:1fr;grid-template-rows:1fr auto}.tl-stream{position:fixed;top:0;bottom:0;left:0;width:280px;z-index:50;box-shadow:var(--shadow-3);transform:translate(-100%);transition:transform var(--motion-base) var(--ease)}.tl-stream:not(.tl-stream-collapsed){transform:translate(0)}.tl-stream-collapsed{transform:translate(-100%)}.tl-canvas-toolbar{padding:var(--space-2)}.tl-canvas-legend{display:none}.tl-canvas-toolbar-left{width:100%;justify-content:space-between}.tl-detail{border-left:none;border-top:1px solid var(--border);max-height:50vh;grid-row:2}.tl-zoom-group{flex-wrap:wrap}}@media (min-width: 901px){.tl-body-stream-collapsed .tl-stream{opacity:0;width:0;min-width:0;border-right:none;pointer-events:none}}@media (prefers-reduced-motion: reduce){.tl-task-bar-doing rect{animation:none}.tl-stream-event,.tl-detail-enter{animation:none}}.bg-active-view{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4) var(--space-5);max-width:1100px;margin:0 auto}.bg-active-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8) 0;color:var(--text-dim)}.bg-active-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.bg-active-header-text{display:flex;flex-direction:column;gap:2px}.bg-active-title{margin:0;font-size:18px;font-weight:600;color:var(--text-strong)}.bg-active-subtitle{margin:0;font-size:12px}.bg-active-list{display:grid;grid-template-columns:1fr;gap:var(--space-3)}.bg-active-card{gap:var(--space-3)}.bg-active-card-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.bg-active-card-id{display:flex;align-items:center;gap:var(--space-2);font-size:12px;color:var(--text-dim);min-width:0;flex:1 1 auto}.bg-active-card-id code{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}.bg-active-card-agent{display:flex;align-items:center;gap:var(--space-2);font-size:12px}.bg-active-card-agent-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:10px}.bg-active-card-agent-name{font-weight:600;color:var(--accent);font-family:var(--font-sans, inherit)}.bg-active-prompt{font-size:13px;line-height:1.5;color:var(--text);background:var(--bg-elev-2, var(--bg-elev));border-left:3px solid var(--accent-bg);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-word}.bg-active-step{display:flex;gap:var(--space-2);font-size:12px;color:var(--text-dim)}.bg-active-step-label{text-transform:uppercase;letter-spacing:.05em;font-size:10px}.bg-active-step-value{color:var(--text);font-family:var(--font-sans, inherit)}.bg-active-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:12px;color:var(--text-dim)}.bg-active-meta strong{color:var(--text);font-weight:500}.bg-active-meta-tmux-live{color:var(--success)}.bg-active-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border)}.progress-bar{position:relative;width:100%;height:8px;background:var(--bg-elev-2, var(--bg-elev));border-radius:999px;overflow:hidden;border:1px solid var(--border)}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-2, var(--accent)) 100%);transition:width var(--motion-base, .2s) var(--ease, ease-out)}.progress-label{position:absolute;top:50%;right:var(--space-2);transform:translateY(-50%);font-size:10px;color:var(--text);font-weight:600;text-shadow:0 0 4px var(--bg-elev)}.bg-output-modal{display:flex;flex-direction:column;gap:var(--space-3);min-height:320px}.bg-output-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border);font-size:12px}.bg-output-toolbar-actions{display:flex;gap:var(--space-2)}.bg-output-loading,.bg-output-empty,.bg-output-error{padding:var(--space-6);text-align:center;font-size:13px;color:var(--text-dim)}.bg-output-error{color:var(--error)}.bg-output-scroll{max-height:50vh;min-height:240px;overflow:auto;background:var(--bg, var(--bg-elev));border:1px solid var(--border);border-radius:var(--radius-md)}.bg-output-pre{margin:0;padding:var(--space-3);font-size:12px;line-height:1.45;color:var(--text);white-space:pre-wrap;word-break:break-word}.bg-tmux-modal{display:flex;flex-direction:column;gap:var(--space-3)}.bg-tmux-meta{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:12px}.bg-tmux-meta .badge{display:inline-flex}.bg-tmux-session{font-size:12px}.bg-tmux-command-row{display:flex;align-items:stretch;gap:var(--space-2)}.bg-tmux-command{flex:1;display:block;padding:var(--space-3);background:var(--bg-elev-2, var(--bg-elev));border:1px solid var(--border);border-radius:var(--radius-md);font-size:12px;line-height:1.5;word-break:break-all;white-space:pre-wrap;-webkit-user-select:all;user-select:all}.bg-tmux-hint{margin:0;font-size:12px}@keyframes bg-active-spin{to{transform:rotate(360deg)}}.bg-active-view .spin{animation:bg-active-spin .9s linear infinite}.notifications-root{position:relative;display:inline-flex}.notifications-bell{position:relative;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--fg-dim, #888);cursor:pointer;transition:background .15s,color .15s}.notifications-bell:hover{background:var(--bg-hover, rgba(255, 255, 255, .05));color:var(--fg, #e0e0e0)}.notifications-bell.is-open{background:var(--bg-hover, rgba(255, 255, 255, .08));color:var(--fg, #e0e0e0)}.notifications-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger, #ef4444);color:#fff;font-size:10px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;line-height:1}.notifications-panel{position:absolute;top:calc(100% + 8px);right:0;width:380px;max-width:90vw;max-height:70vh;background:var(--bg-elevated, #1a1a2e);border:1px solid var(--border, #2a2a4e);border-radius:10px;box-shadow:0 12px 32px #0006;z-index:1000;display:flex;flex-direction:column;overflow:hidden}.notifications-panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border, #2a2a4e)}.notifications-panel-head-actions{display:flex;align-items:center;gap:8px}.notifications-list{flex:1;overflow-y:auto;padding:4px}.notifications-empty{padding:24px;text-align:center;font-size:13px}.notification-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:6px;position:relative}.notification-item:hover{background:var(--bg-hover, rgba(255, 255, 255, .05))}.notification-item.is-unread{background:var(--bg-accent-soft, rgba(78, 121, 167, .08))}.notification-item.is-unread:before{content:"";position:absolute;top:12px;left:4px;width:4px;height:4px;border-radius:50%;background:var(--accent, #4E79A7)}.notification-icon{flex-shrink:0;margin-top:2px}.notification-icon.severity-info{color:var(--accent, #4E79A7)}.notification-icon.severity-success{color:var(--success, #4ade80)}.notification-icon.severity-warning{color:var(--warning, #facc15)}.notification-icon.severity-error{color:var(--danger, #ef4444)}.notification-body{flex:1;min-width:0}.notification-title{font-weight:600;font-size:13px;margin-bottom:2px}.notification-msg{font-size:12px;color:var(--fg-dim, #aaa);line-height:1.4;word-wrap:break-word}.notification-meta{display:flex;gap:6px;margin-top:4px;font-size:10px}.notification-actions{display:flex;gap:4px;flex-shrink:0}.notification-actions .icon-btn{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--fg-dim, #888);cursor:pointer;border-radius:4px}.notification-actions .icon-btn:hover{background:var(--bg-hover, rgba(255, 255, 255, .08));color:var(--fg, #e0e0e0)}.notification-actions .icon-btn-danger:hover{color:var(--danger, #ef4444)}.notifications-panel-foot{padding:8px 14px;border-top:1px solid var(--border, #2a2a4e);font-size:11px}.activity-clear-button{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border, #2a2a4e);border-radius:4px;background:transparent;color:var(--fg-dim, #aaa);font-size:12px;cursor:pointer;transition:background .15s,color .15s}.activity-clear-button:hover{background:var(--bg-hover, rgba(255, 255, 255, .05));color:var(--fg, #e0e0e0)}.activity-hidden-banner{padding:8px 12px;background:var(--bg-accent-soft, rgba(78, 121, 167, .12));border:1px solid var(--accent, #4E79A7);border-radius:6px;font-size:12px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}.activity-log-table{width:100%;border-collapse:collapse;font-size:12px;font-family:var(--font-mono, ui-monospace, monospace)}.activity-log-table th,.activity-log-table td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--border, #2a2a4e)}.activity-log-table th{background:var(--bg-elevated, #1a1a2e);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-dim, #aaa);position:sticky;top:0}.activity-log-table td.mono{font-family:var(--font-mono, ui-monospace, monospace);font-size:11px}.activity-log-table tr.severity-warning td{color:var(--warning, #facc15)}.activity-log-table tr.severity-error td{color:var(--danger, #ef4444)}.mods-registry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:12px}.mods-registry-card{padding:14px;background:var(--bg-elevated, #1a1a2e);border:1px solid var(--border, #2a2a4e);border-radius:8px;display:flex;flex-direction:column;gap:8px}.mods-registry-card.is-installed{border-color:var(--success, #4ade80)}.mods-registry-card-name{font-weight:600;font-size:14px}.mods-registry-card-version{font-size:11px;color:var(--fg-dim, #888)}.mods-registry-card-desc{font-size:12px;color:var(--fg-dim, #aaa);line-height:1.4;flex:1}.mods-registry-card-actions{display:flex;gap:8px;align-items:center}.mods-registry-card-perms{font-size:10px;color:var(--fg-dim, #888);font-family:var(--font-mono, ui-monospace, monospace);background:var(--bg-base, #0f0f1a);padding:4px 6px;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-subnav{display:flex;gap:4px;border-bottom:1px solid var(--border, #2a2a4e);margin-bottom:16px;padding-bottom:4px;flex-wrap:wrap}.settings-subnav-button{padding:6px 14px;border:none;background:transparent;color:var(--fg-dim, #aaa);font-size:13px;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.settings-subnav-button:hover{color:var(--fg, #e0e0e0)}.settings-subnav-button.is-active{color:var(--accent, #4E79A7);border-bottom-color:var(--accent, #4E79A7)}.collapsible-section{border:1px solid var(--border, #2a2a4e);border-radius:6px;margin-bottom:8px;overflow:hidden}.collapsible-section-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg-elevated, #1a1a2e);cursor:pointer;-webkit-user-select:none;user-select:none}.collapsible-section-header:hover{background:var(--bg-hover, rgba(255, 255, 255, .04))}.collapsible-section-title{font-weight:600;font-size:13px}.collapsible-section-toggle{color:var(--fg-dim, #888);transition:transform .15s}.collapsible-section-toggle.is-open{transform:rotate(90deg)}.collapsible-section-body{padding:12px 14px;border-top:1px solid var(--border, #2a2a4e)}.view-graph{display:flex;flex-direction:column;min-height:0}.graph-building-banner{display:flex;align-items:center;gap:12px;padding:12px 18px;margin-bottom:12px;background:var(--accent-bg, rgba(78, 121, 167, .12));border:1px solid var(--accent, #4E79A7);border-radius:8px;color:var(--fg, #e0e0e0);font-size:13px}.graph-building-banner code{padding:2px 6px;background:#00000040;border-radius:4px;font-family:var(--font-mono, ui-monospace, monospace);font-size:12px}.graph-empty-actions{display:flex;align-items:center;gap:14px;margin-top:14px;flex-wrap:wrap}.graph-iframe-wrap{flex:1;min-height:540px;border:1px solid var(--border, #2a2a4e);border-radius:8px;overflow:hidden;background:#0f0f1a}.graph-iframe{width:100%;height:100%;min-height:540px;border:0;display:block}.graph-meta{margin-top:10px;text-align:right;font-size:11px}.glyph-canvas{position:relative;min-height:100vh;padding:5.5rem 1.5rem 4rem;background-color:var(--bg);background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.06) 1px,transparent 0);background-size:24px 24px;background-attachment:local;overflow:visible}.glyph-canvas--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;background-color:var(--bg)}.glyph-toolbar-floating{position:sticky;top:1rem;z-index:100;margin-left:auto;margin-bottom:1rem;width:fit-content;display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;background:var(--bg-elev-3);border:1px solid var(--border-strong);border-radius:999px;box-shadow:0 6px 24px #00000073;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.glyph-toolbar-divider{width:1px;height:18px;background:var(--border);margin:0 .25rem;flex-shrink:0}.glyph-btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.375rem .75rem;border-radius:6px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);cursor:pointer;font-size:.8125rem;font-weight:500;transition:background .12s,border-color .12s,transform .12s;font-family:inherit}.glyph-btn:disabled{opacity:.5;cursor:not-allowed}.glyph-btn--ghost{background:transparent;border-color:transparent;padding:.375rem .625rem}.glyph-btn--primary:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2)}.glyph-btn--send{border-radius:999px;padding:.5rem .875rem;font-weight:600;gap:.5rem;background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 10px #8b5cf659}.glyph-btn--send:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2);transform:translateY(-1px);box-shadow:0 4px 14px #8b5cf680}.glyph-btn-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#ffffff2e;color:#fff;font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.glyph-icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;width:30px;height:30px;padding:0;border-radius:999px;border:none;background:transparent;color:var(--text-dim);cursor:pointer;transition:background .12s,color .12s;font-family:inherit;flex-shrink:0}.glyph-icon-btn:hover:not(:disabled){background:var(--bg-elev-2);color:var(--text-strong)}.glyph-icon-btn:disabled{opacity:.4;cursor:not-allowed}.glyph-icon-btn--close{color:var(--text-dim)}.glyph-icon-btn-count{font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.glyph-canvas-content{max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:1.25rem}.glyph-canvas-title{display:flex;flex-direction:column;gap:.5rem;padding:.25rem .25rem .5rem}.glyph-title{margin:0;font-size:1.875rem;font-weight:700;color:var(--text-strong);letter-spacing:-.015em;line-height:1.2}.glyph-status{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.glyph-errors{background:var(--warning-soft);border:1px solid var(--warning);border-radius:6px;padding:.75rem 1rem;font-size:.8125rem;color:var(--text)}.glyph-sections{display:flex;flex-direction:column;gap:1rem}.glyph-section{background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:1rem 1.25rem}.glyph-section--plain{background:transparent;border:none;padding:0}.glyph-section-heading{margin:0 0 .75rem;font-size:1rem;font-weight:700;color:var(--text-strong);letter-spacing:-.005em;line-height:1.3}.glyph-section-blocks{display:flex;flex-direction:column;gap:.875rem}.glyph-callout{display:flex;gap:.75rem;padding:.875rem 1rem;border-radius:6px;border-left:3px solid;background:var(--bg-elev-2);font-size:.9375rem;line-height:1.6}.glyph-checklist{display:flex;flex-direction:column;gap:.375rem;padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px}.glyph-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:6px}.glyph-codetabs{border:1px solid var(--border);border-radius:6px;overflow:hidden}.glyph-decision{padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px}.glyph-openquestions{padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;gap:.75rem}.glyph-filetree{padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px}.glyph-diff{border:1px solid var(--border);border-radius:6px;overflow:hidden}.glyph-stat{display:inline-block;padding:.75rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px;min-width:120px}.glyph-workflow{padding:1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px;overflow-x:auto}.glyph-workflow-edge{stroke:var(--text-dim);stroke-width:1.5;fill:none;marker-end:url(#glyph-arrowhead)}.glyph-pin{position:absolute;width:26px;height:26px;margin-left:-13px;margin-top:-13px;background:var(--accent);color:#fff;border:2px solid var(--bg);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #8b5cf666;z-index:10;transition:transform .12s,background .12s,box-shadow .12s}.glyph-pin:hover{transform:scale(1.2);box-shadow:0 6px 18px #8b5cf68c}.glyph-pin--active{background:var(--accent-2);transform:scale(1.2);box-shadow:0 6px 20px #8b5cf6a6}.glyph-ctx-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .625rem;background:transparent;border:none;color:var(--text);cursor:pointer;border-radius:4px;font-size:.8125rem;text-align:left;font-family:inherit}.glyph-modal{background:var(--bg-elev-2);border:1px solid var(--border-strong);border-radius:8px;padding:1.5rem;width:90%;max-width:500px;box-shadow:0 12px 40px #0009}.glyph-renderer{position:relative;padding:1.5rem 2rem;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;margin:0;min-height:100%;overflow:visible}.glyph-renderer--loading,.glyph-renderer--error{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.5rem;color:var(--text-dim);padding:4rem 2rem;text-align:center}.glyph-renderer--error strong{color:var(--error);font-size:1.1rem}.glyph-renderer--error pre{color:var(--text-dim);font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px;white-space:pre-wrap;max-width:600px}.glyph-spinner{display:inline-block;animation:glyph-spin 1.2s linear infinite;font-size:1.5rem;color:var(--accent)}@keyframes glyph-spin{to{transform:rotate(360deg)}}.glyph-renderer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1.25rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.glyph-title{margin:0 0 .5rem;font-size:1.75rem;font-weight:700;color:var(--text-strong);letter-spacing:-.01em;line-height:1.2}.glyph-meta{display:flex;align-items:center;gap:.75rem;font-size:.8125rem;color:var(--text-dim)}.glyph-status{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.glyph-status--draft{background:var(--warning-soft);color:var(--warning)}.glyph-status--shipped{background:var(--success-soft);color:var(--success)}.glyph-status--archived{background:var(--bg-elev-2);color:var(--text-dim)}.glyph-status--review{background:var(--accent-soft);color:var(--accent-2)}.glyph-slug{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.75rem;color:var(--text-muted)}.glyph-actions{display:flex;align-items:center;gap:.75rem}.glyph-comment-count{display:inline-flex;align-items:center;gap:.25rem;color:var(--text-dim);font-size:.8125rem}.glyph-btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.375rem .75rem;border-radius:6px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);cursor:pointer;font-size:.8125rem;font-weight:500;transition:background .12s,border-color .12s}.glyph-btn:hover{background:var(--bg-elev-3);border-color:var(--border-strong)}.glyph-btn--ghost{background:transparent;border-color:transparent;padding:.25rem .5rem}.glyph-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.glyph-btn--primary:hover{background:var(--accent-2)}.glyph-btn--primary:disabled{opacity:.5;cursor:not-allowed}.glyph-errors{background:var(--warning-soft);border:1px solid var(--warning);border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.8125rem;color:var(--text)}.glyph-errors ul{margin:.5rem 0 0;padding-left:1.25rem;color:var(--text-dim)}.glyph-blocks{display:flex;flex-direction:column;gap:1rem}.glyph-block-placeholder{padding:.75rem 1rem;border:1px dashed var(--border);border-radius:6px;color:var(--text-dim);font-size:.8125rem}.glyph-rich-text{font-size:.9375rem;line-height:1.7;color:var(--text)}.glyph-rich-text h1,.glyph-rich-text h2,.glyph-rich-text h3{color:var(--text-strong);font-weight:700;margin:1.5rem 0 .5rem;line-height:1.25}.glyph-rich-text h1{font-size:1.5rem}.glyph-rich-text h2{font-size:1.25rem}.glyph-rich-text h3{font-size:1.0625rem}.glyph-rich-text p{margin:.5rem 0}.glyph-rich-text code{background:var(--bg-elev-3);padding:.125rem .375rem;border-radius:4px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.85em;color:var(--accent-2)}.glyph-rich-text pre{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;padding:.875rem 1rem;overflow-x:auto;font-size:.8125rem}.glyph-rich-text pre code{background:transparent;padding:0;color:var(--text)}.glyph-rich-text ul,.glyph-rich-text ol{padding-left:1.5rem;margin:.5rem 0}.glyph-rich-text li{margin:.25rem 0}.glyph-rich-text a{color:var(--accent-2);text-decoration:underline;text-underline-offset:2px}.glyph-rich-text blockquote{border-left:3px solid var(--accent);margin:.75rem 0;padding:.25rem 0 .25rem 1rem;color:var(--text-dim)}.glyph-callout{display:flex;gap:.75rem;padding:.875rem 1rem;border-radius:8px;border-left:3px solid;background:var(--bg-elev-2);font-size:.9375rem;line-height:1.6}.glyph-callout--info{border-left-color:var(--info);background:#60a5fa14}.glyph-callout--warn{border-left-color:var(--warning);background:var(--warning-soft)}.glyph-callout--success{border-left-color:var(--success);background:var(--success-soft)}.glyph-callout--danger{border-left-color:var(--error);background:var(--error-soft)}.glyph-callout-icon{flex-shrink:0;font-weight:700;font-size:1rem;width:1.25rem;text-align:center}.glyph-callout--info .glyph-callout-icon{color:var(--info)}.glyph-callout--warn .glyph-callout-icon{color:var(--warning)}.glyph-callout--success .glyph-callout-icon{color:var(--success)}.glyph-callout--danger .glyph-callout-icon{color:var(--error)}.glyph-callout-body{flex:1;color:var(--text)}.glyph-callout-body p{margin:0}.glyph-checklist{display:flex;flex-direction:column;gap:.375rem;padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px}.glyph-checklist-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--text)}.glyph-checklist-item--checked{color:var(--text-dim);text-decoration:line-through}.glyph-checklist-mark{width:14px;height:14px;border:1.5px solid var(--border-strong);border-radius:3px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.glyph-checklist-item--checked .glyph-checklist-mark{background:var(--success);border-color:var(--success);color:var(--bg)}.glyph-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}.glyph-table{width:100%;border-collapse:collapse;font-size:.875rem}.glyph-table th{background:var(--bg-elev-2);text-align:left;padding:.625rem .875rem;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);border-bottom:1px solid var(--border)}.glyph-table td{padding:.625rem .875rem;border-top:1px solid var(--border);color:var(--text)}.glyph-table tr:first-child td{border-top:none}.glyph-codetabs{border:1px solid var(--border);border-radius:8px;overflow:hidden}.glyph-codetabs-tabs{display:flex;background:var(--bg-elev-2);border-bottom:1px solid var(--border);overflow-x:auto}.glyph-codetabs-tab{padding:.5rem 1rem;background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:.8125rem;font-weight:500;border-bottom:2px solid transparent;white-space:nowrap;font-family:JetBrains Mono,ui-monospace,monospace}.glyph-codetabs-tab--active{color:var(--accent-2);border-bottom-color:var(--accent)}.glyph-codetabs-panel{background:var(--bg-elev)}.glyph-codetabs-caption{padding:.375rem 1rem;font-size:.75rem;color:var(--text-dim);font-style:italic}.glyph-codetabs-code{margin:0;padding:.875rem 1rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.8125rem;color:var(--text);overflow-x:auto;white-space:pre}.glyph-decision{padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px}.glyph-decision-title,.glyph-decision-question{margin:0 0 .75rem;font-weight:600;font-size:.9375rem;color:var(--text-strong)}.glyph-decision-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.625rem}.glyph-decision-option{padding:.625rem .75rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;gap:.25rem;position:relative}.glyph-decision-option--recommended{border-color:var(--success);background:var(--success-soft)}.glyph-decision-option-label{font-weight:600;font-size:.875rem;color:var(--text-strong)}.glyph-decision-option-detail{font-size:.8125rem;color:var(--text-dim);line-height:1.45}.glyph-decision-option-badge{position:absolute;top:-8px;right:8px;padding:1px 6px;background:var(--success);color:var(--bg);font-size:9px;font-weight:700;letter-spacing:.05em;border-radius:3px;text-transform:uppercase}.glyph-openquestions{padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:.75rem}.glyph-openquestions-item{display:flex;flex-direction:column;gap:.375rem}.glyph-openquestions-label{font-size:.875rem;font-weight:500;color:var(--text)}.glyph-openquestions-input,.glyph-openquestions-select{padding:.5rem .625rem;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:.8125rem;font-family:inherit}.glyph-filetree{padding:.875rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px}.glyph-filetree-title{margin:0 0 .5rem;font-size:.8125rem;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.glyph-filetree-entry{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.8125rem}.glyph-filetree-change{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:4px;font-size:11px;font-weight:700;flex-shrink:0}.glyph-filetree-change--added{background:var(--success-soft);color:var(--success)}.glyph-filetree-change--modified{background:#60a5fa26;color:var(--info)}.glyph-filetree-change--removed{background:var(--error-soft);color:var(--error)}.glyph-filetree-change--renamed{background:#a78bfa26;color:var(--accent-2)}.glyph-filetree-path{color:var(--text)}.glyph-filetree-note{color:var(--text-dim);font-style:italic;font-family:inherit}.glyph-diff{border:1px solid var(--border);border-radius:8px;overflow:hidden}.glyph-diff-header{background:var(--bg-elev-2);padding:.5rem .875rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.8125rem;color:var(--text-dim);border-bottom:1px solid var(--border);display:flex;gap:.5rem;align-items:center}.glyph-diff-lang{background:var(--bg-elev-3);padding:1px 6px;border-radius:3px;font-size:10px;text-transform:uppercase}.glyph-diff-body{display:grid;grid-template-columns:1fr 1fr;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.8125rem}.glyph-diff--unified .glyph-diff-body{display:block}.glyph-diff-side{border-right:1px solid var(--border);overflow-x:auto}.glyph-diff-side:last-child{border-right:none}.glyph-diff-line{display:flex;padding:.0625rem .875rem;white-space:pre;line-height:1.5}.glyph-diff-line--add{background:var(--success-soft);color:var(--success)}.glyph-diff-line--del{background:var(--error-soft);color:var(--error)}.glyph-diff-line--ctx{color:var(--text-dim)}.glyph-diff-mark{width:1.25rem;flex-shrink:0;text-align:center;font-weight:700;-webkit-user-select:none;user-select:none}.glyph-stat{display:inline-block;padding:.75rem 1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;min-width:120px}.glyph-stat-label{font-size:.6875rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.glyph-stat-value{font-size:1.5rem;font-weight:700;color:var(--text-strong);display:flex;align-items:baseline;gap:.375rem}.glyph-stat-trend{font-size:.875rem;font-weight:500}.glyph-stat-trend--up{color:var(--success)}.glyph-stat-trend--down{color:var(--error)}.glyph-stat-trend--flat{color:var(--text-dim)}.glyph-stat-hint{margin-top:.25rem;font-size:.75rem;color:var(--text-dim)}.glyph-workflow{padding:1rem;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;overflow-x:auto}.glyph-workflow-svg{display:block;margin:0 auto}.glyph-workflow-node{fill:var(--bg);stroke:var(--info);stroke-width:1.5}.glyph-workflow-node--decision{fill:var(--bg);stroke:var(--warning)}.glyph-workflow-node--note{fill:var(--bg-elev-2);stroke:var(--border-strong);stroke-dasharray:4 3}.glyph-workflow-label{fill:var(--text);font-size:12px;font-family:Inter,system-ui,sans-serif}.glyph-workflow-edge{stroke:var(--text-dim);stroke-width:1.5;fill:none;marker-end:url(#glyph-arrowhead)}.glyph-workflow-edge-label{fill:var(--text-dim);font-size:11px;font-family:Inter,system-ui,sans-serif}.glyph-pin{position:absolute;width:26px;height:26px;margin-left:-13px;margin-top:-13px;background:var(--accent);color:#fff;border:2px solid var(--bg);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #0006;z-index:10;transition:transform .12s,background .12s}.glyph-pin:hover{transform:scale(1.15)}.glyph-pin--active{background:var(--accent-2);transform:scale(1.15)}.glyph-pin-thread{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);min-width:220px;max-width:320px;background:var(--bg-elev-3);border:1px solid var(--border-strong);border-radius:8px;padding:.625rem .75rem;box-shadow:0 6px 20px #00000080;font-size:.8125rem;line-height:1.45;color:var(--text);z-index:20}.glyph-pin-text{margin-bottom:.375rem}.glyph-pin-meta{font-size:.6875rem;color:var(--text-dim)}.glyph-ctx-menu{position:fixed;background:var(--bg-elev-3);border:1px solid var(--border-strong);border-radius:6px;padding:.25rem;min-width:180px;box-shadow:0 6px 20px #00000080;z-index:100}.glyph-ctx-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .625rem;background:transparent;border:none;color:var(--text);cursor:pointer;border-radius:4px;font-size:.8125rem;text-align:left}.glyph-ctx-item:hover{background:var(--accent-soft);color:var(--accent-2)}.glyph-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:1000}.glyph-modal{background:var(--bg-elev-2);border:1px solid var(--border-strong);border-radius:12px;padding:1.5rem;width:90%;max-width:500px;box-shadow:0 12px 40px #0009}.glyph-modal h3{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--text-strong);font-family:JetBrains Mono,ui-monospace,monospace}.glyph-modal-textarea{width:100%;padding:.625rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.875rem;resize:vertical;min-height:80px}.glyph-modal-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow)}.glyph-modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.glyph-mockup{margin:1.5rem 0;border-radius:var(--radius-md);overflow:hidden}.glyph-mockup-title{font-size:.75rem;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.glyph-mockup-frame{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.glyph-mockup-chrome{display:flex;gap:6px;padding:.5rem .75rem;background:var(--bg-2);border-bottom:1px solid var(--border)}.glyph-mockup-chrome span{width:10px;height:10px;border-radius:50%;background:var(--border-strong)}.glyph-mockup-body{padding:1.5rem;color:var(--text);font-size:.875rem;line-height:1.5}.glyph-mockup-body .mockup-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem;margin:.5rem 0}.glyph-mockup-body button.mockup-btn{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:.5rem 1rem;cursor:pointer;font-size:.875rem}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@media (max-width: 480px){.chat-composer-wrap{padding:.375rem .375rem .5rem}.chat-welcome-h1{font-size:1.875rem}}:root{--bg: #0b0e14;--bg-elev: #12161f;--bg-elev-2: #1a1f2b;--bg-elev-3: #232a39;--surface: var(--bg-elev);--surface-2: var(--bg-elev-2);--border: #232a39;--border-strong: #2d3648;--text: #c9d1d9;--text-muted: #6e7681;--text-dim: #484f58;--text-strong: #f0f6fc;--accent: #8b5cf6;--accent-bg: rgba(139, 92, 246, .12);--accent-border: rgba(139, 92, 246, .4);--accent-2: #a78bfa;--success: #3fb950;--warning: #d29922;--error: #f85149;--info: #58a6ff;--font-sans: "Inter var", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;--mobile-tap-target: 44px;--mobile-nav-height: 56px;--mobile-topbar-height: 48px;--mobile-padding: 16px;--mobile-font-base: 16px}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:manipulation}html,body{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--mobile-font-base);line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,[role=button],a,input,select,textarea{touch-action:manipulation}input,textarea,select{user-select:text;-webkit-user-select:text;font-size:var(--mobile-font-base)}a{color:var(--accent);text-decoration:none}code,.mono{font-family:var(--font-mono)}.mobile-app{display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font-sans);padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0);overscroll-behavior:none}.mobile-topbar{height:var(--mobile-topbar-height);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 var(--mobile-padding);background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.mobile-topbar-left{display:flex;align-items:center;gap:8px}.mobile-logo{font-size:20px;line-height:1}.mobile-title{font-size:16px;font-weight:600;color:var(--text-strong)}.mobile-topbar-right{display:flex;align-items:center;gap:4px}.mobile-icon-btn{width:var(--mobile-tap-target);height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);min-height:var(--mobile-tap-target);display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--text-muted);cursor:pointer;transition:background .12s ease,color .12s ease;padding:0}.mobile-icon-btn:hover{background:var(--bg-elev-2);color:var(--text)}.mobile-icon-btn:active{background:var(--bg-elev-3)}.mobile-icon-btn-danger{color:var(--error)}.mobile-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:var(--mobile-padding);padding-bottom:calc(var(--mobile-nav-height) + var(--mobile-padding) + env(safe-area-inset-bottom,0))}.mobile-view{max-width:100%;min-width:0}.mobile-view-footer{padding:24px 0;text-align:center}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0));background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:stretch;padding-bottom:env(safe-area-inset-bottom,0);z-index:50}.mobile-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;min-height:var(--mobile-tap-target);padding:8px 4px;transition:color .12s ease}.mobile-nav-btn-active{color:var(--accent)}.mobile-nav-label{font-size:10px;font-weight:500}.mobile-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;height:100dvh;gap:12px;color:var(--text-muted)}.mobile-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.mobile-stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;text-align:center}.mobile-stat-value{font-size:28px;font-weight:700;color:var(--accent);line-height:1}.mobile-stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}.mobile-section{margin-bottom:20px}.mobile-section-title{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;display:flex;align-items:center;gap:6px}.mobile-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:12px}.mobile-card-list{display:flex;flex-direction:column;gap:6px}.mobile-agent-card{display:flex;align-items:center;gap:10px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.mobile-agent-dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim);flex-shrink:0}.mobile-agent-dot[data-status=working],.mobile-agent-dot[data-status=doing]{background:var(--success);animation:pulse-dot 1.6s ease-in-out infinite}.mobile-agent-dot[data-status=error],.mobile-agent-dot[data-status=stuck]{background:var(--error)}.mobile-agent-dot[data-status=idle]{background:var(--text-dim)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.mobile-agent-info{flex:1;min-width:0}.mobile-agent-name{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.mobile-agent-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-task-card{width:100%;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;gap:10px;text-align:left}.mobile-task-actions{display:flex;gap:2px;flex-shrink:0}.priority-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.task-content{flex:1;min-width:0}.task-title{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.task-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-tasks-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}.mobile-search-input{flex:1;height:var(--mobile-tap-target);padding:0 14px;background:var(--surface);border:1px solid var(--border);border-radius:22px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);outline:none}.mobile-search-input:focus{border-color:var(--accent)}.mobile-empty-inline{font-size:13px;color:var(--text-muted);padding:4px 0}.mobile-empty-compact{padding:24px 16px}.mobile-setting-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.mobile-setting-row:last-child{border-bottom:none}.mobile-setting-label{font-size:14px;color:var(--text)}.mobile-setting-value{font-size:14px;color:var(--text-muted);text-align:right}.mobile-list-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.mobile-list-icon{color:var(--text-muted);flex-shrink:0}.mobile-list-content{flex:1;min-width:0}.mobile-list-title{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.mobile-list-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-list-badge{font-size:11px;padding:2px 8px;border-radius:12px;background:var(--bg-elev-3);color:var(--text-muted);flex-shrink:0}.mobile-list-badge[data-status=working],.mobile-list-badge[data-status=doing]{background:#3fb95026;color:var(--success)}.mobile-list-badge[data-status=error],.mobile-list-badge[data-status=stuck]{background:#f8514926;color:var(--error)}.badge-on{background:#3fb95026;color:var(--success)}.badge-off{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-active-badge{font-size:11px;padding:2px 8px;border-radius:12px;background:var(--accent-bg);color:var(--accent);flex-shrink:0}.mobile-empty{text-align:center;padding:48px 20px;color:var(--text-muted)}.mobile-empty svg{margin-bottom:12px;opacity:.4}.mobile-empty p{margin:0 0 6px}.muted{color:var(--text-muted);font-size:13px}.mobile-btn{min-height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);padding:12px 20px;border-radius:10px;font-size:15px;font-weight:500;border:none;background:var(--accent);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:opacity .12s ease;text-decoration:none}.mobile-btn:active{opacity:.7}.mobile-btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}.mobile-more-footer{padding:16px 0;border-top:1px solid var(--border);margin-top:8px}.mobile-more-link{display:flex;align-items:center;justify-content:center;gap:4px;color:var(--accent);font-size:14px;text-decoration:none;min-height:var(--mobile-tap-target);padding:12px}[data-theme=dark] .mobile-app{background:#0d1117}[data-theme=light]{--bg: #ffffff;--bg-elev: #f6f8fa;--bg-elev-2: #eaeef2;--bg-elev-3: #d0d7de;--surface: var(--bg-elev);--surface-2: var(--bg-elev-2);--border: #d0d7de;--border-strong: #afb8c1;--text: #1f2328;--text-muted: #656d76;--text-dim: #8c959f;--text-strong: #1f2328;--accent: #7c3aed;--accent-2: #6d28d9;--accent-bg: rgba(124, 58, 237, .08);--accent-border: rgba(124, 58, 237, .3)}.mobile-sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100;display:flex;align-items:flex-end;animation:sheet-fade-in .15s ease}@keyframes sheet-fade-in{0%{opacity:0}to{opacity:1}}.mobile-sheet{width:100%;background:var(--surface);border-radius:16px 16px 0 0;max-height:85vh;overflow-y:auto;overflow-x:hidden;animation:sheet-slide-up .2s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.mobile-sheet-handle{width:36px;height:4px;background:var(--border-strong);border-radius:2px;margin:10px auto 0;flex-shrink:0}.mobile-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px;border-bottom:1px solid var(--border);flex-shrink:0}.mobile-sheet-title{font-size:16px;font-weight:600;color:var(--text-strong);margin:0}.mobile-sheet-content{flex:1;overflow-y:auto;padding:12px 16px}.mobile-sheet-actions{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px}.mobile-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:200;display:flex;flex-direction:column;animation:modal-fade-in .15s ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.mobile-modal{flex:1;display:flex;flex-direction:column;overflow:hidden}.mobile-modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.mobile-modal-title{font-size:18px;font-weight:600;color:var(--text-strong);margin:0}.mobile-modal-content{flex:1;overflow-y:auto;padding:16px}.mobile-modal-actions{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px}.mobile-search-container{display:flex;flex-direction:column;gap:12px;height:100%}.mobile-search-input-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0 14px;height:var(--mobile-tap-target)}.mobile-search-field{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base)}.mobile-search-scopes{display:flex;gap:6px;flex-wrap:wrap}.mobile-scope-chip{min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:16px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-scope-chip.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-search-results{flex:1;overflow-y:auto}.mobile-search-group{margin-bottom:16px}.mobile-search-group-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;display:flex;align-items:center;gap:4px}.mobile-search-result-item{padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:4px;cursor:pointer}.mobile-search-result-title{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.mobile-search-result-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-search-loading{text-align:center;padding:20px;color:var(--text-muted);font-size:14px}.mobile-notif-btn{position:relative}.mobile-notif-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;background:var(--error);color:#fff;font-size:10px;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.mobile-notif-list{display:flex;flex-direction:column;gap:4px}.mobile-notif-item{width:100%;min-height:var(--mobile-tap-target);display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;position:relative}.mobile-notif-item.unread{border-color:var(--accent-border)}.mobile-notif-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.mobile-notif-icon.severity-success{background:#3fb95026;color:var(--success)}.mobile-notif-icon.severity-error{background:#f8514926;color:var(--error)}.mobile-notif-icon.severity-warning{background:#d2992226;color:var(--warning)}.mobile-notif-icon.severity-info{background:#58a6ff26;color:var(--info)}.mobile-notif-body{flex:1;min-width:0}.mobile-notif-title{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.mobile-notif-text{font-size:13px;color:var(--text-muted);display:block;margin-top:2px}.mobile-notif-time{font-size:11px;color:var(--text-dim);display:block;margin-top:4px}.mobile-notif-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:6px}.mobile-project-btn{display:flex;align-items:center;gap:4px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;min-height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);padding:10px 8px;border-radius:6px;font-size:14px;font-family:inherit}.mobile-project-btn:hover{background:var(--bg-elev-2);color:var(--text)}.mobile-project-name{max-width:120px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal}.mobile-project-list{display:flex;flex-direction:column;gap:6px}.mobile-project-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer}.mobile-project-item.active{border-color:var(--accent-border)}.mobile-project-status{width:8px;height:8px;border-radius:50%;background:var(--text-dim);flex-shrink:0}.mobile-project-status[data-status=active]{background:var(--success)}.mobile-project-status[data-status=error]{background:var(--error)}.mobile-project-info{flex:1;min-width:0}.mobile-project-item-name{font-size:14px;font-weight:500;display:block}.mobile-project-item-path{font-size:11px;color:var(--text-muted);display:block;overflow-wrap:anywhere;font-family:var(--font-mono)}.mobile-back-btn{position:fixed;top:calc(var(--mobile-topbar-height) + 8px);left:12px;z-index:60;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:13px;font-weight:500;min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:20px;cursor:pointer;display:flex;align-items:center;gap:4px;box-shadow:0 2px 8px #0000004d}.mobile-kanban-tabs{display:flex;gap:4px;margin-bottom:12px;overflow-x:auto;-webkit-overflow-scrolling:touch}.mobile-kanban-tab{min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:20px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:all .12s ease;flex-shrink:0}.mobile-kanban-tab.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-tasks-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.mobile-filter-select{min-height:var(--mobile-tap-target);padding:0 10px;background:var(--surface);border:1px solid var(--border);border-radius:18px;color:var(--text);font-family:inherit;font-size:13px;cursor:pointer}.mobile-fab{position:fixed;bottom:calc(var(--mobile-nav-height) + 80px + env(safe-area-inset-bottom,0));right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #8b5cf666;z-index:30;transition:transform .12s ease,box-shadow .12s ease}.mobile-fab:active{transform:scale(.94);box-shadow:0 2px 8px #8b5cf64d}.mobile-task-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.mobile-task-detail{display:flex;flex-direction:column;gap:12px}.mobile-task-detail-header{display:flex;align-items:center;gap:8px}.mobile-task-status-badge{font-size:11px;font-weight:600;padding:3px 10px;border-radius:12px;text-transform:capitalize}.mobile-task-status-badge.status-queued{background:#58a6ff26;color:var(--info)}.mobile-task-status-badge.status-doing{background:#3fb95026;color:var(--success)}.mobile-task-status-badge.status-blocked{background:#f8514926;color:var(--error)}.mobile-task-status-badge.status-done{background:#3fb95026;color:var(--success)}.mobile-task-priority{font-size:11px;font-weight:600;padding:3px 10px;border-radius:12px;text-transform:capitalize}.mobile-task-priority.priority-high{background:#f8514926;color:var(--error)}.mobile-task-priority.priority-normal{background:#58a6ff26;color:var(--info)}.mobile-task-priority.priority-low{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-task-detail-title{font-size:18px;font-weight:600;color:var(--text-strong);margin:0}.mobile-task-detail-desc{font-size:14px;color:var(--text-muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.mobile-task-detail-meta{display:flex;flex-direction:column;gap:0}.mobile-task-detail-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.mobile-task-detail-row:last-child{border-bottom:none}.mobile-task-detail-row span:first-child{color:var(--text-muted)}.mobile-task-detail-row span:last-child{color:var(--text);font-weight:500}.mobile-task-form{display:flex;flex-direction:column;gap:12px}.mobile-field-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;display:block}.mobile-input{width:100%;min-height:var(--mobile-tap-target);padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);outline:none;transition:border-color .12s ease}.mobile-input:focus{border-color:var(--accent)}.mobile-input-sm{min-height:var(--mobile-tap-target);padding:8px 12px}.mobile-agent-detail{display:flex;flex-direction:column;gap:12px}.mobile-agent-detail-status{display:flex;align-items:center;gap:8px}.mobile-agent-detail-status-text{font-size:14px;font-weight:500;text-transform:capitalize}.mobile-agent-detail-desc{font-size:14px;color:var(--text-muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.mobile-view-canvas{padding-bottom:80px}.mobile-canvas-bar{display:flex;align-items:center;justify-content:space-between;padding:0 0 12px;border-bottom:1px solid var(--border);margin-bottom:12px}.mobile-canvas-meta{display:flex;flex-direction:column;gap:2px}.mobile-canvas-title{font-size:16px;font-weight:600;color:var(--text-strong)}.mobile-canvas-status{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;text-transform:capitalize}.mobile-canvas-status[data-status=approved],.mobile-canvas-status[data-status=done]{background:#3fb95026;color:var(--success)}.mobile-canvas-status[data-status=in-progress],.mobile-canvas-status[data-status=doing]{background:#58a6ff26;color:var(--info)}.mobile-canvas-status[data-status=draft]{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-canvas-actions{display:flex;align-items:center;gap:4px}.mobile-canvas-comment-count{position:absolute;top:2px;right:2px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;border-radius:6px;padding:1px 4px;min-width:14px;text-align:center}.mobile-canvas-elements{display:flex;flex-direction:column;gap:10px}.mobile-canvas-element{background:var(--surface);border:2px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer}.mobile-canvas-element.selected{box-shadow:0 0 0 2px var(--accent)}.mobile-canvas-el-header{display:flex;align-items:center;gap:6px;padding:8px 12px}.mobile-canvas-el-type{font-size:11px;font-weight:600;text-transform:uppercase}.mobile-canvas-el-status{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg-elev-3);color:var(--text-muted);margin-left:auto}.mobile-canvas-el-title{font-size:14px;font-weight:600;padding:8px 12px;color:var(--text-strong)}.mobile-canvas-el-content{font-size:13px;color:var(--text-muted);padding:0 12px 8px;line-height:1.4}.mobile-canvas-el-comments{display:flex;align-items:center;gap:4px;padding:6px 12px;border-top:1px solid var(--border);font-size:11px;color:var(--text-dim)}.mobile-canvas-comments{margin-top:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.mobile-canvas-comments-header{display:flex;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid var(--border)}.mobile-canvas-comments-header h4{margin:0;font-size:14px;font-weight:600}.mobile-canvas-comment-list{max-height:300px;overflow-y:auto;padding:12px}.mobile-canvas-comment{margin-bottom:12px}.mobile-canvas-comment-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.mobile-canvas-comment-head .mono{font-size:11px;font-weight:600}.mobile-canvas-comment-head .muted{font-size:11px;color:var(--text-dim);margin-left:auto}.mobile-canvas-comment-text{font-size:13px;color:var(--text-muted);line-height:1.4}.mobile-canvas-comment-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}.mobile-canvas-comment-input .mobile-input{flex:1}.mobile-activity-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.mobile-event-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:4px;cursor:pointer}.mobile-event-kind{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;background:var(--bg-elev-3);color:var(--text-muted);text-transform:uppercase;flex-shrink:0}.mobile-event-msg{flex:1;font-size:13px;color:var(--text);overflow-wrap:anywhere}.mobile-event-time{font-size:11px;color:var(--text-dim);flex-shrink:0}.mobile-submit-hero{background:linear-gradient(135deg,var(--accent-bg) 0%,var(--bg-elev) 100%);border:1px solid var(--accent-border);border-radius:16px;padding:16px;margin-bottom:16px}.mobile-submit-input{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);resize:none;outline:none;margin-bottom:12px}.mobile-submit-input:focus{border-color:var(--accent)}.mobile-submit-actions{display:flex;flex-direction:column;gap:10px}.mobile-submit-chips{display:flex;gap:6px;flex-wrap:wrap}.mobile-submit-chip{min-height:var(--mobile-tap-target);padding:10px 12px;border-radius:16px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-submit-chip:hover{border-color:var(--accent-border);color:var(--accent)}.mobile-more-nav-item{display:flex;align-items:center;gap:14px;padding:14px 12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:6px;cursor:pointer;transition:all .12s ease}.mobile-more-nav-item:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.mobile-more-nav-icon{width:40px;height:40px;border-radius:10px;background:var(--bg-elev-2);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.mobile-more-nav-content{flex:1;min-width:0}.mobile-more-nav-label{font-size:15px;font-weight:600;color:var(--text-strong);display:flex;align-items:center;gap:8px}.mobile-more-nav-count{font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px;background:var(--bg-elev-3);color:var(--text-muted)}.mobile-more-nav-desc{font-size:12px;color:var(--text-muted);display:block;margin-top:2px}.mobile-more-nav-arrow{color:var(--text-dim);flex-shrink:0}.mobile-config-list{display:flex;flex-direction:column;gap:0}.mobile-config-row{display:flex;align-items:flex-start;flex-wrap:wrap;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.mobile-config-row:last-child{border-bottom:none}.mobile-config-key{flex:0 0 104px;display:flex;flex-direction:column;gap:2px}.mobile-config-key .mono{font-size:12px;font-weight:500;color:var(--text);word-break:break-all}.mobile-config-type{font-size:10px;color:var(--text-dim);text-transform:uppercase}.mobile-config-value{flex:1;min-width:0}.mobile-config-value .mobile-input{min-height:var(--mobile-tap-target);padding:6px 10px;font-size:13px}.mobile-toggle{position:relative;display:inline-flex;align-items:center;cursor:pointer;width:44px;height:24px}.mobile-toggle input{opacity:0;width:0;height:0;position:absolute}.mobile-toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-elev-3);border-radius:12px;transition:background .2s ease}.mobile-toggle-slider:before{content:"";position:absolute;left:2px;top:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease}.mobile-toggle input:checked+.mobile-toggle-slider{background:var(--accent)}.mobile-toggle input:checked+.mobile-toggle-slider:before{transform:translate(20px)}.mobile-theme-btns{display:flex;gap:6px}.mobile-theme-btn{display:flex;align-items:center;gap:4px;min-height:var(--mobile-tap-target);padding:10px 12px;border-radius:16px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-theme-btn.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-accent-swatches{display:flex;gap:8px;flex-wrap:wrap}.mobile-accent-swatch{width:var(--mobile-tap-target);height:var(--mobile-tap-target);border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .12s ease}.mobile-accent-swatch:hover{transform:scale(1.1)}.mobile-accent-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--accent)}.mobile-settings-save-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 16px;background:var(--warning);color:#000;font-size:13px;font-weight:500;margin:calc(-1 * var(--mobile-padding));margin-bottom:12px}.mobile-list-item-interactive{cursor:pointer;transition:all .12s ease}.mobile-list-item-interactive:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.mobile-list-item-interactive:active{opacity:.8}.mobile-list-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.mobile-list-status-dot[data-status=working],.mobile-list-status-dot[data-status=doing]{background:var(--success)}.mobile-list-status-dot[data-status=error],.mobile-list-status-dot[data-status=stuck]{background:var(--error)}.mobile-list-status-dot[data-status=idle]{background:var(--text-dim)}.mobile-list-badge.badge-accent{background:var(--accent-bg);color:var(--accent)}.mobile-list-badge.badge-warning{background:#d2992226;color:var(--warning)}.mobile-btn-danger{background:var(--error);color:#fff}.mobile-btn-danger:active{opacity:.8}.mobile-artifact-iframe{width:100%;min-height:min(70dvh,560px);border:1px solid var(--border);border-radius:12px;background:#fff}@media (max-width: 420px){.mobile-config-key,.mobile-config-value{flex-basis:100%}.mobile-task-detail-row{flex-direction:column}.mobile-task-detail-row span:first-child,.mobile-task-detail-row span:last-child{flex:none;text-align:left}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-DbxIw8BG.js","sources":["../../src/web/mobile.tsx"],"sourcesContent":["// src/mobile.tsx — entry point for mobile dashboard.\nimport { StrictMode } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { MobileApp } from './MobileApp';\nimport './styles/mobile.css';\n\nconst root = document.getElementById('root');\nif (!root) throw new Error('Root element #root not found');\ncreateRoot(root).render(\n <StrictMode>\n <MobileApp />\n </StrictMode>,\n);\n"],"names":["root","createRoot","jsx","StrictMode","MobileApp"],"mappings":"gEAMA,MAAMA,EAAO,SAAS,eAAe,MAAM,EAC3C,GAAI,CAACA,EAAM,MAAM,IAAI,MAAM,8BAA8B,EACzDC,EAAWD,CAAI,EAAE,OACfE,EAAAA,IAACC,EAAAA,WAAA,CACC,SAAAD,EAAAA,IAACE,EAAA,CAAA,CAAU,CAAA,CACb,CACF"}
|