@becrafter/prompt-manager 0.1.11 → 0.1.14

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 (116) hide show
  1. package/env.example +1 -1
  2. package/examples/prompts/developer/code-review.yaml +32 -0
  3. package/examples/prompts/developer/code_refactoring.yaml +31 -0
  4. package/examples/prompts/developer/doc-generator.yaml +36 -0
  5. package/examples/prompts/developer/error-code-fixer.yaml +35 -0
  6. package/examples/prompts/engineer/engineer-professional.yaml +92 -0
  7. package/examples/prompts/engineer/laowang-engineer.yaml +132 -0
  8. package/examples/prompts/engineer/nekomata-engineer.yaml +123 -0
  9. package/examples/prompts/engineer/ojousama-engineer.yaml +124 -0
  10. package/examples/prompts/generator/gen_3d_edu_webpage_html.yaml +117 -0
  11. package/examples/prompts/generator/gen_3d_webpage_html.yaml +75 -0
  12. package/examples/prompts/generator/gen_bento_grid_html.yaml +112 -0
  13. package/examples/prompts/generator/gen_html_web_page.yaml +88 -0
  14. package/examples/prompts/generator/gen_knowledge_card_html.yaml +83 -0
  15. package/examples/prompts/generator/gen_magazine_card_html.yaml +82 -0
  16. package/examples/prompts/generator/gen_mimeng_headline_title.yaml +71 -0
  17. package/examples/prompts/generator/gen_podcast_script.yaml +69 -0
  18. package/examples/prompts/generator/gen_prd_prototype_html.yaml +175 -0
  19. package/examples/prompts/generator/gen_summarize.yaml +157 -0
  20. package/examples/prompts/generator/gen_title.yaml +119 -0
  21. package/examples/prompts/generator/others/api_documentation.yaml +32 -0
  22. package/examples/prompts/generator/others/build_mcp_server.yaml +26 -0
  23. package/examples/prompts/generator/others/project_architecture.yaml +31 -0
  24. package/examples/prompts/generator/others/test_case_generator.yaml +30 -0
  25. package/examples/prompts/generator/others/writing_assistant.yaml +72 -0
  26. package/examples/prompts/recommend/human_3-0_growth_diagnostic_coach_prompt.yaml +105 -0
  27. package/examples/prompts/workflow/sixstep-workflow.yaml +192 -0
  28. package/package.json +3 -2
  29. package/packages/server/app.js +13 -3
  30. package/packages/server/utils/config.js +1 -1
  31. package/packages/server/utils/util.js +7 -7
  32. package/packages/web/0.d1c5a72339dfc32ad86a.js +1 -0
  33. package/packages/web/112.8807b976372b2b0541a8.js +1 -0
  34. package/packages/web/130.584c7e365da413f5d9be.js +1 -0
  35. package/packages/web/142.72c985bc29720f975cca.js +1 -0
  36. package/packages/web/165.a05fc53bf84d18db36b8.js +2 -0
  37. package/packages/web/165.a05fc53bf84d18db36b8.js.LICENSE.txt +9 -0
  38. package/packages/web/203.724ab9f717b80554c397.js +1 -0
  39. package/packages/web/241.bf941d4f02866795f64a.js +1 -0
  40. package/packages/web/249.54cfb224af63f5f5ec55.js +1 -0
  41. package/packages/web/291.6df35042f8f296fca7cd.js +1 -0
  42. package/packages/web/319.2fab900a31b29873f666.js +1 -0
  43. package/packages/web/32.c78d866281995ec33a7b.js +1 -0
  44. package/packages/web/325.9ca297d0f73f38468ce9.js +1 -0
  45. package/packages/web/366.2f9b48fdbf8eee039e57.js +1 -0
  46. package/packages/web/378.6be08c612cd5a3ef97dc.js +1 -0
  47. package/packages/web/393.7a2f817515c5e90623d7.js +1 -0
  48. package/packages/web/412.062df5f732d5ba203415.js +1 -0
  49. package/packages/web/426.08656fef4918b3fb19ad.js +1 -0
  50. package/packages/web/465.2be8018327130a3bd798.js +1 -0
  51. package/packages/web/48.8ca96fc93667a715e67a.js +1 -0
  52. package/packages/web/480.44c1f1a2927486ac3d4f.js +1 -0
  53. package/packages/web/489.e041a8d0db15dc96d607.js +1 -0
  54. package/packages/web/490.9ffb26c907de020d671b.js +1 -0
  55. package/packages/web/492.58781369e348d91fc06a.js +1 -0
  56. package/packages/web/495.ed63e99791a87167c6b3.js +1 -0
  57. package/packages/web/510.4cc07ab7d30d5c1cd17f.js +1 -0
  58. package/packages/web/543.3af155ed4fa237664308.js +1 -0
  59. package/packages/web/567.f04ab60f8e2c2fb0745a.js +1 -0
  60. package/packages/web/592.f3ad085fa9c1849daa06.js +1 -0
  61. package/packages/web/616.b03fb801b3433b17750f.js +1 -0
  62. package/packages/web/617.d88def54921d2c4dc44c.js +1 -0
  63. package/packages/web/641.d30787d674f548928261.js +1 -0
  64. package/packages/web/672.5269c8399fa42a5af95d.js +1 -0
  65. package/packages/web/731.97cab92b71811c502bda.js +1 -0
  66. package/packages/web/746.3947c6f0235407e420fb.js +1 -0
  67. package/packages/web/756.a53233b3f3913900d5ac.js +1 -0
  68. package/packages/web/77.68801af593a28a631fbf.js +1 -0
  69. package/packages/web/802.53b2bff3cf2a69f7b80c.js +1 -0
  70. package/packages/web/815.b6dfab82265f56c7e046.js +1 -0
  71. package/packages/web/821.f5a13e5c735aac244eb9.js +1 -0
  72. package/packages/web/846.b9bf97d5f559270675ce.js +1 -0
  73. package/packages/web/869.7c10403f500e6201407f.js +1 -0
  74. package/packages/web/885.135050364f99e6924fb5.js +1 -0
  75. package/packages/web/901.fd5aeb9df630609a2b43.js +1 -0
  76. package/packages/web/928.f67e590de3caa4daa3ae.js +1 -0
  77. package/packages/web/955.d833403521ba4dd567ee.js +1 -0
  78. package/packages/web/981.a45cb745cf424044c8c8.js +1 -0
  79. package/packages/web/992.645320b60c74c8787482.js +1 -0
  80. package/packages/web/996.ed9a963dc9e7439eca9a.js +1 -0
  81. package/packages/{admin-ui/css/main.css → web/css/main.3b61356b384d2f11f47f.css} +2793 -10
  82. package/packages/web/index.html +3 -0
  83. package/packages/web/main.77c2c4b553ca3fac223b.js +2 -0
  84. package/packages/web/main.77c2c4b553ca3fac223b.js.LICENSE.txt +3 -0
  85. package/packages/admin-ui/admin.html +0 -49
  86. package/packages/admin-ui/css/markdown.css +0 -468
  87. package/packages/admin-ui/css/optimization.css +0 -1015
  88. package/packages/admin-ui/css/recommended-prompts.css +0 -610
  89. package/packages/admin-ui/css/terminal-fix.css +0 -571
  90. package/packages/admin-ui/package-lock.json +0 -8287
  91. package/packages/admin-ui/package.json +0 -46
  92. package/packages/admin-ui/src/codemirror.js +0 -53
  93. package/packages/admin-ui/src/components/ArgumentModal.js +0 -53
  94. package/packages/admin-ui/src/components/DeletePromptModal.js +0 -30
  95. package/packages/admin-ui/src/components/HeaderView.js +0 -40
  96. package/packages/admin-ui/src/components/LoadingOverlay.js +0 -12
  97. package/packages/admin-ui/src/components/LoginView.js +0 -22
  98. package/packages/admin-ui/src/components/ModelConfigModal.js +0 -103
  99. package/packages/admin-ui/src/components/NewFolderModal.js +0 -58
  100. package/packages/admin-ui/src/components/OptimizationConfigModal.js +0 -36
  101. package/packages/admin-ui/src/components/OptimizationDrawer.js +0 -135
  102. package/packages/admin-ui/src/components/PrimaryNav.js +0 -34
  103. package/packages/admin-ui/src/components/PromptsArea.js +0 -140
  104. package/packages/admin-ui/src/components/RecommendedPromptModal.js +0 -37
  105. package/packages/admin-ui/src/components/SidebarView.js +0 -24
  106. package/packages/admin-ui/src/components/SyncPromptModal.js +0 -44
  107. package/packages/admin-ui/src/components/TemplateEditorModal.js +0 -75
  108. package/packages/admin-ui/src/components/TemplateListModal.js +0 -30
  109. package/packages/admin-ui/src/components/TerminalComponent.js +0 -995
  110. package/packages/admin-ui/src/components/TerminalView.js +0 -25
  111. package/packages/admin-ui/src/components/ToolDetailModal.js +0 -23
  112. package/packages/admin-ui/src/components/ToolsArea.js +0 -119
  113. package/packages/admin-ui/src/components/ToolsUploadModal.js +0 -59
  114. package/packages/admin-ui/src/index.js +0 -6766
  115. /package/packages/{admin-ui → web}/css/codemirror-theme_xq-light.css +0 -0
  116. /package/packages/{admin-ui → web}/css/codemirror.css +0 -0
@@ -551,7 +551,7 @@ aside {
551
551
  transform: translateY(-50%);
552
552
  width: 16px;
553
553
  height: 16px;
554
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat center;
554
+ background: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236c757d%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2711%27 cy=%2711%27 r=%278%27/%3E%3Cline x1=%2721%27 y1=%2721%27 x2=%2716.65%27 y2=%2716.65%27/%3E%3C/svg%3E") no-repeat center;
555
555
  background-size: contain;
556
556
  opacity: 0.6;
557
557
  }
@@ -579,7 +579,7 @@ aside {
579
579
  content: '';
580
580
  width: 16px;
581
581
  height: 16px;
582
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='15' y1='9' x2='9' y2='15'/%3E%3Cline x1='9' y1='9' x2='15' y2='15'/%3E%3C/svg%3E") no-repeat center;
582
+ background: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236c757d%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%2710%27/%3E%3Cline x1=%2715%27 y1=%279%27 x2=%279%27 y2=%2715%27/%3E%3Cline x1=%279%27 y1=%279%27 x2=%2715%27 y2=%2715%27/%3E%3C/svg%3E") no-repeat center;
583
583
  background-size: contain;
584
584
  }
585
585
 
@@ -609,7 +609,7 @@ aside {
609
609
  content: '';
610
610
  width: 18px;
611
611
  height: 18px;
612
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z'/%3E%3Cline x1='12' y1='11' x2='12' y2='17'/%3E%3Cline x1='9' y1='14' x2='15' y2='14'/%3E%3C/svg%3E") no-repeat center;
612
+ background: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236c757d%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z%27/%3E%3Cline x1=%2712%27 y1=%2711%27 x2=%2712%27 y2=%2717%27/%3E%3Cline x1=%279%27 y1=%2714%27 x2=%2715%27 y2=%2714%27/%3E%3C/svg%3E") no-repeat center;
613
613
  background-size: contain;
614
614
  opacity: 0.6;
615
615
  transition: opacity 0.2s ease;
@@ -802,7 +802,7 @@ aside {
802
802
  left: 9px;
803
803
  width: 40px;
804
804
  height: 40px;
805
- background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc1NicgaGVpZ2h0PSc1Nic+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSdnJyB4MT0nMCcgeTE9JzAnIHgyPScxJyB5Mj0nMSc+PHN0b3Agb2Zmc2V0PScwJyBzdG9wLWNvbG9yPScjZDVkOWRlJy8+PHN0b3Agb2Zmc2V0PScxJyBzdG9wLWNvbG9yPScjYWViNGJjJy8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBvbHlnb24gcG9pbnRzPScwLDAgMCw1NiA1NiwwJyBmaWxsPSd1cmwoI2cpJy8+PHRleHQgeD0nNicgeT0nMjQnIGZvbnQtZmFtaWx5PSdJbnRlcixzeXN0ZW0tdWksU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYnIGZvbnQtc2l6ZT0nMTInIGZpbGw9JyM3ZTdmODInIHRyYW5zZm9ybT0ncm90YXRlKC00NSAxOCAyMCknIGZvbnQtd2VpZ2h0PSc2MDAnPuWGu+e7kzwvdGV4dD48L3N2Zz4=") no-repeat;
805
+ background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc1NicgaGVpZ2h0PSc1Nic+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSdnJyB4MT0nMCcgeTE9JzAnIHgyPScxJyB5Mj0nMSc+PHN0b3Agb2Zmc2V0PScwJyBzdG9wLWNvbG9yPScjZDVkOWRlJy8+PHN0b3Agb2Zmc2V0PScxJyBzdG9wLWNvbG9yPScjYWViNGJjJy8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBvbHlnb24gcG9pbnRzPScwLDAgMCw1NiA1NiwwJyBmaWxsPSd1cmwoI2cpJy8+PHRleHQgeD0nNicgeT0nMjQnIGZvbnQtZmFtaWx5PSdJbnRlcixzeXN0ZW0tdWksU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYnIGZvbnQtc2l6ZT0nMTInIGZpbGw9JyM3ZTdmODInIHRyYW5zZm9ybT0ncm90YXRlKC00NSAxOCAyMCknIGZvbnQtd2VpZ2h0PSc2MDAnPuWGu+e7kzwvdGV4dD48L3N2Zz4=) no-repeat;
806
806
  background-size: contain;
807
807
  pointer-events: none;
808
808
  transform: translate(-8px, -8px);
@@ -1040,7 +1040,7 @@ aside {
1040
1040
  top: 50%;
1041
1041
  left: 50%;
1042
1042
  transform: translate(-50%, -50%);
1043
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat center;
1043
+ background: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236c757d%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M6 9l6 6 6-6%27/%3E%3C/svg%3E") no-repeat center;
1044
1044
  background-size: contain;
1045
1045
  opacity: 0.6;
1046
1046
  transition: opacity 0.2s ease;
@@ -2543,11 +2543,11 @@ body.modal-open {
2543
2543
  }
2544
2544
 
2545
2545
  .login-box .input-group.username::before {
2546
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
2546
+ background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236c757d%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2%27/%3E%3Ccircle cx=%2712%27 cy=%277%27 r=%274%27/%3E%3C/svg%3E");
2547
2547
  }
2548
2548
 
2549
2549
  .login-box .input-group.password::before {
2550
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");
2550
+ background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236c757d%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Crect x=%273%27 y=%2711%27 width=%2718%27 height=%2711%27 rx=%272%27 ry=%272%27/%3E%3Cpath d=%27M7 11V7a5 5 0 0 1 10 0v4%27/%3E%3C/svg%3E");
2551
2551
  }
2552
2552
 
2553
2553
  .login-box .input-group:focus-within::before {
@@ -2647,7 +2647,7 @@ body.modal-open {
2647
2647
  content: '';
2648
2648
  width: 16px;
2649
2649
  height: 16px;
2650
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23dc3545' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='8' x2='12' y2='12'/%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'/%3E%3C/svg%3E") no-repeat center;
2650
+ background: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%23dc3545%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%2710%27/%3E%3Cline x1=%2712%27 y1=%278%27 x2=%2712%27 y2=%2712%27/%3E%3Cline x1=%2712%27 y1=%2716%27 x2=%2712.01%27 y2=%2716%27/%3E%3C/svg%3E") no-repeat center;
2651
2651
  background-size: contain;
2652
2652
  }
2653
2653
 
@@ -2673,7 +2673,7 @@ body.modal-open {
2673
2673
  content: '';
2674
2674
  width: 16px;
2675
2675
  height: 16px;
2676
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2328a745' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E") no-repeat center;
2676
+ background: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%2328a745%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M22 11.08V12a10 10 0 1 1-5.93-9.14%27/%3E%3Cpolyline points=%2722 4 12 14.01 9 11.01%27/%3E%3C/svg%3E") no-repeat center;
2677
2677
  background-size: contain;
2678
2678
  }
2679
2679
 
@@ -4482,4 +4482,2787 @@ body.modal-open {
4482
4482
 
4483
4483
  .terminal-error button:hover {
4484
4484
  background: #ff5252;
4485
- }
4485
+ }
4486
+ /* 终端字体修复 - Warp终端样式(优化版) */
4487
+
4488
+ /* ============================================
4489
+ 核心字体配置
4490
+ ============================================ */
4491
+
4492
+ .composition-view {
4493
+ display: none;
4494
+ }
4495
+
4496
+ /* 为xterm设置合适的等宽字体,解决字体重叠问题 */
4497
+ .xterm {
4498
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4499
+ font-size: 14px !important;
4500
+ line-height: 1.2 !important;
4501
+ letter-spacing: 0 !important;
4502
+ font-feature-settings: "liga" 0, "calt" 0 !important;
4503
+ -webkit-font-feature-settings: "liga" 0, "calt" 0 !important;
4504
+ -moz-font-feature-settings: "liga" 0, "calt" 0 !important;
4505
+ font-weight: 400 !important;
4506
+ -webkit-font-smoothing: antialiased !important;
4507
+ -moz-osx-font-smoothing: grayscale !important;
4508
+ text-rendering: optimizeLegibility !important;
4509
+ }
4510
+
4511
+ /* 确保字符渲染正确,防止重叠 */
4512
+ .xterm .xterm-screen {
4513
+ font-family: inherit !important;
4514
+ font-size: inherit !important;
4515
+ line-height: 1.2 !important;
4516
+ }
4517
+
4518
+ .xterm .xterm-viewport {
4519
+ font-family: inherit !important;
4520
+ }
4521
+
4522
+ /* 修复canvas渲染的字体 */
4523
+ .xterm .xterm-screen canvas {
4524
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4525
+ image-rendering: pixelated !important;
4526
+ image-rendering: -moz-crisp-edges !important;
4527
+ image-rendering: crisp-edges !important;
4528
+ /* 强制启用硬件加速 */
4529
+ transform: translateZ(0);
4530
+ backface-visibility: hidden;
4531
+ /* 优化 Canvas 渲染质量 */
4532
+ -webkit-font-smoothing: antialiased !important;
4533
+ -moz-osx-font-smoothing: grayscale !important;
4534
+ }
4535
+
4536
+ /* 字符测量元素使用相同字体 */
4537
+ .xterm-char-measure-element {
4538
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4539
+ font-size: 14px !important;
4540
+ line-height: 1.2 !important;
4541
+ }
4542
+
4543
+ /* 行高设置 */
4544
+ .xterm-rows {
4545
+ line-height: 1.2 !important;
4546
+ }
4547
+
4548
+ .xterm-row {
4549
+ height: 1.2em !important;
4550
+ line-height: 1.2 !important;
4551
+ }
4552
+
4553
+ .xterm-char {
4554
+ width: 0.6em !important;
4555
+ height: 1.2em !important;
4556
+ }
4557
+
4558
+ /* 确保输入框字体一致 */
4559
+ .xterm textarea {
4560
+ font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4561
+ font-size: 14px !important;
4562
+ }
4563
+
4564
+ /* 修复中文字符显示 */
4565
+ .xterm-unicode {
4566
+ font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', 'PingFang SC', 'Microsoft YaHei', monospace !important;
4567
+ }
4568
+
4569
+ /* ============================================
4570
+ 主题配置
4571
+ ============================================ */
4572
+
4573
+ /* 暗色主题优化 */
4574
+ .xterm.theme-dark {
4575
+ background: #0a0a0a !important;
4576
+ color: #f0f0f0 !important;
4577
+ }
4578
+
4579
+ /* 浅色主题优化 */
4580
+ .xterm.theme-light {
4581
+ background: #ffffff !important;
4582
+ color: #1a1a1a !important;
4583
+ }
4584
+
4585
+ /* ============================================
4586
+ 光标样式优化
4587
+ ============================================ */
4588
+
4589
+ /* 深色主题光标 */
4590
+ .xterm.theme-dark .xterm-cursor {
4591
+ background: #ffffff !important;
4592
+ border: none !important;
4593
+ width: 8px !important;
4594
+ box-shadow: 0 0 4px rgba(255, 255, 255, 0.5) !important;
4595
+ }
4596
+
4597
+ /* 浅色主题光标 */
4598
+ .xterm.theme-light .xterm-cursor {
4599
+ background: #1a1a1a !important;
4600
+ border: none !important;
4601
+ width: 8px !important;
4602
+ box-shadow: 0 0 4px rgba(0, 0, 0, 0.3) !important;
4603
+ }
4604
+
4605
+ /* ============================================
4606
+ 选中效果优化(改进对比度)
4607
+ ============================================ */
4608
+
4609
+ /* 默认选中效果 */
4610
+ .xterm .xterm-rows {
4611
+ position: relative;
4612
+ }
4613
+
4614
+ .xterm .xterm-rows > div {
4615
+ position: relative;
4616
+ }
4617
+
4618
+ .xterm .xterm-rows > div.xterm-focus .xterm-selection,
4619
+ .xterm .xterm-rows .xterm-selection {
4620
+ background-color: rgba(74, 144, 226, 0.4) !important;
4621
+ }
4622
+
4623
+ /* 浅色主题下的选中效果 - 更明显的对比度 */
4624
+ .xterm.theme-light .xterm-rows > div.xterm-focus .xterm-selection,
4625
+ .xterm.theme-light .xterm-rows .xterm-selection {
4626
+ background-color: rgba(24, 144, 255, 0.25) !important;
4627
+ border: 1px solid rgba(24, 144, 255, 0.4) !important;
4628
+ }
4629
+
4630
+ /* 深色主题下的选中效果 */
4631
+ .xterm.theme-dark .xterm-rows > div.xterm-focus .xterm-selection,
4632
+ .xterm.theme-dark .xterm-rows .xterm-selection {
4633
+ background-color: rgba(100, 181, 246, 0.35) !important;
4634
+ border: 1px solid rgba(100, 181, 246, 0.5) !important;
4635
+ }
4636
+
4637
+ /* xterm-selection span 选中样式 */
4638
+ .xterm .xterm-selection span {
4639
+ background-color: inherit !important;
4640
+ }
4641
+
4642
+ /* 确保浅色主题下的选中文字可见 - 使用深色文字增强对比 */
4643
+ .xterm.theme-light .xterm-selection span {
4644
+ color: #000000 !important;
4645
+ font-weight: 600 !important;
4646
+ text-shadow: 0 0 1px rgba(255, 255, 255, 0.5) !important;
4647
+ }
4648
+
4649
+ /* 确保深色主题下的选中文字可见 - 使用浅色文字增强对比 */
4650
+ .xterm.theme-dark .xterm-selection span {
4651
+ color: #ffffff !important;
4652
+ font-weight: 600 !important;
4653
+ text-shadow: 0 0 1px rgba(0, 0, 0, 0.8) !important;
4654
+ }
4655
+
4656
+ /* 强制覆盖选中样式 - 浅色主题 */
4657
+ body .xterm.theme-light .xterm-selection,
4658
+ body .xterm.theme-light .xterm-rows .xterm-selection,
4659
+ body .xterm.theme-light .xterm-rows > div .xterm-selection,
4660
+ body .xterm.theme-light .xterm-screen .xterm-selection,
4661
+ body div.xterm.theme-light .xterm-selection {
4662
+ background-color: rgba(24, 144, 255, 0.25) !important;
4663
+ border: 1px solid rgba(24, 144, 255, 0.4) !important;
4664
+ }
4665
+
4666
+ /* 强制覆盖选中样式 - 深色主题 */
4667
+ body .xterm.theme-dark .xterm-selection,
4668
+ body .xterm.theme-dark .xterm-rows .xterm-selection,
4669
+ body .xterm.theme-dark .xterm-rows > div .xterm-selection,
4670
+ body .xterm.theme-dark .xterm-screen .xterm-selection,
4671
+ body div.xterm.theme-dark .xterm-selection {
4672
+ background-color: rgba(100, 181, 246, 0.35) !important;
4673
+ border: 1px solid rgba(100, 181, 246, 0.5) !important;
4674
+ }
4675
+
4676
+ /* 选中文字颜色 - 浅色主题 */
4677
+ body .xterm.theme-light .xterm-selection span,
4678
+ body .xterm.theme-light .xterm-selection .xterm-char {
4679
+ color: #000000 !important;
4680
+ font-weight: 600 !important;
4681
+ text-shadow: 0 0 1px rgba(255, 255, 255, 0.5) !important;
4682
+ }
4683
+
4684
+ /* 选中文字颜色 - 深色主题 */
4685
+ body .xterm.theme-dark .xterm-selection span,
4686
+ body .xterm.theme-dark .xterm-selection .xterm-char {
4687
+ color: #ffffff !important;
4688
+ font-weight: 600 !important;
4689
+ text-shadow: 0 0 1px rgba(0, 0, 0, 0.8) !important;
4690
+ }
4691
+
4692
+ /* ============================================
4693
+ 滚动条样式优化
4694
+ ============================================ */
4695
+
4696
+ .xterm .xterm-viewport::-webkit-scrollbar {
4697
+ width: 8px !important;
4698
+ height: 8px !important;
4699
+ }
4700
+
4701
+ .xterm .xterm-viewport::-webkit-scrollbar-track {
4702
+ background: transparent !important;
4703
+ }
4704
+
4705
+ .xterm .xterm-viewport::-webkit-scrollbar-thumb {
4706
+ background: rgba(128, 128, 128, 0.4) !important;
4707
+ border-radius: 4px !important;
4708
+ transition: background-color 0.2s ease !important;
4709
+ }
4710
+
4711
+ .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
4712
+ background: rgba(128, 128, 128, 0.6) !important;
4713
+ }
4714
+
4715
+ /* 浅色主题滚动条 */
4716
+ .xterm.theme-light .xterm-viewport::-webkit-scrollbar-thumb {
4717
+ background: rgba(0, 0, 0, 0.2) !important;
4718
+ }
4719
+
4720
+ .xterm.theme-light .xterm-viewport::-webkit-scrollbar-thumb:hover {
4721
+ background: rgba(0, 0, 0, 0.3) !important;
4722
+ }
4723
+
4724
+ /* 深色主题滚动条 */
4725
+ .xterm.theme-dark .xterm-viewport::-webkit-scrollbar-thumb {
4726
+ background: rgba(255, 255, 255, 0.2) !important;
4727
+ }
4728
+
4729
+ .xterm.theme-dark .xterm-viewport::-webkit-scrollbar-thumb:hover {
4730
+ background: rgba(255, 255, 255, 0.3) !important;
4731
+ }
4732
+
4733
+ /* ============================================
4734
+ 响应式字体大小调整
4735
+ ============================================ */
4736
+
4737
+ @media (max-width: 768px) {
4738
+ .xterm {
4739
+ font-size: 12px !important;
4740
+ }
4741
+
4742
+ .xterm-char-measure-element {
4743
+ font-size: 12px !important;
4744
+ }
4745
+ }
4746
+
4747
+ @media (max-width: 480px) {
4748
+ .xterm {
4749
+ font-size: 11px !important;
4750
+ }
4751
+
4752
+ .xterm-char-measure-element {
4753
+ font-size: 11px !important;
4754
+ }
4755
+ }
4756
+
4757
+ /* ============================================
4758
+ 高DPI屏幕优化
4759
+ ============================================ */
4760
+
4761
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
4762
+ .xterm .xterm-screen canvas {
4763
+ /* 高DPI屏幕使用自动渲染以获得更好的清晰度 */
4764
+ image-rendering: auto !important;
4765
+ /* 确保在高DPI屏幕上使用正确的缩放 */
4766
+ transform: translateZ(0);
4767
+ }
4768
+ }
4769
+
4770
+ /* Canvas 渲染器优化 - 确保正确的层级和定位 */
4771
+ .xterm .xterm-screen {
4772
+ position: relative !important;
4773
+ overflow: hidden !important;
4774
+ }
4775
+
4776
+ /* 确保 Canvas 渲染器优先于 DOM 元素 */
4777
+ .xterm .xterm-screen canvas {
4778
+ position: relative !important;
4779
+ z-index: 1 !important;
4780
+ }
4781
+
4782
+ /* 隐藏 DOM 渲染元素(当使用 Canvas 时) */
4783
+ .xterm.xterm-canvas-mode .xterm-rows {
4784
+ display: none !important;
4785
+ }
4786
+
4787
+ /* ============================================
4788
+ 终端容器样式
4789
+ ============================================ */
4790
+
4791
+ /* 确保终端容器正确显示 */
4792
+ .terminal-content {
4793
+ background: #0a0a0a !important;
4794
+ display: flex;
4795
+ flex-direction: column;
4796
+ height: 100%;
4797
+ overflow: hidden;
4798
+ }
4799
+
4800
+ /* 浅色主题容器 */
4801
+ .terminal-content.theme-light {
4802
+ background: #ffffff !important;
4803
+ }
4804
+
4805
+ /* 旧版终端输出样式(兼容性) */
4806
+ .terminal-output {
4807
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4808
+ font-size: 14px !important;
4809
+ line-height: 1.2 !important;
4810
+ background: #0a0a0a !important;
4811
+ color: #f0f0f0 !important;
4812
+ font-weight: 400 !important;
4813
+ -webkit-font-smoothing: antialiased !important;
4814
+ -moz-osx-font-smoothing: grayscale !important;
4815
+ padding: 10px;
4816
+ overflow-y: auto;
4817
+ flex: 1;
4818
+ }
4819
+
4820
+ .terminal-input-area {
4821
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4822
+ font-size: 14px !important;
4823
+ background: #0a0a0a !important;
4824
+ line-height: 1.2 !important;
4825
+ padding: 10px;
4826
+ border-top: 1px solid #333;
4827
+ }
4828
+
4829
+ .terminal-prompt {
4830
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4831
+ font-size: 14px !important;
4832
+ line-height: 1.2 !important;
4833
+ }
4834
+
4835
+ #terminalInput {
4836
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
4837
+ font-size: 14px !important;
4838
+ line-height: 1.2 !important;
4839
+ font-weight: 400 !important;
4840
+ background: transparent !important;
4841
+ border: none !important;
4842
+ color: inherit !important;
4843
+ outline: none !important;
4844
+ flex: 1;
4845
+ }
4846
+
4847
+ /* ============================================
4848
+ 终端工具栏样式
4849
+ ============================================ */
4850
+
4851
+ .terminal-toolbar {
4852
+ display: flex;
4853
+ justify-content: space-between;
4854
+ align-items: center;
4855
+ padding: 8px 12px;
4856
+ background: rgba(0, 0, 0, 0.5);
4857
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
4858
+ backdrop-filter: blur(10px);
4859
+ }
4860
+
4861
+ .terminal-status {
4862
+ display: flex;
4863
+ align-items: center;
4864
+ gap: 8px;
4865
+ font-size: 12px;
4866
+ color: rgba(255, 255, 255, 0.7);
4867
+ }
4868
+
4869
+ .renderer-info {
4870
+ font-size: 11px;
4871
+ padding: 2px 6px;
4872
+ border-radius: 3px;
4873
+ background: rgba(255, 255, 255, 0.1);
4874
+ cursor: help;
4875
+ transition: all 0.2s ease;
4876
+ }
4877
+
4878
+ .renderer-info:hover {
4879
+ background: rgba(255, 255, 255, 0.2);
4880
+ }
4881
+
4882
+ .status-indicator {
4883
+ width: 8px;
4884
+ height: 8px;
4885
+ border-radius: 50%;
4886
+ background: #666;
4887
+ transition: background-color 0.3s ease;
4888
+ }
4889
+
4890
+ .status-indicator.connected {
4891
+ background: #4caf50;
4892
+ box-shadow: 0 0 8px rgba(76, 175, 80, 0.5);
4893
+ }
4894
+
4895
+ .status-indicator.disconnected {
4896
+ background: #f44336;
4897
+ box-shadow: 0 0 8px rgba(244, 67, 54, 0.5);
4898
+ }
4899
+
4900
+ .status-indicator.reconnecting {
4901
+ background: #ff9800;
4902
+ animation: pulse 1s infinite;
4903
+ }
4904
+
4905
+ @keyframes pulse {
4906
+ 0%, 100% {
4907
+ opacity: 1;
4908
+ }
4909
+ 50% {
4910
+ opacity: 0.5;
4911
+ }
4912
+ }
4913
+
4914
+ .terminal-actions {
4915
+ display: flex;
4916
+ gap: 8px;
4917
+ }
4918
+
4919
+ .terminal-actions .btn {
4920
+ padding: 4px 8px;
4921
+ font-size: 12px;
4922
+ background: rgba(255, 255, 255, 0.1);
4923
+ border: 1px solid rgba(255, 255, 255, 0.2);
4924
+ color: rgba(255, 255, 255, 0.7);
4925
+ border-radius: 4px;
4926
+ cursor: pointer;
4927
+ transition: all 0.2s ease;
4928
+ }
4929
+
4930
+ .terminal-actions .btn:hover {
4931
+ background: rgba(255, 255, 255, 0.2);
4932
+ color: rgba(255, 255, 255, 1);
4933
+ }
4934
+
4935
+ /* 浅色主题工具栏 */
4936
+ .theme-light .terminal-toolbar {
4937
+ background: rgba(0, 0, 0, 0.05);
4938
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
4939
+ }
4940
+
4941
+ .theme-light .terminal-status {
4942
+ color: rgba(0, 0, 0, 0.7);
4943
+ }
4944
+
4945
+ .theme-light .terminal-actions .btn {
4946
+ background: rgba(0, 0, 0, 0.05);
4947
+ border: 1px solid rgba(0, 0, 0, 0.1);
4948
+ color: rgba(0, 0, 0, 0.7);
4949
+ }
4950
+
4951
+ .theme-light .terminal-actions .btn:hover {
4952
+ background: rgba(0, 0, 0, 0.1);
4953
+ color: rgba(0, 0, 0, 1);
4954
+ }
4955
+
4956
+ /* ============================================
4957
+ 终端加载和错误状态
4958
+ ============================================ */
4959
+
4960
+ .terminal-loading {
4961
+ display: flex;
4962
+ flex-direction: column;
4963
+ align-items: center;
4964
+ justify-content: center;
4965
+ position: absolute;
4966
+ top: 0;
4967
+ left: 0;
4968
+ right: 0;
4969
+ bottom: 0;
4970
+ background: linear-gradient(135deg, #1e1e1e 0%, #2d2d2d 100%);
4971
+ color: #e0e0e0;
4972
+ font-family: 'SF Mono', 'JetBrains Mono', 'Cascadia Code', 'Fira Code', Monaco, 'Menlo', 'Consolas', 'Courier New', monospace;
4973
+ z-index: 10;
4974
+ }
4975
+
4976
+ .terminal-loading .loading-spinner {
4977
+ width: 48px;
4978
+ height: 48px;
4979
+ border: 3px solid rgba(255, 255, 255, 0.1);
4980
+ border-top: 3px solid #4a9eff;
4981
+ border-radius: 50%;
4982
+ animation: spin 0.8s linear infinite;
4983
+ margin-bottom: 20px;
4984
+ box-shadow: 0 0 20px rgba(74, 158, 255, 0.3);
4985
+ }
4986
+
4987
+ .terminal-loading p {
4988
+ margin: 0;
4989
+ font-size: 15px;
4990
+ font-weight: 500;
4991
+ opacity: 0.9;
4992
+ letter-spacing: 0.5px;
4993
+ }
4994
+
4995
+ .terminal-error {
4996
+ display: flex;
4997
+ flex-direction: column;
4998
+ align-items: center;
4999
+ justify-content: center;
5000
+ padding: 40px 20px;
5001
+ text-align: center;
5002
+ }
5003
+
5004
+ @keyframes spin {
5005
+ to {
5006
+ transform: rotate(360deg);
5007
+ }
5008
+ }
5009
+
5010
+ .terminal-error h3 {
5011
+ margin: 0 0 8px 0;
5012
+ color: #f44336;
5013
+ }
5014
+
5015
+ .terminal-error p {
5016
+ margin: 0 0 16px 0;
5017
+ color: rgba(255, 255, 255, 0.7);
5018
+ }
5019
+
5020
+ .terminal-error ul {
5021
+ text-align: left;
5022
+ color: rgba(255, 255, 255, 0.7);
5023
+ margin: 0;
5024
+ padding-left: 20px;
5025
+ }
5026
+
5027
+ .terminal-error button {
5028
+ margin-top: 16px;
5029
+ padding: 8px 16px;
5030
+ background: #4caf50;
5031
+ border: none;
5032
+ border-radius: 4px;
5033
+ color: white;
5034
+ cursor: pointer;
5035
+ transition: background-color 0.2s ease;
5036
+ }
5037
+
5038
+ .terminal-error button:hover {
5039
+ background: #45a049;
5040
+ }
5041
+
5042
+ /* ============================================
5043
+ 终端容器样式
5044
+ ============================================ */
5045
+
5046
+ .xterm-container {
5047
+ flex: 1;
5048
+ display: flex;
5049
+ flex-direction: column;
5050
+ overflow: hidden;
5051
+ background: #0a0a0a;
5052
+ }
5053
+
5054
+ .theme-light .xterm-container {
5055
+ background: #ffffff;
5056
+ }
5057
+ /* 空白区域与推荐词布局 */
5058
+ .custom-blank-content {
5059
+ display: flex;
5060
+ flex-direction: column;
5061
+ align-items: center;
5062
+ justify-content: center;
5063
+ height: 100%;
5064
+ padding: 64px 32px 32px;
5065
+ color: #9ca3af;
5066
+ font-size: 16px;
5067
+ overflow-y: auto;
5068
+ gap: 36px;
5069
+ }
5070
+
5071
+ .custom-blank-content.no-recommendation {
5072
+ padding-bottom: 64px;
5073
+ }
5074
+
5075
+ .blank-placeholder {
5076
+ flex: 1;
5077
+ width: 100%;
5078
+ display: flex;
5079
+ align-items: center;
5080
+ justify-content: center;
5081
+ text-align: center;
5082
+ }
5083
+
5084
+ .blank-placeholder-body {
5085
+ max-width: 520px;
5086
+ width: 100%;
5087
+ padding: 32px 40px;
5088
+ border-radius: 28px;
5089
+ background: rgba(255, 255, 255, 0.95);
5090
+ box-shadow: 0 20px 60px -40px rgba(15, 23, 42, 0.6);
5091
+ border: 1px solid rgba(226, 232, 240, 0.9);
5092
+ }
5093
+
5094
+ .blank-placeholder-emoji {
5095
+ font-size: 60px;
5096
+ margin-bottom: 20px;
5097
+ }
5098
+
5099
+ .blank-placeholder-text {
5100
+ font-size: 17px;
5101
+ color: #4b5563;
5102
+ line-height: 1.4;
5103
+ margin: 0;
5104
+ white-space: nowrap;
5105
+ overflow: hidden;
5106
+ text-overflow: ellipsis;
5107
+ display: block;
5108
+ }
5109
+
5110
+ .custom-blank-content.no-recommendation .blank-placeholder {
5111
+ margin-bottom: 0;
5112
+ }
5113
+
5114
+ /* 推荐词卡片列表样式 */
5115
+ .recommended-prompts-section {
5116
+ width: min(1280px, calc(100% - 48px));
5117
+ min-width: 560px; /* 2个卡片的最小宽度(240px) + 1个间隙(12px) + 2个padding(20px) */
5118
+ margin-top: auto;
5119
+ margin-left: auto;
5120
+ margin-right: auto;
5121
+ padding: 22px 28px 16px;
5122
+ border-radius: 22px;
5123
+ background: rgba(255, 255, 255, 0.96);
5124
+ border: 1px solid rgba(226, 232, 240, 0.9);
5125
+ box-shadow: 0 25px 55px -32px rgba(15, 23, 42, 0.35);
5126
+ flex-shrink: 0;
5127
+ }
5128
+
5129
+ .recommended-prompts-section.hidden {
5130
+ display: none;
5131
+ }
5132
+
5133
+ .recommended-prompts-header {
5134
+ display: flex;
5135
+ justify-content: space-between;
5136
+ align-items: center;
5137
+ margin-bottom: 20px;
5138
+ }
5139
+
5140
+ .recommended-prompts-header h3 {
5141
+ font-size: 18px;
5142
+ font-weight: 600;
5143
+ color: #1f2937;
5144
+ margin: 0;
5145
+ letter-spacing: 0.02em;
5146
+ }
5147
+
5148
+ .recommended-prompts-nav {
5149
+ display: flex;
5150
+ gap: 10px;
5151
+ }
5152
+
5153
+ .nav-arrow {
5154
+ width: 36px;
5155
+ height: 36px;
5156
+ border-radius: 50%;
5157
+ border: 1px solid #e0e0e0;
5158
+ background: white;
5159
+ display: flex;
5160
+ align-items: center;
5161
+ justify-content: center;
5162
+ cursor: pointer;
5163
+ transition: all 0.2s ease;
5164
+ }
5165
+
5166
+ .nav-arrow:hover:not(.disabled) {
5167
+ background: #f5f5f5;
5168
+ border-color: #ccc;
5169
+ }
5170
+
5171
+ .nav-arrow.disabled {
5172
+ opacity: 0.4;
5173
+ cursor: not-allowed;
5174
+ }
5175
+
5176
+ .recommended-prompts-container {
5177
+ position: relative;
5178
+ overflow: hidden;
5179
+ }
5180
+
5181
+ .recommended-prompts-list {
5182
+ display: flex;
5183
+ gap: 12px;
5184
+ padding: 6px 0;
5185
+ overflow-x: auto;
5186
+ scroll-behavior: smooth;
5187
+ /* 滚动条默认透明,保持空间 */
5188
+ scrollbar-width: thin;
5189
+ scrollbar-color: transparent transparent;
5190
+ }
5191
+
5192
+ .recommended-prompts-list::-webkit-scrollbar {
5193
+ height: 6px;
5194
+ }
5195
+
5196
+ .recommended-prompts-list::-webkit-scrollbar-track {
5197
+ background: transparent;
5198
+ }
5199
+
5200
+ .recommended-prompts-list::-webkit-scrollbar-thumb {
5201
+ background-color: transparent;
5202
+ border-radius: 3px;
5203
+ transition: background-color 0.2s ease;
5204
+ }
5205
+
5206
+ /* 滚动或悬停时显示滚动条 */
5207
+ .recommended-prompts-list:active::-webkit-scrollbar-thumb,
5208
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb {
5209
+ background-color: #c5c5c5;
5210
+ }
5211
+
5212
+ .recommended-prompts-list:active::-webkit-scrollbar-thumb:hover,
5213
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb:hover {
5214
+ background-color: #a0a0a0;
5215
+ }
5216
+
5217
+ .recommended-prompts-list:hover::-webkit-scrollbar {
5218
+ height: 6px;
5219
+ }
5220
+
5221
+ .recommended-prompts-list:hover::-webkit-scrollbar-track {
5222
+ background: transparent;
5223
+ }
5224
+
5225
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb {
5226
+ background-color: #c5c5c5;
5227
+ border-radius: 3px;
5228
+ transition: background-color 0.2s ease;
5229
+ }
5230
+
5231
+ .recommended-prompts-list:hover::-webkit-scrollbar-thumb:hover {
5232
+ background-color: #a0a0a0;
5233
+ }
5234
+
5235
+ .recommended-prompt-card {
5236
+ min-width: 240px;
5237
+ max-width: 320px;
5238
+ min-height: 140px;
5239
+ border-radius: 18px;
5240
+ border: 1px solid rgba(226, 232, 240, 0.8);
5241
+ background: white;
5242
+ padding: 18px 20px;
5243
+ cursor: pointer;
5244
+ transition: all 0.25s ease;
5245
+ box-shadow: 3px 16px 18px -26px rgba(15, 23, 42, 0.5);
5246
+ display: flex;
5247
+ flex-direction: column;
5248
+ margin-right: 12px;
5249
+ }
5250
+
5251
+ .recommended-prompt-card:last-child {
5252
+ margin-right: 0;
5253
+ }
5254
+
5255
+ .recommended-prompt-card:hover {
5256
+ transform: translateY(-4px);
5257
+ box-shadow: 0 18px 30px -28px rgba(15, 23, 42, 0.45);
5258
+ border-color: rgba(148, 163, 184, 0.5);
5259
+ }
5260
+
5261
+ .recommended-prompt-card .card-header {
5262
+ display: flex;
5263
+ justify-content: space-between;
5264
+ align-items: flex-start;
5265
+ margin-bottom: 10px;
5266
+ }
5267
+
5268
+ .recommended-prompt-card .card-title {
5269
+ font-size: 15px;
5270
+ font-weight: 600;
5271
+ color: #111827;
5272
+ margin: 0;
5273
+ flex: 1;
5274
+ line-height: 1.3;
5275
+ overflow: hidden;
5276
+ text-overflow: ellipsis;
5277
+ display: -webkit-box;
5278
+ -webkit-line-clamp: 2;
5279
+ -webkit-box-orient: vertical;
5280
+ }
5281
+
5282
+ .recommended-prompt-card .card-tags {
5283
+ display: flex;
5284
+ gap: 6px;
5285
+ flex-wrap: wrap;
5286
+ margin-top: 10px;
5287
+ }
5288
+
5289
+ .recommended-prompt-card .card-tag {
5290
+ font-size: 12px;
5291
+ padding: 4px 10px;
5292
+ border-radius: 12px;
5293
+ background: rgba(59, 130, 246, 0.08);
5294
+ color: #2563eb;
5295
+ font-weight: 500;
5296
+ }
5297
+
5298
+ .recommended-prompt-card .card-description {
5299
+ font-size: 13px;
5300
+ color: #4b5563;
5301
+ line-height: 1.5;
5302
+ overflow: hidden;
5303
+ text-overflow: ellipsis;
5304
+ display: -webkit-box;
5305
+ -webkit-line-clamp: 3;
5306
+ -webkit-box-orient: vertical;
5307
+ flex: 1;
5308
+ margin-top: 4px;
5309
+ max-height: calc(1.5em * 3); /* 确保最大高度为3行 */
5310
+ word-break: break-word; /* 确保长单词也能正确换行 */
5311
+ }
5312
+
5313
+ .recommended-prompt-modal {
5314
+ position: fixed;
5315
+ inset: 0;
5316
+ background: rgba(0, 0, 0, 0.5);
5317
+ display: flex;
5318
+ align-items: center;
5319
+ justify-content: center;
5320
+ z-index: 2000;
5321
+ opacity: 0;
5322
+ visibility: hidden;
5323
+ transition: all 0.3s ease;
5324
+ }
5325
+
5326
+ .recommended-prompt-modal.active {
5327
+ opacity: 1;
5328
+ visibility: visible;
5329
+ }
5330
+
5331
+ .recommended-prompt-modal-content {
5332
+ width: 90%;
5333
+ max-width: 700px;
5334
+ max-height: 90vh;
5335
+ background: white;
5336
+ border-radius: 16px;
5337
+ overflow: hidden;
5338
+ transform: translateY(20px);
5339
+ transition: transform 0.3s ease;
5340
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
5341
+ display: flex;
5342
+ flex-direction: column;
5343
+ }
5344
+
5345
+ .recommended-prompt-modal.active .recommended-prompt-modal-content {
5346
+ transform: translateY(0);
5347
+ }
5348
+
5349
+ .recommended-prompt-modal-body {
5350
+ padding: 24px;
5351
+ flex: 1;
5352
+ overflow-y: auto;
5353
+ display: flex;
5354
+ flex-direction: column;
5355
+ /* 滚动条默认透明,保持空间 */
5356
+ scrollbar-width: thin;
5357
+ scrollbar-color: transparent transparent;
5358
+ }
5359
+
5360
+ /* Webkit浏览器滚动条样式 - 默认透明 */
5361
+ .recommended-prompt-modal-body::-webkit-scrollbar {
5362
+ width: 6px;
5363
+ }
5364
+
5365
+ .recommended-prompt-modal-body::-webkit-scrollbar-track {
5366
+ background: transparent;
5367
+ }
5368
+
5369
+ .recommended-prompt-modal-body::-webkit-scrollbar-thumb {
5370
+ background-color: transparent;
5371
+ border-radius: 3px;
5372
+ transition: background-color 0.2s ease;
5373
+ }
5374
+
5375
+ /* 滚动或悬停时显示滚动条 */
5376
+ .recommended-prompt-modal-body:active::-webkit-scrollbar-thumb,
5377
+ .recommended-prompt-modal-body:hover::-webkit-scrollbar-thumb {
5378
+ background-color: #c5c5c5;
5379
+ }
5380
+
5381
+ .recommended-prompt-modal-body:active::-webkit-scrollbar-thumb:hover,
5382
+ .recommended-prompt-modal-body:hover::-webkit-scrollbar-thumb:hover {
5383
+ background-color: #a0a0a0;
5384
+ }
5385
+
5386
+ .recommended-prompt-modal-body .prompt-detail-description {
5387
+ font-size: 16px;
5388
+ color: #666;
5389
+ line-height: 1.6;
5390
+ margin: 0 0 24px 0;
5391
+ padding: 16px;
5392
+ background: #f8f9fa;
5393
+ border-radius: 8px;
5394
+ }
5395
+
5396
+ .recommended-prompt-modal-body .prompt-detail-content {
5397
+ background: #f8f9fa;
5398
+ border-radius: 8px;
5399
+ padding: 20px;
5400
+ font-size: 16px;
5401
+ line-height: 1.7;
5402
+ color: #333;
5403
+ white-space: pre-wrap;
5404
+ font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
5405
+ border: 1px solid #e2e8f0;
5406
+ margin-top: 24px;
5407
+ flex: 1;
5408
+ min-height: 0;
5409
+ overflow-y: auto;
5410
+ /* 滚动条默认透明,保持空间 */
5411
+ scrollbar-width: thin;
5412
+ scrollbar-color: transparent transparent;
5413
+ }
5414
+
5415
+ /* Webkit浏览器滚动条样式 - 默认透明 */
5416
+ .recommended-prompt-modal-body .prompt-detail-content::-webkit-scrollbar {
5417
+ width: 6px;
5418
+ }
5419
+
5420
+ .recommended-prompt-modal-body .prompt-detail-content::-webkit-scrollbar-track {
5421
+ background: transparent;
5422
+ }
5423
+
5424
+ .recommended-prompt-modal-body .prompt-detail-content::-webkit-scrollbar-thumb {
5425
+ background-color: transparent;
5426
+ border-radius: 3px;
5427
+ transition: background-color 0.2s ease;
5428
+ }
5429
+
5430
+ /* 滚动或悬停时显示滚动条 */
5431
+ .recommended-prompt-modal-body .prompt-detail-content:active::-webkit-scrollbar-thumb,
5432
+ .recommended-prompt-modal-body .prompt-detail-content:hover::-webkit-scrollbar-thumb {
5433
+ background-color: #c5c5c5;
5434
+ }
5435
+
5436
+ .recommended-prompt-modal-body .prompt-detail-content:active::-webkit-scrollbar-thumb:hover,
5437
+ .recommended-prompt-modal-body .prompt-detail-content:hover::-webkit-scrollbar-thumb:hover {
5438
+ background-color: #a0a0a0;
5439
+ }
5440
+
5441
+ .recommended-prompt-modal-body .prompt-detail-content p {
5442
+ margin: 0 0 16px 0;
5443
+ }
5444
+
5445
+ .recommended-prompt-modal-body .prompt-detail-content p:last-child {
5446
+ margin-bottom: 0;
5447
+ }
5448
+
5449
+ .recommended-prompt-modal-footer {
5450
+ padding: 16px 24px;
5451
+ border-top: 1px solid #eee;
5452
+ display: flex;
5453
+ justify-content: flex-end;
5454
+ gap: 12px;
5455
+ background: #fafafa;
5456
+ margin-top: auto;
5457
+ }
5458
+
5459
+ .sync-to-my-prompts-btn {
5460
+ background: #393939;
5461
+ color: white;
5462
+ border: none;
5463
+ border-radius: 8px;
5464
+ padding: 10px 20px;
5465
+ font-size: 14px;
5466
+ font-weight: 500;
5467
+ cursor: pointer;
5468
+ transition: all 0.2s ease;
5469
+ display: flex;
5470
+ align-items: center;
5471
+ gap: 8px;
5472
+ }
5473
+
5474
+ .sync-to-my-prompts-btn:hover {
5475
+ background: #222;
5476
+ transform: translateY(-1px);
5477
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
5478
+ }
5479
+
5480
+ .sync-to-my-prompts-btn svg {
5481
+ color: #ffffff;
5482
+ stroke: #ffffff;
5483
+ }
5484
+
5485
+ /* 同步到我的提示词弹窗样式 */
5486
+ .sync-prompt-modal {
5487
+ position: fixed;
5488
+ inset: 0;
5489
+ background: rgba(0, 0, 0, 0.5);
5490
+ display: flex;
5491
+ align-items: center;
5492
+ justify-content: center;
5493
+ z-index: 2100;
5494
+ opacity: 0;
5495
+ visibility: hidden;
5496
+ transition: all 0.3s ease;
5497
+ }
5498
+
5499
+ .sync-prompt-modal.active {
5500
+ opacity: 1;
5501
+ visibility: visible;
5502
+ }
5503
+
5504
+ .sync-prompt-modal-content {
5505
+ width: 90%;
5506
+ max-width: 500px;
5507
+ background: white;
5508
+ border-radius: 16px;
5509
+ overflow: hidden;
5510
+ transform: translateY(20px);
5511
+ transition: transform 0.3s ease;
5512
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
5513
+ }
5514
+
5515
+ .sync-prompt-modal.active .sync-prompt-modal-content {
5516
+ transform: translateY(0);
5517
+ }
5518
+
5519
+ .recommended-prompt-modal-header {
5520
+ padding: 16px 24px;
5521
+ display: flex;
5522
+ justify-content: space-between;
5523
+ align-items: center;
5524
+ background: #fafafa;
5525
+ border-bottom: 1px solid #eee;
5526
+ }
5527
+
5528
+ .recommended-prompt-modal-header h3 {
5529
+ font-size: 18px;
5530
+ font-weight: 600;
5531
+ color: #333;
5532
+ margin: 0;
5533
+ display: flex;
5534
+ align-items: center;
5535
+ gap: 8px;
5536
+ }
5537
+
5538
+ .sync-prompt-modal-header {
5539
+ padding: 16px 24px;
5540
+ display: flex;
5541
+ justify-content: space-between;
5542
+ align-items: center;
5543
+ background: #fafafa;
5544
+ border-bottom: 1px solid #eee;
5545
+ }
5546
+
5547
+ .sync-prompt-modal-header h3 {
5548
+ font-size: 18px;
5549
+ font-weight: 600;
5550
+ color: #333;
5551
+ margin: 0;
5552
+ display: flex;
5553
+ align-items: center;
5554
+ gap: 8px;
5555
+ }
5556
+
5557
+ .sync-prompt-modal-header h3 {
5558
+ font-size: 18px;
5559
+ font-weight: 600;
5560
+ color: #333;
5561
+ margin: 0;
5562
+ display: flex;
5563
+ align-items: center;
5564
+ gap: 8px;
5565
+ }
5566
+
5567
+ .recommended-prompt-modal-close {
5568
+ width: 32px;
5569
+ height: 32px;
5570
+ border: none;
5571
+ background: transparent;
5572
+ border-radius: 8px;
5573
+ color: #666;
5574
+ cursor: pointer;
5575
+ display: flex;
5576
+ align-items: center;
5577
+ justify-content: center;
5578
+ transition: all 0.2s ease;
5579
+ }
5580
+
5581
+ .recommended-prompt-modal-close:hover {
5582
+ background: #f0f0f0;
5583
+ color: #333;
5584
+ }
5585
+
5586
+ .sync-prompt-modal-close {
5587
+ width: 32px;
5588
+ height: 32px;
5589
+ border: none;
5590
+ background: transparent;
5591
+ border-radius: 8px;
5592
+ color: #666;
5593
+ cursor: pointer;
5594
+ display: flex;
5595
+ align-items: center;
5596
+ justify-content: center;
5597
+ transition: all 0.2s ease;
5598
+ }
5599
+
5600
+ .sync-prompt-modal-close:hover {
5601
+ background: #f0f0f0;
5602
+ color: #333;
5603
+ }
5604
+
5605
+ .sync-prompt-modal-body {
5606
+ padding: 24px;
5607
+ }
5608
+
5609
+ .sync-prompt-form .form-group {
5610
+ margin-bottom: 20px;
5611
+ }
5612
+
5613
+ .sync-prompt-form label {
5614
+ display: block;
5615
+ margin-bottom: 8px;
5616
+ font-size: 14px;
5617
+ font-weight: 500;
5618
+ color: #333;
5619
+ }
5620
+
5621
+ .sync-prompt-form select {
5622
+ width: 100%;
5623
+ padding: 12px 16px;
5624
+ border: 1px solid #e0e0e0;
5625
+ border-radius: 8px;
5626
+ font-size: 14px;
5627
+ background: white;
5628
+ transition: all 0.2s ease;
5629
+ }
5630
+
5631
+ .sync-prompt-form input {
5632
+ width: 100%;
5633
+ padding: 12px 16px;
5634
+ border: 1px solid #e0e0e0;
5635
+ border-radius: 8px;
5636
+ font-size: 14px;
5637
+ background: white;
5638
+ transition: all 0.2s ease;
5639
+ }
5640
+
5641
+ .sync-prompt-form input:focus,
5642
+ .sync-prompt-form select:focus {
5643
+ outline: none;
5644
+ border-color: #393939;
5645
+ box-shadow: 0 0 0 3px rgba(57, 57, 57, 0.1);
5646
+ }
5647
+
5648
+ .sync-prompt-form select:focus {
5649
+ outline: none;
5650
+ border-color: #393939;
5651
+ box-shadow: 0 0 0 3px rgba(57, 57, 57, 0.1);
5652
+ }
5653
+
5654
+ .sync-prompt-modal-footer {
5655
+ padding: 16px 24px;
5656
+ border-top: 1px solid #eee;
5657
+ display: flex;
5658
+ justify-content: flex-end;
5659
+ gap: 12px;
5660
+ background: #fafafa;
5661
+ }
5662
+
5663
+ /* 滚动动画 */
5664
+ .recommended-prompts-list.sliding {
5665
+ transition: transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
5666
+ }
5667
+ /* Markdown 内容样式 */
5668
+ .markdown-body {
5669
+ font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
5670
+ font-size: 15px;
5671
+ line-height: 1.7;
5672
+ color: #24292f;
5673
+ background: white;
5674
+ padding: 24px;
5675
+ border-radius: 12px;
5676
+ }
5677
+
5678
+ .markdown-body h1,
5679
+ .markdown-body h2,
5680
+ .markdown-body h3,
5681
+ .markdown-body h4,
5682
+ .markdown-body h5,
5683
+ .markdown-body h6 {
5684
+ margin-top: 24px;
5685
+ margin-bottom: 16px;
5686
+ font-weight: 600;
5687
+ line-height: 1.25;
5688
+ color: #1a1a1a;
5689
+ }
5690
+
5691
+ .markdown-body h1 {
5692
+ font-size: 2em;
5693
+ padding-bottom: 0.3em;
5694
+ border-bottom: 2px solid #e0e0e0;
5695
+ }
5696
+
5697
+ .markdown-body h2 {
5698
+ font-size: 1.5em;
5699
+ padding-bottom: 0.3em;
5700
+ border-bottom: 1px solid #e0e0e0;
5701
+ }
5702
+
5703
+ .markdown-body h3 {
5704
+ font-size: 1.25em;
5705
+ }
5706
+
5707
+ .markdown-body h4 {
5708
+ font-size: 1em;
5709
+ }
5710
+
5711
+ .markdown-body h5 {
5712
+ font-size: 0.875em;
5713
+ }
5714
+
5715
+ .markdown-body h6 {
5716
+ font-size: 0.85em;
5717
+ color: #6c757d;
5718
+ }
5719
+
5720
+ .markdown-body p {
5721
+ margin-top: 0;
5722
+ margin-bottom: 16px;
5723
+ }
5724
+
5725
+ .markdown-body a {
5726
+ color: #0969da;
5727
+ text-decoration: none;
5728
+ transition: color 0.2s ease;
5729
+ }
5730
+
5731
+ .markdown-body a:hover {
5732
+ color: #0550ae;
5733
+ text-decoration: underline;
5734
+ }
5735
+
5736
+ .markdown-body ul,
5737
+ .markdown-body ol {
5738
+ margin-top: 0;
5739
+ margin-bottom: 16px;
5740
+ padding-left: 2em;
5741
+ }
5742
+
5743
+ .markdown-body li {
5744
+ margin-top: 0.25em;
5745
+ }
5746
+
5747
+ .markdown-body li + li {
5748
+ margin-top: 0.5em;
5749
+ }
5750
+
5751
+ .markdown-body blockquote {
5752
+ margin: 0 0 16px 0;
5753
+ padding: 0 1em;
5754
+ color: #6c757d;
5755
+ border-left: 4px solid #dee2e6;
5756
+ background: rgba(0, 0, 0, 0.02);
5757
+ border-radius: 4px;
5758
+ }
5759
+
5760
+ .markdown-body blockquote > :first-child {
5761
+ margin-top: 0;
5762
+ }
5763
+
5764
+ .markdown-body blockquote > :last-child {
5765
+ margin-bottom: 0;
5766
+ }
5767
+
5768
+ .markdown-body code {
5769
+ padding: 0.2em 0.4em;
5770
+ margin: 0;
5771
+ font-size: 85%;
5772
+ background-color: rgba(175, 184, 193, 0.2);
5773
+ border-radius: 6px;
5774
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
5775
+ }
5776
+
5777
+ .markdown-body pre {
5778
+ margin-top: 0;
5779
+ margin-bottom: 16px;
5780
+ padding: 16px;
5781
+ overflow: auto;
5782
+ font-size: 85%;
5783
+ line-height: 1.45;
5784
+ background-color: #f6f8fa;
5785
+ border-radius: 8px;
5786
+ border: 1px solid #e0e0e0;
5787
+ }
5788
+
5789
+ .markdown-body pre code {
5790
+ display: block;
5791
+ padding: 0;
5792
+ margin: 0;
5793
+ overflow: visible;
5794
+ line-height: inherit;
5795
+ word-wrap: normal;
5796
+ background-color: transparent;
5797
+ border: 0;
5798
+ font-size: 100%;
5799
+ }
5800
+
5801
+ .markdown-body table {
5802
+ border-spacing: 0;
5803
+ border-collapse: collapse;
5804
+ display: block;
5805
+ width: max-content;
5806
+ max-width: 100%;
5807
+ overflow: auto;
5808
+ margin-top: 0;
5809
+ margin-bottom: 16px;
5810
+ }
5811
+
5812
+ .markdown-body table th {
5813
+ font-weight: 600;
5814
+ background-color: #f6f8fa;
5815
+ }
5816
+
5817
+ .markdown-body table th,
5818
+ .markdown-body table td {
5819
+ padding: 8px 13px;
5820
+ border: 1px solid #dee2e6;
5821
+ }
5822
+
5823
+ .markdown-body table tr {
5824
+ background-color: #ffffff;
5825
+ border-top: 1px solid #dee2e6;
5826
+ }
5827
+
5828
+ .markdown-body table tr:nth-child(2n) {
5829
+ background-color: #f6f8fa;
5830
+ }
5831
+
5832
+ .markdown-body img {
5833
+ max-width: 100%;
5834
+ height: auto;
5835
+ border-radius: 8px;
5836
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
5837
+ margin: 16px 0;
5838
+ }
5839
+
5840
+ .markdown-body video {
5841
+ max-width: 100%;
5842
+ height: auto;
5843
+ border-radius: 8px;
5844
+ margin: 16px 0;
5845
+ }
5846
+
5847
+ .markdown-body hr {
5848
+ height: 0.25em;
5849
+ padding: 0;
5850
+ margin: 24px 0;
5851
+ background-color: #e0e0e0;
5852
+ border: 0;
5853
+ }
5854
+
5855
+ /* Mermaid 图表样式 */
5856
+ .mermaid-wrapper {
5857
+ margin: 24px 0;
5858
+ padding: 20px;
5859
+ background: #fafbfc;
5860
+ border-radius: 12px;
5861
+ border: 1px solid #e0e0e0;
5862
+ overflow-x: auto;
5863
+ }
5864
+
5865
+ .mermaid-wrapper .mermaid {
5866
+ display: flex;
5867
+ justify-content: center;
5868
+ align-items: center;
5869
+ min-height: 200px;
5870
+ }
5871
+
5872
+ .mermaid-error {
5873
+ padding: 16px;
5874
+ background: #fff3cd;
5875
+ border: 1px solid #ffc107;
5876
+ border-radius: 8px;
5877
+ color: #856404;
5878
+ text-align: center;
5879
+ }
5880
+
5881
+ .markdown-error {
5882
+ padding: 24px;
5883
+ background: #f8d7da;
5884
+ border: 1px solid #dc3545;
5885
+ border-radius: 8px;
5886
+ color: #721c24;
5887
+ text-align: center;
5888
+ }
5889
+
5890
+ /* 代码高亮主题 */
5891
+ .hljs {
5892
+ background: #f6f8fa;
5893
+ color: #24292f;
5894
+ }
5895
+
5896
+ .hljs-comment,
5897
+ .hljs-quote {
5898
+ color: #6a737d;
5899
+ font-style: italic;
5900
+ }
5901
+
5902
+ .hljs-keyword,
5903
+ .hljs-selector-tag,
5904
+ .hljs-subst {
5905
+ color: #d73a49;
5906
+ font-weight: bold;
5907
+ }
5908
+
5909
+ .hljs-number,
5910
+ .hljs-literal,
5911
+ .hljs-variable,
5912
+ .hljs-template-variable,
5913
+ .hljs-tag .hljs-attr {
5914
+ color: #005cc5;
5915
+ }
5916
+
5917
+ .hljs-string,
5918
+ .hljs-doctag {
5919
+ color: #032f62;
5920
+ }
5921
+
5922
+ .hljs-title,
5923
+ .hljs-section,
5924
+ .hljs-selector-id {
5925
+ color: #6f42c1;
5926
+ font-weight: bold;
5927
+ }
5928
+
5929
+ .hljs-type,
5930
+ .hljs-class .hljs-title {
5931
+ color: #22863a;
5932
+ font-weight: bold;
5933
+ }
5934
+
5935
+ .hljs-tag,
5936
+ .hljs-name,
5937
+ .hljs-attribute {
5938
+ color: #22863a;
5939
+ font-weight: normal;
5940
+ }
5941
+
5942
+ .hljs-regexp,
5943
+ .hljs-link {
5944
+ color: #032f62;
5945
+ }
5946
+
5947
+ .hljs-symbol,
5948
+ .hljs-bullet {
5949
+ color: #e36209;
5950
+ }
5951
+
5952
+ .hljs-built_in,
5953
+ .hljs-builtin-name {
5954
+ color: #005cc5;
5955
+ }
5956
+
5957
+ .hljs-meta {
5958
+ color: #005cc5;
5959
+ font-weight: bold;
5960
+ }
5961
+
5962
+ .hljs-deletion {
5963
+ background: #ffeef0;
5964
+ }
5965
+
5966
+ .hljs-addition {
5967
+ background: #e6ffed;
5968
+ }
5969
+
5970
+ .hljs-emphasis {
5971
+ font-style: italic;
5972
+ }
5973
+
5974
+ .hljs-strong {
5975
+ font-weight: bold;
5976
+ }
5977
+
5978
+ /* 工具详情弹窗优化 */
5979
+ .tool-detail-modal {
5980
+ position: fixed;
5981
+ top: 0;
5982
+ left: 0;
5983
+ right: 0;
5984
+ bottom: 0;
5985
+ background: rgba(0, 0, 0, 0.6);
5986
+ backdrop-filter: blur(4px);
5987
+ display: flex;
5988
+ align-items: center;
5989
+ justify-content: center;
5990
+ z-index: 9999;
5991
+ opacity: 0;
5992
+ visibility: hidden;
5993
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
5994
+ }
5995
+
5996
+ .tool-detail-modal.show {
5997
+ opacity: 1;
5998
+ visibility: visible;
5999
+ }
6000
+
6001
+ .tool-detail-content {
6002
+ background: white;
6003
+ border-radius: 16px;
6004
+ width: 90%;
6005
+ max-width: 1000px;
6006
+ max-height: 85vh;
6007
+ display: flex;
6008
+ flex-direction: column;
6009
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
6010
+ transform: scale(0.9) translateY(20px);
6011
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
6012
+ }
6013
+
6014
+ .tool-detail-modal.show .tool-detail-content {
6015
+ transform: scale(1) translateY(0);
6016
+ }
6017
+
6018
+ .tool-detail-header {
6019
+ padding: 24px 32px;
6020
+ border-bottom: 1px solid #e0e0e0;
6021
+ display: flex;
6022
+ align-items: center;
6023
+ justify-content: space-between;
6024
+ flex-shrink: 0;
6025
+ /* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); */
6026
+ background: linear-gradient(135deg, #696b75 0%, #a9a5a5 100%);
6027
+ color: white;
6028
+ border-radius: 16px 16px 0 0;
6029
+ }
6030
+
6031
+ .tool-detail-title {
6032
+ font-size: 24px;
6033
+ font-weight: 600;
6034
+ margin: 0;
6035
+ display: flex;
6036
+ align-items: center;
6037
+ gap: 12px;
6038
+ }
6039
+
6040
+ .tool-detail-close {
6041
+ width: 32px;
6042
+ height: 32px;
6043
+ border: none;
6044
+ background: rgba(255, 255, 255, 0.2);
6045
+ color: white;
6046
+ border-radius: 50%;
6047
+ cursor: pointer;
6048
+ display: flex;
6049
+ align-items: center;
6050
+ justify-content: center;
6051
+ font-size: 20px;
6052
+ transition: all 0.2s ease;
6053
+ padding-bottom: 3px;
6054
+ }
6055
+
6056
+ .tool-detail-close:hover {
6057
+ background: rgba(255, 255, 255, 0.3);
6058
+ transform: rotate(90deg);
6059
+ }
6060
+
6061
+ .tool-detail-body {
6062
+ padding: 0;
6063
+ overflow-y: auto;
6064
+ flex: 1;
6065
+ min-height: 0;
6066
+ }
6067
+
6068
+ .tool-detail-info {
6069
+ padding: 24px 32px;
6070
+ background: #f8f9fa;
6071
+ border-bottom: 1px solid #e0e0e0;
6072
+ }
6073
+
6074
+ .tool-detail-info strong {
6075
+ color: #1a1a1a;
6076
+ font-weight: 600;
6077
+ }
6078
+
6079
+ .tool-detail-markdown {
6080
+ padding: 32px;
6081
+ }
6082
+
6083
+ .tool-detail-loading {
6084
+ text-align: center;
6085
+ padding: 60px 20px;
6086
+ color: #6c757d;
6087
+ font-size: 16px;
6088
+ }
6089
+
6090
+ .tool-detail-loading::before {
6091
+ content: '';
6092
+ display: inline-block;
6093
+ width: 40px;
6094
+ height: 40px;
6095
+ border: 4px solid #f3f3f3;
6096
+ border-top: 4px solid #667eea;
6097
+ border-radius: 50%;
6098
+ animation: spin 1s linear infinite;
6099
+ margin-bottom: 16px;
6100
+ }
6101
+
6102
+ @keyframes spin {
6103
+ 0% { transform: rotate(0deg); }
6104
+ 100% { transform: rotate(360deg); }
6105
+ }
6106
+
6107
+ /* 响应式设计 */
6108
+ @media (max-width: 768px) {
6109
+ .tool-detail-content {
6110
+ width: 95%;
6111
+ max-height: 90vh;
6112
+ }
6113
+
6114
+ .tool-detail-header {
6115
+ padding: 16px 20px;
6116
+ }
6117
+
6118
+ .tool-detail-title {
6119
+ font-size: 20px;
6120
+ }
6121
+
6122
+ .tool-detail-info {
6123
+ padding: 16px 20px;
6124
+ }
6125
+
6126
+ .tool-detail-markdown {
6127
+ padding: 20px;
6128
+ }
6129
+
6130
+ .markdown-body {
6131
+ padding: 16px;
6132
+ font-size: 14px;
6133
+ }
6134
+ }
6135
+
6136
+ /* ==================== 优化抽屉样式 ==================== */
6137
+
6138
+ .optimization-drawer {
6139
+ position: fixed;
6140
+ top: 0;
6141
+ right: 0;
6142
+ width: calc(100% - 375px);
6143
+ height: 100%;
6144
+ z-index: 1000;
6145
+ display: flex;
6146
+ }
6147
+
6148
+ .optimization-drawer.hidden {
6149
+ display: none;
6150
+ }
6151
+
6152
+ .drawer-overlay {
6153
+ position: fixed;
6154
+ top: 0;
6155
+ left: 0;
6156
+ width: 100%;
6157
+ height: 100%;
6158
+ background-color: rgba(0, 0, 0, 0.5);
6159
+ z-index: -1;
6160
+ }
6161
+
6162
+ .drawer-content {
6163
+ width: 100%;
6164
+ height: 100%;
6165
+ background-color: #fff;
6166
+ display: flex;
6167
+ flex-direction: column;
6168
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.1);
6169
+ animation: slideIn 0.3s ease-out;
6170
+ }
6171
+
6172
+ @keyframes slideIn {
6173
+ from {
6174
+ transform: translateX(100%);
6175
+ }
6176
+ to {
6177
+ transform: translateX(0);
6178
+ }
6179
+ }
6180
+
6181
+ .drawer-header {
6182
+ padding: 8px 16px;
6183
+ border-bottom: 1px solid #e5e7eb;
6184
+ display: flex;
6185
+ justify-content: space-between;
6186
+ align-items: center;
6187
+ }
6188
+
6189
+ .drawer-header h3 {
6190
+ margin: 0;
6191
+ font-size: 18px;
6192
+ font-weight: 600;
6193
+ color: #111827;
6194
+ }
6195
+
6196
+ .drawer-close {
6197
+ background: none;
6198
+ border: none;
6199
+ font-size: 24px;
6200
+ color: #6b7280;
6201
+ cursor: pointer;
6202
+ padding: 0;
6203
+ width: 32px;
6204
+ height: 32px;
6205
+ display: flex;
6206
+ align-items: center;
6207
+ justify-content: center;
6208
+ border-radius: 4px;
6209
+ transition: background-color 0.2s;
6210
+ }
6211
+
6212
+ .drawer-close:hover {
6213
+ background-color: #f3f4f6;
6214
+ color: #111827;
6215
+ }
6216
+
6217
+ .drawer-body {
6218
+ flex: 1;
6219
+ overflow-y: auto;
6220
+ padding: 24px;
6221
+ background-color: #f5f5f5;
6222
+ }
6223
+
6224
+ .drawer-footer {
6225
+ padding: 20px;
6226
+ border-top: 1px solid #e5e7eb;
6227
+ display: flex;
6228
+ justify-content: flex-end;
6229
+ gap: 12px;
6230
+ background-color: #fff;
6231
+ }
6232
+
6233
+ /* ==================== 优化控制区域 ==================== */
6234
+
6235
+ .optimization-controls {
6236
+ margin-bottom: 24px;
6237
+ padding: 20px;
6238
+ background-color: #fff;
6239
+ border-radius: 8px;
6240
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
6241
+ }
6242
+
6243
+ .control-group {
6244
+ margin-bottom: 0;
6245
+ }
6246
+
6247
+ .optimization-controls-row {
6248
+ display: flex;
6249
+ gap: 16px;
6250
+ align-items: flex-end;
6251
+ margin-bottom: 0;
6252
+ }
6253
+
6254
+ .model-selector,
6255
+ .template-selector {
6256
+ flex: 1;
6257
+ display: flex;
6258
+ gap: 0;
6259
+ align-items: center;
6260
+ }
6261
+
6262
+ .model-selector .form-control,
6263
+ .template-selector .form-control {
6264
+ flex: 1;
6265
+ height: 40px;
6266
+ padding: 10px 14px;
6267
+ border: 1.5px solid #d1d5db;
6268
+ border-radius: 8px;
6269
+ font-size: 14px;
6270
+ color: #333;
6271
+ background-color: #fff;
6272
+ transition: all 0.2s;
6273
+ appearance: none;
6274
+ background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 viewBox=%270 0 12 12%27%3E%3Cpath fill=%27%23999%27 d=%27M2.5 4.5L6 8l3.5-3.5%27/%3E%3C/svg%3E");
6275
+ background-repeat: no-repeat;
6276
+ background-position: right 14px center;
6277
+ padding-right: 40px;
6278
+ cursor: pointer;
6279
+ }
6280
+
6281
+ .model-selector .form-control:hover,
6282
+ .template-selector .form-control:hover {
6283
+ border-color: #9ca3af;
6284
+ }
6285
+
6286
+ .model-selector .form-control:focus,
6287
+ .template-selector .form-control:focus {
6288
+ outline: none;
6289
+ border-color: #3b82f6;
6290
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
6291
+ }
6292
+
6293
+ /* 下拉选项样式 */
6294
+ .model-selector .form-control option,
6295
+ .template-selector .form-control option {
6296
+ padding: 8px 12px;
6297
+ cursor: pointer;
6298
+ }
6299
+
6300
+ .model-selector .form-control option:hover,
6301
+ .template-selector .form-control option:hover {
6302
+ background-color: #e6f7ff;
6303
+ }
6304
+
6305
+ .model-selector .form-control option:checked,
6306
+ .template-selector .form-control option:checked {
6307
+ background-color: #1890ff;
6308
+ color: white;
6309
+ }
6310
+
6311
+ .model-selector .form-control option:disabled,
6312
+ .template-selector .form-control option:disabled {
6313
+ color: #999;
6314
+ cursor: not-allowed;
6315
+ }
6316
+
6317
+ .icon-btn {
6318
+ background: none;
6319
+ border: 1px solid #e0e0e0;
6320
+ border-radius: 4px;
6321
+ padding: 8px 12px;
6322
+ cursor: pointer;
6323
+ font-size: 16px;
6324
+ transition: all 0.2s;
6325
+ height: 40px;
6326
+ display: flex;
6327
+ align-items: center;
6328
+ justify-content: center;
6329
+ }
6330
+
6331
+ .icon-btn:hover {
6332
+ background-color: #f5f5f5;
6333
+ border-color: #d0d0d0;
6334
+ }
6335
+
6336
+ /* ==================== 原始提示词区域 ==================== */
6337
+
6338
+ .original-prompt-section {
6339
+ margin-bottom: 24px;
6340
+ padding: 20px;
6341
+ background-color: #fff;
6342
+ border-radius: 8px;
6343
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
6344
+ }
6345
+
6346
+ .original-prompt-section h4 {
6347
+ margin: 0 0 12px 0;
6348
+ font-size: 18px;
6349
+ font-weight: 600;
6350
+ color: #333;
6351
+ }
6352
+
6353
+ .original-prompt-section textarea {
6354
+ width: 100%;
6355
+ padding: 10px 14px;
6356
+ border: 1.5px solid #d1d5db;
6357
+ border-radius: 8px;
6358
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
6359
+ font-size: 14px;
6360
+ line-height: 1.6;
6361
+ resize: vertical;
6362
+ min-height: 120px;
6363
+ color: #333;
6364
+ background-color: #fff;
6365
+ transition: all 0.2s;
6366
+ }
6367
+
6368
+ .original-prompt-section textarea:hover {
6369
+ border-color: #9ca3af;
6370
+ }
6371
+
6372
+ .original-prompt-section textarea:focus {
6373
+ outline: none;
6374
+ border-color: #3b82f6;
6375
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
6376
+ }
6377
+
6378
+ .original-prompt-section textarea::placeholder {
6379
+ color: #999;
6380
+ }
6381
+
6382
+ /* ==================== 优化结果区域 ==================== */
6383
+
6384
+ .optimized-result-section {
6385
+ margin-bottom: 24px;
6386
+ padding: 20px;
6387
+ background-color: #fff;
6388
+ border-radius: 8px;
6389
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
6390
+ }
6391
+
6392
+ .result-header {
6393
+ display: flex;
6394
+ justify-content: space-between;
6395
+ align-items: center;
6396
+ margin-bottom: 16px;
6397
+ }
6398
+
6399
+ .result-header h4 {
6400
+ margin: 0;
6401
+ font-size: 18px;
6402
+ font-weight: 600;
6403
+ color: #333;
6404
+ }
6405
+
6406
+ .optimized-output {
6407
+ min-height: 300px;
6408
+ padding: 16px;
6409
+ border: 1px solid #e0e0e0;
6410
+ border-radius: 4px;
6411
+ background-color: #fafafa;
6412
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
6413
+ font-size: 14px;
6414
+ line-height: 1.6;
6415
+ white-space: pre-wrap;
6416
+ word-wrap: break-word;
6417
+ color: #333;
6418
+ }
6419
+
6420
+ .optimized-output .placeholder-text {
6421
+ color: #999;
6422
+ font-style: italic;
6423
+ margin: 0;
6424
+ text-align: center;
6425
+ padding: 40px 0;
6426
+ }
6427
+
6428
+ .optimized-output .error-message {
6429
+ padding: 20px;
6430
+ background-color: #fef2f2;
6431
+ border: 1px solid #fecaca;
6432
+ border-radius: 8px;
6433
+ color: #991b1b;
6434
+ }
6435
+
6436
+ .optimized-output .error-message h4 {
6437
+ margin: 0 0 12px 0;
6438
+ font-size: 16px;
6439
+ font-weight: 600;
6440
+ }
6441
+
6442
+ .optimized-output .error-message p {
6443
+ margin: 0;
6444
+ font-size: 14px;
6445
+ line-height: 1.6;
6446
+ }
6447
+
6448
+ /* ==================== 模板列表样式 ==================== */
6449
+
6450
+ .template-list-header {
6451
+ display: flex;
6452
+ gap: 12px;
6453
+ margin-bottom: 16px;
6454
+ }
6455
+
6456
+ .template-list-header .form-control {
6457
+ flex: 1;
6458
+ }
6459
+
6460
+ .template-list {
6461
+ max-height: 400px;
6462
+ overflow-y: auto;
6463
+ border: 1px solid #e5e7eb;
6464
+ border-radius: 6px;
6465
+ }
6466
+
6467
+ .template-item {
6468
+ padding: 12px 16px;
6469
+ border-bottom: 1px solid #e5e7eb;
6470
+ display: flex;
6471
+ justify-content: space-between;
6472
+ align-items: center;
6473
+ transition: background-color 0.2s;
6474
+ }
6475
+
6476
+ .template-item:last-child {
6477
+ border-bottom: none;
6478
+ }
6479
+
6480
+ .template-item:hover {
6481
+ background-color: #f9fafb;
6482
+ }
6483
+
6484
+ .template-item-info {
6485
+ flex: 1;
6486
+ }
6487
+
6488
+ .template-item-name {
6489
+ font-weight: 600;
6490
+ color: #111827;
6491
+ margin-bottom: 4px;
6492
+ }
6493
+
6494
+ .template-item-description {
6495
+ font-size: 12px;
6496
+ color: #6b7280;
6497
+ }
6498
+
6499
+ .template-item-actions {
6500
+ display: flex;
6501
+ gap: 8px;
6502
+ }
6503
+
6504
+ .template-item-actions .btn {
6505
+ padding: 4px 12px;
6506
+ font-size: 12px;
6507
+ }
6508
+
6509
+ .template-item-badge {
6510
+ display: inline-block;
6511
+ padding: 2px 8px;
6512
+ font-size: 10px;
6513
+ font-weight: 600;
6514
+ border-radius: 9999px;
6515
+ margin-left: 8px;
6516
+ }
6517
+
6518
+ .template-item-badge.built-in {
6519
+ background-color: #dbeafe;
6520
+ color: #1e40af;
6521
+ }
6522
+
6523
+ .template-item-badge.custom {
6524
+ background-color: #d1fae5;
6525
+ color: #065f46;
6526
+ }
6527
+
6528
+ .template-item-badge.optimize {
6529
+ background-color: #fef3c7;
6530
+ color: #92400e;
6531
+ }
6532
+
6533
+ .template-item-badge.iterate {
6534
+ background-color: #ede9fe;
6535
+ color: #5b21b6;
6536
+ }
6537
+
6538
+ .template-item-badge.simple {
6539
+ background-color: #f3f4f6;
6540
+ color: #374151;
6541
+ }
6542
+
6543
+ .template-item-badge.advanced {
6544
+ background-color: #fae8ff;
6545
+ color: #86198f;
6546
+ }
6547
+
6548
+ /* ==================== 模型列表样式 ==================== */
6549
+
6550
+ .model-list-header {
6551
+ margin-bottom: 16px;
6552
+ }
6553
+
6554
+ .model-list {
6555
+ max-height: 400px;
6556
+ overflow-y: auto;
6557
+ border: 1px solid #e5e7eb;
6558
+ border-radius: 6px;
6559
+ }
6560
+
6561
+ .model-item {
6562
+ padding: 12px 16px;
6563
+ border-bottom: 1px solid #e5e7eb;
6564
+ display: flex;
6565
+ justify-content: space-between;
6566
+ align-items: center;
6567
+ transition: background-color 0.2s;
6568
+ }
6569
+
6570
+ .model-item:last-child {
6571
+ border-bottom: none;
6572
+ }
6573
+
6574
+ .model-item:hover {
6575
+ background-color: #f9fafb;
6576
+ }
6577
+
6578
+ .model-item-info {
6579
+ flex: 1;
6580
+ }
6581
+
6582
+ .model-item-name {
6583
+ font-weight: 600;
6584
+ color: #111827;
6585
+ margin-bottom: 4px;
6586
+ }
6587
+
6588
+ .model-item-details {
6589
+ font-size: 12px;
6590
+ color: #6b7280;
6591
+ }
6592
+
6593
+ .model-item-status {
6594
+ display: inline-block;
6595
+ width: 8px;
6596
+ height: 8px;
6597
+ border-radius: 50%;
6598
+ margin-right: 8px;
6599
+ }
6600
+
6601
+ .model-item-status.enabled {
6602
+ background-color: #10b981;
6603
+ }
6604
+
6605
+ .model-item-status.disabled {
6606
+ background-color: #9ca3af;
6607
+ }
6608
+
6609
+ .model-item-actions {
6610
+ display: flex;
6611
+ gap: 8px;
6612
+ }
6613
+
6614
+ .model-item-actions .btn {
6615
+ padding: 4px 12px;
6616
+ font-size: 12px;
6617
+ }
6618
+
6619
+ /* ==================== 表单样式 ==================== */
6620
+
6621
+ .form-group {
6622
+ margin-bottom: 16px;
6623
+ }
6624
+
6625
+ .form-group label {
6626
+ display: block;
6627
+ margin-bottom: 8px;
6628
+ font-size: 14px;
6629
+ font-weight: 500;
6630
+ color: #374151;
6631
+ }
6632
+
6633
+ .form-group .required {
6634
+ color: #ef4444;
6635
+ }
6636
+
6637
+ .form-control {
6638
+ width: 100%;
6639
+ padding: 10px 14px;
6640
+ border: 1.5px solid #d1d5db;
6641
+ border-radius: 8px;
6642
+ font-size: 14px;
6643
+ transition: all 0.2s;
6644
+ }
6645
+
6646
+ .form-control:hover {
6647
+ border-color: #9ca3af;
6648
+ }
6649
+
6650
+ .form-control:focus {
6651
+ outline: none;
6652
+ border-color: #3b82f6;
6653
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
6654
+ }
6655
+
6656
+ /* 原生select元素样式优化 */
6657
+ select.form-control {
6658
+ appearance: none;
6659
+ -webkit-appearance: none;
6660
+ -moz-appearance: none;
6661
+ background-color: #fff;
6662
+ background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2716%27 height=%2716%27 viewBox=%270 0 16 16%27%3E%3Cpath fill=%27%23B3D9FF%27 d=%27M8 11L3 6h10z%27/%3E%3C/svg%3E");
6663
+ background-repeat: no-repeat;
6664
+ background-position: right 12px center;
6665
+ padding-right: 36px;
6666
+ cursor: pointer;
6667
+ position: relative;
6668
+ border-color: #B3D9FF;
6669
+ }
6670
+
6671
+ select.form-control:hover {
6672
+ border-color: #007AFF;
6673
+ }
6674
+
6675
+ /* Firefox兼容 */
6676
+ select.form-control::-ms-expand {
6677
+ display: none;
6678
+ }
6679
+
6680
+ /* select下拉选项样式 */
6681
+ select.form-control option {
6682
+ padding: 12px 14px;
6683
+ background-color: #fff;
6684
+ color: #333;
6685
+ min-height: 48px;
6686
+ line-height: 1.5;
6687
+ }
6688
+
6689
+ select.form-control option:hover {
6690
+ background-color: #f5f5f5;
6691
+ }
6692
+
6693
+ select.form-control option:checked {
6694
+ background-color: #007AFF;
6695
+ color: white;
6696
+ font-weight: 500;
6697
+ }
6698
+
6699
+ select.form-control option:disabled {
6700
+ color: #9ca3af;
6701
+ background-color: #f9fafb;
6702
+ }
6703
+
6704
+ .form-text {
6705
+ display: block;
6706
+ margin-top: 4px;
6707
+ font-size: 12px;
6708
+ color: #6b7280;
6709
+ }
6710
+
6711
+ .checkbox-field {
6712
+ display: flex;
6713
+ align-items: center;
6714
+ gap: 8px;
6715
+ cursor: pointer;
6716
+ }
6717
+
6718
+ .checkbox-field input[type="checkbox"] {
6719
+ width: 16px;
6720
+ height: 16px;
6721
+ cursor: pointer;
6722
+ }
6723
+
6724
+ /* 自定义模型输入样式 */
6725
+ .custom-model-input {
6726
+ margin-top: 8px;
6727
+ }
6728
+
6729
+ .custom-model-input input::placeholder {
6730
+ color: #9ca3af;
6731
+ font-style: italic;
6732
+ }
6733
+
6734
+ /* 表单信息框 */
6735
+ .form-info-box {
6736
+ background-color: #eff6ff;
6737
+ border: 1px solid #bfdbfe;
6738
+ border-radius: 8px;
6739
+ padding: 16px;
6740
+ margin-bottom: 20px;
6741
+ }
6742
+
6743
+ .form-info-box h4 {
6744
+ margin: 0 0 12px 0;
6745
+ font-size: 14px;
6746
+ font-weight: 600;
6747
+ color: #1e40af;
6748
+ }
6749
+
6750
+ .form-info-box p {
6751
+ margin: 0 0 8px 0;
6752
+ font-size: 13px;
6753
+ color: #1e3a8a;
6754
+ line-height: 1.5;
6755
+ }
6756
+
6757
+ .form-info-box ul {
6758
+ margin: 0 0 12px 0;
6759
+ padding-left: 20px;
6760
+ }
6761
+
6762
+ .form-info-box li {
6763
+ font-size: 13px;
6764
+ color: #1e3a8a;
6765
+ line-height: 1.6;
6766
+ margin-bottom: 4px;
6767
+ }
6768
+
6769
+ .form-info-box li strong {
6770
+ color: #1e40af;
6771
+ }
6772
+
6773
+ .form-info-box code {
6774
+ background-color: #dbeafe;
6775
+ padding: 2px 6px;
6776
+ border-radius: 4px;
6777
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
6778
+ font-size: 12px;
6779
+ color: #1e40af;
6780
+ }
6781
+
6782
+ .form-info-example {
6783
+ background-color: #dbeafe;
6784
+ padding: 8px 12px;
6785
+ border-radius: 4px;
6786
+ font-size: 12px;
6787
+ color: #1e40af;
6788
+ margin: 0;
6789
+ }
6790
+
6791
+ /* ==================== 自定义下拉菜单样式 ==================== */
6792
+
6793
+ .custom-select {
6794
+ position: relative;
6795
+ flex: 1;
6796
+ height: 36px;
6797
+ }
6798
+
6799
+ .custom-select-trigger {
6800
+ width: 100%;
6801
+ height: 100%;
6802
+ padding: 8px 36px 8px 12px;
6803
+ border: 1px solid #d9d9d9;
6804
+ border-radius: 4px;
6805
+ font-size: 14px;
6806
+ color: #333;
6807
+ background-color: #fff;
6808
+ cursor: pointer;
6809
+ display: flex;
6810
+ align-items: center;
6811
+ justify-content: space-between;
6812
+ transition: all 0.2s;
6813
+ }
6814
+
6815
+ .custom-select-trigger:hover {
6816
+ border-color: #1890ff;
6817
+ }
6818
+
6819
+ .custom-select-trigger.active {
6820
+ border-color: #1890ff;
6821
+ box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
6822
+ }
6823
+
6824
+ .custom-select-trigger.has-value {
6825
+ color: #333;
6826
+ }
6827
+
6828
+ .custom-select-trigger.placeholder {
6829
+ color: #999;
6830
+ }
6831
+
6832
+ .custom-select-arrow {
6833
+ position: absolute;
6834
+ right: 12px;
6835
+ top: 50%;
6836
+ transform: translateY(-50%);
6837
+ width: 12px;
6838
+ height: 12px;
6839
+ transition: transform 0.2s;
6840
+ }
6841
+
6842
+ .custom-select-trigger.active .custom-select-arrow {
6843
+ transform: translateY(-50%) rotate(180deg);
6844
+ }
6845
+
6846
+ .custom-select-options {
6847
+ position: absolute;
6848
+ top: calc(100% + 4px);
6849
+ left: 0;
6850
+ right: 0;
6851
+ max-height: 240px;
6852
+ overflow-y: auto;
6853
+ background-color: #fff;
6854
+ border: 1px solid #d9d9d9;
6855
+ border-radius: 4px;
6856
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
6857
+ z-index: 100;
6858
+ display: none;
6859
+ }
6860
+
6861
+ .custom-select-options.show {
6862
+ display: block;
6863
+ }
6864
+
6865
+ .custom-select-option {
6866
+ padding: 8px 12px;
6867
+ font-size: 14px;
6868
+ color: #333;
6869
+ cursor: pointer;
6870
+ display: flex;
6871
+ align-items: center;
6872
+ justify-content: space-between;
6873
+ transition: background-color 0.2s;
6874
+ }
6875
+
6876
+ .custom-select-option:hover {
6877
+ background-color: #f5f5f5;
6878
+ }
6879
+
6880
+ .custom-select-option.selected {
6881
+ background-color: #1890ff;
6882
+ color: white;
6883
+ }
6884
+
6885
+ .custom-select-option .check-icon {
6886
+ display: none;
6887
+ }
6888
+
6889
+ .custom-select-option.selected .check-icon {
6890
+ display: inline;
6891
+ }
6892
+
6893
+ .custom-select-option.disabled {
6894
+ color: #999;
6895
+ cursor: not-allowed;
6896
+ }
6897
+
6898
+ .custom-select-option.disabled:hover {
6899
+ background-color: transparent;
6900
+ }
6901
+
6902
+ /* 分隔线 */
6903
+ .custom-select-divider {
6904
+ height: 1px;
6905
+ background-color: #e0e0e0;
6906
+ margin: 4px 0;
6907
+ }
6908
+
6909
+ /* 配置操作按钮 */
6910
+ .custom-select-action {
6911
+ padding: 8px 12px;
6912
+ font-size: 14px;
6913
+ color: #333;
6914
+ cursor: pointer;
6915
+ display: flex;
6916
+ align-items: center;
6917
+ gap: 6px;
6918
+ transition: background-color 0.2s;
6919
+ border-top: 1px solid #e0e0e0;
6920
+ }
6921
+
6922
+ .custom-select-action:hover {
6923
+ background-color: #f5f5f5;
6924
+ }
6925
+
6926
+ .custom-select-action:active {
6927
+ background-color: #e8e8e8;
6928
+ }
6929
+
6930
+ /* 滚动条样式 */
6931
+ .custom-select-options::-webkit-scrollbar {
6932
+ width: 6px;
6933
+ }
6934
+
6935
+ .custom-select-options::-webkit-scrollbar-track {
6936
+ background: #f5f5f5;
6937
+ }
6938
+
6939
+ .custom-select-options::-webkit-scrollbar-thumb {
6940
+ background: #d9d9d9;
6941
+ border-radius: 3px;
6942
+ }
6943
+
6944
+ .custom-select-options::-webkit-scrollbar-thumb:hover {
6945
+ background: #bfbfbf;
6946
+ }
6947
+
6948
+ /* ==================== 按钮样式 ==================== */
6949
+
6950
+ .btn {
6951
+ padding: 8px 16px;
6952
+ border: 1px solid transparent;
6953
+ border-radius: 8px;
6954
+ font-size: 14px;
6955
+ font-weight: 500;
6956
+ cursor: pointer;
6957
+ transition: all 0.2s;
6958
+ display: inline-flex;
6959
+ align-items: center;
6960
+ justify-content: center;
6961
+ gap: 6px;
6962
+ }
6963
+
6964
+ .btn-icon {
6965
+ padding: 6px !important;
6966
+ width: 32px !important;
6967
+ height: 32px !important;
6968
+ min-width: 32px !important;
6969
+ min-height: 32px !important;
6970
+ }
6971
+
6972
+ .btn:disabled {
6973
+ opacity: 0.5;
6974
+ cursor: not-allowed;
6975
+ }
6976
+
6977
+ .btn-primary {
6978
+ background-color: #1890ff;
6979
+ color: white;
6980
+ height: 36px;
6981
+ padding: 8px 20px;
6982
+ font-size: 14px;
6983
+ font-weight: 500;
6984
+ }
6985
+
6986
+ .btn-primary:hover:not(:disabled) {
6987
+ background-color: #0d7ae5;
6988
+ }
6989
+
6990
+ .btn-primary:active:not(:disabled) {
6991
+ background-color: #0968d3;
6992
+ transform: translateY(1px);
6993
+ }
6994
+
6995
+ .btn-outline {
6996
+ background-color: white;
6997
+ border-color: #e0e0e0;
6998
+ color: #333;
6999
+ }
7000
+
7001
+ .btn-outline:hover:not(:disabled) {
7002
+ background-color: #f5f5f5;
7003
+ border-color: #d0d0d0;
7004
+ }
7005
+
7006
+ .btn-light {
7007
+ background-color: #f5f5f5;
7008
+ color: #333;
7009
+ }
7010
+
7011
+ .btn-light:hover:not(:disabled) {
7012
+ background-color: #e8e8e8;
7013
+ }
7014
+
7015
+ .btn-sm {
7016
+ padding: 4px 12px;
7017
+ font-size: 12px;
7018
+ border-radius: 4px;
7019
+ height: 36px;
7020
+ }
7021
+
7022
+ /* 开始优化按钮 */
7023
+ #startOptimizeBtn {
7024
+ min-width: 120px;
7025
+ height: 36px;
7026
+ }
7027
+
7028
+ /* 继续优化按钮 */
7029
+ #iterateBtn {
7030
+ background-color: #e6f7ff;
7031
+ color: #1890ff;
7032
+ border: 1px solid #91d5ff;
7033
+ }
7034
+
7035
+ #iterateBtn:hover:not(:disabled) {
7036
+ background-color: #bae7ff;
7037
+ border-color: #69c0ff;
7038
+ }
7039
+
7040
+ #iterateBtn:active:not(:disabled) {
7041
+ background-color: #91d5ff;
7042
+ transform: translateY(1px);
7043
+ }
7044
+
7045
+ /* ==================== 响应式设计 ==================== */
7046
+
7047
+ @media (max-width: 768px) {
7048
+ .optimization-drawer {
7049
+ width: 100%;
7050
+ }
7051
+
7052
+ .drawer-content {
7053
+ border-radius: 0;
7054
+ }
7055
+ }
7056
+
7057
+ .template-help-text {
7058
+ margin-top: 10px;
7059
+ padding: 10px;
7060
+ background-color: #f8f9fa;
7061
+ border-radius: 6px;
7062
+ font-size: 12px;
7063
+ color: #666;
7064
+ }
7065
+
7066
+ .template-help-text p {
7067
+ margin-bottom: 5px;
7068
+ font-weight: 500;
7069
+ }
7070
+
7071
+ .template-help-text ul {
7072
+ padding-left: 20px;
7073
+ margin: 0;
7074
+ }
7075
+
7076
+ .template-help-text code {
7077
+ background-color: #e9ecef;
7078
+ padding: 2px 4px;
7079
+ border-radius: 3px;
7080
+ color: #d63384;
7081
+ }
7082
+
7083
+ /* 高级模板样式 */
7084
+ .advanced-message-list {
7085
+ display: flex;
7086
+ flex-direction: column;
7087
+ gap: 15px;
7088
+ margin-top: 10px;
7089
+ max-height: 400px;
7090
+ overflow-y: auto;
7091
+ padding-right: 5px;
7092
+ }
7093
+
7094
+ .advanced-message-item {
7095
+ padding: 12px;
7096
+ background-color: #f8f9fa;
7097
+ border: 1px solid #dee2e6;
7098
+ border-radius: 8px;
7099
+ }
7100
+
7101
+ .advanced-message-item .message-header {
7102
+ display: flex;
7103
+ justify-content: space-between;
7104
+ align-items: center;
7105
+ margin-bottom: 10px;
7106
+ }
7107
+
7108
+ .advanced-message-item .message-role {
7109
+ width: 120px;
7110
+ height: 32px !important;
7111
+ padding: 2px 8px !important;
7112
+ font-size: 13px !important;
7113
+ }
7114
+
7115
+ .btn-remove-message {
7116
+ width: 24px;
7117
+ height: 24px;
7118
+ display: flex;
7119
+ align-items: center;
7120
+ justify-content: center;
7121
+ background: none;
7122
+ border: none;
7123
+ color: #999;
7124
+ font-size: 20px;
7125
+ cursor: pointer;
7126
+ transition: color 0.2s;
7127
+ }
7128
+
7129
+ .btn-remove-message:hover {
7130
+ color: #dc3545;
7131
+ }
7132
+
7133
+ .advanced-message-item .message-content {
7134
+ font-family: inherit;
7135
+ font-size: 14px;
7136
+ }
7137
+
7138
+ .form-row {
7139
+ display: flex;
7140
+ gap: 15px;
7141
+ margin-bottom: 15px;
7142
+ }
7143
+
7144
+ .col-6 {
7145
+ flex: 1;
7146
+ }
7147
+
7148
+ .hidden {
7149
+ display: none !important;
7150
+ }
7151
+ pre code.hljs {
7152
+ display: block;
7153
+ overflow-x: auto;
7154
+ padding: 1em
7155
+ }
7156
+ code.hljs {
7157
+ padding: 3px 5px
7158
+ }
7159
+ /*!
7160
+ Theme: GitHub
7161
+ Description: Light theme as seen on github.com
7162
+ Author: github.com
7163
+ Maintainer: @Hirse
7164
+ Updated: 2021-05-15
7165
+
7166
+ Outdated base version: https://github.com/primer/github-syntax-light
7167
+ Current colors taken from GitHub's CSS
7168
+ */
7169
+ .hljs {
7170
+ color: #24292e;
7171
+ background: #ffffff
7172
+ }
7173
+ .hljs-doctag,
7174
+ .hljs-keyword,
7175
+ .hljs-meta .hljs-keyword,
7176
+ .hljs-template-tag,
7177
+ .hljs-template-variable,
7178
+ .hljs-type,
7179
+ .hljs-variable.language_ {
7180
+ /* prettylights-syntax-keyword */
7181
+ color: #d73a49
7182
+ }
7183
+ .hljs-title,
7184
+ .hljs-title.class_,
7185
+ .hljs-title.class_.inherited__,
7186
+ .hljs-title.function_ {
7187
+ /* prettylights-syntax-entity */
7188
+ color: #6f42c1
7189
+ }
7190
+ .hljs-attr,
7191
+ .hljs-attribute,
7192
+ .hljs-literal,
7193
+ .hljs-meta,
7194
+ .hljs-number,
7195
+ .hljs-operator,
7196
+ .hljs-variable,
7197
+ .hljs-selector-attr,
7198
+ .hljs-selector-class,
7199
+ .hljs-selector-id {
7200
+ /* prettylights-syntax-constant */
7201
+ color: #005cc5
7202
+ }
7203
+ .hljs-regexp,
7204
+ .hljs-string,
7205
+ .hljs-meta .hljs-string {
7206
+ /* prettylights-syntax-string */
7207
+ color: #032f62
7208
+ }
7209
+ .hljs-built_in,
7210
+ .hljs-symbol {
7211
+ /* prettylights-syntax-variable */
7212
+ color: #e36209
7213
+ }
7214
+ .hljs-comment,
7215
+ .hljs-code,
7216
+ .hljs-formula {
7217
+ /* prettylights-syntax-comment */
7218
+ color: #6a737d
7219
+ }
7220
+ .hljs-name,
7221
+ .hljs-quote,
7222
+ .hljs-selector-tag,
7223
+ .hljs-selector-pseudo {
7224
+ /* prettylights-syntax-entity-tag */
7225
+ color: #22863a
7226
+ }
7227
+ .hljs-subst {
7228
+ /* prettylights-syntax-storage-modifier-import */
7229
+ color: #24292e
7230
+ }
7231
+ .hljs-section {
7232
+ /* prettylights-syntax-markup-heading */
7233
+ color: #005cc5;
7234
+ font-weight: bold
7235
+ }
7236
+ .hljs-bullet {
7237
+ /* prettylights-syntax-markup-list */
7238
+ color: #735c0f
7239
+ }
7240
+ .hljs-emphasis {
7241
+ /* prettylights-syntax-markup-italic */
7242
+ color: #24292e;
7243
+ font-style: italic
7244
+ }
7245
+ .hljs-strong {
7246
+ /* prettylights-syntax-markup-bold */
7247
+ color: #24292e;
7248
+ font-weight: bold
7249
+ }
7250
+ .hljs-addition {
7251
+ /* prettylights-syntax-markup-inserted */
7252
+ color: #22863a;
7253
+ background-color: #f0fff4
7254
+ }
7255
+ .hljs-deletion {
7256
+ /* prettylights-syntax-markup-deleted */
7257
+ color: #b31d28;
7258
+ background-color: #ffeef0
7259
+ }
7260
+ .hljs-char.escape_,
7261
+ .hljs-link,
7262
+ .hljs-params,
7263
+ .hljs-property,
7264
+ .hljs-punctuation,
7265
+ .hljs-tag {
7266
+ /* purposely ignored */
7267
+
7268
+ }