claude-code-templates 1.20.3 → 1.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. package/.claude/agents/agent-expert.md +477 -0
  2. package/.claude/agents/cli-ui-designer.md +405 -0
  3. package/.claude/agents/command-expert.md +421 -0
  4. package/.claude/agents/docusaurus-expert.md +51 -0
  5. package/.claude/agents/mcp-expert.md +258 -0
  6. package/.claude/commands/lint.md +111 -0
  7. package/.claude/commands/test.md +73 -0
  8. package/.claude/settings.local.json +34 -0
  9. package/.github/WORKFLOWS_REFERENCE.md +88 -0
  10. package/.github/workflows/deploy-docusaurus.yml +31 -0
  11. package/.github/workflows/deploy.yml +33 -0
  12. package/.github/workflows/publish-package.yml +125 -0
  13. package/.mcp.json +4 -0
  14. package/CLAUDE.md +482 -0
  15. package/CODE_OF_CONDUCT.md +82 -0
  16. package/CONTRIBUTING.md +505 -0
  17. package/DEPLOYMENT.md +60 -0
  18. package/LICENSE +21 -0
  19. package/README.md +77 -79
  20. package/ROADMAP.md +278 -0
  21. package/SECURITY.md +65 -0
  22. package/api/index.html +1 -0
  23. package/api/package.json +7 -0
  24. package/api/track-download-supabase.js +150 -0
  25. package/cli-tool/Makefile +102 -0
  26. package/cli-tool/README.md +126 -0
  27. package/cli-tool/TESTING.md +262 -0
  28. package/{bin → cli-tool/bin}/create-claude-config.js +5 -1
  29. package/cli-tool/components/agents/ai-specialists/ai-ethics-advisor.md +195 -0
  30. package/cli-tool/components/agents/ai-specialists/hackathon-ai-strategist.md +46 -0
  31. package/cli-tool/components/agents/ai-specialists/llms-maintainer.md +94 -0
  32. package/cli-tool/components/agents/ai-specialists/model-evaluator.md +150 -0
  33. package/cli-tool/components/agents/ai-specialists/prompt-engineer.md +112 -0
  34. package/cli-tool/components/agents/ai-specialists/search-specialist.md +59 -0
  35. package/cli-tool/components/agents/ai-specialists/task-decomposition-expert.md +97 -0
  36. package/cli-tool/components/agents/api-graphql/graphql-architect.md +208 -0
  37. package/cli-tool/components/agents/api-graphql/graphql-performance-optimizer.md +357 -0
  38. package/cli-tool/components/agents/api-graphql/graphql-security-specialist.md +519 -0
  39. package/cli-tool/components/agents/blockchain-web3/smart-contract-auditor.md +32 -0
  40. package/cli-tool/components/agents/blockchain-web3/smart-contract-specialist.md +32 -0
  41. package/cli-tool/components/agents/blockchain-web3/web3-integration-specialist.md +32 -0
  42. package/cli-tool/components/agents/business-marketing/business-analyst.md +194 -0
  43. package/cli-tool/components/agents/business-marketing/content-marketer.md +36 -0
  44. package/cli-tool/components/agents/business-marketing/customer-support.md +36 -0
  45. package/cli-tool/components/agents/business-marketing/legal-advisor.md +50 -0
  46. package/cli-tool/components/agents/business-marketing/marketing-attribution-analyst.md +352 -0
  47. package/cli-tool/components/agents/business-marketing/payment-integration.md +33 -0
  48. package/cli-tool/components/agents/business-marketing/product-strategist.md +212 -0
  49. package/cli-tool/components/agents/business-marketing/risk-manager.md +42 -0
  50. package/cli-tool/components/agents/business-marketing/sales-automator.md +36 -0
  51. package/cli-tool/components/agents/data-ai/ai-engineer.md +33 -0
  52. package/cli-tool/components/agents/data-ai/computer-vision-engineer.md +562 -0
  53. package/cli-tool/components/agents/data-ai/data-engineer.md +33 -0
  54. package/cli-tool/components/agents/data-ai/data-scientist.md +337 -0
  55. package/cli-tool/components/agents/data-ai/ml-engineer.md +33 -0
  56. package/cli-tool/components/agents/data-ai/mlops-engineer.md +58 -0
  57. package/cli-tool/components/agents/data-ai/nlp-engineer.md +680 -0
  58. package/cli-tool/components/agents/data-ai/quant-analyst.md +33 -0
  59. package/cli-tool/components/agents/database/database-admin.md +33 -0
  60. package/cli-tool/components/agents/database/database-architect.md +590 -0
  61. package/cli-tool/components/agents/database/database-optimization.md +33 -0
  62. package/cli-tool/components/agents/database/database-optimizer.md +33 -0
  63. package/cli-tool/components/agents/database/nosql-specialist.md +708 -0
  64. package/cli-tool/components/agents/database/supabase-schema-architect.md +138 -0
  65. package/cli-tool/components/agents/deep-research-team/academic-researcher.md +33 -0
  66. package/cli-tool/components/agents/deep-research-team/agent-overview.md +235 -0
  67. package/cli-tool/components/agents/deep-research-team/competitive-intelligence-analyst.md +530 -0
  68. package/cli-tool/components/agents/deep-research-team/data-analyst.md +112 -0
  69. package/cli-tool/components/agents/deep-research-team/fact-checker.md +553 -0
  70. package/cli-tool/components/agents/deep-research-team/query-clarifier.md +73 -0
  71. package/cli-tool/components/agents/deep-research-team/report-generator.md +108 -0
  72. package/cli-tool/components/agents/deep-research-team/research-brief-generator.md +108 -0
  73. package/cli-tool/components/agents/deep-research-team/research-coordinator.md +94 -0
  74. package/cli-tool/components/agents/deep-research-team/research-orchestrator.md +119 -0
  75. package/cli-tool/components/agents/deep-research-team/research-synthesizer.md +109 -0
  76. package/cli-tool/components/agents/deep-research-team/technical-researcher.md +95 -0
  77. package/cli-tool/components/agents/development-team/backend-architect.md +31 -0
  78. package/cli-tool/components/agents/development-team/cli-ui-designer.md +405 -0
  79. package/cli-tool/components/agents/development-team/devops-engineer.md +886 -0
  80. package/cli-tool/components/agents/development-team/frontend-developer.md +32 -0
  81. package/cli-tool/components/agents/development-team/fullstack-developer.md +1205 -0
  82. package/cli-tool/components/agents/development-team/ios-developer.md +36 -0
  83. package/cli-tool/components/agents/development-team/mobile-developer.md +33 -0
  84. package/cli-tool/components/agents/development-team/ui-ux-designer.md +36 -0
  85. package/cli-tool/components/agents/development-tools/code-reviewer.md +30 -0
  86. package/cli-tool/components/agents/development-tools/command-expert.md +422 -0
  87. package/cli-tool/components/agents/development-tools/context-manager.md +65 -0
  88. package/cli-tool/components/agents/development-tools/debugger.md +31 -0
  89. package/cli-tool/components/agents/development-tools/dx-optimizer.md +64 -0
  90. package/cli-tool/components/agents/development-tools/error-detective.md +33 -0
  91. package/cli-tool/components/agents/development-tools/mcp-expert.md +259 -0
  92. package/cli-tool/components/agents/development-tools/performance-profiler.md +799 -0
  93. package/cli-tool/components/agents/development-tools/test-engineer.md +936 -0
  94. package/cli-tool/components/agents/devops-infrastructure/cloud-architect.md +33 -0
  95. package/cli-tool/components/agents/devops-infrastructure/deployment-engineer.md +33 -0
  96. package/cli-tool/components/agents/devops-infrastructure/devops-troubleshooter.md +33 -0
  97. package/cli-tool/components/agents/devops-infrastructure/monitoring-specialist.md +36 -0
  98. package/cli-tool/components/agents/devops-infrastructure/network-engineer.md +33 -0
  99. package/cli-tool/components/agents/devops-infrastructure/security-engineer.md +971 -0
  100. package/cli-tool/components/agents/devops-infrastructure/terraform-specialist.md +36 -0
  101. package/cli-tool/components/agents/devops-infrastructure/vercel-deployment-specialist.md +357 -0
  102. package/cli-tool/components/agents/documentation/api-documenter.md +33 -0
  103. package/cli-tool/components/agents/documentation/changelog-generator.md +37 -0
  104. package/cli-tool/components/agents/documentation/docusaurus-expert.md +52 -0
  105. package/cli-tool/components/agents/documentation/technical-writer.md +37 -0
  106. package/cli-tool/components/agents/expert-advisors/agent-expert.md +477 -0
  107. package/cli-tool/components/agents/expert-advisors/architect-review.md +50 -0
  108. package/cli-tool/components/agents/expert-advisors/dependency-manager.md +45 -0
  109. package/cli-tool/components/agents/expert-advisors/documentation-expert.md +47 -0
  110. package/cli-tool/components/agents/ffmpeg-clip-team/audio-mixer.md +37 -0
  111. package/cli-tool/components/agents/ffmpeg-clip-team/audio-quality-controller.md +100 -0
  112. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-content-analyzer.md +60 -0
  113. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-metadata-specialist.md +46 -0
  114. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-transcriber.md +68 -0
  115. package/cli-tool/components/agents/ffmpeg-clip-team/social-media-clip-creator.md +69 -0
  116. package/cli-tool/components/agents/ffmpeg-clip-team/timestamp-precision-specialist.md +98 -0
  117. package/cli-tool/components/agents/ffmpeg-clip-team/video-editor.md +37 -0
  118. package/cli-tool/components/agents/game-development/3d-artist.md +37 -0
  119. package/cli-tool/components/agents/game-development/game-designer.md +37 -0
  120. package/cli-tool/components/agents/game-development/unity-game-developer.md +110 -0
  121. package/cli-tool/components/agents/game-development/unreal-engine-developer.md +128 -0
  122. package/cli-tool/components/agents/mcp-dev-team/mcp-deployment-orchestrator.md +101 -0
  123. package/cli-tool/components/agents/mcp-dev-team/mcp-integration-engineer.md +37 -0
  124. package/cli-tool/components/agents/mcp-dev-team/mcp-protocol-specialist.md +37 -0
  125. package/cli-tool/components/agents/mcp-dev-team/mcp-registry-navigator.md +112 -0
  126. package/cli-tool/components/agents/mcp-dev-team/mcp-security-auditor.md +70 -0
  127. package/cli-tool/components/agents/mcp-dev-team/mcp-server-architect.md +74 -0
  128. package/cli-tool/components/agents/mcp-dev-team/mcp-testing-engineer.md +106 -0
  129. package/cli-tool/components/agents/modernization/architecture-modernizer.md +37 -0
  130. package/cli-tool/components/agents/modernization/cloud-migration-specialist.md +37 -0
  131. package/cli-tool/components/agents/modernization/legacy-modernizer.md +33 -0
  132. package/cli-tool/components/agents/obsidian-ops-team/Scripts/daily_notes_connector.py +306 -0
  133. package/cli-tool/components/agents/obsidian-ops-team/Scripts/enhance_tag_standardizer.py +343 -0
  134. package/cli-tool/components/agents/obsidian-ops-team/Scripts/find_keyword_connections.py +216 -0
  135. package/cli-tool/components/agents/obsidian-ops-team/Scripts/fix_quoted_tags.py +82 -0
  136. package/cli-tool/components/agents/obsidian-ops-team/Scripts/implement_entity_connections.py +195 -0
  137. package/cli-tool/components/agents/obsidian-ops-team/Scripts/link_suggester.py +301 -0
  138. package/cli-tool/components/agents/obsidian-ops-team/Scripts/metadata_adder.py +197 -0
  139. package/cli-tool/components/agents/obsidian-ops-team/Scripts/moc_generator.py +296 -0
  140. package/cli-tool/components/agents/obsidian-ops-team/Scripts/parse_keyword_connections.py +122 -0
  141. package/cli-tool/components/agents/obsidian-ops-team/Scripts/tag_standardizer.py +387 -0
  142. package/cli-tool/components/agents/obsidian-ops-team/connection-agent.md +67 -0
  143. package/cli-tool/components/agents/obsidian-ops-team/content-curator.md +81 -0
  144. package/cli-tool/components/agents/obsidian-ops-team/metadata-agent.md +51 -0
  145. package/cli-tool/components/agents/obsidian-ops-team/moc-agent.md +112 -0
  146. package/cli-tool/components/agents/obsidian-ops-team/review-agent.md +94 -0
  147. package/cli-tool/components/agents/obsidian-ops-team/tag-agent.md +92 -0
  148. package/cli-tool/components/agents/obsidian-ops-team/vault-optimizer.md +76 -0
  149. package/cli-tool/components/agents/ocr-extraction-team/document-structure-analyzer.md +37 -0
  150. package/cli-tool/components/agents/ocr-extraction-team/markdown-syntax-formatter.md +58 -0
  151. package/cli-tool/components/agents/ocr-extraction-team/ocr-grammar-fixer.md +36 -0
  152. package/cli-tool/components/agents/ocr-extraction-team/ocr-preprocessing-optimizer.md +37 -0
  153. package/cli-tool/components/agents/ocr-extraction-team/ocr-quality-assurance.md +62 -0
  154. package/cli-tool/components/agents/ocr-extraction-team/text-comparison-validator.md +60 -0
  155. package/cli-tool/components/agents/ocr-extraction-team/visual-analysis-ocr.md +52 -0
  156. package/cli-tool/components/agents/performance-testing/load-testing-specialist.md +37 -0
  157. package/cli-tool/components/agents/performance-testing/performance-engineer.md +33 -0
  158. package/cli-tool/components/agents/performance-testing/react-performance-optimization.md +65 -0
  159. package/cli-tool/components/agents/performance-testing/test-automator.md +33 -0
  160. package/cli-tool/components/agents/performance-testing/web-vitals-optimizer.md +37 -0
  161. package/cli-tool/components/agents/podcast-creator-team/academic-research-synthesizer.md +61 -0
  162. package/cli-tool/components/agents/podcast-creator-team/comprehensive-researcher.md +49 -0
  163. package/cli-tool/components/agents/podcast-creator-team/episode-orchestrator.md +52 -0
  164. package/cli-tool/components/agents/podcast-creator-team/guest-outreach-coordinator.md +37 -0
  165. package/cli-tool/components/agents/podcast-creator-team/market-research-analyst.md +54 -0
  166. package/cli-tool/components/agents/podcast-creator-team/podcast-editor.md +37 -0
  167. package/cli-tool/components/agents/podcast-creator-team/podcast-trend-scout.md +60 -0
  168. package/cli-tool/components/agents/podcast-creator-team/project-supervisor-orchestrator.md +48 -0
  169. package/cli-tool/components/agents/podcast-creator-team/seo-podcast-optimizer.md +58 -0
  170. package/cli-tool/components/agents/podcast-creator-team/social-media-copywriter.md +57 -0
  171. package/cli-tool/components/agents/podcast-creator-team/twitter-ai-influencer-manager.md +62 -0
  172. package/cli-tool/components/agents/programming-languages/c-pro.md +36 -0
  173. package/cli-tool/components/agents/programming-languages/c-sharp-pro.md +40 -0
  174. package/cli-tool/components/agents/programming-languages/cpp-pro.md +39 -0
  175. package/cli-tool/components/agents/programming-languages/golang-pro.md +33 -0
  176. package/cli-tool/components/agents/programming-languages/javascript-pro.md +36 -0
  177. package/cli-tool/components/agents/programming-languages/php-pro.md +44 -0
  178. package/cli-tool/components/agents/programming-languages/python-pro.md +33 -0
  179. package/cli-tool/components/agents/programming-languages/rust-pro.md +36 -0
  180. package/cli-tool/components/agents/programming-languages/shell-scripting-pro.md +38 -0
  181. package/cli-tool/components/agents/programming-languages/sql-pro.md +36 -0
  182. package/cli-tool/components/agents/programming-languages/typescript-pro.md +38 -0
  183. package/cli-tool/components/agents/realtime/supabase-realtime-optimizer.md +193 -0
  184. package/cli-tool/components/agents/security/api-security-audit.md +93 -0
  185. package/cli-tool/components/agents/security/compliance-specialist.md +37 -0
  186. package/cli-tool/components/agents/security/incident-responder.md +75 -0
  187. package/cli-tool/components/agents/security/penetration-tester.md +37 -0
  188. package/cli-tool/components/agents/security/security-auditor.md +33 -0
  189. package/cli-tool/components/agents/web-tools/nextjs-architecture-expert.md +194 -0
  190. package/cli-tool/components/agents/web-tools/react-performance-optimizer.md +425 -0
  191. package/cli-tool/components/agents/web-tools/seo-analyzer.md +37 -0
  192. package/cli-tool/components/agents/web-tools/url-context-validator.md +61 -0
  193. package/cli-tool/components/agents/web-tools/url-link-extractor.md +59 -0
  194. package/cli-tool/components/agents/web-tools/web-accessibility-checker.md +37 -0
  195. package/cli-tool/components/commands/automation/act.md +57 -0
  196. package/cli-tool/components/commands/automation/ci-pipeline.md +378 -0
  197. package/cli-tool/components/commands/automation/husky.md +130 -0
  198. package/cli-tool/components/commands/automation/workflow-orchestrator.md +576 -0
  199. package/cli-tool/components/commands/database/supabase-backup-manager.md +37 -0
  200. package/cli-tool/components/commands/database/supabase-data-explorer.md +37 -0
  201. package/cli-tool/components/commands/database/supabase-migration-assistant.md +37 -0
  202. package/cli-tool/components/commands/database/supabase-performance-optimizer.md +37 -0
  203. package/cli-tool/components/commands/database/supabase-realtime-monitor.md +37 -0
  204. package/cli-tool/components/commands/database/supabase-schema-sync.md +37 -0
  205. package/cli-tool/components/commands/database/supabase-security-audit.md +37 -0
  206. package/cli-tool/components/commands/database/supabase-type-generator.md +37 -0
  207. package/cli-tool/components/commands/deployment/add-changelog.md +92 -0
  208. package/cli-tool/components/commands/deployment/blue-green-deployment.md +824 -0
  209. package/cli-tool/components/commands/deployment/changelog-demo-command.md +43 -0
  210. package/cli-tool/components/commands/deployment/ci-setup.md +323 -0
  211. package/cli-tool/components/commands/deployment/containerize-application.md +93 -0
  212. package/cli-tool/components/commands/deployment/deployment-monitoring.md +1228 -0
  213. package/cli-tool/components/commands/deployment/hotfix-deploy.md +283 -0
  214. package/cli-tool/components/commands/deployment/prepare-release.md +357 -0
  215. package/cli-tool/components/commands/deployment/rollback-deploy.md +145 -0
  216. package/cli-tool/components/commands/deployment/setup-automated-releases.md +143 -0
  217. package/cli-tool/components/commands/deployment/setup-kubernetes-deployment.md +93 -0
  218. package/cli-tool/components/commands/documentation/create-architecture-documentation.md +95 -0
  219. package/cli-tool/components/commands/documentation/create-onboarding-guide.md +93 -0
  220. package/cli-tool/components/commands/documentation/doc-api.md +242 -0
  221. package/cli-tool/components/commands/documentation/docs-maintenance.md +119 -0
  222. package/cli-tool/components/commands/documentation/generate-api-documentation.md +97 -0
  223. package/cli-tool/components/commands/documentation/interactive-documentation.md +133 -0
  224. package/cli-tool/components/commands/documentation/load-llms-txt.md +39 -0
  225. package/cli-tool/components/commands/documentation/migration-guide.md +250 -0
  226. package/cli-tool/components/commands/documentation/troubleshooting-guide.md +370 -0
  227. package/cli-tool/components/commands/documentation/update-docs.md +107 -0
  228. package/cli-tool/components/commands/game-development/game-analytics-integration.md +128 -0
  229. package/cli-tool/components/commands/game-development/game-asset-pipeline.md +108 -0
  230. package/cli-tool/components/commands/game-development/game-performance-profiler.md +78 -0
  231. package/cli-tool/components/commands/game-development/game-testing-framework.md +112 -0
  232. package/cli-tool/components/commands/game-development/unity-project-setup.md +190 -0
  233. package/cli-tool/components/commands/git-workflow/branch-cleanup.md +181 -0
  234. package/cli-tool/components/commands/git-workflow/commit.md +167 -0
  235. package/cli-tool/components/commands/git-workflow/create-pr.md +19 -0
  236. package/cli-tool/components/commands/git-workflow/create-pull-request.md +126 -0
  237. package/cli-tool/components/commands/git-workflow/create-worktrees.md +174 -0
  238. package/cli-tool/components/commands/git-workflow/fix-github-issue.md +13 -0
  239. package/cli-tool/components/commands/git-workflow/git-bisect-helper.md +261 -0
  240. package/cli-tool/components/commands/git-workflow/pr-review.md +76 -0
  241. package/cli-tool/components/commands/git-workflow/update-branch-name.md +9 -0
  242. package/cli-tool/components/commands/nextjs-vercel/nextjs-api-tester.md +480 -0
  243. package/cli-tool/components/commands/nextjs-vercel/nextjs-bundle-analyzer.md +406 -0
  244. package/cli-tool/components/commands/nextjs-vercel/nextjs-component-generator.md +489 -0
  245. package/cli-tool/components/commands/nextjs-vercel/nextjs-middleware-creator.md +712 -0
  246. package/cli-tool/components/commands/nextjs-vercel/nextjs-migration-helper.md +778 -0
  247. package/cli-tool/components/commands/nextjs-vercel/nextjs-performance-audit.md +653 -0
  248. package/cli-tool/components/commands/nextjs-vercel/nextjs-scaffold.md +237 -0
  249. package/cli-tool/components/commands/nextjs-vercel/vercel-deploy-optimize.md +341 -0
  250. package/cli-tool/components/commands/nextjs-vercel/vercel-edge-function.md +810 -0
  251. package/cli-tool/components/commands/nextjs-vercel/vercel-env-sync.md +666 -0
  252. package/cli-tool/components/commands/orchestration/archive.md +414 -0
  253. package/cli-tool/components/commands/orchestration/commit.md +305 -0
  254. package/cli-tool/components/commands/orchestration/find.md +272 -0
  255. package/cli-tool/components/commands/orchestration/log.md +355 -0
  256. package/cli-tool/components/commands/orchestration/move.md +220 -0
  257. package/cli-tool/components/commands/orchestration/optimize.md +375 -0
  258. package/cli-tool/components/commands/orchestration/remove.md +301 -0
  259. package/cli-tool/components/commands/orchestration/report.md +292 -0
  260. package/cli-tool/components/commands/orchestration/resume.md +256 -0
  261. package/cli-tool/components/commands/orchestration/start.md +169 -0
  262. package/cli-tool/components/commands/orchestration/status.md +219 -0
  263. package/cli-tool/components/commands/orchestration/sync.md +294 -0
  264. package/cli-tool/components/commands/performance/add-performance-monitoring.md +84 -0
  265. package/cli-tool/components/commands/performance/implement-caching-strategy.md +84 -0
  266. package/cli-tool/components/commands/performance/optimize-api-performance.md +119 -0
  267. package/cli-tool/components/commands/performance/optimize-build.md +139 -0
  268. package/cli-tool/components/commands/performance/optimize-bundle-size.md +84 -0
  269. package/cli-tool/components/commands/performance/optimize-database-performance.md +84 -0
  270. package/cli-tool/components/commands/performance/optimize-memory-usage.md +91 -0
  271. package/cli-tool/components/commands/performance/performance-audit.md +89 -0
  272. package/cli-tool/components/commands/performance/setup-cdn-optimization.md +84 -0
  273. package/cli-tool/components/commands/performance/system-behavior-simulator.md +415 -0
  274. package/cli-tool/components/commands/project-management/add-package.md +90 -0
  275. package/cli-tool/components/commands/project-management/add-to-changelog.md +37 -0
  276. package/cli-tool/components/commands/project-management/create-feature.md +130 -0
  277. package/cli-tool/components/commands/project-management/create-jtbd.md +37 -0
  278. package/cli-tool/components/commands/project-management/create-prd.md +36 -0
  279. package/cli-tool/components/commands/project-management/create-prp.md +37 -0
  280. package/cli-tool/components/commands/project-management/init-project.md +80 -0
  281. package/cli-tool/components/commands/project-management/milestone-tracker.md +44 -0
  282. package/cli-tool/components/commands/project-management/pac-configure.md +32 -0
  283. package/cli-tool/components/commands/project-management/pac-create-epic.md +41 -0
  284. package/cli-tool/components/commands/project-management/pac-create-ticket.md +42 -0
  285. package/cli-tool/components/commands/project-management/pac-update-status.md +39 -0
  286. package/cli-tool/components/commands/project-management/pac-validate.md +35 -0
  287. package/cli-tool/components/commands/project-management/project-health-check.md +58 -0
  288. package/cli-tool/components/commands/project-management/project-timeline-simulator.md +37 -0
  289. package/cli-tool/components/commands/project-management/project-to-linear.md +38 -0
  290. package/cli-tool/components/commands/project-management/release.md +31 -0
  291. package/cli-tool/components/commands/project-management/todo.md +62 -0
  292. package/cli-tool/components/commands/security/add-authentication-system.md +34 -0
  293. package/cli-tool/components/commands/security/dependency-audit.md +32 -0
  294. package/cli-tool/components/commands/security/penetration-test.md +40 -0
  295. package/cli-tool/components/commands/security/secrets-scanner.md +39 -0
  296. package/cli-tool/components/commands/security/security-audit.md +82 -0
  297. package/cli-tool/components/commands/security/security-hardening.md +33 -0
  298. package/cli-tool/components/commands/setup/create-database-migrations.md +35 -0
  299. package/cli-tool/components/commands/setup/design-database-schema.md +37 -0
  300. package/cli-tool/components/commands/setup/design-rest-api.md +37 -0
  301. package/cli-tool/components/commands/setup/implement-graphql-api.md +37 -0
  302. package/cli-tool/components/commands/setup/migrate-to-typescript.md +37 -0
  303. package/cli-tool/components/commands/setup/setup-ci-cd-pipeline.md +37 -0
  304. package/cli-tool/components/commands/setup/setup-development-environment.md +37 -0
  305. package/cli-tool/components/commands/setup/setup-docker-containers.md +37 -0
  306. package/cli-tool/components/commands/setup/setup-formatting.md +37 -0
  307. package/cli-tool/components/commands/setup/setup-linting.md +37 -0
  308. package/cli-tool/components/commands/setup/setup-monitoring-observability.md +37 -0
  309. package/cli-tool/components/commands/setup/setup-monorepo.md +37 -0
  310. package/cli-tool/components/commands/setup/setup-rate-limiting.md +37 -0
  311. package/cli-tool/components/commands/setup/update-dependencies.md +35 -0
  312. package/cli-tool/components/commands/simulation/business-scenario-explorer.md +37 -0
  313. package/cli-tool/components/commands/simulation/constraint-modeler.md +37 -0
  314. package/cli-tool/components/commands/simulation/decision-tree-explorer.md +37 -0
  315. package/cli-tool/components/commands/simulation/digital-twin-creator.md +37 -0
  316. package/cli-tool/components/commands/simulation/future-scenario-generator.md +37 -0
  317. package/cli-tool/components/commands/simulation/market-response-modeler.md +37 -0
  318. package/cli-tool/components/commands/simulation/monte-carlo-simulator.md +37 -0
  319. package/cli-tool/components/commands/simulation/simulation-calibrator.md +37 -0
  320. package/cli-tool/components/commands/simulation/system-dynamics-modeler.md +37 -0
  321. package/cli-tool/components/commands/simulation/timeline-compressor.md +37 -0
  322. package/cli-tool/components/commands/svelte/svelte:a11y.md +105 -0
  323. package/cli-tool/components/commands/svelte/svelte:component.md +81 -0
  324. package/cli-tool/components/commands/svelte/svelte:debug.md +48 -0
  325. package/cli-tool/components/commands/svelte/svelte:migrate.md +79 -0
  326. package/cli-tool/components/commands/svelte/svelte:optimize.md +99 -0
  327. package/cli-tool/components/commands/svelte/svelte:scaffold.md +89 -0
  328. package/cli-tool/components/commands/svelte/svelte:storybook-migrate.md +204 -0
  329. package/cli-tool/components/commands/svelte/svelte:storybook-mock.md +213 -0
  330. package/cli-tool/components/commands/svelte/svelte:storybook-setup.md +113 -0
  331. package/cli-tool/components/commands/svelte/svelte:storybook-story.md +145 -0
  332. package/cli-tool/components/commands/svelte/svelte:storybook-troubleshoot.md +191 -0
  333. package/cli-tool/components/commands/svelte/svelte:storybook.md +48 -0
  334. package/cli-tool/components/commands/svelte/svelte:test-coverage.md +77 -0
  335. package/cli-tool/components/commands/svelte/svelte:test-fix.md +74 -0
  336. package/cli-tool/components/commands/svelte/svelte:test-setup.md +85 -0
  337. package/cli-tool/components/commands/svelte/svelte:test.md +60 -0
  338. package/cli-tool/components/commands/sync/bidirectional-sync.md +37 -0
  339. package/cli-tool/components/commands/sync/bulk-import-issues.md +37 -0
  340. package/cli-tool/components/commands/sync/cross-reference-manager.md +37 -0
  341. package/cli-tool/components/commands/sync/issue-to-linear-task.md +37 -0
  342. package/cli-tool/components/commands/sync/linear-task-to-issue.md +37 -0
  343. package/cli-tool/components/commands/sync/sync-automation-setup.md +37 -0
  344. package/cli-tool/components/commands/sync/sync-conflict-resolver.md +37 -0
  345. package/cli-tool/components/commands/sync/sync-health-monitor.md +37 -0
  346. package/cli-tool/components/commands/sync/sync-issues-to-linear.md +37 -0
  347. package/cli-tool/components/commands/sync/sync-linear-to-issues.md +37 -0
  348. package/cli-tool/components/commands/sync/sync-migration-assistant.md +37 -0
  349. package/cli-tool/components/commands/sync/sync-pr-to-task.md +37 -0
  350. package/cli-tool/components/commands/sync/sync-status.md +391 -0
  351. package/cli-tool/components/commands/sync/task-from-pr.md +37 -0
  352. package/cli-tool/components/commands/team/architecture-review.md +37 -0
  353. package/cli-tool/components/commands/team/decision-quality-analyzer.md +37 -0
  354. package/cli-tool/components/commands/team/dependency-mapper.md +37 -0
  355. package/cli-tool/components/commands/team/estimate-assistant.md +37 -0
  356. package/cli-tool/components/commands/team/issue-triage.md +37 -0
  357. package/cli-tool/components/commands/team/memory-spring-cleaning.md +37 -0
  358. package/cli-tool/components/commands/team/migration-assistant.md +37 -0
  359. package/cli-tool/components/commands/team/retrospective-analyzer.md +37 -0
  360. package/cli-tool/components/commands/team/session-learning-capture.md +37 -0
  361. package/cli-tool/components/commands/team/sprint-planning.md +189 -0
  362. package/cli-tool/components/commands/team/standup-report.md +37 -0
  363. package/cli-tool/components/commands/team/team-knowledge-mapper.md +37 -0
  364. package/cli-tool/components/commands/team/team-velocity-tracker.md +37 -0
  365. package/cli-tool/components/commands/team/team-workload-balancer.md +37 -0
  366. package/cli-tool/components/commands/testing/add-mutation-testing.md +37 -0
  367. package/cli-tool/components/commands/testing/add-property-based-testing.md +37 -0
  368. package/cli-tool/components/commands/testing/e2e-setup.md +37 -0
  369. package/cli-tool/components/commands/testing/generate-test-cases.md +37 -0
  370. package/cli-tool/components/commands/testing/generate-tests.md +82 -0
  371. package/cli-tool/components/commands/testing/setup-comprehensive-testing.md +37 -0
  372. package/cli-tool/components/commands/testing/setup-load-testing.md +37 -0
  373. package/cli-tool/components/commands/testing/setup-visual-testing.md +37 -0
  374. package/cli-tool/components/commands/testing/test-automation-orchestrator.md +37 -0
  375. package/cli-tool/components/commands/testing/test-changelog-automation.md +37 -0
  376. package/cli-tool/components/commands/testing/test-coverage.md +37 -0
  377. package/cli-tool/components/commands/testing/test-quality-analyzer.md +37 -0
  378. package/cli-tool/components/commands/testing/testing_plan_integration.md +37 -0
  379. package/cli-tool/components/commands/testing/write-tests.md +37 -0
  380. package/cli-tool/components/commands/utilities/all-tools.md +31 -0
  381. package/cli-tool/components/commands/utilities/architecture-scenario-explorer.md +375 -0
  382. package/cli-tool/components/commands/utilities/check-file.md +53 -0
  383. package/cli-tool/components/commands/utilities/clean-branches.md +243 -0
  384. package/cli-tool/components/commands/utilities/clean.md +1 -0
  385. package/cli-tool/components/commands/utilities/code-permutation-tester.md +341 -0
  386. package/cli-tool/components/commands/utilities/code-review.md +70 -0
  387. package/cli-tool/components/commands/utilities/code-to-task.md +583 -0
  388. package/cli-tool/components/commands/utilities/context-prime.md +1 -0
  389. package/cli-tool/components/commands/utilities/debug-error.md +121 -0
  390. package/cli-tool/components/commands/utilities/directory-deep-dive.md +34 -0
  391. package/cli-tool/components/commands/utilities/explain-code.md +194 -0
  392. package/cli-tool/components/commands/utilities/fix-issue.md +85 -0
  393. package/cli-tool/components/commands/utilities/generate-linear-worklog.md +113 -0
  394. package/cli-tool/components/commands/utilities/git-status.md +39 -0
  395. package/cli-tool/components/commands/utilities/initref.md +3 -0
  396. package/cli-tool/components/commands/utilities/prime.md +41 -0
  397. package/cli-tool/components/commands/utilities/refactor-code.md +116 -0
  398. package/cli-tool/components/commands/utilities/ultra-think.md +153 -0
  399. package/cli-tool/components/hooks/HOOK_PATTERNS_COMPRESSED.json +1 -0
  400. package/cli-tool/components/hooks/automation/build-on-change.json +16 -0
  401. package/cli-tool/components/hooks/automation/dependency-checker.json +16 -0
  402. package/cli-tool/components/hooks/automation/deployment-health-monitor.json +29 -0
  403. package/cli-tool/components/hooks/automation/discord-detailed-notifications.json +26 -0
  404. package/cli-tool/components/hooks/automation/discord-error-notifications.json +37 -0
  405. package/cli-tool/components/hooks/automation/discord-notifications.json +25 -0
  406. package/cli-tool/components/hooks/automation/simple-notifications.json +16 -0
  407. package/cli-tool/components/hooks/automation/slack-detailed-notifications.json +26 -0
  408. package/cli-tool/components/hooks/automation/slack-error-notifications.json +37 -0
  409. package/cli-tool/components/hooks/automation/slack-notifications.json +25 -0
  410. package/cli-tool/components/hooks/automation/telegram-detailed-notifications.json +26 -0
  411. package/cli-tool/components/hooks/automation/telegram-error-notifications.json +37 -0
  412. package/cli-tool/components/hooks/automation/telegram-notifications.json +25 -0
  413. package/cli-tool/components/hooks/automation/vercel-auto-deploy.json +17 -0
  414. package/cli-tool/components/hooks/automation/vercel-environment-sync.json +29 -0
  415. package/cli-tool/components/hooks/development-tools/change-tracker.json +25 -0
  416. package/cli-tool/components/hooks/development-tools/command-logger.json +16 -0
  417. package/cli-tool/components/hooks/development-tools/file-backup.json +16 -0
  418. package/cli-tool/components/hooks/development-tools/lint-on-save.json +16 -0
  419. package/cli-tool/components/hooks/development-tools/nextjs-code-quality-enforcer.json +17 -0
  420. package/cli-tool/components/hooks/development-tools/smart-formatting.json +16 -0
  421. package/cli-tool/components/hooks/git-workflow/auto-git-add.json +16 -0
  422. package/cli-tool/components/hooks/git-workflow/smart-commit.json +25 -0
  423. package/cli-tool/components/hooks/performance/performance-budget-guard.json +27 -0
  424. package/cli-tool/components/hooks/performance/performance-monitor.json +27 -0
  425. package/cli-tool/components/hooks/post-tool/format-javascript-files.json +16 -0
  426. package/cli-tool/components/hooks/post-tool/format-python-files.json +16 -0
  427. package/cli-tool/components/hooks/post-tool/git-add-changes.json +25 -0
  428. package/cli-tool/components/hooks/post-tool/run-tests-after-changes.json +16 -0
  429. package/cli-tool/components/hooks/pre-tool/backup-before-edit.json +16 -0
  430. package/cli-tool/components/hooks/pre-tool/notify-before-bash.json +16 -0
  431. package/cli-tool/components/hooks/security/file-protection.json +16 -0
  432. package/cli-tool/components/hooks/security/security-scanner.json +16 -0
  433. package/cli-tool/components/hooks/testing/test-runner.json +16 -0
  434. package/cli-tool/components/mcps/browser_automation/browser-use-mcp-server.json +20 -0
  435. package/cli-tool/components/mcps/browser_automation/browsermcp.json +9 -0
  436. package/cli-tool/components/mcps/browser_automation/mcp-server-browserbase.json +14 -0
  437. package/cli-tool/components/mcps/browser_automation/mcp-server-playwright.json +9 -0
  438. package/cli-tool/components/mcps/browser_automation/playwright-mcp-server.json +9 -0
  439. package/cli-tool/components/mcps/browser_automation/playwright-mcp.json +11 -0
  440. package/cli-tool/components/mcps/database/mysql-integration.json +12 -0
  441. package/cli-tool/components/mcps/database/postgresql-integration.json +12 -0
  442. package/cli-tool/components/mcps/database/supabase.json +17 -0
  443. package/cli-tool/components/mcps/deepgraph/deepgraph-nextjs.json +13 -0
  444. package/cli-tool/components/mcps/deepgraph/deepgraph-react.json +13 -0
  445. package/cli-tool/components/mcps/deepgraph/deepgraph-typescript.json +13 -0
  446. package/cli-tool/components/mcps/deepgraph/deepgraph-vue.json +13 -0
  447. package/cli-tool/components/mcps/devtools/circleci.json +13 -0
  448. package/cli-tool/components/mcps/devtools/context7.json +9 -0
  449. package/cli-tool/components/mcps/devtools/firefly-mcp.json +13 -0
  450. package/cli-tool/components/mcps/devtools/ios-simulator-mcp.json +9 -0
  451. package/cli-tool/components/mcps/devtools/just-mcp.json +9 -0
  452. package/cli-tool/components/mcps/devtools/leetcode.json +8 -0
  453. package/cli-tool/components/mcps/devtools/mcp-server-atlassian-bitbucket.json +9 -0
  454. package/cli-tool/components/mcps/devtools/mcp-server-trello.json +12 -0
  455. package/cli-tool/components/mcps/filesystem/filesystem-access.json +13 -0
  456. package/cli-tool/components/mcps/integration/github-integration.json +12 -0
  457. package/cli-tool/components/mcps/integration/memory-integration.json +9 -0
  458. package/cli-tool/components/mcps/marketing/facebook-ads-mcp-server.json +13 -0
  459. package/cli-tool/components/mcps/marketing/google-ads-mcp-server.json +11 -0
  460. package/cli-tool/components/mcps/web/web-fetch.json +9 -0
  461. package/cli-tool/components/sandbox/README.md +169 -0
  462. package/cli-tool/components/sandbox/e2b/.env.example +10 -0
  463. package/cli-tool/components/sandbox/e2b/SANDBOX_DEBUGGING.md +203 -0
  464. package/cli-tool/components/sandbox/e2b/claude-code-sandbox.md +110 -0
  465. package/cli-tool/components/sandbox/e2b/e2b-launcher.py +355 -0
  466. package/cli-tool/components/sandbox/e2b/e2b-monitor.py +229 -0
  467. package/cli-tool/components/sandbox/e2b/requirements.txt +1 -0
  468. package/cli-tool/components/settings/api/bedrock-configuration.json +7 -0
  469. package/cli-tool/components/settings/api/corporate-proxy.json +7 -0
  470. package/cli-tool/components/settings/api/custom-headers.json +6 -0
  471. package/cli-tool/components/settings/api/vertex-configuration.json +8 -0
  472. package/cli-tool/components/settings/authentication/api-key-helper.json +7 -0
  473. package/cli-tool/components/settings/authentication/force-claudeai-login.json +4 -0
  474. package/cli-tool/components/settings/authentication/force-console-login.json +4 -0
  475. package/cli-tool/components/settings/cleanup/retention-7-days.json +4 -0
  476. package/cli-tool/components/settings/cleanup/retention-90-days.json +4 -0
  477. package/cli-tool/components/settings/environment/bash-timeouts.json +8 -0
  478. package/cli-tool/components/settings/environment/development-utils.json +8 -0
  479. package/cli-tool/components/settings/environment/performance-optimization.json +8 -0
  480. package/cli-tool/components/settings/environment/privacy-focused.json +10 -0
  481. package/cli-tool/components/settings/global/aws-credentials.json +5 -0
  482. package/cli-tool/components/settings/global/custom-model.json +7 -0
  483. package/cli-tool/components/settings/global/git-commit-settings.json +4 -0
  484. package/cli-tool/components/settings/mcp/disable-risky-servers.json +8 -0
  485. package/cli-tool/components/settings/mcp/enable-all-project-servers.json +4 -0
  486. package/cli-tool/components/settings/mcp/enable-specific-servers.json +8 -0
  487. package/cli-tool/components/settings/mcp/mcp-timeouts.json +8 -0
  488. package/cli-tool/components/settings/model/use-haiku.json +4 -0
  489. package/cli-tool/components/settings/model/use-sonnet.json +4 -0
  490. package/cli-tool/components/settings/permissions/additional-directories.json +11 -0
  491. package/cli-tool/components/settings/permissions/allow-git-operations.json +14 -0
  492. package/cli-tool/components/settings/permissions/allow-npm-commands.json +11 -0
  493. package/cli-tool/components/settings/permissions/deny-sensitive-files.json +11 -0
  494. package/cli-tool/components/settings/permissions/development-mode.json +31 -0
  495. package/cli-tool/components/settings/permissions/read-only-mode.json +18 -0
  496. package/cli-tool/components/settings/statusline/asset-pipeline-controller-statusline.json +7 -0
  497. package/cli-tool/components/settings/statusline/bug-circus-statusline.json +7 -0
  498. package/cli-tool/components/settings/statusline/code-casino-statusline.json +7 -0
  499. package/cli-tool/components/settings/statusline/code-spaceship-statusline.json +7 -0
  500. package/cli-tool/components/settings/statusline/colorful-statusline.json +7 -0
  501. package/cli-tool/components/settings/statusline/command-statusline.json +8 -0
  502. package/cli-tool/components/settings/statusline/context-monitor.json +7 -0
  503. package/cli-tool/components/settings/statusline/context-monitor.py +236 -0
  504. package/cli-tool/components/settings/statusline/data-ocean-statusline.json +7 -0
  505. package/cli-tool/components/settings/statusline/emotion-theater-statusline.json +7 -0
  506. package/cli-tool/components/settings/statusline/game-performance-monitor-statusline.json +7 -0
  507. package/cli-tool/components/settings/statusline/git-branch-statusline.json +7 -0
  508. package/cli-tool/components/settings/statusline/minimal-statusline.json +7 -0
  509. package/cli-tool/components/settings/statusline/multiplatform-build-status-statusline.json +7 -0
  510. package/cli-tool/components/settings/statusline/productivity-rainbow-statusline.json +7 -0
  511. package/cli-tool/components/settings/statusline/programmer-tamagotchi-statusline.json +7 -0
  512. package/cli-tool/components/settings/statusline/programming-fitness-tracker-statusline.json +7 -0
  513. package/cli-tool/components/settings/statusline/project-info-statusline.json +7 -0
  514. package/cli-tool/components/settings/statusline/rpg-status-bar-statusline.json +7 -0
  515. package/cli-tool/components/settings/statusline/time-statusline.json +7 -0
  516. package/cli-tool/components/settings/statusline/unity-project-dashboard-statusline.json +7 -0
  517. package/cli-tool/components/settings/statusline/vercel-deployment-monitor.json +7 -0
  518. package/cli-tool/components/settings/statusline/vercel-error-alert-system.json +7 -0
  519. package/cli-tool/components/settings/statusline/vercel-multi-env-status.json +7 -0
  520. package/cli-tool/components/settings/statusline/virtual-code-garden-statusline.json +7 -0
  521. package/cli-tool/components/settings/statusline/zero-config-deployment-monitor.json +7 -0
  522. package/cli-tool/components/settings/telemetry/custom-telemetry.json +7 -0
  523. package/cli-tool/components/settings/telemetry/disable-telemetry.json +6 -0
  524. package/cli-tool/components/settings/telemetry/enable-telemetry.json +6 -0
  525. package/cli-tool/docs_to_claude/ANALYTICS_STATE_DETECTION.md +183 -0
  526. package/cli-tool/docs_to_claude/ARCHITECTURE.md +472 -0
  527. package/cli-tool/docs_to_claude/BLOG_WRITING_GUIDE.md +438 -0
  528. package/cli-tool/docs_to_claude/CLAUDE_DATA_STRUCTURE.md +400 -0
  529. package/cli-tool/docs_to_claude/COMMANDS_GUIDE.md +909 -0
  530. package/cli-tool/docs_to_claude/CONVERSATION_STATE_IMPROVEMENTS.md +154 -0
  531. package/cli-tool/docs_to_claude/DEBUG_TYPING_DETECTION.md +95 -0
  532. package/cli-tool/docs_to_claude/DOWNLOAD_TRACKING.md +291 -0
  533. package/cli-tool/docs_to_claude/ENHANCED_STATE_DETECTION.md +122 -0
  534. package/cli-tool/docs_to_claude/HEALTH_CHECK_IMPLEMENTATION.md +135 -0
  535. package/cli-tool/docs_to_claude/HOOKS_GUIDE.md +1249 -0
  536. package/cli-tool/docs_to_claude/STATUSLINE_GUIDE.md +1123 -0
  537. package/cli-tool/docs_to_claude/SUBAGENTS_GUIDE.md +566 -0
  538. package/cli-tool/docs_to_claude/SUB_AGENTS.md +329 -0
  539. package/cli-tool/jest.config.js +84 -0
  540. package/cli-tool/package-lock.json +5471 -0
  541. package/cli-tool/package.json +95 -0
  542. package/{src → cli-tool/src}/analytics-web/components/ActivityHeatmap.js +50 -6
  543. package/{src → cli-tool/src}/analytics-web/components/DashboardPage.js +4 -0
  544. package/{src → cli-tool/src}/analytics-web/services/DataService.js +7 -0
  545. package/{src → cli-tool/src}/analytics.js +67 -20
  546. package/{src → cli-tool/src}/index.js +526 -8
  547. package/cli-tool/src/sandbox-server.js +555 -0
  548. package/cli-tool/src/test-activity-data.json +1094 -0
  549. package/cli-tool/templates/common/.claude/commands/git-workflow.md +239 -0
  550. package/cli-tool/templates/common/.claude/commands/project-setup.md +316 -0
  551. package/cli-tool/templates/common/.mcp.json +41 -0
  552. package/cli-tool/templates/common/CLAUDE.md +109 -0
  553. package/cli-tool/templates/common/README.md +96 -0
  554. package/cli-tool/templates/go/.mcp.json +78 -0
  555. package/cli-tool/templates/go/README.md +25 -0
  556. package/cli-tool/templates/javascript-typescript/.claude/commands/api-endpoint.md +51 -0
  557. package/cli-tool/templates/javascript-typescript/.claude/commands/debug.md +52 -0
  558. package/cli-tool/templates/javascript-typescript/.claude/commands/lint.md +48 -0
  559. package/cli-tool/templates/javascript-typescript/.claude/commands/npm-scripts.md +48 -0
  560. package/cli-tool/templates/javascript-typescript/.claude/commands/refactor.md +55 -0
  561. package/cli-tool/templates/javascript-typescript/.claude/commands/test.md +61 -0
  562. package/cli-tool/templates/javascript-typescript/.claude/commands/typescript-migrate.md +51 -0
  563. package/cli-tool/templates/javascript-typescript/.claude/settings.json +142 -0
  564. package/cli-tool/templates/javascript-typescript/.mcp.json +80 -0
  565. package/cli-tool/templates/javascript-typescript/CLAUDE.md +185 -0
  566. package/cli-tool/templates/javascript-typescript/README.md +259 -0
  567. package/cli-tool/templates/javascript-typescript/examples/angular-app/.claude/commands/components.md +63 -0
  568. package/cli-tool/templates/javascript-typescript/examples/angular-app/.claude/commands/services.md +62 -0
  569. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/api-endpoint.md +46 -0
  570. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/database.md +56 -0
  571. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/middleware.md +61 -0
  572. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/route.md +57 -0
  573. package/cli-tool/templates/javascript-typescript/examples/node-api/CLAUDE.md +102 -0
  574. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/component.md +29 -0
  575. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/hooks.md +44 -0
  576. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/state-management.md +45 -0
  577. package/cli-tool/templates/javascript-typescript/examples/react-app/CLAUDE.md +81 -0
  578. package/cli-tool/templates/javascript-typescript/examples/react-app/agents/react-performance-optimization.md +530 -0
  579. package/cli-tool/templates/javascript-typescript/examples/react-app/agents/react-state-management.md +295 -0
  580. package/cli-tool/templates/javascript-typescript/examples/vue-app/.claude/commands/components.md +46 -0
  581. package/cli-tool/templates/javascript-typescript/examples/vue-app/.claude/commands/composables.md +51 -0
  582. package/cli-tool/templates/python/.claude/commands/lint.md +111 -0
  583. package/cli-tool/templates/python/.claude/commands/test.md +73 -0
  584. package/cli-tool/templates/python/.claude/settings.json +153 -0
  585. package/cli-tool/templates/python/.mcp.json +78 -0
  586. package/cli-tool/templates/python/CLAUDE.md +276 -0
  587. package/cli-tool/templates/python/examples/django-app/.claude/commands/admin.md +264 -0
  588. package/cli-tool/templates/python/examples/django-app/.claude/commands/django-model.md +124 -0
  589. package/cli-tool/templates/python/examples/django-app/.claude/commands/views.md +222 -0
  590. package/cli-tool/templates/python/examples/django-app/CLAUDE.md +313 -0
  591. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/api-endpoints.md +513 -0
  592. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/auth.md +775 -0
  593. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/database.md +657 -0
  594. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/deployment.md +160 -0
  595. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/testing.md +927 -0
  596. package/cli-tool/templates/python/examples/fastapi-app/CLAUDE.md +229 -0
  597. package/cli-tool/templates/python/examples/flask-app/.claude/commands/app-factory.md +384 -0
  598. package/cli-tool/templates/python/examples/flask-app/.claude/commands/blueprint.md +243 -0
  599. package/cli-tool/templates/python/examples/flask-app/.claude/commands/database.md +410 -0
  600. package/cli-tool/templates/python/examples/flask-app/.claude/commands/deployment.md +620 -0
  601. package/cli-tool/templates/python/examples/flask-app/.claude/commands/flask-route.md +217 -0
  602. package/cli-tool/templates/python/examples/flask-app/.claude/commands/testing.md +559 -0
  603. package/cli-tool/templates/python/examples/flask-app/CLAUDE.md +391 -0
  604. package/cli-tool/templates/ruby/.claude/commands/model.md +360 -0
  605. package/cli-tool/templates/ruby/.claude/commands/test.md +480 -0
  606. package/cli-tool/templates/ruby/.claude/settings.json +146 -0
  607. package/cli-tool/templates/ruby/.mcp.json +83 -0
  608. package/cli-tool/templates/ruby/CLAUDE.md +284 -0
  609. package/cli-tool/templates/ruby/examples/rails-app/.claude/commands/authentication.md +490 -0
  610. package/cli-tool/templates/ruby/examples/rails-app/CLAUDE.md +376 -0
  611. package/cli-tool/templates/rust/.mcp.json +78 -0
  612. package/cli-tool/templates/rust/README.md +26 -0
  613. package/cli-tool/test-commands.sh +85 -0
  614. package/cli-tool/test-detailed.sh +267 -0
  615. package/docs/CNAME +1 -0
  616. package/docs/README.md +49 -0
  617. package/docs/_config.yml +43 -0
  618. package/docs/blog/assets/aitmpl-nextjs-search.png +0 -0
  619. package/docs/blog/assets/aitmpl-supabase-search.png +0 -0
  620. package/docs/blog/assets/nextjs-vercel-claude-code-templates-cover.png +0 -0
  621. package/docs/blog/assets/supabase-claude-code-templates-cover.png +0 -0
  622. package/docs/blog/e2b-claude-code-sandbox/index.html +1061 -0
  623. package/docs/blog/index.html +239 -0
  624. package/docs/blog/nextjs-vercel-claude-code-integration/index.html +1021 -0
  625. package/docs/blog/supabase-claude-code-integration/index.html +837 -0
  626. package/docs/components-metadata.json +303 -0
  627. package/docs/components.json +4072 -0
  628. package/docs/css/blog.css +821 -0
  629. package/docs/css/stack-page.css +776 -0
  630. package/docs/css/styles.css +4480 -0
  631. package/docs/css/trending.css +971 -0
  632. package/docs/css/workflows-modal.css +739 -0
  633. package/docs/css/workflows.css +1234 -0
  634. package/docs/download-stats.html +514 -0
  635. package/docs/index.html +634 -0
  636. package/docs/js/carousel.js +177 -0
  637. package/docs/js/cart-manager.js +529 -0
  638. package/docs/js/data-loader.js +626 -0
  639. package/docs/js/generate-search-data.js +82 -0
  640. package/docs/js/index-events.js +1707 -0
  641. package/docs/js/modal-helpers.js +334 -0
  642. package/docs/js/script.js +2167 -0
  643. package/docs/js/search-functionality.js +992 -0
  644. package/docs/js/stack-router.js +561 -0
  645. package/docs/js/trending.js +493 -0
  646. package/docs/js/utils.js +43 -0
  647. package/docs/js/workflows-events.js +1146 -0
  648. package/docs/js/workflows.js +627 -0
  649. package/docs/sandbox-interface.html +1406 -0
  650. package/docs/static/img/logo.svg +23 -0
  651. package/docs/trending-data.json +579 -0
  652. package/docs/trending.html +179 -0
  653. package/docs/workflows.html +379 -0
  654. package/docu/README.md +41 -0
  655. package/docu/docs/analytics/agent-chats-manager.md +33 -0
  656. package/docu/docs/analytics/analysis-tools.md +54 -0
  657. package/docu/docs/analytics/overview.md +48 -0
  658. package/docu/docs/analytics/real-time-monitoring.md +16 -0
  659. package/docu/docs/cli-options.md +90 -0
  660. package/docu/docs/components/agents.md +296 -0
  661. package/docu/docs/components/commands.md +426 -0
  662. package/docu/docs/components/discord-notifications.md +59 -0
  663. package/docu/docs/components/hooks.md +381 -0
  664. package/docu/docs/components/mcps.md +510 -0
  665. package/docu/docs/components/overview.md +287 -0
  666. package/docu/docs/components/settings.md +223 -0
  667. package/docu/docs/components/slack-notifications.md +67 -0
  668. package/docu/docs/components/telegram-notifications.md +73 -0
  669. package/docu/docs/contributing.md +11 -0
  670. package/docu/docs/health-check/overview.md +33 -0
  671. package/docu/docs/intro.md +109 -0
  672. package/docu/docs/project-setup/automation-hooks.md +14 -0
  673. package/docu/docs/project-setup/framework-specific-setup.md +86 -0
  674. package/docu/docs/project-setup/interactive-setup.md +59 -0
  675. package/docu/docs/project-setup/mcp-integration.md +17 -0
  676. package/docu/docs/project-setup/supported-languages-frameworks.md +15 -0
  677. package/docu/docs/project-setup/what-gets-installed.md +176 -0
  678. package/docu/docs/safety-features.md +13 -0
  679. package/docu/docs/support.md +13 -0
  680. package/docu/docs/usage-examples/advanced-options.md +87 -0
  681. package/docu/docs/usage-examples/alternative-commands.md +31 -0
  682. package/docu/docs/usage-examples/framework-specific-quick-setup.md +47 -0
  683. package/docu/docs/usage-examples/interactive-setup.md +16 -0
  684. package/docu/docusaurus.config.ts +163 -0
  685. package/docu/package-lock.json +16185 -0
  686. package/docu/package.json +47 -0
  687. package/docu/sidebars.ts +85 -0
  688. package/docu/src/components/HomepageFeatures/index.tsx +82 -0
  689. package/docu/src/components/HomepageFeatures/styles.module.css +131 -0
  690. package/docu/src/css/custom.css +475 -0
  691. package/docu/src/pages/index.module.css +109 -0
  692. package/docu/src/pages/index.tsx +65 -0
  693. package/docu/src/pages/markdown-page.md +7 -0
  694. package/docu/static/img/favicon.ico +0 -0
  695. package/docu/static/img/logo.svg +23 -0
  696. package/docu/tsconfig.json +8 -0
  697. package/generate_components_json.py +199 -0
  698. package/package.json +19 -86
  699. package/social-preview.png +0 -0
  700. package/vercel.json +75 -0
  701. /package/{src → cli-tool/src}/agents.js +0 -0
  702. /package/{src → cli-tool/src}/analytics/core/AgentAnalyzer.js +0 -0
  703. /package/{src → cli-tool/src}/analytics/core/ConversationAnalyzer.js +0 -0
  704. /package/{src → cli-tool/src}/analytics/core/FileWatcher.js +0 -0
  705. /package/{src → cli-tool/src}/analytics/core/ProcessDetector.js +0 -0
  706. /package/{src → cli-tool/src}/analytics/core/SessionAnalyzer.js +0 -0
  707. /package/{src → cli-tool/src}/analytics/core/StateCalculator.js +0 -0
  708. /package/{src → cli-tool/src}/analytics/data/DataCache.js +0 -0
  709. /package/{src → cli-tool/src}/analytics/notifications/NotificationManager.js +0 -0
  710. /package/{src → cli-tool/src}/analytics/notifications/WebSocketServer.js +0 -0
  711. /package/{src → cli-tool/src}/analytics/utils/PerformanceMonitor.js +0 -0
  712. /package/{src → cli-tool/src}/analytics-web/FRONT_ARCHITECTURE.md +0 -0
  713. /package/{src → cli-tool/src}/analytics-web/assets/js/main.js.deprecated +0 -0
  714. /package/{src → cli-tool/src}/analytics-web/chats_mobile.html +0 -0
  715. /package/{src → cli-tool/src}/analytics-web/components/AgentAnalytics.js +0 -0
  716. /package/{src → cli-tool/src}/analytics-web/components/App.js +0 -0
  717. /package/{src → cli-tool/src}/analytics-web/components/Charts.js +0 -0
  718. /package/{src → cli-tool/src}/analytics-web/components/ConversationTable.js +0 -0
  719. /package/{src → cli-tool/src}/analytics-web/components/HeaderComponent.js +0 -0
  720. /package/{src → cli-tool/src}/analytics-web/components/SessionTimer.js +0 -0
  721. /package/{src → cli-tool/src}/analytics-web/components/Sidebar.js +0 -0
  722. /package/{src → cli-tool/src}/analytics-web/components/ToolDisplay.js +0 -0
  723. /package/{src → cli-tool/src}/analytics-web/index.html +0 -0
  724. /package/{src → cli-tool/src}/analytics-web/index.html.original +0 -0
  725. /package/{src → cli-tool/src}/analytics-web/services/StateService.js +0 -0
  726. /package/{src → cli-tool/src}/analytics-web/services/WebSocketService.js +0 -0
  727. /package/{src → cli-tool/src}/chats-mobile.js +0 -0
  728. /package/{src → cli-tool/src}/claude-api-proxy.js +0 -0
  729. /package/{src → cli-tool/src}/command-scanner.js +0 -0
  730. /package/{src → cli-tool/src}/command-stats.js +0 -0
  731. /package/{src → cli-tool/src}/console-bridge.js +0 -0
  732. /package/{src → cli-tool/src}/file-operations.js +0 -0
  733. /package/{src → cli-tool/src}/health-check.js +0 -0
  734. /package/{src → cli-tool/src}/hook-scanner.js +0 -0
  735. /package/{src → cli-tool/src}/hook-stats.js +0 -0
  736. /package/{src → cli-tool/src}/mcp-stats.js +0 -0
  737. /package/{src → cli-tool/src}/prompts.js +0 -0
  738. /package/{src → cli-tool/src}/sdk/global-agent-manager.js +0 -0
  739. /package/{src → cli-tool/src}/templates.js +0 -0
  740. /package/{src → cli-tool/src}/test-console-bridge.js +0 -0
  741. /package/{src → cli-tool/src}/tracking-service.js +0 -0
  742. /package/{src → cli-tool/src}/utils.js +0 -0
  743. /package/{src/analytics.log → docu/static/.nojekyll} +0 -0
@@ -0,0 +1,4480 @@
1
+ /* Terminal theme CSS based on Claude Code Analytics dashboard */
2
+ :root {
3
+ /* Dark theme colors (terminal style) */
4
+ --bg-primary: #0d1117;
5
+ --bg-secondary: #161b22;
6
+ --bg-tertiary: #21262d;
7
+ --border-primary: #30363d;
8
+ --border-secondary: #21262d;
9
+ --border-color: #30363d;
10
+ --text-primary: #c9d1d9;
11
+ --text-secondary: #7d8590;
12
+ --text-accent: #d57455;
13
+ --text-success: #3fb950;
14
+ --text-warning: #f97316;
15
+ --text-error: #f85149;
16
+ --text-info: #a5d6ff;
17
+ --accent-color: #d97706;
18
+ --shadow-primary: rgba(0, 0, 0, 0.4);
19
+ --shadow-secondary: rgba(1, 4, 9, 0.85);
20
+ }
21
+
22
+ /* Reset and base styles */
23
+ * {
24
+ margin: 0;
25
+ padding: 0;
26
+ box-sizing: border-box;
27
+ }
28
+
29
+ body {
30
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
31
+ background: var(--bg-primary);
32
+ color: var(--text-primary);
33
+ min-height: 100vh;
34
+ line-height: 1.4;
35
+ transition: background-color 0.3s ease, color 0.3s ease;
36
+ }
37
+
38
+ .container {
39
+ max-width: 1400px;
40
+ margin: 0 auto;
41
+ padding: 0 20px;
42
+ }
43
+
44
+ /* Header */
45
+ .header {
46
+ background: var(--bg-secondary);
47
+ border-bottom: 1px solid var(--border-primary);
48
+ position: sticky;
49
+ top: 0;
50
+ z-index: 100;
51
+ }
52
+
53
+ .header-content {
54
+ display: flex;
55
+ justify-content: space-between;
56
+ align-items: flex-start;
57
+ padding: 1rem 0;
58
+ gap: 1rem;
59
+ }
60
+
61
+ .header .terminal-header {
62
+ border-bottom: none;
63
+ padding-bottom: 0;
64
+ margin-bottom: 0;
65
+ flex: 1;
66
+ }
67
+
68
+ .header .ascii-title {
69
+ margin-bottom: 0.5rem;
70
+ }
71
+
72
+ .header .ascii-art {
73
+ font-size: clamp(0.4rem, 0.8vw, 0.6rem);
74
+ line-height: 1;
75
+ color: var(--text-accent);
76
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
77
+ margin: 0;
78
+ overflow: visible;
79
+ white-space: pre;
80
+ text-align: left;
81
+ width: 100%;
82
+ }
83
+
84
+ .header .terminal-subtitle {
85
+ display: block;
86
+ color: var(--text-secondary);
87
+ font-size: 0.8rem;
88
+ margin: 0;
89
+ text-align: left;
90
+ }
91
+
92
+ .header .status-dot {
93
+ display: inline-block;
94
+ margin-right: 0.5rem;
95
+ }
96
+
97
+ .header-actions {
98
+ display: flex;
99
+ gap: 1rem;
100
+ align-items: center;
101
+ }
102
+
103
+ .github-link, .header-btn {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 0.4rem;
107
+ color: var(--text-primary);
108
+ text-decoration: none;
109
+ padding: 0.4rem 0.8rem;
110
+ border-radius: 6px;
111
+ background: var(--bg-tertiary);
112
+ border: 1px solid var(--border-primary);
113
+ transition: all 0.2s ease;
114
+ font-size: 0.85rem;
115
+ font-weight: normal;
116
+ }
117
+
118
+ .github-link:hover, .header-btn:hover {
119
+ background: var(--bg-primary);
120
+ border-color: var(--border-secondary);
121
+ transform: translateY(-1px);
122
+ }
123
+
124
+ /* Terminal main content */
125
+ .terminal {
126
+ max-width: 1400px;
127
+ margin: 0 auto;
128
+ padding: 20px;
129
+ }
130
+
131
+ .terminal-header {
132
+ border-bottom: 1px solid var(--border-primary);
133
+ padding-bottom: 20px;
134
+ margin-bottom: 30px;
135
+ position: relative;
136
+ }
137
+
138
+ .ascii-title {
139
+ margin-bottom: 20px;
140
+ }
141
+
142
+ .ascii-art {
143
+ color: var(--text-accent);
144
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
145
+ font-size: clamp(0.3rem, 0.8vw, 0.7rem);
146
+ line-height: 1.1;
147
+ margin: 0;
148
+ overflow-x: auto;
149
+ white-space: pre;
150
+ text-align: left;
151
+ }
152
+
153
+ .terminal-title {
154
+ color: var(--text-accent);
155
+ font-size: 1.25rem;
156
+ font-weight: normal;
157
+ display: flex;
158
+ align-items: center;
159
+ gap: 8px;
160
+ justify-content: center;
161
+ }
162
+
163
+ .status-dot {
164
+ width: 8px;
165
+ height: 8px;
166
+ border-radius: 50%;
167
+ background: var(--text-success);
168
+ animation: pulse 2s infinite;
169
+ flex-shrink: 0;
170
+ }
171
+
172
+ @keyframes pulse {
173
+ 0%, 100% { opacity: 1; }
174
+ 50% { opacity: 0.6; }
175
+ }
176
+
177
+ .terminal-subtitle {
178
+ color: var(--text-secondary);
179
+ font-size: 0.875rem;
180
+ display: flex;
181
+ align-items: center;
182
+ justify-content: center;
183
+ gap: 8px;
184
+ }
185
+
186
+ /* Command blocks */
187
+ .command-block {
188
+ background: var(--bg-secondary);
189
+ border: 1px solid var(--border-primary);
190
+ border-radius: 8px;
191
+ padding: 20px;
192
+ margin-bottom: 20px;
193
+ }
194
+
195
+ .command-label {
196
+ color: var(--text-accent);
197
+ font-size: 1rem;
198
+ font-weight: normal;
199
+ margin-bottom: 8px;
200
+ }
201
+
202
+ .command-description {
203
+ color: var(--text-secondary);
204
+ font-size: 0.875rem;
205
+ margin-bottom: 16px;
206
+ }
207
+
208
+ .command-line {
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 1rem;
212
+ background: var(--bg-tertiary);
213
+ border: 1px solid var(--border-secondary);
214
+ border-radius: 6px;
215
+ padding: 12px 16px;
216
+ }
217
+
218
+ .prompt {
219
+ color: var(--text-success);
220
+ font-weight: bold;
221
+ flex-shrink: 0;
222
+ }
223
+
224
+ .command {
225
+ flex: 1;
226
+ color: var(--text-primary);
227
+ font-family: inherit;
228
+ font-size: 0.875rem;
229
+ background: none;
230
+ border: none;
231
+ outline: none;
232
+ }
233
+
234
+ .copy-btn {
235
+ background: var(--text-info);
236
+ color: var(--bg-primary);
237
+ border: none;
238
+ padding: 6px 12px;
239
+ border-radius: 4px;
240
+ font-size: 0.75rem;
241
+ cursor: pointer;
242
+ transition: background 0.2s ease;
243
+ font-family: inherit;
244
+ }
245
+
246
+ .copy-btn:hover {
247
+ opacity: 0.8;
248
+ }
249
+
250
+ /* Stats section - Compact Badges */
251
+ .stats-section {
252
+ margin: 0.5rem 0 1rem 0;
253
+ text-align: center;
254
+ margin-top: -0.5rem;
255
+ }
256
+
257
+ .stats-badges {
258
+ display: flex;
259
+ justify-content: center;
260
+ align-items: center;
261
+ gap: 0.75rem;
262
+ flex-wrap: wrap;
263
+ padding: 0.5rem 0;
264
+ }
265
+
266
+ .stat-badge-link {
267
+ text-decoration: none;
268
+ transition: all 0.2s ease;
269
+ display: inline-block;
270
+ }
271
+
272
+ .stat-badge-link:hover {
273
+ transform: translateY(-2px);
274
+ filter: brightness(1.1);
275
+ }
276
+
277
+ .stat-badge {
278
+ height: 20px;
279
+ display: block;
280
+ transition: all 0.2s ease;
281
+ }
282
+
283
+ /* Steps section */
284
+ .steps-section {
285
+ margin-bottom: 40px;
286
+ }
287
+
288
+ .steps-grid {
289
+ display: grid;
290
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
291
+ gap: 16px;
292
+ margin-bottom: 20px;
293
+ }
294
+
295
+ .step-card {
296
+ background: var(--bg-secondary);
297
+ border: 1px solid var(--border-primary);
298
+ border-radius: 8px;
299
+ padding: 16px;
300
+ position: relative;
301
+ transition: all 0.3s ease;
302
+ display: flex;
303
+ flex-direction: column;
304
+ min-height: 140px;
305
+ }
306
+
307
+ .step-card:hover {
308
+ border-color: var(--text-accent);
309
+ box-shadow: 0 4px 12px var(--shadow-primary);
310
+ }
311
+
312
+ .step-number {
313
+ position: absolute;
314
+ top: -8px;
315
+ left: 16px;
316
+ background: var(--text-accent);
317
+ color: var(--bg-primary);
318
+ width: 26px;
319
+ height: 26px;
320
+ border-radius: 50%;
321
+ display: flex;
322
+ align-items: center;
323
+ justify-content: center;
324
+ font-size: 0.8rem;
325
+ font-weight: bold;
326
+ }
327
+
328
+ .step-content {
329
+ flex: 1;
330
+ display: flex;
331
+ flex-direction: column;
332
+ }
333
+
334
+ .step-content h3 {
335
+ color: var(--text-primary);
336
+ font-size: 1rem;
337
+ font-weight: normal;
338
+ margin-bottom: 6px;
339
+ margin-top: 8px;
340
+ }
341
+
342
+ .step-content p {
343
+ color: var(--text-secondary);
344
+ font-size: 0.8rem;
345
+ margin-bottom: 12px;
346
+ flex: 1;
347
+ line-height: 1.4;
348
+ }
349
+
350
+ .step-highlight {
351
+ background: var(--bg-tertiary);
352
+ border: 1px solid var(--border-secondary);
353
+ border-radius: 6px;
354
+ padding: 10px;
355
+ text-align: center;
356
+ margin-top: auto;
357
+ }
358
+
359
+ .step-examples {
360
+ margin-top: 1rem;
361
+ display: flex;
362
+ flex-direction: column;
363
+ gap: 0.5rem;
364
+ }
365
+
366
+ .step-example {
367
+ background: var(--bg-primary);
368
+ border: 1px solid var(--border-primary);
369
+ border-radius: 4px;
370
+ padding: 0.6rem 0.8rem;
371
+ font-size: 0.85rem;
372
+ transition: all 0.2s ease;
373
+ }
374
+
375
+ .step-example:hover {
376
+ border-color: var(--text-accent);
377
+ background: var(--bg-tertiary);
378
+ }
379
+
380
+ .step-example strong {
381
+ color: var(--text-accent);
382
+ font-weight: 600;
383
+ }
384
+
385
+ .command-line {
386
+ margin-top: auto;
387
+ }
388
+
389
+ .highlight-text {
390
+ color: var(--text-info);
391
+ font-size: 0.8rem;
392
+ }
393
+
394
+ .command-note {
395
+ color: var(--text-secondary);
396
+ font-style: italic;
397
+ margin-left: 10px;
398
+ }
399
+
400
+ /* Install and intro sections */
401
+ .intro-section,
402
+ .additional-tools {
403
+ margin-bottom: 30px;
404
+ }
405
+
406
+ /* Add New Template Card Styles */
407
+ /* Add template cards use same style as regular template cards */
408
+
409
+ /* Tools section */
410
+ .tools-grid {
411
+ display: grid;
412
+ grid-template-columns: repeat(4, 1fr);
413
+ gap: 20px;
414
+ margin-top: 20px;
415
+ }
416
+
417
+ @media (max-width: 1200px) {
418
+ .tools-grid {
419
+ grid-template-columns: repeat(2, 1fr);
420
+ }
421
+ }
422
+
423
+ .tool-card {
424
+ background: var(--bg-secondary);
425
+ border: 1px solid var(--border-primary);
426
+ border-radius: 8px;
427
+ padding: 20px;
428
+ transition: all 0.3s ease;
429
+ position: relative;
430
+ }
431
+
432
+ .tool-card .new-label {
433
+ position: absolute;
434
+ top: -8px;
435
+ right: 15px;
436
+ background: var(--accent-color);
437
+ color: white;
438
+ padding: 4px 8px;
439
+ border-radius: 12px;
440
+ font-size: 0.7rem;
441
+ font-weight: 600;
442
+ text-transform: uppercase;
443
+ letter-spacing: 0.5px;
444
+ }
445
+
446
+ .tool-card:hover {
447
+ border-color: var(--text-accent);
448
+ box-shadow: 0 4px 12px var(--shadow-primary);
449
+ }
450
+
451
+ .tool-icon {
452
+ font-size: 2rem;
453
+ margin-bottom: 12px;
454
+ }
455
+
456
+ .tool-card h3 {
457
+ color: var(--text-primary);
458
+ font-size: 1.1rem;
459
+ font-weight: normal;
460
+ margin-bottom: 8px;
461
+ }
462
+
463
+ .tool-card p {
464
+ color: var(--text-secondary);
465
+ font-size: 0.875rem;
466
+ margin-bottom: 16px;
467
+ line-height: 1.5;
468
+ }
469
+
470
+ /* Templates grid */
471
+ .templates-grid {
472
+ display: grid;
473
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
474
+ gap: 20px;
475
+ margin-bottom: 40px;
476
+ }
477
+
478
+ /* Template card */
479
+ .template-card {
480
+ background: var(--bg-secondary);
481
+ border: 1px solid var(--border-primary);
482
+ border-radius: 8px;
483
+ overflow: hidden;
484
+ transition: all 0.3s ease;
485
+ cursor: pointer;
486
+ position: relative;
487
+ height: 200px;
488
+ perspective: 1000px;
489
+ }
490
+
491
+ /* Download badge */
492
+ .download-badge {
493
+ position: absolute;
494
+ top: 8px;
495
+ right: 8px;
496
+ background: rgba(59, 185, 80, 0.1);
497
+ border: 1px solid var(--text-success);
498
+ color: var(--text-success);
499
+ padding: 4px 8px;
500
+ border-radius: 12px;
501
+ font-size: 11px;
502
+ font-weight: 500;
503
+ display: flex;
504
+ align-items: center;
505
+ gap: 4px;
506
+ z-index: 4;
507
+ backdrop-filter: blur(4px);
508
+ transition: all 0.3s ease;
509
+ }
510
+
511
+ .download-badge svg {
512
+ width: 12px;
513
+ height: 12px;
514
+ opacity: 0.8;
515
+ }
516
+
517
+ .download-badge:hover {
518
+ background: rgba(59, 185, 80, 0.2);
519
+ transform: scale(1.05);
520
+ }
521
+
522
+ .category-label {
523
+ position: absolute;
524
+ top: 8px;
525
+ left: 8px;
526
+ color: var(--text-accent);
527
+ padding: 4px 8px;
528
+ border-radius: 12px;
529
+ font-size: 10px;
530
+ font-weight: 600;
531
+ text-transform: uppercase;
532
+ letter-spacing: 0.5px;
533
+ opacity: 0.8;
534
+ transition: all 0.2s ease;
535
+ z-index: 3;
536
+ backdrop-filter: blur(4px);
537
+ }
538
+
539
+ .category-label:hover {
540
+ opacity: 1;
541
+ transform: scale(1.05);
542
+ }
543
+
544
+ /* Category sub-filters within unified-filter-bar */
545
+ .category-filter-row {
546
+ width: 100%;
547
+ border-top: 1px solid var(--border-secondary);
548
+ padding-top: 12px;
549
+ margin-top: 12px;
550
+ display: flex;
551
+ align-items: center;
552
+ gap: 12px;
553
+ flex-wrap: wrap;
554
+ }
555
+
556
+ .category-filter-label {
557
+ color: var(--text-secondary);
558
+ font-size: 13px;
559
+ font-weight: 500;
560
+ text-transform: uppercase;
561
+ letter-spacing: 0.5px;
562
+ }
563
+
564
+ .category-filter-buttons {
565
+ display: flex;
566
+ gap: 8px;
567
+ flex-wrap: wrap;
568
+ align-items: center;
569
+ }
570
+
571
+ .category-filter-btn {
572
+ background: rgba(48, 54, 61, 0.5);
573
+ border: 1px solid var(--border-secondary);
574
+ color: var(--text-secondary);
575
+ padding: 6px 12px;
576
+ border-radius: 6px;
577
+ font-size: 12px;
578
+ font-weight: 500;
579
+ cursor: pointer;
580
+ transition: all 0.2s ease;
581
+ text-transform: capitalize;
582
+ }
583
+
584
+ .category-filter-btn:hover {
585
+ background: rgba(213, 116, 85, 0.1);
586
+ border-color: var(--text-accent);
587
+ color: var(--text-accent);
588
+ }
589
+
590
+ .category-filter-btn.active {
591
+ background: rgba(213, 116, 85, 0.15);
592
+ border-color: var(--text-accent);
593
+ color: var(--text-accent);
594
+ font-weight: 600;
595
+ }
596
+
597
+ .template-card:hover {
598
+ border-color: var(--text-accent);
599
+ box-shadow: 0 4px 12px var(--shadow-primary);
600
+ }
601
+
602
+ .card-inner {
603
+ position: relative;
604
+ width: 100%;
605
+ height: 100%;
606
+ text-align: center;
607
+ transition: transform 0.6s;
608
+ transform-style: preserve-3d;
609
+ }
610
+
611
+ .template-card.flipped .card-inner {
612
+ transform: rotateY(180deg);
613
+ }
614
+
615
+ .card-front, .card-back {
616
+ position: absolute;
617
+ width: 100%;
618
+ height: 100%;
619
+ backface-visibility: hidden;
620
+ display: flex;
621
+ flex-direction: column;
622
+ justify-content: center;
623
+ align-items: center;
624
+ padding: 1.5rem;
625
+ }
626
+
627
+ .card-back {
628
+ transform: rotateY(180deg);
629
+ background: var(--bg-tertiary);
630
+ }
631
+
632
+ .framework-logo {
633
+ width: 64px;
634
+ height: 64px;
635
+ margin-bottom: 1rem;
636
+ border-radius: 8px;
637
+ display: flex;
638
+ align-items: center;
639
+ justify-content: center;
640
+ font-size: 2.5rem;
641
+ background: var(--bg-tertiary);
642
+ border: 1px solid var(--border-primary);
643
+ }
644
+
645
+ .framework-logo i {
646
+ font-size: 2.5rem;
647
+ }
648
+
649
+ .template-title {
650
+ font-size: 1.1rem;
651
+ font-weight: normal;
652
+ color: var(--text-primary);
653
+ margin-bottom: 0.5rem;
654
+ }
655
+
656
+ .template-description {
657
+ color: var(--text-secondary);
658
+ font-size: 0.8rem;
659
+ text-align: center;
660
+ }
661
+
662
+ .coming-soon {
663
+ opacity: 0.6;
664
+ pointer-events: none;
665
+ }
666
+
667
+ .coming-soon-badge {
668
+ position: absolute;
669
+ top: 1rem;
670
+ right: 1rem;
671
+ background: var(--text-warning);
672
+ color: var(--bg-primary);
673
+ padding: 0.25rem 0.75rem;
674
+ border-radius: 12px;
675
+ font-size: 0.7rem;
676
+ font-weight: normal;
677
+ }
678
+
679
+ /* Command display on card back */
680
+ .command-display {
681
+ text-align: center;
682
+ width: 100%;
683
+ padding: 0.1rem 0.6rem 0.3rem 0.6rem;
684
+ height: 100%;
685
+ display: flex;
686
+ flex-direction: column;
687
+ justify-content: space-between;
688
+ }
689
+
690
+ .command-display h3 {
691
+ font-size: 0.9rem;
692
+ margin: 0;
693
+ color: var(--text-accent);
694
+ font-weight: normal;
695
+ flex-shrink: 0;
696
+ line-height: 1;
697
+ padding-bottom: 0;
698
+ }
699
+
700
+ /* Command Code Container with Overlay */
701
+ .command-code-container {
702
+ position: relative;
703
+ flex: 1;
704
+ min-height: 85px;
705
+ margin: 0.2rem 0 0.1rem 0;
706
+ }
707
+
708
+ .command-code-container .command-code {
709
+ background: var(--bg-primary);
710
+ border: 1px solid var(--border-secondary);
711
+ padding: 6px;
712
+ border-radius: 6px;
713
+ font-family: 'Monaco', 'Menlo', monospace;
714
+ font-size: 0.8rem;
715
+ word-break: keep-all;
716
+ word-wrap: break-word;
717
+ color: var(--text-primary);
718
+ position: relative;
719
+ transition: all 0.2s ease;
720
+ height: 100%;
721
+ display: block;
722
+ text-align: center;
723
+ overflow-y: auto;
724
+ overflow-x: hidden;
725
+ line-height: 1.2;
726
+ white-space: pre-wrap;
727
+ hyphens: none;
728
+ }
729
+
730
+ .copy-overlay-btn {
731
+ position: absolute;
732
+ top: 0;
733
+ left: 0;
734
+ right: 0;
735
+ bottom: 0;
736
+ background: rgba(46, 160, 67, 0.9);
737
+ color: white;
738
+ border: none;
739
+ border-radius: 6px;
740
+ display: flex;
741
+ flex-direction: column;
742
+ align-items: center;
743
+ justify-content: center;
744
+ gap: 0.5rem;
745
+ font-size: 0.9rem;
746
+ font-weight: 600;
747
+ opacity: 0;
748
+ visibility: hidden;
749
+ transition: all 0.2s ease;
750
+ cursor: pointer;
751
+ backdrop-filter: blur(2px);
752
+ }
753
+
754
+ .command-code-container:hover .copy-overlay-btn {
755
+ opacity: 1;
756
+ visibility: visible;
757
+ }
758
+
759
+ .copy-overlay-btn:hover {
760
+ background: rgba(46, 160, 67, 0.95);
761
+ transform: scale(1.02);
762
+ }
763
+
764
+ .copy-overlay-btn svg {
765
+ filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
766
+ }
767
+
768
+ .action-buttons {
769
+ display: flex;
770
+ gap: 0.75rem;
771
+ justify-content: center;
772
+ flex-wrap: wrap;
773
+ }
774
+
775
+ .view-files-btn,
776
+ .copy-command-btn {
777
+ border: none;
778
+ padding: 6px 12px;
779
+ border-radius: 4px;
780
+ font-size: 0.75rem;
781
+ cursor: pointer;
782
+ transition: all 0.2s ease;
783
+ font-family: inherit;
784
+ flex: 1;
785
+ min-width: 80px;
786
+ font-weight: normal;
787
+ background: var(--bg-tertiary);
788
+ color: var(--text-secondary);
789
+ border: 1px solid var(--border-primary);
790
+ }
791
+
792
+ .view-files-btn:hover,
793
+ .copy-command-btn:hover {
794
+ background: var(--border-primary);
795
+ color: var(--text-primary);
796
+ transform: translateY(-1px);
797
+ }
798
+
799
+ /* Footer */
800
+ .footer {
801
+ background: var(--bg-secondary);
802
+ border-top: 1px solid var(--border-primary);
803
+ color: var(--text-secondary);
804
+ padding: 2rem 0 3rem 0;
805
+ margin-top: 2rem;
806
+ }
807
+
808
+ .footer-content {
809
+ display: flex;
810
+ justify-content: space-between;
811
+ align-items: flex-start;
812
+ flex-wrap: wrap;
813
+ gap: 2rem;
814
+ }
815
+
816
+ .footer-left {
817
+ flex: 1;
818
+ min-width: 300px;
819
+ }
820
+
821
+ .footer-right {
822
+ flex: 1;
823
+ text-align: center;
824
+ display: flex;
825
+ flex-direction: column;
826
+ align-items: center;
827
+ gap: 1rem;
828
+ margin-right: 4rem; /* Space to avoid cart button overlap */
829
+ }
830
+
831
+ .footer-ascii {
832
+ margin-bottom: 0.5rem;
833
+ }
834
+
835
+ .footer-ascii-art {
836
+ font-family: 'Courier New', monospace;
837
+ font-size: 8px;
838
+ line-height: 1;
839
+ color: var(--text-accent);
840
+ margin: 0;
841
+ white-space: pre;
842
+ overflow: hidden;
843
+ }
844
+
845
+ .footer-tagline {
846
+ color: var(--text-secondary);
847
+ font-size: 0.8rem;
848
+ margin: 0.5rem 0 0 0;
849
+ font-style: italic;
850
+ }
851
+
852
+ .footer-copyright {
853
+ color: var(--text-secondary);
854
+ font-size: 0.875rem;
855
+ margin: 0;
856
+ }
857
+
858
+ .footer-links {
859
+ display: flex;
860
+ gap: 1.5rem;
861
+ justify-content: center;
862
+ }
863
+
864
+ .footer-link {
865
+ display: flex;
866
+ align-items: center;
867
+ gap: 0.5rem;
868
+ color: var(--text-secondary);
869
+ text-decoration: none;
870
+ font-size: 0.875rem;
871
+ transition: color 0.2s ease;
872
+ }
873
+
874
+ .footer-link:hover {
875
+ color: var(--text-primary);
876
+ }
877
+
878
+ .footer-link svg {
879
+ flex-shrink: 0;
880
+ }
881
+
882
+ /* Loading and error states */
883
+ .loading {
884
+ text-align: center;
885
+ color: var(--text-secondary);
886
+ font-size: 1rem;
887
+ padding: 2rem;
888
+ grid-column: 1 / -1;
889
+ }
890
+
891
+ .loading::after {
892
+ content: '';
893
+ animation: dots 1.5s infinite;
894
+ }
895
+
896
+ @keyframes dots {
897
+ 0%, 20% { content: ''; }
898
+ 40% { content: '.'; }
899
+ 60% { content: '..'; }
900
+ 80%, 100% { content: '...'; }
901
+ }
902
+
903
+ .error-message {
904
+ grid-column: 1 / -1;
905
+ text-align: center;
906
+ color: var(--text-error);
907
+ background: var(--bg-secondary);
908
+ border: 1px solid var(--text-error);
909
+ border-radius: 8px;
910
+ padding: 2rem;
911
+ }
912
+
913
+ .error-message h3 {
914
+ margin-bottom: 1rem;
915
+ font-size: 1.1rem;
916
+ font-weight: normal;
917
+ }
918
+
919
+ .retry-btn {
920
+ background: var(--text-error);
921
+ color: var(--bg-primary);
922
+ border: none;
923
+ padding: 0.75rem 1.5rem;
924
+ border-radius: 6px;
925
+ cursor: pointer;
926
+ margin-top: 1rem;
927
+ font-size: 0.875rem;
928
+ transition: opacity 0.2s ease;
929
+ font-family: inherit;
930
+ }
931
+
932
+ .retry-btn:hover {
933
+ opacity: 0.8;
934
+ }
935
+
936
+ /* Copy feedback animations */
937
+ @keyframes slideInRight {
938
+ from {
939
+ transform: translateX(100%);
940
+ opacity: 0;
941
+ }
942
+ to {
943
+ transform: translateX(0);
944
+ opacity: 1;
945
+ }
946
+ }
947
+
948
+ @keyframes slideOutRight {
949
+ from {
950
+ transform: translateX(0);
951
+ opacity: 1;
952
+ }
953
+ to {
954
+ transform: translateX(100%);
955
+ opacity: 0;
956
+ }
957
+ }
958
+
959
+ /* Responsive design */
960
+ @media (max-width: 768px) {
961
+ .terminal {
962
+ padding: 15px;
963
+ }
964
+
965
+ .header-content {
966
+ flex-direction: column;
967
+ gap: 1rem;
968
+ align-items: flex-start;
969
+ }
970
+
971
+ .header-actions {
972
+ gap: 0.75rem;
973
+ width: 100%;
974
+ justify-content: flex-start;
975
+ }
976
+
977
+ .github-link, .header-btn {
978
+ padding: 0.35rem 0.7rem;
979
+ font-size: 0.8rem;
980
+ }
981
+
982
+ .header .ascii-art {
983
+ font-size: 0.3rem;
984
+ overflow: visible;
985
+ }
986
+
987
+ .header .terminal-subtitle {
988
+ font-size: 0.75rem;
989
+ text-align: left;
990
+ }
991
+
992
+ .terminal-title {
993
+ font-size: 1.1rem;
994
+ }
995
+
996
+ .ascii-art {
997
+ font-size: clamp(0.3rem, 0.6vw, 0.6rem);
998
+ overflow-x: auto;
999
+ scrollbar-width: thin;
1000
+ scrollbar-color: var(--border-primary) var(--bg-secondary);
1001
+ }
1002
+
1003
+ .ascii-art::-webkit-scrollbar {
1004
+ height: 4px;
1005
+ }
1006
+
1007
+ .ascii-art::-webkit-scrollbar-track {
1008
+ background: var(--bg-secondary);
1009
+ }
1010
+
1011
+ .ascii-art::-webkit-scrollbar-thumb {
1012
+ background: var(--border-primary);
1013
+ border-radius: 2px;
1014
+ }
1015
+
1016
+ .stats-badges {
1017
+ gap: 0.5rem;
1018
+ padding: 0.3rem 0;
1019
+ }
1020
+
1021
+ .stat-badge {
1022
+ height: 16px;
1023
+ }
1024
+
1025
+ .steps-grid {
1026
+ grid-template-columns: 1fr;
1027
+ gap: 15px;
1028
+ }
1029
+
1030
+ .tools-grid {
1031
+ grid-template-columns: 1fr;
1032
+ gap: 15px;
1033
+ }
1034
+
1035
+ .templates-grid {
1036
+ grid-template-columns: 1fr;
1037
+ gap: 15px;
1038
+ }
1039
+
1040
+ .template-card {
1041
+ height: 180px;
1042
+ }
1043
+
1044
+ .command-line {
1045
+ flex-direction: column;
1046
+ align-items: stretch;
1047
+ gap: 0.5rem;
1048
+ }
1049
+
1050
+ .command {
1051
+ text-align: center;
1052
+ }
1053
+
1054
+ .footer-content {
1055
+ flex-direction: column;
1056
+ text-align: center;
1057
+ gap: 1.5rem;
1058
+ }
1059
+
1060
+ .footer-left {
1061
+ min-width: unset;
1062
+ text-align: center;
1063
+ }
1064
+
1065
+ .footer-right {
1066
+ text-align: center;
1067
+ align-items: center;
1068
+ }
1069
+
1070
+ .footer-ascii-art {
1071
+ font-size: 6px;
1072
+ }
1073
+
1074
+ .step-card {
1075
+ padding: 12px;
1076
+ min-height: 120px;
1077
+ }
1078
+
1079
+ .tool-card {
1080
+ padding: 15px;
1081
+ }
1082
+ }
1083
+
1084
+ /* Extra small screens */
1085
+ @media (max-width: 480px) {
1086
+ .header .ascii-art {
1087
+ font-size: 0.25rem;
1088
+ overflow: visible;
1089
+ }
1090
+
1091
+ .header .terminal-subtitle {
1092
+ font-size: 0.7rem;
1093
+ text-align: left;
1094
+ }
1095
+
1096
+ .header-content {
1097
+ padding: 0.75rem 0;
1098
+ }
1099
+
1100
+ .stat-card {
1101
+ min-width: 200px;
1102
+ max-width: 250px;
1103
+ padding: 0.75rem;
1104
+ }
1105
+
1106
+ .stat-label {
1107
+ font-size: 0.75rem;
1108
+ }
1109
+ }
1110
+
1111
+ /* Modal styles */
1112
+ .modal {
1113
+ position: fixed;
1114
+ top: 0;
1115
+ left: 0;
1116
+ right: 0;
1117
+ bottom: 0;
1118
+ z-index: 1000;
1119
+ }
1120
+
1121
+ .modal-overlay {
1122
+ position: absolute;
1123
+ top: 0;
1124
+ left: 0;
1125
+ right: 0;
1126
+ bottom: 0;
1127
+ background: rgba(0, 0, 0, 0.8);
1128
+ display: flex;
1129
+ align-items: center;
1130
+ justify-content: center;
1131
+ padding: 20px;
1132
+ animation: fadeIn 0.3s ease;
1133
+ }
1134
+
1135
+ .modal-content {
1136
+ background: var(--bg-secondary);
1137
+ border: 1px solid var(--border-primary);
1138
+ border-radius: 8px;
1139
+ max-width: 800px;
1140
+ width: 100%;
1141
+ max-height: 80vh;
1142
+ overflow-y: auto;
1143
+ display: flex;
1144
+ flex-direction: column;
1145
+ animation: slideIn 0.3s ease;
1146
+ }
1147
+
1148
+ .modal-header {
1149
+ display: flex;
1150
+ justify-content: space-between;
1151
+ align-items: center;
1152
+ padding: 20px;
1153
+ border-bottom: 1px solid var(--border-primary);
1154
+ }
1155
+
1156
+ .modal-header h3 {
1157
+ color: var(--text-accent);
1158
+ font-size: 1.1rem;
1159
+ font-weight: normal;
1160
+ margin: 0;
1161
+ }
1162
+
1163
+ .modal-close {
1164
+ background: none;
1165
+ border: none;
1166
+ color: var(--text-secondary);
1167
+ font-size: 1.5rem;
1168
+ cursor: pointer;
1169
+ padding: 0;
1170
+ width: 30px;
1171
+ height: 30px;
1172
+ display: flex;
1173
+ align-items: center;
1174
+ justify-content: center;
1175
+ border-radius: 4px;
1176
+ transition: all 0.2s ease;
1177
+ }
1178
+
1179
+ .modal-close:hover {
1180
+ background: var(--bg-tertiary);
1181
+ color: var(--text-primary);
1182
+ }
1183
+
1184
+ .modal-body {
1185
+ padding: 20px;
1186
+ flex: 1;
1187
+ overflow-y: auto;
1188
+ }
1189
+
1190
+ .modal-description {
1191
+ color: var(--text-secondary);
1192
+ margin-bottom: 20px;
1193
+ font-size: 0.875rem;
1194
+ }
1195
+
1196
+ .files-table {
1197
+ border: 1px solid var(--border-primary);
1198
+ border-radius: 6px;
1199
+ overflow: hidden;
1200
+ }
1201
+
1202
+ .table-header {
1203
+ display: grid;
1204
+ grid-template-columns: 2fr 2fr 1fr;
1205
+ background: var(--bg-tertiary);
1206
+ border-bottom: 1px solid var(--border-primary);
1207
+ }
1208
+
1209
+ .column-header {
1210
+ padding: 12px 16px;
1211
+ color: var(--text-accent);
1212
+ font-size: 0.8rem;
1213
+ font-weight: normal;
1214
+ border-right: 1px solid var(--border-primary);
1215
+ }
1216
+
1217
+ .column-header:last-child {
1218
+ border-right: none;
1219
+ }
1220
+
1221
+ .table-row {
1222
+ display: grid;
1223
+ grid-template-columns: 2fr 2fr 1fr;
1224
+ border-bottom: 1px solid var(--border-secondary);
1225
+ }
1226
+
1227
+ .table-row:last-child {
1228
+ border-bottom: none;
1229
+ }
1230
+
1231
+ .table-row > div {
1232
+ padding: 12px 16px;
1233
+ font-size: 0.8rem;
1234
+ border-right: 1px solid var(--border-secondary);
1235
+ word-break: break-all;
1236
+ }
1237
+
1238
+ .table-row > div:last-child {
1239
+ border-right: none;
1240
+ }
1241
+
1242
+ .file-source {
1243
+ color: var(--text-secondary);
1244
+ font-family: inherit;
1245
+ }
1246
+
1247
+ .file-link {
1248
+ color: var(--text-info);
1249
+ text-decoration: none;
1250
+ transition: color 0.2s ease;
1251
+ }
1252
+
1253
+ .file-link:hover {
1254
+ color: var(--text-accent);
1255
+ text-decoration: underline;
1256
+ }
1257
+
1258
+ .file-destination {
1259
+ color: var(--text-primary);
1260
+ font-family: inherit;
1261
+ }
1262
+
1263
+ .file-type {
1264
+ color: var(--text-info);
1265
+ font-size: 0.75rem;
1266
+ text-align: center;
1267
+ }
1268
+
1269
+ .modal-footer {
1270
+ margin-top: 20px;
1271
+ text-align: center;
1272
+ }
1273
+
1274
+ .file-count {
1275
+ color: var(--text-secondary);
1276
+ font-size: 0.8rem;
1277
+ margin-bottom: 15px;
1278
+ }
1279
+
1280
+ .modal-actions {
1281
+ display: flex;
1282
+ justify-content: center;
1283
+ gap: 1rem;
1284
+ margin-top: 20px;
1285
+ flex-wrap: wrap;
1286
+ }
1287
+
1288
+ .github-folder-link {
1289
+ display: flex;
1290
+ align-items: center;
1291
+ gap: 0.5rem;
1292
+ color: var(--text-primary);
1293
+ text-decoration: none;
1294
+ background: var(--bg-tertiary);
1295
+ border: 1px solid var(--border-primary);
1296
+ padding: 0.6rem 1.2rem;
1297
+ border-radius: 6px;
1298
+ font-size: 0.85rem;
1299
+ font-weight: 500;
1300
+ transition: all 0.2s ease;
1301
+ min-width: 140px;
1302
+ justify-content: center;
1303
+ }
1304
+
1305
+ .github-folder-link:hover {
1306
+ background: var(--bg-primary);
1307
+ border-color: var(--text-accent);
1308
+ color: var(--text-accent);
1309
+ }
1310
+
1311
+ .github-folder-link svg {
1312
+ flex-shrink: 0;
1313
+ }
1314
+
1315
+ /* Modal animations */
1316
+ @keyframes fadeIn {
1317
+ from { opacity: 0; }
1318
+ to { opacity: 1; }
1319
+ }
1320
+
1321
+ @keyframes slideIn {
1322
+ from {
1323
+ transform: translateY(-50px);
1324
+ opacity: 0;
1325
+ }
1326
+ to {
1327
+ transform: translateY(0);
1328
+ opacity: 1;
1329
+ }
1330
+ }
1331
+
1332
+ /* Contribution modal styles */
1333
+ .contribute-modal {
1334
+ max-width: 900px;
1335
+ }
1336
+
1337
+ .contribute-intro {
1338
+ margin-bottom: 30px;
1339
+ }
1340
+
1341
+ .contribute-intro p {
1342
+ color: var(--text-secondary);
1343
+ font-size: 0.9rem;
1344
+ line-height: 1.5;
1345
+ }
1346
+
1347
+ .contribute-steps {
1348
+ display: flex;
1349
+ flex-direction: column;
1350
+ gap: 25px;
1351
+ margin-bottom: 30px;
1352
+ }
1353
+
1354
+ .contribute-step {
1355
+ display: flex;
1356
+ gap: 20px;
1357
+ align-items: flex-start;
1358
+ padding: 20px;
1359
+ background: var(--bg-tertiary);
1360
+ border: 1px solid var(--border-primary);
1361
+ border-radius: 8px;
1362
+ transition: all 0.2s ease;
1363
+ }
1364
+
1365
+ .contribute-step:hover {
1366
+ border-color: var(--text-accent);
1367
+ box-shadow: 0 2px 8px var(--shadow-primary);
1368
+ }
1369
+
1370
+ .step-number-contrib {
1371
+ flex-shrink: 0;
1372
+ width: 40px;
1373
+ height: 40px;
1374
+ background: var(--text-accent);
1375
+ color: var(--bg-primary);
1376
+ border-radius: 50%;
1377
+ display: flex;
1378
+ align-items: center;
1379
+ justify-content: center;
1380
+ font-weight: bold;
1381
+ font-size: 1rem;
1382
+ }
1383
+
1384
+ .step-content-contrib {
1385
+ flex: 1;
1386
+ }
1387
+
1388
+ .step-content-contrib h4 {
1389
+ color: var(--text-primary);
1390
+ font-size: 1.1rem;
1391
+ font-weight: 500;
1392
+ margin: 0 0 8px 0;
1393
+ }
1394
+
1395
+ .step-content-contrib p {
1396
+ color: var(--text-secondary);
1397
+ font-size: 0.875rem;
1398
+ line-height: 1.5;
1399
+ margin: 0 0 15px 0;
1400
+ }
1401
+
1402
+ .step-content-contrib ul {
1403
+ color: var(--text-secondary);
1404
+ font-size: 0.875rem;
1405
+ line-height: 1.5;
1406
+ margin: 15px 0 0 20px;
1407
+ }
1408
+
1409
+ .step-content-contrib li {
1410
+ margin-bottom: 5px;
1411
+ }
1412
+
1413
+ .step-content-contrib a {
1414
+ color: var(--text-info);
1415
+ text-decoration: none;
1416
+ }
1417
+
1418
+ .step-content-contrib a:hover {
1419
+ color: var(--text-accent);
1420
+ text-decoration: underline;
1421
+ }
1422
+
1423
+ .step-command {
1424
+ display: flex;
1425
+ align-items: center;
1426
+ gap: 8px;
1427
+ background: var(--bg-primary);
1428
+ border: 1px solid var(--border-secondary);
1429
+ border-radius: 6px;
1430
+ padding: 8px;
1431
+ margin: 8px 0;
1432
+ font-family: inherit;
1433
+ }
1434
+
1435
+ .step-command code {
1436
+ flex: 1;
1437
+ color: var(--text-primary);
1438
+ font-size: 0.8rem;
1439
+ background: none;
1440
+ border: none;
1441
+ font-family: inherit;
1442
+ }
1443
+
1444
+ .step-command .copy-btn {
1445
+ background: var(--text-success);
1446
+ color: var(--bg-primary);
1447
+ border: none;
1448
+ padding: 4px 8px;
1449
+ border-radius: 4px;
1450
+ font-size: 0.7rem;
1451
+ cursor: pointer;
1452
+ transition: opacity 0.2s ease;
1453
+ font-family: inherit;
1454
+ }
1455
+
1456
+ .step-command .copy-btn:hover {
1457
+ opacity: 0.8;
1458
+ }
1459
+
1460
+ .contribution-types {
1461
+ display: flex;
1462
+ flex-direction: column;
1463
+ gap: 15px;
1464
+ margin: 15px 0;
1465
+ }
1466
+
1467
+ .contrib-type {
1468
+ background: var(--bg-primary);
1469
+ border: 1px solid var(--border-secondary);
1470
+ border-radius: 6px;
1471
+ padding: 15px;
1472
+ }
1473
+
1474
+ .contrib-type strong {
1475
+ color: var(--text-accent);
1476
+ font-size: 0.9rem;
1477
+ }
1478
+
1479
+ .contrib-type small {
1480
+ color: var(--text-secondary);
1481
+ font-size: 0.8rem;
1482
+ }
1483
+
1484
+ .contrib-type code {
1485
+ background: var(--bg-secondary);
1486
+ color: var(--text-info);
1487
+ padding: 2px 6px;
1488
+ border-radius: 3px;
1489
+ font-size: 0.8rem;
1490
+ font-family: inherit;
1491
+ }
1492
+
1493
+ .claude-prompt {
1494
+ background: var(--bg-primary);
1495
+ border: 1px solid var(--border-secondary);
1496
+ border-radius: 8px;
1497
+ padding: 20px;
1498
+ margin: 15px 0;
1499
+ }
1500
+
1501
+ .claude-prompt h5 {
1502
+ color: var(--text-accent);
1503
+ font-size: 0.9rem;
1504
+ font-weight: 500;
1505
+ margin: 0 0 15px 0;
1506
+ display: flex;
1507
+ align-items: center;
1508
+ gap: 8px;
1509
+ }
1510
+
1511
+ .prompt-text {
1512
+ background: var(--bg-tertiary);
1513
+ border: 1px solid var(--border-primary);
1514
+ border-radius: 6px;
1515
+ padding: 15px;
1516
+ margin-bottom: 15px;
1517
+ position: relative;
1518
+ }
1519
+
1520
+ .prompt-text pre {
1521
+ color: var(--text-primary);
1522
+ font-size: 0.8rem;
1523
+ line-height: 1.4;
1524
+ margin: 0;
1525
+ white-space: pre-wrap;
1526
+ word-wrap: break-word;
1527
+ font-family: inherit;
1528
+ }
1529
+
1530
+ .copy-prompt-btn {
1531
+ background: var(--text-info);
1532
+ color: var(--bg-primary);
1533
+ border: none;
1534
+ padding: 8px 16px;
1535
+ border-radius: 4px;
1536
+ font-size: 0.8rem;
1537
+ cursor: pointer;
1538
+ transition: opacity 0.2s ease;
1539
+ font-family: inherit;
1540
+ display: flex;
1541
+ align-items: center;
1542
+ gap: 6px;
1543
+ }
1544
+
1545
+ .copy-prompt-btn:hover {
1546
+ opacity: 0.8;
1547
+ }
1548
+
1549
+ .contribute-footer {
1550
+ border-top: 1px solid var(--border-primary);
1551
+ padding-top: 20px;
1552
+ margin-top: 20px;
1553
+ }
1554
+
1555
+ .help-section h4 {
1556
+ color: var(--text-accent);
1557
+ font-size: 1rem;
1558
+ font-weight: 500;
1559
+ margin: 0 0 8px 0;
1560
+ }
1561
+
1562
+ .help-section p {
1563
+ color: var(--text-secondary);
1564
+ font-size: 0.875rem;
1565
+ margin: 0;
1566
+ }
1567
+
1568
+ .help-section a {
1569
+ color: var(--text-info);
1570
+ text-decoration: none;
1571
+ }
1572
+
1573
+ .help-section a:hover {
1574
+ color: var(--text-accent);
1575
+ text-decoration: underline;
1576
+ }
1577
+
1578
+ /* Modal responsive design */
1579
+ @media (max-width: 768px) {
1580
+ .modal-overlay {
1581
+ padding: 10px;
1582
+ }
1583
+
1584
+ .modal-content {
1585
+ max-height: 90vh;
1586
+ }
1587
+
1588
+ .contribute-modal {
1589
+ max-width: 100%;
1590
+ }
1591
+
1592
+ .modal-header,
1593
+ .modal-body {
1594
+ padding: 15px;
1595
+ }
1596
+
1597
+ .contribute-steps {
1598
+ gap: 20px;
1599
+ }
1600
+
1601
+ .contribute-step {
1602
+ flex-direction: column;
1603
+ gap: 15px;
1604
+ padding: 15px;
1605
+ }
1606
+
1607
+ .step-number-contrib {
1608
+ width: 35px;
1609
+ height: 35px;
1610
+ font-size: 0.9rem;
1611
+ align-self: flex-start;
1612
+ }
1613
+
1614
+ .step-command {
1615
+ flex-direction: column;
1616
+ align-items: stretch;
1617
+ gap: 8px;
1618
+ }
1619
+
1620
+ .step-command code {
1621
+ text-align: center;
1622
+ word-break: break-all;
1623
+ }
1624
+
1625
+ .contribution-types {
1626
+ gap: 12px;
1627
+ }
1628
+
1629
+ .contrib-type {
1630
+ padding: 12px;
1631
+ }
1632
+
1633
+ .claude-prompt {
1634
+ padding: 15px;
1635
+ }
1636
+
1637
+ .prompt-text pre {
1638
+ font-size: 0.75rem;
1639
+ }
1640
+
1641
+ .table-header,
1642
+ .table-row {
1643
+ grid-template-columns: 1fr;
1644
+ }
1645
+
1646
+ .column-header,
1647
+ .table-row > div {
1648
+ border-right: none;
1649
+ border-bottom: 1px solid var(--border-secondary);
1650
+ }
1651
+
1652
+ .column-header:last-child,
1653
+ .table-row > div:last-child {
1654
+ border-bottom: none;
1655
+ }
1656
+ }
1657
+
1658
+ /* Terminal-Style Filter Section */
1659
+ .unified-filter-section {
1660
+ margin: 2rem 0;
1661
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1662
+ }
1663
+
1664
+ /* Search Header - Terminal Style with original content */
1665
+ .search-header {
1666
+ margin-bottom: 2rem;
1667
+ }
1668
+
1669
+ .terminal-command {
1670
+ position: relative;
1671
+ display: flex;
1672
+ justify-content: center;
1673
+ text-align: center;
1674
+ }
1675
+
1676
+ .terminal-dot {
1677
+ width: 8px;
1678
+ height: 8px;
1679
+ background: #22c55e;
1680
+ border-radius: 50%;
1681
+ display: inline-block;
1682
+ margin-right: 0.5rem;
1683
+ vertical-align: middle;
1684
+ }
1685
+
1686
+ .header-content {
1687
+ display: flex;
1688
+ flex-direction: column;
1689
+ align-items: center;
1690
+ text-align: center;
1691
+ flex: 1;
1692
+ }
1693
+
1694
+ .search-title {
1695
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1696
+ font-size: 1.4rem;
1697
+ font-weight: 400;
1698
+ color: var(--text-primary);
1699
+ margin: 0;
1700
+ letter-spacing: normal;
1701
+ display: block;
1702
+ width: 100%;
1703
+ line-height: 1.1;
1704
+ }
1705
+
1706
+ .title-params {
1707
+ font-weight: 300 !important;
1708
+ opacity: 0.8;
1709
+ }
1710
+
1711
+ .search-subtitle {
1712
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1713
+ font-size: 1rem;
1714
+ color: var(--text-secondary);
1715
+ margin: 0;
1716
+ line-height: 1.1;
1717
+ position: relative;
1718
+ display: block;
1719
+ width: 100%;
1720
+ margin-top: -0.1rem;
1721
+ }
1722
+
1723
+ /* Terminal Navigation Help */
1724
+ .terminal-navigation-help {
1725
+ display: flex;
1726
+ align-items: flex-start;
1727
+ gap: 0.5rem;
1728
+ background: var(--bg-tertiary);
1729
+ border: 1px solid var(--border-secondary);
1730
+ border-radius: 8px;
1731
+ padding: 0.75rem 1rem;
1732
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1733
+ font-size: 0.8rem;
1734
+ line-height: 1.4;
1735
+ margin-top: 1rem;
1736
+ }
1737
+
1738
+ /* Terminal Search Container - Main Component */
1739
+ .terminal-search-container {
1740
+ margin-bottom: 1rem;
1741
+ }
1742
+
1743
+ .terminal-search-wrapper {
1744
+ background: var(--bg-secondary);
1745
+ border: 1px solid var(--border-primary);
1746
+ border-radius: 12px;
1747
+ padding: 0.75rem 1rem;
1748
+ display: flex;
1749
+ align-items: center;
1750
+ gap: 0.75rem;
1751
+ transition: border-color 0.2s ease;
1752
+ cursor: text;
1753
+ max-width: 700px;
1754
+ margin: 0 auto;
1755
+ }
1756
+
1757
+ .terminal-search-wrapper:focus-within {
1758
+ border-color: var(--text-accent);
1759
+ box-shadow: 0 0 0 2px rgba(213, 116, 85, 0.1);
1760
+ }
1761
+
1762
+ .terminal-prompt {
1763
+ color: var(--text-accent);
1764
+ font-size: 1rem;
1765
+ font-weight: bold;
1766
+ user-select: none;
1767
+ }
1768
+
1769
+ .search-icon-end {
1770
+ color: var(--text-secondary);
1771
+ opacity: 0.7;
1772
+ }
1773
+
1774
+ .terminal-search-input {
1775
+ flex: 1;
1776
+ background: transparent;
1777
+ border: none;
1778
+ color: var(--text-primary);
1779
+ font-size: 0.9rem;
1780
+ font-family: inherit;
1781
+ outline: none;
1782
+ placeholder-color: var(--text-secondary);
1783
+ caret-color: transparent; /* Hide default caret */
1784
+ }
1785
+
1786
+ /* Terminal cursor wrapper */
1787
+ .terminal-search-wrapper {
1788
+ position: relative;
1789
+ }
1790
+
1791
+ /* Terminal-style block cursor */
1792
+ .terminal-cursor {
1793
+ position: absolute;
1794
+ width: 10px;
1795
+ height: 20px;
1796
+ background: var(--text-accent);
1797
+ top: 50%;
1798
+ transform: translateY(-50%);
1799
+ animation: terminal-cursor-blink 1s infinite;
1800
+ pointer-events: none;
1801
+ z-index: 10;
1802
+ display: none;
1803
+ }
1804
+
1805
+ .terminal-search-input:focus + .terminal-cursor,
1806
+ .terminal-search-wrapper:focus-within .terminal-cursor {
1807
+ display: block;
1808
+ }
1809
+
1810
+ @keyframes terminal-cursor-blink {
1811
+ 0%, 50% {
1812
+ opacity: 1;
1813
+ }
1814
+ 51%, 100% {
1815
+ opacity: 0;
1816
+ }
1817
+ }
1818
+
1819
+ .terminal-search-input::placeholder {
1820
+ color: var(--text-secondary);
1821
+ font-style: italic;
1822
+ }
1823
+
1824
+ .terminal-clear-btn {
1825
+ background: none;
1826
+ border: none;
1827
+ color: var(--text-secondary);
1828
+ cursor: pointer;
1829
+ padding: 4px;
1830
+ border-radius: 4px;
1831
+ transition: all 0.2s ease;
1832
+ opacity: 0.7;
1833
+ }
1834
+
1835
+ .terminal-clear-btn:hover {
1836
+ background: var(--bg-tertiary);
1837
+ color: var(--text-primary);
1838
+ opacity: 1;
1839
+ }
1840
+
1841
+ /* Search Results Info - Terminal Style */
1842
+ .search-results-info {
1843
+ margin-top: 1rem;
1844
+ }
1845
+
1846
+ .terminal-results {
1847
+ display: flex;
1848
+ align-items: flex-start;
1849
+ gap: 0.5rem;
1850
+ background: var(--bg-tertiary);
1851
+ border: 1px solid var(--border-secondary);
1852
+ border-radius: 8px;
1853
+ padding: 0.75rem 1rem;
1854
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1855
+ font-size: 0.85rem;
1856
+ line-height: 1.4;
1857
+ }
1858
+
1859
+ .results-content {
1860
+ display: flex;
1861
+ flex-direction: column;
1862
+ flex: 1;
1863
+ }
1864
+
1865
+ .results-count {
1866
+ color: var(--text-primary);
1867
+ font-weight: 400;
1868
+ margin: 0 0 0.1rem 0;
1869
+ }
1870
+
1871
+ .search-filters {
1872
+ color: var(--text-secondary);
1873
+ margin: 0;
1874
+ line-height: 1.2;
1875
+ }
1876
+
1877
+ .search-filter-tags {
1878
+ display: inline-flex;
1879
+ gap: 0.5rem;
1880
+ flex-wrap: wrap;
1881
+ }
1882
+
1883
+ .search-category-tag {
1884
+ background: var(--bg-secondary);
1885
+ color: var(--text-accent);
1886
+ padding: 0.2rem 0.5rem;
1887
+ border-radius: 4px;
1888
+ font-size: 0.75rem;
1889
+ border: 1px solid var(--border-secondary);
1890
+ }
1891
+
1892
+ .terminal-search-help {
1893
+ margin-top: 0.5rem;
1894
+ margin-left: 1rem;
1895
+ }
1896
+
1897
+ .search-help-text {
1898
+ color: var(--text-secondary);
1899
+ font-size: 0.8rem;
1900
+ font-style: italic;
1901
+ }
1902
+
1903
+ /* Component Type Filters - Compact */
1904
+ .component-type-filters {
1905
+ margin-bottom: 1rem;
1906
+ }
1907
+
1908
+ .filter-group {
1909
+ display: flex;
1910
+ align-items: center;
1911
+ justify-content: center;
1912
+ gap: 0.75rem;
1913
+ flex-wrap: wrap;
1914
+ }
1915
+
1916
+ .filter-group-label {
1917
+ color: var(--text-secondary);
1918
+ font-size: 0.85rem;
1919
+ font-weight: 500;
1920
+ min-width: 40px;
1921
+ }
1922
+
1923
+ .filter-chips {
1924
+ display: flex;
1925
+ gap: 0.5rem;
1926
+ flex-wrap: wrap;
1927
+ }
1928
+
1929
+ .filter-chip {
1930
+ background: var(--bg-tertiary);
1931
+ color: var(--text-secondary);
1932
+ border: 1px solid var(--border-secondary);
1933
+ padding: 0.5rem 0.75rem;
1934
+ border-radius: 4px;
1935
+ cursor: pointer;
1936
+ font-family: inherit;
1937
+ font-size: 0.8rem;
1938
+ transition: all 0.2s ease;
1939
+ display: flex;
1940
+ align-items: center;
1941
+ gap: 0.4rem;
1942
+ white-space: nowrap;
1943
+ }
1944
+
1945
+ .filter-chip:hover {
1946
+ background: var(--bg-secondary);
1947
+ color: var(--text-primary);
1948
+ border-color: var(--border-primary);
1949
+ transform: translateY(-1px);
1950
+ }
1951
+
1952
+ .filter-chip.active {
1953
+ background: var(--text-accent) !important;
1954
+ color: var(--bg-primary) !important;
1955
+ border-color: var(--text-accent) !important;
1956
+ font-weight: 500;
1957
+ }
1958
+
1959
+ .chip-icon {
1960
+ font-size: 0.9rem;
1961
+ }
1962
+
1963
+ /* Component Categories - Dynamic */
1964
+ .component-categories {
1965
+ margin-bottom: 1rem;
1966
+ border-top: 1px solid var(--border-secondary);
1967
+ padding-top: 1rem;
1968
+ }
1969
+
1970
+ .category-group {
1971
+ display: flex;
1972
+ align-items: center;
1973
+ gap: 0.75rem;
1974
+ flex-wrap: wrap;
1975
+ }
1976
+
1977
+ .category-group-label {
1978
+ color: var(--text-secondary);
1979
+ font-size: 0.85rem;
1980
+ font-weight: 500;
1981
+ min-width: 60px;
1982
+ }
1983
+
1984
+ .category-chips {
1985
+ display: flex;
1986
+ gap: 0.4rem;
1987
+ flex-wrap: wrap;
1988
+ }
1989
+
1990
+ .category-chips .filter-chip {
1991
+ font-size: 0.75rem;
1992
+ padding: 0.3rem 0.6rem;
1993
+ background: var(--bg-primary);
1994
+ border-color: var(--border-secondary);
1995
+ }
1996
+
1997
+ .category-chips .filter-chip:hover {
1998
+ background: var(--bg-tertiary);
1999
+ border-color: var(--border-primary);
2000
+ }
2001
+
2002
+ .category-chips .filter-chip.active {
2003
+ background: var(--text-success) !important;
2004
+ color: var(--bg-primary) !important;
2005
+ border-color: var(--text-success) !important;
2006
+ }
2007
+
2008
+ /* Responsive Design for Terminal Interface */
2009
+ @media (max-width: 768px) {
2010
+ .search-title {
2011
+ font-size: 1.2rem;
2012
+ }
2013
+
2014
+ .search-subtitle {
2015
+ font-size: 0.9rem;
2016
+ }
2017
+
2018
+ .header-content {
2019
+ margin-left: 1.2rem;
2020
+ }
2021
+
2022
+ .terminal-dot::after {
2023
+ height: 30px;
2024
+ }
2025
+
2026
+ .terminal-navigation-help {
2027
+ font-size: 0.7rem;
2028
+ padding: 0.6rem 0.8rem;
2029
+ }
2030
+
2031
+ .terminal-results {
2032
+ font-size: 0.8rem;
2033
+ padding: 0.6rem 0.8rem;
2034
+ }
2035
+
2036
+ .terminal-search-wrapper {
2037
+ padding: 0.6rem 0.8rem;
2038
+ gap: 0.5rem;
2039
+ border-radius: 8px;
2040
+ }
2041
+
2042
+ .terminal-prompt {
2043
+ font-size: 0.9rem;
2044
+ }
2045
+
2046
+ .terminal-search-input {
2047
+ font-size: 0.9rem;
2048
+ }
2049
+
2050
+ .filter-chips {
2051
+ gap: 0.4rem;
2052
+ }
2053
+
2054
+ .filter-chip {
2055
+ padding: 0.4rem 0.6rem;
2056
+ font-size: 0.8rem;
2057
+ border-radius: 3px;
2058
+ }
2059
+
2060
+ .component-categories h3 {
2061
+ font-size: 0.9rem;
2062
+ margin-bottom: 0.4rem;
2063
+ }
2064
+
2065
+ .category-chips .filter-chip {
2066
+ font-size: 0.7rem;
2067
+ padding: 0.25rem 0.5rem;
2068
+ }
2069
+ }
2070
+
2071
+ @media (max-width: 480px) {
2072
+ .search-title {
2073
+ font-size: 1rem;
2074
+ }
2075
+
2076
+ .search-subtitle {
2077
+ font-size: 0.8rem;
2078
+ }
2079
+
2080
+ .header-content {
2081
+ margin-left: 1rem;
2082
+ }
2083
+
2084
+ .terminal-dot::after {
2085
+ height: 25px;
2086
+ }
2087
+
2088
+ .terminal-navigation-help {
2089
+ font-size: 0.65rem;
2090
+ padding: 0.5rem 0.6rem;
2091
+ }
2092
+
2093
+ .terminal-results {
2094
+ font-size: 0.75rem;
2095
+ padding: 0.5rem 0.6rem;
2096
+ }
2097
+
2098
+ .unified-filter-section {
2099
+ padding: 0.5rem;
2100
+ }
2101
+
2102
+ .terminal-search-wrapper {
2103
+ flex-direction: column;
2104
+ align-items: stretch;
2105
+ gap: 0.75rem;
2106
+ padding: 0.75rem;
2107
+ }
2108
+
2109
+ .terminal-input-row {
2110
+ display: flex;
2111
+ align-items: center;
2112
+ gap: 0.5rem;
2113
+ }
2114
+
2115
+ .filter-chips,
2116
+ .category-chips {
2117
+ justify-content: center;
2118
+ }
2119
+
2120
+ .filter-chip {
2121
+ flex: 0 0 auto;
2122
+ min-width: fit-content;
2123
+ }
2124
+ }
2125
+
2126
+ /* Unified Grid */
2127
+ .unified-grid {
2128
+ display: grid;
2129
+ grid-template-columns: repeat(4, 1fr);
2130
+ gap: 1.5rem;
2131
+ margin-bottom: 2rem;
2132
+ }
2133
+
2134
+ .unified-grid.templates-mode {
2135
+ /* Template specific styles if needed */
2136
+ }
2137
+
2138
+ .unified-grid.components-mode {
2139
+ /* Component specific styles if needed */
2140
+ }
2141
+
2142
+ /* Components Grid */
2143
+ .components-grid {
2144
+ display: grid;
2145
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
2146
+ gap: 1.5rem;
2147
+ margin-bottom: 2rem;
2148
+ }
2149
+
2150
+ .component-category {
2151
+ background: var(--bg-secondary);
2152
+ border: 1px solid var(--border-primary);
2153
+ border-radius: 12px;
2154
+ padding: 1.5rem;
2155
+ transition: all 0.3s ease;
2156
+ }
2157
+
2158
+ .component-category:hover {
2159
+ border-color: var(--text-accent);
2160
+ transform: translateY(-2px);
2161
+ box-shadow: 0 8px 25px var(--shadow-primary);
2162
+ }
2163
+
2164
+ .category-header {
2165
+ display: flex;
2166
+ align-items: center;
2167
+ gap: 0.75rem;
2168
+ margin-bottom: 1rem;
2169
+ }
2170
+
2171
+ .category-icon {
2172
+ font-size: 1.5rem;
2173
+ }
2174
+
2175
+ .category-title {
2176
+ color: var(--text-accent);
2177
+ font-size: 1.1rem;
2178
+ font-weight: 600;
2179
+ margin: 0;
2180
+ }
2181
+
2182
+ .category-description {
2183
+ color: var(--text-secondary);
2184
+ font-size: 0.85rem;
2185
+ margin-bottom: 1.5rem;
2186
+ line-height: 1.5;
2187
+ }
2188
+
2189
+ .component-items {
2190
+ display: flex;
2191
+ flex-direction: column;
2192
+ gap: 0.75rem;
2193
+ }
2194
+
2195
+ .component-item {
2196
+ background: var(--bg-tertiary);
2197
+ border: 1px solid var(--border-secondary);
2198
+ border-radius: 6px;
2199
+ padding: 0.75rem;
2200
+ transition: all 0.2s ease;
2201
+ cursor: pointer;
2202
+ }
2203
+
2204
+ .component-item:hover {
2205
+ border-color: var(--text-accent);
2206
+ background: var(--bg-primary);
2207
+ }
2208
+
2209
+ .component-name {
2210
+ color: var(--text-primary);
2211
+ font-size: 0.9rem;
2212
+ font-weight: 500;
2213
+ margin-bottom: 0.25rem;
2214
+ }
2215
+
2216
+ .component-description {
2217
+ color: var(--text-secondary);
2218
+ font-size: 0.75rem;
2219
+ line-height: 1.4;
2220
+ margin-bottom: 0.5rem;
2221
+ }
2222
+
2223
+ .component-command {
2224
+ font-family: 'Monaco', 'Menlo', monospace;
2225
+ font-size: 0.7rem;
2226
+ color: var(--text-success);
2227
+ background: var(--bg-primary);
2228
+ padding: 0.25rem 0.5rem;
2229
+ border-radius: 3px;
2230
+ border: 1px solid var(--border-primary);
2231
+ }
2232
+
2233
+ /* Tablet responsive */
2234
+ @media (max-width: 1024px) and (min-width: 769px) {
2235
+ .unified-grid {
2236
+ grid-template-columns: repeat(2, 1fr);
2237
+ gap: 1.25rem;
2238
+ }
2239
+ }
2240
+
2241
+ /* Responsive adjustments for unified interface */
2242
+ @media (max-width: 768px) {
2243
+ .unified-filter-bar .filter-buttons {
2244
+ gap: 0.5rem;
2245
+ }
2246
+
2247
+ .unified-filter-bar .filter-btn {
2248
+ padding: 0.6rem 1rem;
2249
+ font-size: 0.85rem;
2250
+ }
2251
+
2252
+ .unified-grid {
2253
+ grid-template-columns: 1fr;
2254
+ gap: 1rem;
2255
+ }
2256
+
2257
+ .unified-filter-bar {
2258
+ padding: 1rem;
2259
+ }
2260
+
2261
+ .components-grid {
2262
+ grid-template-columns: 1fr;
2263
+ gap: 1rem;
2264
+ }
2265
+
2266
+ .component-category {
2267
+ padding: 1rem;
2268
+ }
2269
+ }
2270
+
2271
+ /* ==== COMPONENT FILTER AND MODULAR INTERFACE ==== */
2272
+
2273
+ /* Component Filter Bar */
2274
+ .component-filter-bar {
2275
+ background: var(--bg-secondary);
2276
+ border: 1px solid var(--border-primary);
2277
+ border-radius: 12px;
2278
+ padding: 1.5rem;
2279
+ margin-bottom: 2rem;
2280
+ text-align: center;
2281
+ }
2282
+
2283
+ .filter-label {
2284
+ color: var(--text-accent);
2285
+ font-size: 1rem;
2286
+ font-weight: 600;
2287
+ margin-bottom: 1rem;
2288
+ display: flex;
2289
+ align-items: center;
2290
+ justify-content: center;
2291
+ gap: 0.5rem;
2292
+ }
2293
+
2294
+ .filter-label:before {
2295
+ content: ">";
2296
+ color: var(--text-success);
2297
+ font-weight: bold;
2298
+ }
2299
+
2300
+ .filter-buttons {
2301
+ display: flex;
2302
+ justify-content: center;
2303
+ gap: 1rem;
2304
+ flex-wrap: wrap;
2305
+ }
2306
+
2307
+ .filter-btn {
2308
+ background: var(--bg-tertiary);
2309
+ color: var(--text-secondary);
2310
+ border: 1px solid var(--border-primary);
2311
+ padding: 0.75rem 1.25rem;
2312
+ border-radius: 8px;
2313
+ cursor: pointer;
2314
+ font-family: inherit;
2315
+ font-size: 0.85rem;
2316
+ transition: all 0.2s ease;
2317
+ display: flex;
2318
+ align-items: center;
2319
+ gap: 0.5rem;
2320
+ white-space: nowrap;
2321
+ }
2322
+
2323
+ .filter-btn:hover {
2324
+ background: var(--bg-primary);
2325
+ color: var(--text-primary);
2326
+ border-color: var(--text-accent);
2327
+ transform: translateY(-1px);
2328
+ }
2329
+
2330
+ .filter-btn.active {
2331
+ background: var(--text-accent);
2332
+ color: var(--bg-primary);
2333
+ border-color: var(--text-accent);
2334
+ font-weight: 600;
2335
+ box-shadow: 0 4px 12px rgba(213, 116, 85, 0.3);
2336
+ }
2337
+
2338
+ /* Components Container */
2339
+ .components-container {
2340
+ display: grid;
2341
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
2342
+ gap: 1.5rem;
2343
+ }
2344
+
2345
+ /* Add Component Cards - Same style as regular template cards */
2346
+ .add-component-card .component-icon {
2347
+ font-size: 2rem;
2348
+ animation: pulse 2s infinite;
2349
+ }
2350
+
2351
+ @keyframes pulse {
2352
+ 0%, 100% { opacity: 1; transform: scale(1); }
2353
+ 50% { opacity: 0.7; transform: scale(1.1); }
2354
+ }
2355
+
2356
+ /* Component Type Badge */
2357
+ .component-type-badge {
2358
+ position: absolute;
2359
+ top: 12px;
2360
+ right: 12px;
2361
+ padding: 0.25rem 0.5rem;
2362
+ border-radius: 12px;
2363
+ font-size: 0.7rem;
2364
+ font-weight: 600;
2365
+ text-transform: uppercase;
2366
+ letter-spacing: 0.5px;
2367
+ color: white;
2368
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
2369
+ }
2370
+
2371
+ /* Component Icon Styling */
2372
+ .component-icon {
2373
+ font-size: 1.8rem;
2374
+ display: inline-block;
2375
+ vertical-align: middle;
2376
+ }
2377
+
2378
+ .framework-logo .component-icon {
2379
+ font-size: 2.5rem;
2380
+ }
2381
+
2382
+
2383
+ /* Enhanced Component Modal */
2384
+ .component-modal {
2385
+ max-width: 800px;
2386
+ }
2387
+
2388
+ .component-modal-title {
2389
+ display: flex;
2390
+ align-items: center;
2391
+ gap: 1rem;
2392
+ flex: 1;
2393
+ }
2394
+
2395
+ .component-modal-title h3 {
2396
+ margin: 0;
2397
+ flex: 1;
2398
+ }
2399
+
2400
+ .component-modal-title .component-icon {
2401
+ font-size: 1.5rem;
2402
+ }
2403
+
2404
+ .component-modal-title .component-type-badge {
2405
+ position: static;
2406
+ margin-left: auto;
2407
+ }
2408
+
2409
+ .component-details {
2410
+ display: flex;
2411
+ flex-direction: column;
2412
+ gap: 1.5rem;
2413
+ }
2414
+
2415
+ .component-description {
2416
+ color: var(--text-secondary);
2417
+ font-size: 0.9rem;
2418
+ line-height: 1.6;
2419
+ padding: 1rem;
2420
+ background: var(--bg-tertiary);
2421
+ border: 1px solid var(--border-primary);
2422
+ border-radius: 8px;
2423
+ }
2424
+
2425
+ .installation-section h4,
2426
+ .component-content h4 {
2427
+ color: var(--text-accent);
2428
+ font-size: 1rem;
2429
+ font-weight: 600;
2430
+ margin: 0 0 0.75rem 0;
2431
+ display: flex;
2432
+ align-items: center;
2433
+ gap: 0.5rem;
2434
+ }
2435
+
2436
+ /* Global Agent Styles */
2437
+ .global-agent-section {
2438
+ margin-top: 1.5rem;
2439
+ padding-top: 1.5rem;
2440
+ border-top: 1px solid var(--border-secondary);
2441
+ }
2442
+
2443
+ .global-agent-description {
2444
+ color: var(--text-secondary);
2445
+ font-size: 0.9rem;
2446
+ margin: 0 0 1rem 0;
2447
+ font-style: italic;
2448
+ }
2449
+
2450
+ .global-agent-usage {
2451
+ margin-top: 1rem;
2452
+ }
2453
+
2454
+ .usage-example {
2455
+ margin-bottom: 1rem;
2456
+ }
2457
+
2458
+ .usage-title {
2459
+ color: var(--text-secondary);
2460
+ font-size: 0.85rem;
2461
+ font-weight: 500;
2462
+ margin-bottom: 0.5rem;
2463
+ }
2464
+
2465
+ .usage-command {
2466
+ background: var(--bg-terminal);
2467
+ border: 1px solid var(--border-primary);
2468
+ }
2469
+
2470
+ .usage-command code {
2471
+ color: var(--text-accent);
2472
+ font-weight: 500;
2473
+ }
2474
+
2475
+ .global-features {
2476
+ display: grid;
2477
+ gap: 0.4rem;
2478
+ margin-top: 1rem;
2479
+ }
2480
+
2481
+ .feature {
2482
+ color: var(--text-secondary);
2483
+ font-size: 0.85rem;
2484
+ display: flex;
2485
+ align-items: center;
2486
+ gap: 0.5rem;
2487
+ }
2488
+
2489
+ /* E2B Sandbox Section Styles */
2490
+ .e2b-sandbox-section {
2491
+ margin-top: 1.5rem;
2492
+ padding-top: 1.5rem;
2493
+ border-top: 1px solid var(--border-secondary);
2494
+ background: linear-gradient(135deg, rgba(70, 130, 180, 0.08) 0%, rgba(100, 149, 237, 0.08) 100%);
2495
+ border-radius: 8px;
2496
+ padding: 1.5rem;
2497
+ margin-top: 1.5rem;
2498
+ }
2499
+
2500
+ .e2b-description {
2501
+ color: var(--text-secondary);
2502
+ font-size: 0.9rem;
2503
+ margin: 0 0 1rem 0;
2504
+ font-style: italic;
2505
+ }
2506
+
2507
+ .e2b-features {
2508
+ display: grid;
2509
+ gap: 0.4rem;
2510
+ margin-top: 1rem;
2511
+ margin-bottom: 1rem;
2512
+ }
2513
+
2514
+ .e2b-requirements {
2515
+ margin-top: 1rem;
2516
+ background: rgba(255, 165, 0, 0.1);
2517
+ border-left: 3px solid var(--accent-orange);
2518
+ padding: 0.8rem 1rem;
2519
+ border-radius: 4px;
2520
+ }
2521
+
2522
+ .requirements-title {
2523
+ color: var(--text-primary);
2524
+ font-size: 0.85rem;
2525
+ font-weight: 600;
2526
+ margin-bottom: 0.5rem;
2527
+ display: flex;
2528
+ align-items: center;
2529
+ gap: 0.5rem;
2530
+ }
2531
+
2532
+ .requirements-title::before {
2533
+ content: "⚠️";
2534
+ font-size: 0.9rem;
2535
+ }
2536
+
2537
+ .requirement {
2538
+ color: var(--text-secondary);
2539
+ font-size: 0.8rem;
2540
+ margin: 0.3rem 0;
2541
+ display: flex;
2542
+ align-items: center;
2543
+ gap: 0.5rem;
2544
+ }
2545
+
2546
+ .requirement a {
2547
+ color: var(--accent-blue);
2548
+ text-decoration: none;
2549
+ font-weight: 500;
2550
+ }
2551
+
2552
+ .requirement a:hover {
2553
+ text-decoration: underline;
2554
+ }
2555
+
2556
+ /* Modal Section Styles */
2557
+ .basic-installation-section,
2558
+ .global-agent-section,
2559
+ .e2b-sandbox-section {
2560
+ margin-top: 1.5rem;
2561
+ padding-top: 1.5rem;
2562
+ border-top: 1px solid var(--border-secondary);
2563
+ }
2564
+
2565
+ .basic-installation-section {
2566
+ margin-top: 0;
2567
+ padding-top: 0;
2568
+ border-top: none;
2569
+ }
2570
+
2571
+ .installation-description,
2572
+ .global-agent-description,
2573
+ .e2b-description {
2574
+ color: var(--text-secondary);
2575
+ font-size: 0.9rem;
2576
+ margin: 0.5rem 0 1rem 0;
2577
+ font-style: italic;
2578
+ }
2579
+
2580
+ /* E2B Sandbox NEW Badge */
2581
+ .new-badge {
2582
+ background: linear-gradient(135deg, #4682B4 0%, #6495ED 100%);
2583
+ color: white;
2584
+ font-size: 0.6rem;
2585
+ font-weight: 600;
2586
+ padding: 2px 6px;
2587
+ border-radius: 3px;
2588
+ margin-left: 0.5rem;
2589
+ letter-spacing: 0.5px;
2590
+ vertical-align: middle;
2591
+ }
2592
+
2593
+ /* E2B Modal API Setup Styles - Simplified */
2594
+ .e2b-api-setup {
2595
+ margin: 1rem 0;
2596
+ background: var(--bg-terminal);
2597
+ border: 1px solid var(--border-primary);
2598
+ border-radius: 6px;
2599
+ padding: 1rem;
2600
+ }
2601
+
2602
+ .e2b-api-setup h5 {
2603
+ color: var(--text-primary);
2604
+ font-size: 0.85rem;
2605
+ font-weight: 600;
2606
+ margin: 0 0 0.8rem 0;
2607
+ }
2608
+
2609
+ .env-setup-simple {
2610
+ margin-bottom: 1rem;
2611
+ }
2612
+
2613
+ .env-comment {
2614
+ color: var(--text-secondary);
2615
+ font-size: 0.8rem;
2616
+ margin-bottom: 0.5rem;
2617
+ font-style: italic;
2618
+ }
2619
+
2620
+ .env-example {
2621
+ background: var(--bg-primary);
2622
+ border: 1px solid var(--border-primary);
2623
+ border-radius: 4px;
2624
+ padding: 0.8rem;
2625
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
2626
+ }
2627
+
2628
+ .env-example code {
2629
+ display: block;
2630
+ color: var(--text-accent);
2631
+ font-size: 0.8rem;
2632
+ background: none;
2633
+ padding: 0.2rem 0;
2634
+ margin: 0;
2635
+ }
2636
+
2637
+ /* API Key Links */
2638
+ .api-key-links {
2639
+ display: flex;
2640
+ gap: 1rem;
2641
+ margin-top: 0.5rem;
2642
+ flex-wrap: wrap;
2643
+ }
2644
+
2645
+ .api-key-link {
2646
+ display: inline-flex;
2647
+ align-items: center;
2648
+ gap: 0.5rem;
2649
+ padding: 0.6rem 1rem;
2650
+ background: rgba(70, 130, 180, 0.1);
2651
+ border: 1px solid rgba(70, 130, 180, 0.3);
2652
+ border-radius: 6px;
2653
+ color: var(--text-primary);
2654
+ text-decoration: none;
2655
+ font-size: 0.8rem;
2656
+ font-weight: 500;
2657
+ transition: all 0.2s ease;
2658
+ }
2659
+
2660
+ .api-key-link:hover {
2661
+ background: rgba(70, 130, 180, 0.2);
2662
+ border-color: rgba(70, 130, 180, 0.5);
2663
+ transform: translateY(-1px);
2664
+ }
2665
+
2666
+ .api-key-link span {
2667
+ font-size: 0.9rem;
2668
+ }
2669
+
2670
+ /* Responsive adjustments */
2671
+ @media (max-width: 768px) {
2672
+ .env-example code {
2673
+ font-size: 0.75rem;
2674
+ }
2675
+
2676
+ .api-key-links {
2677
+ flex-direction: column;
2678
+ gap: 0.5rem;
2679
+ }
2680
+
2681
+ .api-key-link {
2682
+ justify-content: center;
2683
+ }
2684
+ }
2685
+
2686
+ /* E2B Sandbox Tool Card Styles */
2687
+ .tool-card.e2b-highlight {
2688
+ background: linear-gradient(135deg, rgba(70, 130, 180, 0.1) 0%, rgba(100, 149, 237, 0.1) 100%);
2689
+ border: 2px solid rgba(70, 130, 180, 0.3);
2690
+ position: relative;
2691
+ grid-column: 1 / -1; /* Span across all columns */
2692
+ max-width: none;
2693
+ }
2694
+
2695
+ /* E2B highlight card internal layout */
2696
+ .tool-card.e2b-highlight .env-setup {
2697
+ display: grid;
2698
+ grid-template-columns: 1fr 1fr;
2699
+ gap: 1.5rem;
2700
+ align-items: start;
2701
+ }
2702
+
2703
+ .tool-card.e2b-highlight .command-line {
2704
+ margin-top: 1rem;
2705
+ }
2706
+
2707
+ .tool-card.e2b-highlight .api-links {
2708
+ margin-top: 1.5rem;
2709
+ }
2710
+
2711
+ /* Responsive adjustments for full-width E2B card */
2712
+ @media (max-width: 1024px) {
2713
+ .tool-card.e2b-highlight .env-setup {
2714
+ grid-template-columns: 1fr;
2715
+ gap: 1rem;
2716
+ }
2717
+ }
2718
+
2719
+ .tool-card.e2b-highlight::before {
2720
+ content: "NEW";
2721
+ position: absolute;
2722
+ top: -8px;
2723
+ right: 15px;
2724
+ background: linear-gradient(135deg, #4682B4 0%, #6495ED 100%);
2725
+ color: white;
2726
+ font-size: 0.7rem;
2727
+ font-weight: 600;
2728
+ padding: 2px 8px;
2729
+ border-radius: 4px;
2730
+ letter-spacing: 0.5px;
2731
+ }
2732
+
2733
+ .env-setup {
2734
+ background: var(--bg-terminal);
2735
+ border: 1px solid var(--border-primary);
2736
+ border-radius: 6px;
2737
+ padding: 1rem;
2738
+ margin: 1rem 0;
2739
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
2740
+ }
2741
+
2742
+ .env-comment {
2743
+ color: var(--text-secondary);
2744
+ font-size: 0.85rem;
2745
+ margin-bottom: 0.5rem;
2746
+ font-style: italic;
2747
+ }
2748
+
2749
+ .env-vars {
2750
+ display: flex;
2751
+ flex-direction: column;
2752
+ gap: 0.3rem;
2753
+ }
2754
+
2755
+ .env-vars code {
2756
+ color: var(--text-accent);
2757
+ font-size: 0.85rem;
2758
+ font-weight: 500;
2759
+ background: none;
2760
+ padding: 0;
2761
+ }
2762
+
2763
+ .api-links {
2764
+ display: flex;
2765
+ gap: 1rem;
2766
+ margin-top: 1rem;
2767
+ justify-content: center;
2768
+ }
2769
+
2770
+ .api-link {
2771
+ display: inline-flex;
2772
+ align-items: center;
2773
+ gap: 0.5rem;
2774
+ padding: 0.5rem 1rem;
2775
+ background: rgba(70, 130, 180, 0.1);
2776
+ border: 1px solid rgba(70, 130, 180, 0.3);
2777
+ border-radius: 6px;
2778
+ color: var(--text-primary);
2779
+ text-decoration: none;
2780
+ font-size: 0.85rem;
2781
+ font-weight: 500;
2782
+ transition: all 0.2s ease;
2783
+ }
2784
+
2785
+ .api-link:hover {
2786
+ background: rgba(70, 130, 180, 0.2);
2787
+ border-color: rgba(70, 130, 180, 0.5);
2788
+ transform: translateY(-1px);
2789
+ }
2790
+
2791
+ .api-link::before {
2792
+ content: "🔑";
2793
+ font-size: 0.9rem;
2794
+ }
2795
+
2796
+ /* Responsive adjustments */
2797
+ @media (max-width: 768px) {
2798
+ .api-links {
2799
+ flex-direction: column;
2800
+ gap: 0.5rem;
2801
+ }
2802
+
2803
+ .env-vars code {
2804
+ font-size: 0.75rem;
2805
+ }
2806
+ }
2807
+
2808
+ /* Sandbox Step Card Styles */
2809
+ .step-card.sandbox-highlight {
2810
+ background: linear-gradient(135deg, rgba(70, 130, 180, 0.08) 0%, rgba(100, 149, 237, 0.08) 100%);
2811
+ border: 2px solid rgba(70, 130, 180, 0.2);
2812
+ position: relative;
2813
+ }
2814
+
2815
+ .step-card.sandbox-highlight .step-number {
2816
+ background: linear-gradient(135deg, #4682B4 0%, #6495ED 100%);
2817
+ color: white;
2818
+ font-size: 1.2rem;
2819
+ display: flex;
2820
+ align-items: center;
2821
+ justify-content: center;
2822
+ }
2823
+
2824
+ .sandbox-setup {
2825
+ margin: 0.8rem 0;
2826
+ }
2827
+
2828
+ .env-hint {
2829
+ background: var(--bg-terminal);
2830
+ border: 1px solid var(--border-primary);
2831
+ border-radius: 4px;
2832
+ padding: 0.6rem;
2833
+ font-size: 0.8rem;
2834
+ color: var(--text-secondary);
2835
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
2836
+ text-align: center;
2837
+ }
2838
+
2839
+ /* Adjust steps grid for 4 items */
2840
+ .steps-grid {
2841
+ display: grid;
2842
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
2843
+ gap: 2rem;
2844
+ max-width: 1200px;
2845
+ margin: 0 auto;
2846
+ }
2847
+
2848
+ /* Mobile responsive adjustments */
2849
+ @media (max-width: 768px) {
2850
+ .steps-grid {
2851
+ grid-template-columns: 1fr;
2852
+ gap: 1.5rem;
2853
+ }
2854
+
2855
+ .env-hint {
2856
+ font-size: 0.75rem;
2857
+ padding: 0.5rem;
2858
+ }
2859
+ }
2860
+
2861
+ .component-preview {
2862
+ background: var(--bg-primary);
2863
+ border: 1px solid var(--border-secondary);
2864
+ border-radius: 8px;
2865
+ padding: 1rem;
2866
+ overflow-y: auto;
2867
+ }
2868
+
2869
+ .component-preview pre {
2870
+ margin: 0;
2871
+ color: var(--text-primary);
2872
+ font-size: 0.8rem;
2873
+ line-height: 1.4;
2874
+ white-space: pre-wrap;
2875
+ word-wrap: break-word;
2876
+ }
2877
+
2878
+ .component-preview code {
2879
+ font-family: inherit;
2880
+ color: var(--text-info);
2881
+ }
2882
+
2883
+ /* Contribute Component Modal */
2884
+ .contribute-component-modal .component-structure {
2885
+ background: var(--bg-primary);
2886
+ border: 1px solid var(--border-secondary);
2887
+ border-radius: 6px;
2888
+ padding: 1rem;
2889
+ margin: 0.75rem 0;
2890
+ }
2891
+
2892
+ .contribute-component-modal .component-structure strong {
2893
+ color: var(--text-accent);
2894
+ font-size: 0.85rem;
2895
+ display: block;
2896
+ margin-bottom: 0.5rem;
2897
+ }
2898
+
2899
+ .contribute-component-modal .component-structure pre {
2900
+ color: var(--text-secondary);
2901
+ font-size: 0.75rem;
2902
+ line-height: 1.4;
2903
+ margin: 0;
2904
+ white-space: pre-wrap;
2905
+ }
2906
+
2907
+ /* Enhanced Loading States */
2908
+ .loading {
2909
+ grid-column: 1 / -1;
2910
+ text-align: center;
2911
+ color: var(--text-secondary);
2912
+ background: var(--bg-tertiary);
2913
+ border: 1px solid var(--border-primary);
2914
+ border-radius: 12px;
2915
+ padding: 3rem 2rem;
2916
+ font-size: 1rem;
2917
+ position: relative;
2918
+ overflow: hidden;
2919
+ }
2920
+
2921
+ .loading:before {
2922
+ content: "";
2923
+ position: absolute;
2924
+ top: 0;
2925
+ left: -100%;
2926
+ width: 100%;
2927
+ height: 100%;
2928
+ background: linear-gradient(
2929
+ 90deg,
2930
+ transparent,
2931
+ rgba(213, 116, 85, 0.1),
2932
+ transparent
2933
+ );
2934
+ animation: loading-shimmer 2s infinite;
2935
+ }
2936
+
2937
+ @keyframes loading-shimmer {
2938
+ 0% { left: -100%; }
2939
+ 100% { left: 100%; }
2940
+ }
2941
+
2942
+ /* Responsive Design for Component Interface */
2943
+ @media (max-width: 768px) {
2944
+ .unified-filter-bar .filter-buttons {
2945
+ gap: 0.5rem;
2946
+ }
2947
+
2948
+ .unified-filter-bar .filter-btn {
2949
+ padding: 0.6rem 1rem;
2950
+ font-size: 0.85rem;
2951
+ }
2952
+
2953
+ .unified-grid {
2954
+ grid-template-columns: 1fr;
2955
+ gap: 1rem;
2956
+ }
2957
+
2958
+ .unified-filter-bar {
2959
+ padding: 1rem;
2960
+ }
2961
+
2962
+ .components-grid {
2963
+ grid-template-columns: 1fr;
2964
+ gap: 1rem;
2965
+ }
2966
+
2967
+ .component-category {
2968
+ padding: 1rem;
2969
+ }
2970
+ }
2971
+
2972
+
2973
+ /* Cart Instructions */
2974
+ .cart-instructions {
2975
+ background: var(--bg-tertiary);
2976
+ border: 1px solid var(--border-primary);
2977
+ border-radius: 8px;
2978
+ padding: 1rem;
2979
+ margin: 1.5rem 0;
2980
+ transition: all 0.3s ease;
2981
+ }
2982
+
2983
+ .cart-instructions:hover {
2984
+ border-color: var(--text-accent);
2985
+ box-shadow: 0 2px 8px var(--shadow-primary);
2986
+ }
2987
+
2988
+ .cart-instructions .instructions-header {
2989
+ display: flex;
2990
+ align-items: center;
2991
+ gap: 0.5rem;
2992
+ color: var(--text-accent);
2993
+ font-weight: 600;
2994
+ margin-bottom: 0.75rem;
2995
+ font-size: 0.9rem;
2996
+ }
2997
+
2998
+ .cart-instructions p {
2999
+ color: var(--text-secondary);
3000
+ font-size: 0.8rem;
3001
+ line-height: 1.5;
3002
+ margin: 0;
3003
+ }
3004
+
3005
+ /* Clear All Button (moved to top) */
3006
+ .cart-clear-section {
3007
+ display: flex;
3008
+ justify-content: flex-end;
3009
+ margin-bottom: 1rem;
3010
+ padding-bottom: 0.75rem;
3011
+ border-bottom: 1px solid var(--border-primary);
3012
+ }
3013
+
3014
+ .clear-all-btn {
3015
+ background: transparent;
3016
+ color: var(--text-secondary);
3017
+ border: 1px solid var(--border-primary);
3018
+ padding: 0.4rem 0.8rem;
3019
+ border-radius: 4px;
3020
+ cursor: pointer;
3021
+ font-size: 0.8rem;
3022
+ transition: all 0.2s ease;
3023
+ display: flex;
3024
+ align-items: center;
3025
+ gap: 0.4rem;
3026
+ }
3027
+
3028
+ .clear-all-btn:hover {
3029
+ border-color: var(--text-error);
3030
+ color: var(--text-error);
3031
+ background: rgba(248, 81, 73, 0.1);
3032
+ }
3033
+
3034
+ /* Subtle Clear All Button */
3035
+ .cart-clear-section-prominent {
3036
+ margin: 0.5rem 1.5rem;
3037
+ padding: 0.5rem 0;
3038
+ border-bottom: 1px solid var(--border-primary);
3039
+ display: flex;
3040
+ justify-content: flex-end;
3041
+ align-items: center;
3042
+ }
3043
+
3044
+ .clear-all-btn-prominent {
3045
+ background: transparent;
3046
+ color: var(--text-secondary);
3047
+ border: 1px solid var(--border-primary);
3048
+ padding: 0.4rem 0.8rem;
3049
+ border-radius: 4px;
3050
+ cursor: pointer;
3051
+ font-size: 0.8rem;
3052
+ font-weight: 500;
3053
+ transition: all 0.2s ease;
3054
+ display: flex;
3055
+ align-items: center;
3056
+ gap: 0.4rem;
3057
+ text-transform: none;
3058
+ letter-spacing: normal;
3059
+ }
3060
+
3061
+ .clear-all-btn-prominent:hover {
3062
+ border-color: var(--text-error);
3063
+ color: var(--text-error);
3064
+ background: rgba(248, 81, 73, 0.05);
3065
+ transform: none;
3066
+ }
3067
+
3068
+ .clear-all-btn-prominent:active {
3069
+ transform: none;
3070
+ background: rgba(248, 81, 73, 0.1);
3071
+ }
3072
+
3073
+ .clear-count {
3074
+ background: var(--bg-tertiary);
3075
+ padding: 0.1rem 0.3rem;
3076
+ border-radius: 8px;
3077
+ font-size: 0.7rem;
3078
+ font-weight: 500;
3079
+ margin-left: 0.2rem;
3080
+ color: var(--text-secondary);
3081
+ }
3082
+
3083
+ /* Cart Header Improvements */
3084
+ .cart-header-main {
3085
+ display: flex;
3086
+ justify-content: space-between;
3087
+ align-items: center;
3088
+ width: 100%;
3089
+ margin-bottom: 0.5rem;
3090
+ }
3091
+
3092
+ /* Share Dropdown Container */
3093
+ .share-dropdown {
3094
+ position: relative;
3095
+ flex: 1;
3096
+ }
3097
+
3098
+ /* Share Stack Button */
3099
+ .share-stack-btn {
3100
+ background: var(--bg-tertiary);
3101
+ color: var(--text-primary);
3102
+ border: 1px solid var(--border-primary);
3103
+ padding: 0.5rem 1rem;
3104
+ border-radius: 6px;
3105
+ cursor: pointer;
3106
+ font-size: 0.9rem;
3107
+ font-weight: 500;
3108
+ transition: all 0.2s ease;
3109
+ display: flex;
3110
+ align-items: center;
3111
+ gap: 0.5rem;
3112
+ width: 100%;
3113
+ justify-content: center;
3114
+ }
3115
+
3116
+ .share-stack-btn:hover {
3117
+ background: var(--bg-primary);
3118
+ border-color: var(--text-accent);
3119
+ transform: translateY(-1px);
3120
+ }
3121
+
3122
+ .dropdown-arrow {
3123
+ margin-left: auto;
3124
+ transition: transform 0.2s ease;
3125
+ }
3126
+
3127
+ .share-dropdown.open .dropdown-arrow {
3128
+ transform: rotate(180deg);
3129
+ }
3130
+
3131
+ /* Share Options */
3132
+ .share-options {
3133
+ position: absolute;
3134
+ bottom: 100%;
3135
+ left: 0;
3136
+ right: 0;
3137
+ background: var(--bg-tertiary);
3138
+ border: 1px solid var(--border-primary);
3139
+ border-radius: 6px;
3140
+ box-shadow: 0 -4px 16px var(--shadow-primary);
3141
+ display: none;
3142
+ flex-direction: column;
3143
+ gap: 0;
3144
+ margin-bottom: 8px;
3145
+ z-index: 1000;
3146
+ }
3147
+
3148
+ .share-dropdown.open .share-options {
3149
+ display: flex;
3150
+ }
3151
+
3152
+ .share-option-btn {
3153
+ background: var(--bg-tertiary);
3154
+ color: var(--text-primary);
3155
+ border: none;
3156
+ border-bottom: 1px solid var(--border-primary);
3157
+ padding: 0.75rem 1rem;
3158
+ border-radius: 0;
3159
+ cursor: pointer;
3160
+ font-size: 0.85rem;
3161
+ transition: all 0.2s ease;
3162
+ display: flex;
3163
+ align-items: center;
3164
+ gap: 0.5rem;
3165
+ justify-content: flex-start;
3166
+ }
3167
+
3168
+ .share-option-btn:hover {
3169
+ background: var(--bg-primary);
3170
+ color: var(--text-accent);
3171
+ }
3172
+
3173
+ .share-option-btn:first-child {
3174
+ background: var(--bg-tertiary);
3175
+ color: var(--text-primary);
3176
+ border-top-left-radius: 6px;
3177
+ border-top-right-radius: 6px;
3178
+ }
3179
+
3180
+ .share-option-btn:first-child:hover {
3181
+ background: var(--bg-primary);
3182
+ color: var(--text-accent);
3183
+ }
3184
+
3185
+ .share-option-btn:last-child {
3186
+ background: var(--bg-tertiary);
3187
+ color: var(--text-primary);
3188
+ border-bottom-left-radius: 6px;
3189
+ border-bottom-right-radius: 6px;
3190
+ border-bottom: none;
3191
+ }
3192
+
3193
+ .share-option-btn:last-child:hover {
3194
+ background: var(--bg-primary);
3195
+ color: var(--text-accent);
3196
+ }
3197
+
3198
+ flex-direction: column;
3199
+ align-items: center;
3200
+ gap: 0.5rem;
3201
+ }
3202
+
3203
+ .unified-filter-bar .filter-btn {
3204
+ width: 100%;
3205
+ max-width: 280px;
3206
+ justify-content: center;
3207
+ padding: 0.6rem 1rem;
3208
+ font-size: 0.85rem;
3209
+ }
3210
+
3211
+ .filter-buttons {
3212
+ gap: 0.5rem;
3213
+ }
3214
+
3215
+ .filter-btn {
3216
+ padding: 0.5rem 0.75rem;
3217
+ font-size: 0.8rem;
3218
+ }
3219
+
3220
+ .components-container {
3221
+ grid-template-columns: 1fr;
3222
+ gap: 1rem;
3223
+ }
3224
+
3225
+ .component-filter-bar {
3226
+ padding: 1rem;
3227
+ }
3228
+
3229
+ .component-modal {
3230
+ max-width: 100%;
3231
+ }
3232
+
3233
+ .component-modal-title {
3234
+ flex-direction: column;
3235
+ align-items: flex-start;
3236
+ gap: 0.5rem;
3237
+ }
3238
+
3239
+ .component-modal-title .component-type-badge {
3240
+ margin-left: 0;
3241
+ }
3242
+
3243
+ .component-preview {
3244
+ padding: 0.75rem;
3245
+ }
3246
+
3247
+ .component-preview pre {
3248
+ font-size: 0.75rem;
3249
+ }
3250
+ }
3251
+
3252
+ /* Focus and Accessibility */
3253
+ .filter-btn:focus,
3254
+ .mode-btn:focus {
3255
+ outline: 2px solid var(--text-accent);
3256
+ outline-offset: 2px;
3257
+ }
3258
+
3259
+ .template-card:focus {
3260
+ outline: 2px solid var(--text-accent);
3261
+ outline-offset: 4px;
3262
+ }
3263
+
3264
+ /* High contrast mode adjustments */
3265
+ @media (prefers-contrast: high) {
3266
+ .component-type-badge {
3267
+ border: 1px solid white;
3268
+ }
3269
+
3270
+ .filter-btn.active {
3271
+ box-shadow: 0 0 0 2px var(--bg-primary);
3272
+ }
3273
+
3274
+ .add-component-card:hover {
3275
+ border-width: 3px;
3276
+ }
3277
+ }
3278
+
3279
+ /* Download Statistics Section */
3280
+ .download-stats-section {
3281
+ padding: 1.5rem 0;
3282
+ margin: 1rem 0;
3283
+ display: block !important; /* Always keep visible */
3284
+ }
3285
+
3286
+ .stats-container {
3287
+ max-width: 1200px;
3288
+ margin: 0 auto;
3289
+ padding: 0 1rem;
3290
+ }
3291
+
3292
+ .stats-header {
3293
+ margin-bottom: 1rem;
3294
+ }
3295
+
3296
+ .stats-title {
3297
+ font-size: 1.2rem;
3298
+ font-weight: 600;
3299
+ color: var(--text-primary);
3300
+ margin-bottom: 0.5rem;
3301
+ }
3302
+
3303
+ .stats-subtitle {
3304
+ color: var(--text-secondary);
3305
+ font-size: 0.9rem;
3306
+ }
3307
+
3308
+ .stats-grid {
3309
+ display: grid;
3310
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
3311
+ gap: 1rem;
3312
+ margin-bottom: 1.5rem;
3313
+ }
3314
+
3315
+ .stat-card {
3316
+ background: var(--bg-tertiary);
3317
+ border: 1px solid var(--border-primary);
3318
+ border-radius: 6px;
3319
+ padding: 1.5rem;
3320
+ display: flex;
3321
+ align-items: center;
3322
+ gap: 1rem;
3323
+ transition: all 0.3s ease;
3324
+ position: relative;
3325
+ overflow: hidden;
3326
+ }
3327
+
3328
+ .stat-card::before {
3329
+ content: '';
3330
+ position: absolute;
3331
+ top: 0;
3332
+ left: 0;
3333
+ width: 3px;
3334
+ height: 100%;
3335
+ background: var(--text-accent);
3336
+ opacity: 0;
3337
+ transition: opacity 0.3s ease;
3338
+ }
3339
+
3340
+ .stat-card:hover {
3341
+ border-color: var(--text-accent);
3342
+ transform: translateY(-2px);
3343
+ box-shadow: 0 4px 12px var(--shadow-primary);
3344
+ }
3345
+
3346
+ .stat-card:hover::before {
3347
+ opacity: 1;
3348
+ }
3349
+
3350
+ .stat-icon {
3351
+ font-size: 2rem;
3352
+ line-height: 1;
3353
+ opacity: 0.8;
3354
+ }
3355
+
3356
+ .stat-content {
3357
+ flex: 1;
3358
+ min-width: 0;
3359
+ }
3360
+
3361
+ .stat-number {
3362
+ font-size: 1.8rem;
3363
+ font-weight: 700;
3364
+ color: var(--text-primary);
3365
+ line-height: 1.2;
3366
+ margin-bottom: 0.25rem;
3367
+ font-family: 'Courier New', monospace;
3368
+ }
3369
+
3370
+ .stat-label {
3371
+ font-size: 0.8rem;
3372
+ color: var(--text-secondary);
3373
+ text-transform: uppercase;
3374
+ letter-spacing: 0.5px;
3375
+ font-weight: 500;
3376
+ }
3377
+
3378
+ .popular-component .stat-number {
3379
+ color: var(--text-success);
3380
+ font-size: 1.2rem;
3381
+ font-weight: 600;
3382
+ font-family: inherit;
3383
+ text-overflow: ellipsis;
3384
+ overflow: hidden;
3385
+ white-space: nowrap;
3386
+ }
3387
+
3388
+ .popular-component .stat-icon {
3389
+ animation: pulse-gold 2s infinite;
3390
+ }
3391
+
3392
+ @keyframes pulse-gold {
3393
+ 0%, 100% { opacity: 0.8; transform: scale(1); }
3394
+ 50% { opacity: 1; transform: scale(1.1); }
3395
+ }
3396
+
3397
+ .stats-updated {
3398
+ text-align: center;
3399
+ color: var(--text-secondary);
3400
+ font-size: 0.75rem;
3401
+ opacity: 0.7;
3402
+ border-top: 1px solid var(--border-primary);
3403
+ padding-top: 1rem;
3404
+ }
3405
+
3406
+ /* Loading state for stats */
3407
+ .stat-number.loading {
3408
+ background: linear-gradient(90deg, transparent, rgba(141, 150, 178, 0.2), transparent);
3409
+ background-size: 200% 100%;
3410
+ animation: loading-shimmer 2s infinite;
3411
+ color: transparent;
3412
+ border-radius: 4px;
3413
+ min-height: 1.8rem;
3414
+ display: flex;
3415
+ align-items: center;
3416
+ }
3417
+
3418
+ .stat-number.loading::after {
3419
+ content: '---';
3420
+ color: var(--text-secondary);
3421
+ opacity: 0.5;
3422
+ }
3423
+
3424
+ @keyframes loading-shimmer {
3425
+ 0% { background-position: -200% 0; }
3426
+ 100% { background-position: 200% 0; }
3427
+ }
3428
+
3429
+ /* Improved compact stats design */
3430
+ .stats-header {
3431
+ text-align: center;
3432
+ margin-bottom: 1.5rem;
3433
+ }
3434
+
3435
+ .stats-subtitle {
3436
+ color: var(--text-secondary);
3437
+ font-size: 0.9rem;
3438
+ margin-top: 0.5rem;
3439
+ }
3440
+
3441
+ .stats-compact {
3442
+ display: grid;
3443
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
3444
+ gap: 1rem;
3445
+ margin-bottom: 1rem;
3446
+ }
3447
+
3448
+ .stat-item-compact {
3449
+ display: flex;
3450
+ align-items: center;
3451
+ gap: 0.75rem;
3452
+ padding: 0.75rem;
3453
+ background: var(--bg-tertiary);
3454
+ border: 1px solid var(--border-primary);
3455
+ border-radius: 6px;
3456
+ transition: all 0.3s ease;
3457
+ }
3458
+
3459
+ .stat-item-compact:hover {
3460
+ border-color: var(--text-accent);
3461
+ background: rgba(213, 116, 85, 0.05);
3462
+ transform: translateY(-1px);
3463
+ }
3464
+
3465
+ .stat-item-compact.popular-item {
3466
+ border-color: var(--text-warning);
3467
+ background: rgba(249, 115, 22, 0.05);
3468
+ }
3469
+
3470
+ .stat-item-compact.popular-item:hover {
3471
+ border-color: var(--text-warning);
3472
+ background: rgba(249, 115, 22, 0.1);
3473
+ }
3474
+
3475
+ .stat-icon {
3476
+ font-size: 1.2rem;
3477
+ opacity: 0.8;
3478
+ flex-shrink: 0;
3479
+ }
3480
+
3481
+ .stat-data {
3482
+ display: flex;
3483
+ flex-direction: column;
3484
+ gap: 0.1rem;
3485
+ min-width: 0;
3486
+ }
3487
+
3488
+ .stat-number {
3489
+ font-size: 1.2rem;
3490
+ font-weight: 600;
3491
+ color: var(--text-primary);
3492
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
3493
+ line-height: 1.2;
3494
+ }
3495
+
3496
+ .popular-item .stat-number {
3497
+ color: var(--text-warning);
3498
+ }
3499
+
3500
+ .stat-label {
3501
+ font-size: 0.75rem;
3502
+ color: var(--text-secondary);
3503
+ text-transform: uppercase;
3504
+ font-weight: 500;
3505
+ letter-spacing: 0.3px;
3506
+ white-space: nowrap;
3507
+ overflow: hidden;
3508
+ text-overflow: ellipsis;
3509
+ }
3510
+
3511
+ .stats-actions {
3512
+ display: flex;
3513
+ justify-content: center;
3514
+ margin: 1rem 0;
3515
+ }
3516
+
3517
+ .stats-detail-btn {
3518
+ display: inline-flex;
3519
+ align-items: center;
3520
+ gap: 0.5rem;
3521
+ padding: 0.75rem 1.25rem;
3522
+ background: linear-gradient(135deg, var(--text-accent), #f97316);
3523
+ color: var(--bg-primary);
3524
+ text-decoration: none;
3525
+ border-radius: 6px;
3526
+ font-size: 0.875rem;
3527
+ font-weight: 500;
3528
+ transition: all 0.2s ease;
3529
+ border: 1px solid transparent;
3530
+ }
3531
+
3532
+ .stats-detail-btn:hover {
3533
+ transform: translateY(-2px);
3534
+ box-shadow: 0 8px 16px rgba(213, 116, 85, 0.3);
3535
+ background: linear-gradient(135deg, #f97316, var(--text-accent));
3536
+ }
3537
+
3538
+ .stats-detail-btn svg {
3539
+ transition: transform 0.2s ease;
3540
+ }
3541
+
3542
+ .stats-detail-btn:hover svg {
3543
+ transform: scale(1.1);
3544
+ }
3545
+
3546
+ .stats-updated {
3547
+ text-align: center;
3548
+ font-size: 0.8rem;
3549
+ color: var(--text-secondary);
3550
+ opacity: 0.8;
3551
+ }
3552
+
3553
+ /* Responsive design for smaller screens */
3554
+ @media (max-width: 768px) {
3555
+ .stats-compact {
3556
+ grid-template-columns: repeat(2, 1fr);
3557
+ gap: 0.75rem;
3558
+ }
3559
+
3560
+ .stat-item-compact {
3561
+ padding: 0.5rem;
3562
+ gap: 0.5rem;
3563
+ }
3564
+
3565
+ .stat-icon {
3566
+ font-size: 1rem;
3567
+ }
3568
+
3569
+ .stat-number {
3570
+ font-size: 1rem;
3571
+ }
3572
+
3573
+ .stat-label {
3574
+ font-size: 0.7rem;
3575
+ }
3576
+ }
3577
+
3578
+ /* Responsive Design */
3579
+ @media (max-width: 768px) {
3580
+ .stats-grid {
3581
+ grid-template-columns: repeat(2, 1fr);
3582
+ gap: 0.75rem;
3583
+ }
3584
+
3585
+ .stat-card {
3586
+ padding: 1rem;
3587
+ gap: 0.75rem;
3588
+ }
3589
+
3590
+ .stat-icon {
3591
+ font-size: 1.5rem;
3592
+ }
3593
+
3594
+ .stat-number {
3595
+ font-size: 1.4rem;
3596
+ }
3597
+
3598
+ .stats-title {
3599
+ font-size: 1.25rem;
3600
+ }
3601
+ }
3602
+
3603
+ @media (max-width: 480px) {
3604
+ .stats-grid {
3605
+ grid-template-columns: 1fr;
3606
+ }
3607
+
3608
+ .popular-component .stat-number {
3609
+ font-size: 1rem;
3610
+ }
3611
+ }
3612
+
3613
+ /* Pagination Styles */
3614
+ .pagination-container {
3615
+ display: flex;
3616
+ flex-direction: column;
3617
+ align-items: center;
3618
+ gap: 1rem;
3619
+ margin: 2rem 0;
3620
+ padding: 1.5rem;
3621
+ }
3622
+
3623
+ .pagination {
3624
+ display: flex;
3625
+ align-items: center;
3626
+ gap: 0.5rem;
3627
+ background: var(--bg-secondary);
3628
+ padding: 0.75rem 1rem;
3629
+ border-radius: 12px;
3630
+ border: 1px solid var(--border-color);
3631
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
3632
+ }
3633
+
3634
+ .pagination-btn {
3635
+ display: flex;
3636
+ align-items: center;
3637
+ justify-content: center;
3638
+ min-width: 40px;
3639
+ height: 40px;
3640
+ padding: 0.5rem;
3641
+ background: transparent;
3642
+ border: 1px solid var(--border-color);
3643
+ border-radius: 8px;
3644
+ color: var(--text-primary);
3645
+ font-size: 14px;
3646
+ font-weight: 500;
3647
+ cursor: pointer;
3648
+ transition: all 0.2s ease;
3649
+ user-select: none;
3650
+ }
3651
+
3652
+ .pagination-btn:hover:not(:disabled) {
3653
+ background: var(--accent-color);
3654
+ color: white;
3655
+ border-color: var(--accent-color);
3656
+ transform: translateY(-1px);
3657
+ }
3658
+
3659
+ .pagination-btn.active {
3660
+ background: var(--accent-color);
3661
+ color: white;
3662
+ border-color: var(--accent-color);
3663
+ box-shadow: 0 2px 4px rgba(245, 158, 11, 0.3);
3664
+ }
3665
+
3666
+ .pagination-btn:disabled {
3667
+ opacity: 0.4;
3668
+ cursor: not-allowed;
3669
+ color: var(--text-secondary);
3670
+ }
3671
+
3672
+ .pagination-btn.prev-btn,
3673
+ .pagination-btn.next-btn {
3674
+ min-width: 36px;
3675
+ background: var(--bg-tertiary);
3676
+ }
3677
+
3678
+ .pagination-btn.prev-btn:hover:not(:disabled),
3679
+ .pagination-btn.next-btn:hover:not(:disabled) {
3680
+ background: var(--accent-color);
3681
+ color: white;
3682
+ }
3683
+
3684
+ .pagination-dots {
3685
+ color: var(--text-secondary);
3686
+ font-weight: bold;
3687
+ padding: 0 0.5rem;
3688
+ user-select: none;
3689
+ }
3690
+
3691
+ .pagination-info {
3692
+ color: var(--text-secondary);
3693
+ font-size: 14px;
3694
+ text-align: center;
3695
+ background: var(--bg-secondary);
3696
+ padding: 0.5rem 1rem;
3697
+ border-radius: 8px;
3698
+ border: 1px solid var(--border-color);
3699
+ }
3700
+
3701
+ /* Responsive pagination */
3702
+ @media (max-width: 768px) {
3703
+ .pagination {
3704
+ flex-wrap: wrap;
3705
+ justify-content: center;
3706
+ gap: 0.25rem;
3707
+ padding: 0.5rem;
3708
+ }
3709
+
3710
+ .pagination-btn {
3711
+ min-width: 36px;
3712
+ height: 36px;
3713
+ font-size: 13px;
3714
+ }
3715
+
3716
+ .pagination-container {
3717
+ margin: 1rem 0;
3718
+ padding: 1rem;
3719
+ }
3720
+ }
3721
+
3722
+ @media (max-width: 480px) {
3723
+ .pagination {
3724
+ gap: 0.25rem;
3725
+ }
3726
+
3727
+ .pagination-btn {
3728
+ min-width: 32px;
3729
+ height: 32px;
3730
+ font-size: 12px;
3731
+ }
3732
+
3733
+ .pagination-info {
3734
+ font-size: 13px;
3735
+ padding: 0.4rem 0.8rem;
3736
+ }
3737
+ }
3738
+
3739
+ /* ====== SHOPPING CART STYLES ====== */
3740
+
3741
+ /* Cart Sidebar */
3742
+ .cart-sidebar {
3743
+ position: fixed;
3744
+ top: 0;
3745
+ right: -500px;
3746
+ width: 500px;
3747
+ height: 100vh;
3748
+ background: var(--bg-secondary);
3749
+ border-left: 1px solid var(--border-primary);
3750
+ z-index: 1000;
3751
+ transition: right 0.3s ease-out;
3752
+ box-shadow: -10px 0 30px rgba(0, 0, 0, 0.3);
3753
+ pointer-events: none;
3754
+ }
3755
+
3756
+ .cart-sidebar.active {
3757
+ right: 0;
3758
+ pointer-events: all;
3759
+ }
3760
+
3761
+ /* Overlay for sidebar - DISABLED to allow background visibility */
3762
+ .cart-sidebar::before {
3763
+ display: none !important;
3764
+ }
3765
+
3766
+ .cart-sidebar.active::before {
3767
+ display: none !important;
3768
+ }
3769
+
3770
+ .cart-content {
3771
+ background: var(--bg-secondary);
3772
+ width: 100%;
3773
+ height: 100%;
3774
+ display: flex;
3775
+ flex-direction: column;
3776
+ }
3777
+
3778
+ /* Cart Header */
3779
+ .cart-header {
3780
+ padding: 1.5rem;
3781
+ border-bottom: 1px solid var(--border-primary);
3782
+ background: var(--bg-tertiary);
3783
+ flex-shrink: 0;
3784
+ }
3785
+
3786
+ .cart-header h3 {
3787
+ display: flex;
3788
+ align-items: center;
3789
+ gap: 0.75rem;
3790
+ color: var(--text-primary);
3791
+ font-size: 1.25rem;
3792
+ font-weight: 600;
3793
+ margin: 0;
3794
+ }
3795
+
3796
+ .cart-close {
3797
+ background: none;
3798
+ border: none;
3799
+ color: var(--text-secondary);
3800
+ cursor: pointer;
3801
+ padding: 0.5rem;
3802
+ border-radius: 6px;
3803
+ transition: all 0.2s ease;
3804
+ }
3805
+
3806
+ .cart-close:hover {
3807
+ background: var(--bg-primary);
3808
+ color: var(--text-primary);
3809
+ }
3810
+
3811
+ /* Cart Body */
3812
+ .cart-body {
3813
+ flex: 1;
3814
+ overflow-y: auto;
3815
+ padding: 1.5rem;
3816
+ min-height: 200px;
3817
+ }
3818
+
3819
+ .cart-empty {
3820
+ text-align: center;
3821
+ padding: 2rem 1rem;
3822
+ color: var(--text-secondary);
3823
+ }
3824
+
3825
+ .empty-cart-icon {
3826
+ font-size: 3rem;
3827
+ margin-bottom: 1rem;
3828
+ opacity: 0.6;
3829
+ }
3830
+
3831
+ .cart-empty p {
3832
+ font-size: 1.1rem;
3833
+ margin-bottom: 0.5rem;
3834
+ color: var(--text-primary);
3835
+ }
3836
+
3837
+ .cart-empty small {
3838
+ font-size: 0.9rem;
3839
+ opacity: 0.8;
3840
+ }
3841
+
3842
+ /* Cart Sections */
3843
+ .cart-section {
3844
+ margin-bottom: 1.5rem;
3845
+ }
3846
+
3847
+ .cart-section h4 {
3848
+ display: flex;
3849
+ align-items: center;
3850
+ gap: 0.5rem;
3851
+ color: var(--text-primary);
3852
+ font-size: 1rem;
3853
+ font-weight: 600;
3854
+ margin-bottom: 0.75rem;
3855
+ padding-bottom: 0.5rem;
3856
+ border-bottom: 1px solid var(--border-primary);
3857
+ }
3858
+
3859
+ .section-icon {
3860
+ font-size: 1.1rem;
3861
+ }
3862
+
3863
+ .cart-section-items {
3864
+ display: flex;
3865
+ flex-direction: column;
3866
+ gap: 0.5rem;
3867
+ }
3868
+
3869
+ /* Cart Item */
3870
+ .cart-item {
3871
+ display: flex;
3872
+ align-items: center;
3873
+ gap: 0.5rem;
3874
+ padding: 0.5rem;
3875
+ background: var(--bg-tertiary);
3876
+ border: 1px solid var(--border-primary);
3877
+ border-radius: 6px;
3878
+ transition: all 0.2s ease;
3879
+ }
3880
+
3881
+ .cart-item:hover {
3882
+ border-color: var(--accent-color);
3883
+ background: var(--bg-primary);
3884
+ }
3885
+
3886
+ .cart-item-icon {
3887
+ font-size: 1rem;
3888
+ flex-shrink: 0;
3889
+ }
3890
+
3891
+ .cart-item-info {
3892
+ flex: 1;
3893
+ min-width: 0;
3894
+ }
3895
+
3896
+ .cart-item-name {
3897
+ color: var(--text-primary);
3898
+ font-weight: 500;
3899
+ font-size: 0.8rem;
3900
+ margin-bottom: 0.1rem;
3901
+ white-space: nowrap;
3902
+ overflow: hidden;
3903
+ text-overflow: ellipsis;
3904
+ }
3905
+
3906
+ .cart-item-path {
3907
+ color: var(--text-secondary);
3908
+ font-size: 0.7rem;
3909
+ font-family: 'Monaco', 'Menlo', monospace;
3910
+ white-space: nowrap;
3911
+ overflow: hidden;
3912
+ text-overflow: ellipsis;
3913
+ }
3914
+
3915
+ .cart-item-remove {
3916
+ background: none;
3917
+ border: none;
3918
+ color: var(--text-secondary);
3919
+ cursor: pointer;
3920
+ padding: 0.2rem;
3921
+ border-radius: 3px;
3922
+ transition: all 0.2s ease;
3923
+ flex-shrink: 0;
3924
+ }
3925
+
3926
+ .cart-item-remove:hover {
3927
+ background: var(--text-error);
3928
+ color: white;
3929
+ }
3930
+
3931
+ /* Cart Footer */
3932
+ .cart-footer {
3933
+ border-top: 1px solid var(--border-primary);
3934
+ padding: 1.5rem;
3935
+ background: var(--bg-tertiary);
3936
+ flex-shrink: 0;
3937
+ }
3938
+
3939
+ .command-preview {
3940
+ margin-bottom: 1rem;
3941
+ }
3942
+
3943
+ .command-preview-header {
3944
+ display: flex;
3945
+ align-items: center;
3946
+ justify-content: space-between;
3947
+ margin-bottom: 0.5rem;
3948
+ }
3949
+
3950
+ .command-preview-header span {
3951
+ color: var(--text-secondary);
3952
+ font-size: 0.9rem;
3953
+ font-weight: 500;
3954
+ }
3955
+
3956
+ .copy-command-btn {
3957
+ background: var(--accent-color);
3958
+ color: white;
3959
+ border: none;
3960
+ padding: 0.25rem 0.5rem;
3961
+ border-radius: 4px;
3962
+ cursor: pointer;
3963
+ font-size: 0.8rem;
3964
+ transition: all 0.2s ease;
3965
+ display: flex;
3966
+ align-items: center;
3967
+ gap: 0.25rem;
3968
+ }
3969
+
3970
+ .copy-command-btn:hover {
3971
+ background: #b8660a;
3972
+ transform: translateY(-1px);
3973
+ }
3974
+
3975
+ .command-code {
3976
+ background: var(--bg-primary);
3977
+ border: 1px solid var(--border-primary);
3978
+ border-radius: 6px;
3979
+ padding: 0.75rem;
3980
+ font-family: 'Monaco', 'Menlo', monospace;
3981
+ font-size: 0.85rem;
3982
+ color: var(--text-primary);
3983
+ word-break: break-all;
3984
+ white-space: pre-wrap;
3985
+ }
3986
+
3987
+ .cart-actions {
3988
+ display: flex;
3989
+ gap: 0.75rem;
3990
+ align-items: center;
3991
+ justify-content: space-between;
3992
+ }
3993
+
3994
+ /* Cart Command Container with Overlay */
3995
+ .cart-command-container {
3996
+ position: relative;
3997
+ margin-top: 0.5rem;
3998
+ }
3999
+
4000
+ .cart-copy-overlay-btn {
4001
+ position: absolute;
4002
+ top: 50%;
4003
+ left: 50%;
4004
+ transform: translate(-50%, -50%);
4005
+ background: rgba(0, 0, 0, 0.8);
4006
+ color: white;
4007
+ border: none;
4008
+ padding: 0.5rem 1rem;
4009
+ border-radius: 6px;
4010
+ cursor: pointer;
4011
+ font-size: 0.8rem;
4012
+ display: flex;
4013
+ align-items: center;
4014
+ gap: 0.5rem;
4015
+ opacity: 0;
4016
+ visibility: hidden;
4017
+ transition: all 0.3s ease;
4018
+ z-index: 10;
4019
+ }
4020
+
4021
+ .cart-command-container:hover .cart-copy-overlay-btn {
4022
+ opacity: 1;
4023
+ visibility: visible;
4024
+ }
4025
+
4026
+ .copy-command-btn {
4027
+ background: var(--accent-color);
4028
+ color: white;
4029
+ border: none;
4030
+ padding: 0.5rem 1rem;
4031
+ border-radius: 6px;
4032
+ cursor: pointer;
4033
+ font-size: 0.9rem;
4034
+ font-weight: 500;
4035
+ transition: all 0.2s ease;
4036
+ display: flex;
4037
+ align-items: center;
4038
+ gap: 0.5rem;
4039
+ flex: 1;
4040
+ }
4041
+
4042
+ .copy-command-btn:hover {
4043
+ background: #b8660a;
4044
+ transform: translateY(-1px);
4045
+ }
4046
+
4047
+ .clear-cart-btn {
4048
+ background: transparent;
4049
+ color: var(--text-secondary);
4050
+ border: 1px solid var(--border-primary);
4051
+ padding: 0.5rem 1rem;
4052
+ border-radius: 6px;
4053
+ cursor: pointer;
4054
+ font-size: 0.9rem;
4055
+ transition: all 0.2s ease;
4056
+ display: flex;
4057
+ align-items: center;
4058
+ gap: 0.5rem;
4059
+ flex: 1;
4060
+ }
4061
+
4062
+ .clear-cart-btn:hover {
4063
+ border-color: var(--text-error);
4064
+ color: var(--text-error);
4065
+ }
4066
+
4067
+ /* Floating Cart Button */
4068
+ .cart-floating-btn {
4069
+ position: fixed;
4070
+ bottom: 2rem;
4071
+ right: 2rem;
4072
+ background: var(--accent-color);
4073
+ color: white;
4074
+ border: none;
4075
+ width: 56px;
4076
+ height: 56px;
4077
+ border-radius: 50%;
4078
+ cursor: pointer;
4079
+ box-shadow: 0 4px 12px rgba(217, 119, 6, 0.3);
4080
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
4081
+ display: flex;
4082
+ align-items: center;
4083
+ justify-content: center;
4084
+ z-index: 1000;
4085
+ transform: translateX(0);
4086
+ opacity: 1;
4087
+ pointer-events: auto;
4088
+ }
4089
+
4090
+ .cart-floating-btn:hover {
4091
+ background: #b8660a;
4092
+ transform: translateY(-2px);
4093
+ box-shadow: 0 6px 20px rgba(217, 119, 6, 0.4);
4094
+ }
4095
+
4096
+ .cart-badge {
4097
+ position: absolute;
4098
+ top: -5px;
4099
+ right: -5px;
4100
+ background: var(--text-error);
4101
+ color: white;
4102
+ border-radius: 50%;
4103
+ width: 20px;
4104
+ height: 20px;
4105
+ display: flex;
4106
+ align-items: center;
4107
+ justify-content: center;
4108
+ font-size: 0.75rem;
4109
+ font-weight: 600;
4110
+ border: 2px solid var(--bg-primary);
4111
+ }
4112
+
4113
+ /* Card Actions Layout */
4114
+ .card-actions {
4115
+ display: flex;
4116
+ gap: 0.3rem;
4117
+ flex-shrink: 0;
4118
+ margin-top: 0.5rem;
4119
+ }
4120
+
4121
+ .card-actions button {
4122
+ flex: 1;
4123
+ min-height: 22px;
4124
+ font-size: 0.65rem;
4125
+ padding: 0.25rem 0.4rem;
4126
+ border-radius: 3px;
4127
+ transition: all 0.2s ease;
4128
+ font-weight: 500;
4129
+ display: flex;
4130
+ align-items: center;
4131
+ justify-content: center;
4132
+ gap: 0.25rem;
4133
+ }
4134
+
4135
+ .view-files-btn {
4136
+ background: var(--bg-tertiary);
4137
+ color: var(--text-primary);
4138
+ border: 1px solid var(--border-primary);
4139
+ }
4140
+
4141
+ .view-files-btn:hover {
4142
+ background: var(--bg-primary);
4143
+ border-color: var(--accent-color);
4144
+ transform: translateY(-1px);
4145
+ box-shadow: 0 2px 6px rgba(0,0,0,0.15);
4146
+ }
4147
+
4148
+ /* Add to Cart Button in Cards */
4149
+ .add-to-cart-btn {
4150
+ background: var(--accent-color);
4151
+ color: white;
4152
+ border: none;
4153
+ padding: 0.75rem 1rem;
4154
+ border-radius: 8px;
4155
+ cursor: pointer;
4156
+ font-size: 0.9rem;
4157
+ font-weight: 600;
4158
+ transition: all 0.2s ease;
4159
+ display: flex;
4160
+ align-items: center;
4161
+ gap: 0.5rem;
4162
+ justify-content: center;
4163
+ width: 100%;
4164
+ position: relative;
4165
+ overflow: hidden;
4166
+ }
4167
+
4168
+ /* Add to Cart Button in Modal - Smaller balanced size */
4169
+ .modal-actions .add-to-cart-btn {
4170
+ width: auto;
4171
+ padding: 0.6rem 1.2rem;
4172
+ font-size: 0.85rem;
4173
+ border-radius: 6px;
4174
+ min-width: 140px;
4175
+ }
4176
+
4177
+ .add-to-cart-btn::before {
4178
+ content: '';
4179
+ position: absolute;
4180
+ top: 0;
4181
+ left: -100%;
4182
+ width: 100%;
4183
+ height: 100%;
4184
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
4185
+ transition: left 0.5s ease;
4186
+ }
4187
+
4188
+ .add-to-cart-btn:hover::before {
4189
+ left: 100%;
4190
+ }
4191
+
4192
+ .add-to-cart-btn:hover {
4193
+ background: #b8660a;
4194
+ transform: translateY(-1px);
4195
+ box-shadow: 0 2px 8px rgba(217, 119, 6, 0.25);
4196
+ }
4197
+
4198
+ .add-to-cart-btn.added {
4199
+ background: var(--text-success);
4200
+ pointer-events: none;
4201
+ transform: none;
4202
+ }
4203
+
4204
+ .add-to-cart-btn.added:hover {
4205
+ transform: none;
4206
+ box-shadow: none;
4207
+ }
4208
+
4209
+ .add-to-cart-btn.added::before {
4210
+ display: none;
4211
+ }
4212
+
4213
+ /* Animations */
4214
+ @keyframes fadeInCart {
4215
+ from { opacity: 0; }
4216
+ to { opacity: 1; }
4217
+ }
4218
+
4219
+ @keyframes slideInCart {
4220
+ from {
4221
+ opacity: 0;
4222
+ transform: scale(0.9) translateY(-20px);
4223
+ }
4224
+ to {
4225
+ opacity: 1;
4226
+ transform: scale(1) translateY(0);
4227
+ }
4228
+ }
4229
+
4230
+ /* Responsive Cart */
4231
+ @media (max-width: 768px) {
4232
+ .cart-sidebar {
4233
+ width: 100vw;
4234
+ right: -100vw;
4235
+ }
4236
+
4237
+ .cart-sidebar::before {
4238
+ display: none !important;
4239
+ }
4240
+
4241
+ .cart-header {
4242
+ padding: 1rem;
4243
+ }
4244
+
4245
+ .cart-body {
4246
+ padding: 1rem;
4247
+ }
4248
+
4249
+ .cart-footer {
4250
+ padding: 1rem;
4251
+ }
4252
+
4253
+ .cart-floating-btn {
4254
+ bottom: 1rem;
4255
+ right: 1rem;
4256
+ width: 48px;
4257
+ height: 48px;
4258
+ }
4259
+
4260
+ .command-code {
4261
+ font-size: 0.8rem;
4262
+ padding: 0.5rem;
4263
+ }
4264
+
4265
+ .cart-actions {
4266
+ flex-direction: column;
4267
+ }
4268
+
4269
+ .download-stack-btn {
4270
+ width: 100%;
4271
+ }
4272
+ }
4273
+
4274
+ /* Cart Notifications */
4275
+ .cart-notification {
4276
+ position: fixed;
4277
+ top: 2rem;
4278
+ right: 2rem;
4279
+ background: var(--bg-secondary);
4280
+ border: 1px solid var(--border-primary);
4281
+ border-radius: 8px;
4282
+ padding: 1rem;
4283
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
4284
+ z-index: 1100;
4285
+ opacity: 0;
4286
+ transform: translateX(100%);
4287
+ transition: all 0.3s ease;
4288
+ max-width: 320px;
4289
+ }
4290
+
4291
+ .cart-notification.show {
4292
+ opacity: 1;
4293
+ transform: translateX(0);
4294
+ }
4295
+
4296
+ .notification-content {
4297
+ display: flex;
4298
+ align-items: center;
4299
+ gap: 0.75rem;
4300
+ }
4301
+
4302
+ .notification-icon {
4303
+ font-size: 1.2rem;
4304
+ flex-shrink: 0;
4305
+ }
4306
+
4307
+ .notification-message {
4308
+ color: var(--text-primary);
4309
+ font-size: 0.9rem;
4310
+ font-weight: 500;
4311
+ }
4312
+
4313
+ .cart-notification-success {
4314
+ border-color: var(--text-success);
4315
+ background: var(--bg-secondary);
4316
+ }
4317
+
4318
+ .cart-notification-warning {
4319
+ border-color: var(--text-warning);
4320
+ background: var(--bg-secondary);
4321
+ }
4322
+
4323
+ .cart-notification-error {
4324
+ border-color: var(--text-error);
4325
+ background: var(--bg-secondary);
4326
+ }
4327
+
4328
+ .cart-notification-info {
4329
+ border-color: var(--text-info);
4330
+ background: var(--bg-secondary);
4331
+ }
4332
+
4333
+ /* No items text */
4334
+ .no-items {
4335
+ color: var(--text-secondary);
4336
+ font-size: 0.85rem;
4337
+ text-align: center;
4338
+ padding: 1rem;
4339
+ font-style: italic;
4340
+ }
4341
+
4342
+ /* Mobile notifications */
4343
+ @media (max-width: 768px) {
4344
+ .cart-notification {
4345
+ top: 1rem;
4346
+ right: 1rem;
4347
+ left: 1rem;
4348
+ max-width: none;
4349
+ }
4350
+ }
4351
+
4352
+ /* Loading States */
4353
+ .loading-indicator {
4354
+ display: flex;
4355
+ flex-direction: column;
4356
+ align-items: center;
4357
+ justify-content: center;
4358
+ padding: 3rem 2rem;
4359
+ min-height: 300px;
4360
+ text-align: center;
4361
+ }
4362
+
4363
+ .loading-spinner {
4364
+ width: 50px;
4365
+ height: 50px;
4366
+ border: 3px solid var(--border-primary);
4367
+ border-top: 3px solid var(--text-accent);
4368
+ border-radius: 50%;
4369
+ animation: spin 1s linear infinite;
4370
+ margin-bottom: 1.5rem;
4371
+ }
4372
+
4373
+ .loading-text h3 {
4374
+ color: var(--text-primary);
4375
+ font-size: 1.2rem;
4376
+ margin-bottom: 0.5rem;
4377
+ font-weight: 600;
4378
+ }
4379
+
4380
+ .loading-text p {
4381
+ color: var(--text-secondary);
4382
+ font-size: 0.9rem;
4383
+ margin-bottom: 1.5rem;
4384
+ max-width: 400px;
4385
+ }
4386
+
4387
+ .loading-progress {
4388
+ width: 200px;
4389
+ height: 4px;
4390
+ background: var(--bg-tertiary);
4391
+ border-radius: 2px;
4392
+ overflow: hidden;
4393
+ position: relative;
4394
+ }
4395
+
4396
+ .progress-bar {
4397
+ height: 100%;
4398
+ background: linear-gradient(90deg, var(--text-accent), var(--text-warning));
4399
+ border-radius: 2px;
4400
+ animation: loading-progress 2s ease-in-out infinite;
4401
+ width: 30%;
4402
+ }
4403
+
4404
+ .error-toast {
4405
+ position: fixed;
4406
+ top: 20px;
4407
+ right: 20px;
4408
+ background: var(--text-error);
4409
+ color: white;
4410
+ padding: 12px 16px;
4411
+ border-radius: 6px;
4412
+ z-index: 1000;
4413
+ font-size: 14px;
4414
+ max-width: 300px;
4415
+ box-shadow: 0 4px 12px rgba(248, 81, 73, 0.3);
4416
+ border-left: 4px solid rgba(255, 255, 255, 0.3);
4417
+ }
4418
+
4419
+ /* Loading animations */
4420
+ @keyframes spin {
4421
+ 0% { transform: rotate(0deg); }
4422
+ 100% { transform: rotate(360deg); }
4423
+ }
4424
+
4425
+ @keyframes loading-progress {
4426
+ 0% {
4427
+ transform: translateX(-100%);
4428
+ width: 30%;
4429
+ }
4430
+ 50% {
4431
+ width: 70%;
4432
+ }
4433
+ 100% {
4434
+ transform: translateX(300%);
4435
+ width: 30%;
4436
+ }
4437
+ }
4438
+
4439
+ /* Loading shimmer for cards */
4440
+ .loading-shimmer {
4441
+ background: linear-gradient(
4442
+ 90deg,
4443
+ transparent,
4444
+ rgba(255, 255, 255, 0.1),
4445
+ transparent
4446
+ );
4447
+ animation: shimmer 2s infinite;
4448
+ }
4449
+
4450
+ @keyframes shimmer {
4451
+ 0% { transform: translateX(-100%); }
4452
+ 100% { transform: translateX(100%); }
4453
+ }
4454
+
4455
+ /* Optimize performance for mobile loading */
4456
+ @media (max-width: 768px) {
4457
+ .loading-indicator {
4458
+ padding: 2rem 1rem;
4459
+ min-height: 250px;
4460
+ }
4461
+
4462
+ .loading-spinner {
4463
+ width: 40px;
4464
+ height: 40px;
4465
+ border-width: 2px;
4466
+ }
4467
+
4468
+ .loading-progress {
4469
+ width: 150px;
4470
+ height: 3px;
4471
+ }
4472
+
4473
+ .error-toast {
4474
+ top: 10px;
4475
+ right: 10px;
4476
+ left: 10px;
4477
+ max-width: none;
4478
+ font-size: 13px;
4479
+ }
4480
+ }