@symerian/symi 3.4.30 → 3.4.32

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 (422) hide show
  1. package/dist/{agent-O3PihJOY.js → agent-BaSGoKPq.js} +17 -17
  2. package/dist/{agent-tdS4G7e8.js → agent-C8IIjDyn.js} +21 -21
  3. package/dist/{agent-scope-Ck_TLGsV.js → agent-scope-B6p555mP.js} +1 -1
  4. package/dist/{agent-scope-DJI5ijOw.js → agent-scope-DIjW66iO.js} +3 -3
  5. package/dist/{agents-C2MpIr16.js → agents-D6Ygz9ED.js} +12 -12
  6. package/dist/{agents.config-PPeqGzAc.js → agents.config-D1nFwU81.js} +1 -1
  7. package/dist/{agents.config-LRW5SZoE.js → agents.config-D7cHU-OU.js} +1 -1
  8. package/dist/{audit-TmPjr_wD.js → audit-BI8Rbs5q.js} +19 -19
  9. package/dist/{audit-yf3H4Y1h.js → audit-nqP-JeOr.js} +17 -17
  10. package/dist/{auth-BSmNj-Lv.js → auth-BbwD4lRX.js} +1 -1
  11. package/dist/{auth-choice-Bw2Kd6RM.js → auth-choice-BBrEzoy2.js} +8 -8
  12. package/dist/{auth-choice-CyBcsQ9T.js → auth-choice-Bx4Duu6u.js} +8 -8
  13. package/dist/{auth-profiles-C1lvfaCM.js → auth-profiles-BFSVvFKy.js} +6 -6
  14. package/dist/{auth-profiles-BG_wMJz6.js → auth-profiles-Bs5D0GUv.js} +4 -4
  15. package/dist/{auth-token-C0-TDuag.js → auth-token-Brb1Askz.js} +2 -2
  16. package/dist/{auth-token-BwQ5Nv4O.js → auth-token-SebYuqfR.js} +2 -2
  17. package/dist/{banner-D7__HlM-.js → banner-l9GjW5Rm.js} +2 -2
  18. package/dist/{bindings-D5s2VRjL.js → bindings-9LSA3Jr1.js} +1 -1
  19. package/dist/{bonjour-discovery-YoubCASb.js → bonjour-discovery-BTpm6P8H.js} +1 -1
  20. package/dist/{bonjour-discovery-CPzedvdf.js → bonjour-discovery-CU1mz7AC.js} +2 -2
  21. package/dist/{browser-cli-R6JagRCf.js → browser-cli-BAxOL41p.js} +22 -22
  22. package/dist/{browser-cli-B_6WWHm_.js → browser-cli-Bk8DxxeA.js} +13 -13
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/boot-md/handler.js +4 -4
  25. package/dist/bundled/session-memory/handler.js +4 -4
  26. package/dist/{call-IfleM0ap.js → call-5IE9ycvm.js} +3 -4
  27. package/dist/{call-sikajorp.js → call-BPJn2_th.js} +5 -6
  28. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  29. package/dist/{catalog-DgsRZ5Yu.js → catalog-CJzUbDcX.js} +2 -2
  30. package/dist/{catalog-Bc0hKvgn.js → catalog-CSgSg5Gp.js} +2 -2
  31. package/dist/{channel-options-DrHwfPTb.js → channel-options-COanIUoQ.js} +5 -5
  32. package/dist/{channel-options-B5974x-7.js → channel-options-DGUqfnbP.js} +2 -2
  33. package/dist/{channel-selection-Cc4Pvn6b.js → channel-selection-BvIcXQLj.js} +2 -2
  34. package/dist/{channels-cli-D50PQAPc.js → channels-cli-B1zmnm5a.js} +83 -83
  35. package/dist/{channels-cli-C6Nv9mzy.js → channels-cli-CZ3M3yE1.js} +62 -62
  36. package/dist/{channels-status-issues-VZcSU4qT.js → channels-status-issues-DC8vgOMo.js} +1 -1
  37. package/dist/{chrome-DJCkCRLf.js → chrome-B0wRtBRB.js} +3 -3
  38. package/dist/{chrome-DT1fIVG1.js → chrome-B4P7ycw5.js} +7 -7
  39. package/dist/{chrome-CPSDqbK6.js → chrome-CQn8fDIy.js} +7 -7
  40. package/dist/{chrome-BM8HZu2p.js → chrome-VbDUdW0_.js} +4 -4
  41. package/dist/{chunk-D2_aCcvs.js → chunk-DQGU0F8t.js} +1 -1
  42. package/dist/{clack-prompter-BwhCW0Jc.js → clack-prompter-CWQQn_CK.js} +5 -5
  43. package/dist/cli-C7I5uEFC.js +128 -0
  44. package/dist/{cli-DZoms4qg.js → cli-CC5GrdTI.js} +52 -52
  45. package/dist/{client-Bcz3rG5V.js → client-Dp8LUTmF.js} +3 -5
  46. package/dist/{client-BzacpVvW.js → client-qjXXRKCO.js} +5 -7
  47. package/dist/{clipboard-Dz-Ob0yt.js → clipboard-McRwF3r0.js} +1 -1
  48. package/dist/{command-format-6B5tP-i9.js → command-format-Xm6vX3qJ.js} +1 -1
  49. package/dist/{command-registry--D98SJ6k.js → command-registry-D8fj6th4.js} +12 -12
  50. package/dist/{commands-DgyiLrAe.js → commands-B3UrgxIz.js} +2 -2
  51. package/dist/{commands-BN08daX-.js → commands-CHkx0oTl.js} +1 -1
  52. package/dist/{commands-registry-Bbs_ugoi.js → commands-registry-BNCcZy2y.js} +5 -5
  53. package/dist/{commands-registry-QB7xD3bc.js → commands-registry-Bccp0eH5.js} +3 -3
  54. package/dist/{completion-cli-CHYvpIPw.js → completion-cli-BxspmuYm.js} +3 -3
  55. package/dist/{completion-cli-QxWULepB.js → completion-cli-C-85b5b8.js} +4 -4
  56. package/dist/{config-vtCLkS2w.js → config-DqMsGcSQ.js} +7 -21
  57. package/dist/{config-cli-CcZo2229.js → config-cli-BqzjDmIH.js} +13 -13
  58. package/dist/{config-cli-DstpcB33.js → config-cli-DSDGwckX.js} +12 -12
  59. package/dist/{config-guard-CC-lFWDU.js → config-guard-CJcSKMuP.js} +21 -21
  60. package/dist/{config-guard-CCJrDmON.js → config-guard-Cu-dwAgi.js} +4 -4
  61. package/dist/{config-BTSBEAnk.js → config-igdtSRrZ.js} +10 -24
  62. package/dist/{config-validation-DSnQNdDO.js → config-validation-Bp2wJ610.js} +1 -1
  63. package/dist/{config-validation-YCrMlM9Z.js → config-validation-Bs1Gp2oG.js} +2 -2
  64. package/dist/{configure-B-UvSZZ7.js → configure-BazJdwKU.js} +14 -14
  65. package/dist/{configure-C4Qjzxdq.js → configure-Dl1f1Den.js} +25 -25
  66. package/dist/{consolidate-CPVaVTv0.js → consolidate-7Usm-b2g.js} +4 -4
  67. package/dist/{control-service-CwRG4M_O.js → control-service-DO8FjrS6.js} +4 -4
  68. package/dist/{control-service--TrXUUt_.js → control-service-Fn3d9AlH.js} +5 -5
  69. package/dist/{control-ui-assets-DI1jLkM6.js → control-ui-assets-DUhvOLUL.js} +2 -2
  70. package/dist/{cron-cli-DUETe3Of.js → cron-cli-DXgI5Lid.js} +10 -10
  71. package/dist/{cron-cli-BfUM5_Kw.js → cron-cli-DZyH2BfZ.js} +19 -19
  72. package/dist/{daemon-cli-DRDkDw_M.js → daemon-cli-C6FSROt1.js} +18 -18
  73. package/dist/{daemon-cli-Dy5eY4M7.js → daemon-cli-DmMYx5Uf.js} +10 -10
  74. package/dist/daemon-cli.js +0 -3
  75. package/dist/{daemon-runtime-ChztAKDA.js → daemon-runtime-2Y9RfgcP.js} +2 -2
  76. package/dist/{daemon-runtime-CqMnoGym.js → daemon-runtime-BpfA4d6Q.js} +2 -2
  77. package/dist/{deliver-59sRVaYQ.js → deliver-BkCYBlzi.js} +4 -4
  78. package/dist/{deliver-Mqq3tgqB.js → deliver-DvW5xHHr.js} +4 -4
  79. package/dist/{deliver-fvcQPsBc.js → deliver-RwovDEDy.js} +8 -8
  80. package/dist/{deliver-BHmK4isn.js → deliver-izdrXPr4.js} +5 -5
  81. package/dist/{delivery-queue-Du1ukE9B.js → delivery-queue-DDs84baU.js} +1 -1
  82. package/dist/{delivery-queue-Bqja5xKq.js → delivery-queue-nheCYaMd.js} +1 -1
  83. package/dist/{deps-CeHgkkO6.js → deps-bCHNuszw.js} +1 -1
  84. package/dist/{devices-cli-DV8wT4cj.js → devices-cli-D6xXc9Ym.js} +17 -17
  85. package/dist/{devices-cli-BCZ2HHjT.js → devices-cli-IMv-0zor.js} +9 -9
  86. package/dist/{diagnostic-Db9MI5bh.js → diagnostic-CwF3MnBL.js} +1 -1
  87. package/dist/{diagnostics-B9e2Kvx8.js → diagnostics-DxdqTfpW.js} +1 -1
  88. package/dist/{directory-cli-BVGd0l0T.js → directory-cli-3wlYB9In.js} +7 -7
  89. package/dist/{directory-cli-B6Ja7314.js → directory-cli-ClbYhd6z.js} +17 -17
  90. package/dist/{dm-policy-shared-Bjdk2L7B.js → dm-policy-shared-5HLej1br.js} +2 -2
  91. package/dist/{dm-policy-shared-BBTioONS.js → dm-policy-shared-CSF4Tw_F.js} +1 -1
  92. package/dist/{dns-cli-MEjZBWpL.js → dns-cli-CY2voLuR.js} +14 -14
  93. package/dist/{dns-cli-DH-ksmiI.js → dns-cli-CoVIqRWx.js} +8 -8
  94. package/dist/{dock-CSF4Y7tm.js → dock-CnGWTXL4.js} +2 -2
  95. package/dist/{docs-cli-BuX8FDdh.js → docs-cli-CFklWCND.js} +5 -5
  96. package/dist/{docs-cli-Cc3Rhfkx.js → docs-cli-DjQ3SvBq.js} +8 -8
  97. package/dist/{doctor-completion-rBc-f29C.js → doctor-completion-BwHbIZjF.js} +2 -2
  98. package/dist/{doctor-completion-C4Sf8CFV.js → doctor-completion-CX7LjkOD.js} +2 -2
  99. package/dist/{doctor-config-flow-CrnteetS.js → doctor-config-flow-CYDx1U0Z.js} +7 -7
  100. package/dist/{doctor-config-flow-BhmF6EAq.js → doctor-config-flow-wvoEFNeZ.js} +8 -8
  101. package/dist/entry.js +4 -7
  102. package/dist/{env-DoZWjLUy.js → env-B97Ms861.js} +1 -1
  103. package/dist/{exec-BcMHopF9.js → exec-DKyLtSjm.js} +2 -2
  104. package/dist/{exec-approvals-BndOYKTM.js → exec-approvals-B8n8es8o.js} +1 -1
  105. package/dist/{exec-approvals-BZBjOrJL.js → exec-approvals-CZOc8M5w.js} +1 -1
  106. package/dist/{exec-approvals-cli-Bqh3x_d1.js → exec-approvals-cli-B_P-1zVp.js} +24 -24
  107. package/dist/{exec-approvals-cli-CyXTXgft.js → exec-approvals-cli-Dy1jvh2M.js} +16 -16
  108. package/dist/extensionAPI.js +4 -4
  109. package/dist/{fetch-guard-BuQQKfW1.js → fetch-guard-DG6T0ZdL.js} +1 -1
  110. package/dist/{frontmatter-BH3ExkUY.js → frontmatter-B4levtVg.js} +2 -2
  111. package/dist/{gateway-cli-BrcMZGyF.js → gateway-cli-CTcK1Az2.js} +113 -114
  112. package/dist/{gateway-cli-fT43bqlv.js → gateway-cli-CW-Z71cE.js} +88 -89
  113. package/dist/{gateway-rpc-BEqCo2JK.js → gateway-rpc-C1xjWlxu.js} +1 -1
  114. package/dist/{gateway-rpc-cpgRv0Yq.js → gateway-rpc-DD_aXogj.js} +3 -3
  115. package/dist/{github-copilot-token-DIIEouRg.js → github-copilot-token-BTNK6Tcd.js} +1 -1
  116. package/dist/{github-copilot-token-CrM1aEWo.js → github-copilot-token-a6a53zx_.js} +1 -1
  117. package/dist/{glass-ui-ws-dERcmtve.js → glass-ui-ws-BNJkhJrL.js} +96 -96
  118. package/dist/{glass-ui-ws-BfMKuf9v.js → glass-ui-ws-BZvH4MBO.js} +68 -68
  119. package/dist/{gmail-setup-utils-Cz9Tb30q.js → gmail-setup-utils-B1BYpISg.js} +2 -2
  120. package/dist/{gmail-setup-utils-5bVmaBiu.js → gmail-setup-utils-fA1VaWLv.js} +3 -3
  121. package/dist/{health-Bpjd5_Oq.js → health-D8cKia4i.js} +10 -10
  122. package/dist/{health-DDxrkioj.js → health-DdzNc1yA.js} +5 -5
  123. package/dist/{health-format-BQcmGV4C.js → health-format-39e76m9p.js} +1 -1
  124. package/dist/{help-format-Bm9CoBSa.js → help-format-BI_G2p1e.js} +1 -1
  125. package/dist/{hooks-cli-Bkp-j7h6.js → hooks-cli-DkP3Y4ou.js} +76 -76
  126. package/dist/{hooks-cli-Btgk__9z.js → hooks-cli-qO421UdO.js} +59 -59
  127. package/dist/{hooks-status-BjjfBQnp.js → hooks-status-COU9Cw9_.js} +2 -2
  128. package/dist/{hooks-status-BaV4_YaJ.js → hooks-status-uaFS2SUa.js} +3 -3
  129. package/dist/{image-ops-CiGlXf65.js → image-ops-C-gIIp7Q.js} +1 -1
  130. package/dist/index.js +81 -81
  131. package/dist/{inspect-B_hklr0u.js → inspect-BDzd6yBs.js} +1 -1
  132. package/dist/{installs-DjzewzNC.js → installs-DhSLZRT7.js} +2 -2
  133. package/dist/{installs-B7y-N4mr.js → installs-cPraL4Dg.js} +2 -2
  134. package/dist/{lifecycle-core-CHB-QdED.js → lifecycle-core-BEmljRfh.js} +7 -7
  135. package/dist/{lifecycle-core-B0tG8ERp.js → lifecycle-core-uN2bsrZs.js} +3 -3
  136. package/dist/{links-Bmkpld9F.js → links-CSaUKNKm.js} +1 -1
  137. package/dist/{links-D4w-tJYZ.js → links-Db3Rw0Tg.js} +1 -1
  138. package/dist/llm-slug-generator.js +4 -4
  139. package/dist/{local-roots-DSeNuIW-.js → local-roots-Bk3321gv.js} +2 -2
  140. package/dist/{local-roots-lknhM9c3.js → local-roots-BnDnugq3.js} +3 -3
  141. package/dist/{logging-miJdTAeb.js → logging-B96FQvnn.js} +2 -2
  142. package/dist/{logging-DrqPd0Fg.js → logging-BeA4q4J_.js} +1 -1
  143. package/dist/{logs-cli-CUhZrDw7.js → logs-cli-BB0Mq8D1.js} +11 -11
  144. package/dist/{logs-cli-CGcdfvBo.js → logs-cli-Dbmzz8m_.js} +18 -18
  145. package/dist/{manager-BeNnzSJv.js → manager-BD_cpL9b.js} +1 -1
  146. package/dist/{manager-Di9qtuZF.js → manager-BQaZlWzK.js} +6 -6
  147. package/dist/{manager-uBAL1G42.js → manager-D0NIHMuQ.js} +1 -1
  148. package/dist/{manager-DqMx0qDw.js → manager-DOiW-Koo.js} +9 -9
  149. package/dist/{manifest-registry-0FO1WTmC.js → manifest-registry-DJcKcUQ9.js} +1 -1
  150. package/dist/{manifest-registry-DYQQ9Cci.js → manifest-registry-D_LsBSyt.js} +1 -1
  151. package/dist/{markdown-tables-Ca1j7TYS.js → markdown-tables-GTLvbzuR.js} +1 -1
  152. package/dist/{memory-BDeydRz3.js → memory-Cl4I_45k.js} +6 -6
  153. package/dist/{memory-cli-D4hZiGr5.js → memory-cli-CszP57Ee.js} +8 -8
  154. package/dist/{memory-cli-BXclq7qt.js → memory-cli-DkD_OD70.js} +13 -13
  155. package/dist/{memory-BXoRMmVn.js → memory-kIYeV9aO.js} +7 -7
  156. package/dist/{message-channel-BqrA0uMO.js → message-channel-C_V8IAYx.js} +1 -1
  157. package/dist/{model-DibfNW71.js → model-BRcKPW49.js} +1 -1
  158. package/dist/{model-Czbmn47-.js → model-DgN15006.js} +1 -1
  159. package/dist/{model-catalog-DPnCNs5N.js → model-catalog-C2rNhRI4.js} +4 -4
  160. package/dist/{model-catalog-Ds0dg_ob.js → model-catalog-CaGfL-2g.js} +4 -4
  161. package/dist/{model-picker-DuPommMc.js → model-picker-4NUXHy8M.js} +3 -3
  162. package/dist/{model-picker-BbaEgNir.js → model-picker-CV56GE8A.js} +3 -3
  163. package/dist/{models-B0wNKA18.js → models-BYi0Fo1a.js} +21 -21
  164. package/dist/{models-cli-CZY5Me88.js → models-cli-Bn9M1TgO.js} +83 -83
  165. package/dist/{models-cli-CL5K06Wu.js → models-cli-EdjvkvFO.js} +59 -59
  166. package/dist/{models-config-Box19p27.js → models-config-Unnduxgs.js} +3 -3
  167. package/dist/{models-config-CPlvO1b0.js → models-config-yKxNCn4V.js} +3 -3
  168. package/dist/{node-cli-BFBfD3vK.js → node-cli-39H0MZ8q.js} +36 -36
  169. package/dist/{node-cli-CWWMajKF.js → node-cli-C8FYMIjN.js} +21 -21
  170. package/dist/{node-service-CkP4-uRI.js → node-service-tPO_yUk7.js} +1 -1
  171. package/dist/{nodes-cli-BY4Ppctn.js → nodes-cli-C-03nIJ0.js} +22 -22
  172. package/dist/{nodes-cli-YmE7S-JB.js → nodes-cli-CqxQexTU.js} +14 -14
  173. package/dist/{nodes-screen-BfQScwqX.js → nodes-screen-Bkq2kswx.js} +2 -2
  174. package/dist/{nodes-screen-BMUoHTPZ.js → nodes-screen-JELuBMBi.js} +1 -1
  175. package/dist/{note-C4Pc_hIl.js → note-CHrtEumO.js} +2 -2
  176. package/dist/{npm-registry-spec-C8W7KCAB.js → npm-registry-spec-BXw_6vF6.js} +2 -2
  177. package/dist/{npm-registry-spec-s-9OX2Kw.js → npm-registry-spec-NLo2PCol.js} +1 -1
  178. package/dist/{onboard-DjlI4mIw.js → onboard-C8IQnigm.js} +19 -19
  179. package/dist/{onboard-HqUZVKyD.js → onboard-CAIujkV7.js} +13 -13
  180. package/dist/{onboard-channels-BbF5-N3g.js → onboard-channels-B2l6OoMg.js} +7 -7
  181. package/dist/{onboard-channels-C5EUFcLq.js → onboard-channels-D_uUQbem.js} +9 -9
  182. package/dist/{onboard-custom-C-6Cooq5.js → onboard-custom-B2fJvyxt.js} +3 -3
  183. package/dist/{onboard-custom-63SI3jrk.js → onboard-custom-DcZ2SEUv.js} +3 -3
  184. package/dist/{onboard-helpers-Cb3WFLl9.js → onboard-helpers-Bm-oyLWy.js} +5 -5
  185. package/dist/{onboard-helpers-Bpa6_3vl.js → onboard-helpers-CHfdRdZR.js} +9 -9
  186. package/dist/{onboard-hooks-ggR6fsQs.js → onboard-hooks-DBYkemjF.js} +8 -8
  187. package/dist/{onboard-hooks-DXXg3YH9.js → onboard-hooks-DgRzMz0E.js} +5 -5
  188. package/dist/{onboard-remote-Cnxe89N8.js → onboard-remote-ecyetiyL.js} +3 -3
  189. package/dist/{onboard-remote-CqtCrqtm.js → onboard-remote-z8XLK4M0.js} +3 -3
  190. package/dist/{onboard-skills-D5Ww8pwO.js → onboard-skills-BLvL0KPR.js} +4 -4
  191. package/dist/{onboard-skills-CS3l5fhH.js → onboard-skills-C53RGq_5.js} +5 -5
  192. package/dist/{onboarding-BPmsmDud.js → onboarding-4v9LJueP.js} +18 -18
  193. package/dist/{onboarding-Be_HJIFA.js → onboarding-BIq5BxG0.js} +16 -16
  194. package/dist/{onboarding.finalize-QwO5yuPm.js → onboarding.finalize-Bkcwe5RS.js} +51 -51
  195. package/dist/{onboarding.finalize-dsCUTKCQ.js → onboarding.finalize-CXAQzVXM.js} +32 -32
  196. package/dist/{onboarding.gateway-config-BZDShYzP.js → onboarding.gateway-config-3JMN1xRf.js} +22 -22
  197. package/dist/{onboarding.gateway-config-Ctd1_QW4.js → onboarding.gateway-config-Ft3f6Jba.js} +11 -11
  198. package/dist/{openai-model-default-Dxlm7Pvs.js → openai-model-default-BVPmAuXK.js} +3 -3
  199. package/dist/{openai-model-default-DT9-42Xb.js → openai-model-default-CDDFpxUr.js} +3 -3
  200. package/dist/{outbound-send-deps-DPsU_Xdy.js → outbound-send-deps-Dmc3B-LK.js} +1 -1
  201. package/dist/{pairing-cli-PtlNv7Gr.js → pairing-cli-B_icqS8Y.js} +9 -9
  202. package/dist/{pairing-cli-C1TeY-2m.js → pairing-cli-CJGA4j6G.js} +15 -15
  203. package/dist/{pairing-store-5oyzSW2X.js → pairing-store-BGf29nPx.js} +4 -4
  204. package/dist/{pairing-store-B9MEud_Y.js → pairing-store-CtBnCGHZ.js} +2 -2
  205. package/dist/{pairing-token-Cup-49D-.js → pairing-token-Bnr7QjVF.js} +1 -1
  206. package/dist/{pairing-token-BaZLnDjo.js → pairing-token-CURbSHdi.js} +1 -1
  207. package/dist/{path-env-C8hRAfiL.js → path-env-DuQralyy.js} +1 -1
  208. package/dist/{paths-By0XjHBk.js → paths-BSzKwaxE.js} +1 -4
  209. package/dist/{paths-BldkKgCk.js → paths-CJcw9nbZ.js} +1 -1
  210. package/dist/{paths-gcw23t43.js → paths-CNexk5_o.js} +1 -1
  211. package/dist/{paths-7zaGPdLp.js → paths-CsQkeUQ3.js} +1 -1
  212. package/dist/{paths-DeDKrl27.js → paths-Dc6A9_vI.js} +1 -1
  213. package/dist/{pi-auth-json-BOXWkXms.js → pi-auth-json-CUZ7IgY7.js} +1 -1
  214. package/dist/{pi-auth-json-DVUJqaKg.js → pi-auth-json-SHGGQzOL.js} +1 -1
  215. package/dist/{pi-embedded-Cp7d6jtB.js → pi-embedded-CGebiST2.js} +10 -13
  216. package/dist/{pi-embedded-helpers-CVKIHnFv.js → pi-embedded-helpers-BwBjqJM5.js} +2 -2
  217. package/dist/{pi-embedded-helpers-DMVyRPBT.js → pi-embedded-helpers-CAdI9wJ5.js} +4 -4
  218. package/dist/{pi-tools.policy-8_wTu7v2.js → pi-tools.policy-BaRznBvu.js} +3 -3
  219. package/dist/{pi-tools.policy-C5aC-K5q.js → pi-tools.policy-Dyx3nBmp.js} +5 -5
  220. package/dist/{plugin-auto-enable-CYoZQPJO.js → plugin-auto-enable-D2TNEv3x.js} +4 -4
  221. package/dist/{plugin-auto-enable-BWd5lJQf.js → plugin-auto-enable-DSliW8o4.js} +3 -3
  222. package/dist/{plugin-registry-BG51uZOA.js → plugin-registry-D7ACpV2Y.js} +3 -3
  223. package/dist/{plugin-registry-BouuQy-X.js → plugin-registry-d4hMhLLZ.js} +5 -5
  224. package/dist/plugin-sdk/gateway/protocol/index.d.ts +2 -5
  225. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +0 -1
  226. package/dist/{plugins-CypN_04v.js → plugins-DuuHorqi.js} +1 -1
  227. package/dist/{plugins-cli-Bk7Al8u3.js → plugins-cli-CPf1hMaZ.js} +76 -76
  228. package/dist/{plugins-cli-B-zVOiQN.js → plugins-cli-D1gd8p9T.js} +58 -58
  229. package/dist/{ports-BgvsHTN5.js → ports-BAzQoIw0.js} +2 -2
  230. package/dist/{ports-YkSuli-C.js → ports-Cv4kt1bT.js} +1 -1
  231. package/dist/{ports-BxtK6PMH.js → ports-DRHSHvqY.js} +2 -2
  232. package/dist/{ports-CduvYJlk.js → ports-DqxP-bXz.js} +3 -3
  233. package/dist/{program-BOh0XGsA.js → program-C19G7o-Q.js} +63 -63
  234. package/dist/{program-context-D73fzUUe.js → program-context-BSUkEz3n.js} +39 -39
  235. package/dist/{progress-B3rWk9lR.js → progress-CyPyGCDn.js} +2 -2
  236. package/dist/{prompt-select-styled-Bz1VV3Qu.js → prompt-select-styled-B5wlPYN5.js} +40 -40
  237. package/dist/{prompt-select-styled-Bj-hrPCx.js → prompt-select-styled-CnYM7W0j.js} +24 -24
  238. package/dist/{prompt-style-LtRrtcTi.js → prompt-style-Cad0BDRS.js} +1 -1
  239. package/dist/{provider-auth-helpers-BK6NFk2Q.js → provider-auth-helpers-BUC4xGK9.js} +5 -5
  240. package/dist/{provider-auth-helpers-D3hXI6HN.js → provider-auth-helpers-DpRoNr_8.js} +7 -7
  241. package/dist/{push-apns-C1guJr4R.js → push-apns-Bm39oOO9.js} +5 -5
  242. package/dist/{push-apns-CMxk3Hxf.js → push-apns-DqmFEcqh.js} +3 -3
  243. package/dist/{pw-ai-CE2TBGif.js → pw-ai-B0-pgbYu.js} +9 -9
  244. package/dist/{pw-ai-EtT_bBJY.js → pw-ai-B2NuWIL7.js} +13 -13
  245. package/dist/{pw-ai-w6Qalz1W.js → pw-ai-BB1pJj9_.js} +1 -1
  246. package/dist/{pw-ai-C5MJKzUM.js → pw-ai-BsEf8C15.js} +1 -1
  247. package/dist/{qmd-manager--xIse9H_.js → qmd-manager--kGuC39q.js} +4 -4
  248. package/dist/{qmd-manager-DgCmfS8D.js → qmd-manager-358OTDns.js} +8 -8
  249. package/dist/{qr-cli-BeHlC33g.js → qr-cli-Cx7DYTSk.js} +5 -5
  250. package/dist/{qr-cli-zto9YWnY.js → qr-cli-hPIeUYAT.js} +11 -11
  251. package/dist/{redact-identifier-B1VHIbnd.js → redact-identifier-Cm1VfV7E.js} +4 -4
  252. package/dist/{register.agent-CNhg2KUt.js → register.agent-CCKcgAXs.js} +91 -91
  253. package/dist/{register.agent-COv5OPLQ.js → register.agent-DZuxoC0a.js} +71 -71
  254. package/dist/register.configure-CJErdFO_.js +129 -0
  255. package/dist/register.configure-JT8T7HO5.js +125 -0
  256. package/dist/{register.maintenance-BAK-DiQY.js → register.maintenance-CKsv0lok.js} +70 -70
  257. package/dist/{register.maintenance-B_slxJa6.js → register.maintenance-DDzKUGYJ.js} +98 -98
  258. package/dist/{register.message-Bbtej3vy.js → register.message-CpOXi1rz.js} +74 -74
  259. package/dist/{register.message-CCBmn5ja.js → register.message-_bfhetTg.js} +55 -55
  260. package/dist/{register.onboard-Cu2KnArg.js → register.onboard-BHtTh0b_.js} +42 -42
  261. package/dist/{register.onboard-B3jO_Goy.js → register.onboard-CkIM3hU7.js} +24 -24
  262. package/dist/{register.setup-Ca6zdWpf.js → register.setup-CLhdFQHW.js} +42 -42
  263. package/dist/{register.setup-CYSISTDO.js → register.setup-CYtYDKMU.js} +27 -27
  264. package/dist/{register.status-health-sessions-D9p0ClqJ.js → register.status-health-sessions-DZnebsxZ.js} +60 -60
  265. package/dist/{register.status-health-sessions-CGbg9k6d.js → register.status-health-sessions-DmX0DLAt.js} +39 -39
  266. package/dist/{register.subclis-loifbhVx.js → register.subclis-CnDo2jzv.js} +29 -29
  267. package/dist/{registry-Sbac4a4z.js → registry-DKJLAPDB.js} +2 -2
  268. package/dist/{replies-PetyGT0p.js → replies-B2O2eRh6.js} +3 -3
  269. package/dist/{replies-Dj640LxQ.js → replies-DIHkSwoW.js} +2 -2
  270. package/dist/{reply-prefix-CXsO5E1Z.js → reply-prefix-B7pYEiW_.js} +1 -1
  271. package/dist/{reply-prefix-DKeEUCUp.js → reply-prefix-BOdARKaY.js} +1 -1
  272. package/dist/{resolve-route-8JoEBwi6.js → resolve-route-CRWE36h5.js} +4 -4
  273. package/dist/{resolve-route-BcYnh5es.js → resolve-route-DNKcB7Q9.js} +1 -1
  274. package/dist/{routes-CJ4en0jL.js → routes-BMShi_eY.js} +7 -7
  275. package/dist/{routes-B5y-oAKp.js → routes-Cio8is5Y.js} +5 -5
  276. package/dist/{rpc-qWm1bRo5.js → rpc-CEhoSTGo.js} +1 -1
  277. package/dist/{rpc-ElDiKzq4.js → rpc-D0Ldc6Hv.js} +3 -3
  278. package/dist/{run-main-B7Ria3zD.js → run-main-BIRbWKyA.js} +73 -73
  279. package/dist/{runtime-guard-oeRbIq84.js → runtime-guard-BZ3_1QqS.js} +1 -1
  280. package/dist/{sandbox-BJgHc4Vu.js → sandbox-B4RfQ7k1.js} +9 -9
  281. package/dist/{sandbox-C8Gh5iJW.js → sandbox-C-UeHmuJ.js} +11 -11
  282. package/dist/{sandbox-cli-CSudrHYL.js → sandbox-cli-B43FqqPT.js} +17 -17
  283. package/dist/{sandbox-cli-DkMmnojU.js → sandbox-cli-CNAPNXJ4.js} +29 -29
  284. package/dist/{security-cli-pLoqKkfb.js → security-cli-BSd8_Gsq.js} +38 -38
  285. package/dist/{security-cli-B2lCR2xX.js → security-cli-DDM0Z6IW.js} +27 -27
  286. package/dist/{send-DuYvWRLE.js → send-DSK6O8SC.js} +9 -9
  287. package/dist/{send-CY9na-Jw.js → send-EluKytgO.js} +3 -3
  288. package/dist/{server-context-DdWWaDf6.js → server-context-CDTuNR-O.js} +5 -5
  289. package/dist/{server-context-CJFU_WfI.js → server-context-DFO6o83F.js} +8 -8
  290. package/dist/{server-methods-Dk_EnINI.js → server-methods-Dz6NGEg3.js} +35 -59
  291. package/dist/{server-methods-RhVqtIqB.js → server-methods-vp5zi6v5.js} +41 -65
  292. package/dist/{server-node-events-BHegSgG9.js → server-node-events-4ufB_olv.js} +55 -55
  293. package/dist/{server-node-events-UQx561GA.js → server-node-events-B7UtUhkC.js} +74 -74
  294. package/dist/{service-BCu0FBzN.js → service-AP9pR9R5.js} +1 -1
  295. package/dist/{session-cost-usage-5VmVPhKy.js → session-cost-usage-Cj3vd7lZ.js} +1 -1
  296. package/dist/{session-cost-usage-XhPrxXSs.js → session-cost-usage-DYcv40ss.js} +1 -1
  297. package/dist/{session-utils-DFJztVrF.js → session-utils-CgGDr4eh.js} +12 -12
  298. package/dist/{session-utils-CAVPV2Hh.js → session-utils-D1VcHni_.js} +7 -7
  299. package/dist/{sessions-CqLQkkWg.js → sessions-BNEDanZO.js} +4 -4
  300. package/dist/{sessions-BsGGoTdl.js → sessions-Dh88Kqd6.js} +9 -9
  301. package/dist/{sessions-BDM9kNY0.js → sessions-iLfSd6VD.js} +5 -5
  302. package/dist/{shared-CpwtQRJB.js → shared-CIeW3aWF.js} +4 -4
  303. package/dist/{shared-D7tsGdxc.js → shared-DP6YX7_w.js} +1 -1
  304. package/dist/{shared-B7nP44vU.js → shared-DmYHvtn2.js} +2 -2
  305. package/dist/{shared-CbUpEKXt.js → shared-_wwqvx84.js} +3 -3
  306. package/dist/{skill-commands-B45w-suH.js → skill-commands-5QB5E8bv.js} +4 -4
  307. package/dist/{skill-commands-CRQniaHy.js → skill-commands-CcCCVblU.js} +4 -4
  308. package/dist/{skills-CTcjFd_F.js → skills-BP6p7GnN.js} +3 -3
  309. package/dist/{skills-haW9gU7e.js → skills-Bmjf5nFv.js} +3 -3
  310. package/dist/{skills-cli-9Mlb7VRg.js → skills-cli-BJDvUT_e.js} +13 -13
  311. package/dist/{skills-cli-CV_42wby.js → skills-cli-Byp9MfZh.js} +17 -17
  312. package/dist/{skills-install-B4JPO_Np.js → skills-install-BB27sD4d.js} +4 -4
  313. package/dist/{skills-install-D5ikt72d.js → skills-install-BzqoHn0x.js} +3 -3
  314. package/dist/{skills-remote-BW2GvG2l.js → skills-remote-CqwR3Zvp.js} +5 -5
  315. package/dist/{skills-remote-BASG1Doo.js → skills-remote-DHfuS68n.js} +4 -4
  316. package/dist/{skills-status-1iVfuVIG.js → skills-status-01KNlWUS.js} +3 -3
  317. package/dist/{skills-status-C9lLJu0B.js → skills-status-BNDqwHkP.js} +3 -3
  318. package/dist/{sqlite-DL_ZWVN-.js → sqlite-DBEvS-Ne.js} +2 -2
  319. package/dist/{sqlite-67BqaVPd.js → sqlite-l3CZYU6t.js} +1 -1
  320. package/dist/{status-CrddsMfu.js → status-B0HecH1s.js} +4 -4
  321. package/dist/{status-D5RhVO0A.js → status-BD8gFYKH.js} +18 -18
  322. package/dist/{status-DPu7qNXE.js → status-DEXnB1sw.js} +27 -27
  323. package/dist/{status-Bci6O3aA.js → status-MMLxoRgQ.js} +3 -3
  324. package/dist/{status.update-D5CachQ_.js → status.update-Be8PuHCh.js} +2 -2
  325. package/dist/{status.update-Dfd0eZOH.js → status.update-CB9e3eWW.js} +2 -2
  326. package/dist/{subagent-registry-CsXaK_sy.js → subagent-registry-C57PFGHU.js} +61 -61
  327. package/dist/{subsystem-CHbO_DkH.js → subsystem-CtH6J8AV.js} +1 -1
  328. package/dist/{synthesis-BwcfS9jt.js → synthesis-CQdzrLFL.js} +4 -4
  329. package/dist/{synthesis-CU_MR7nV.js → synthesis-CjsIBd8X.js} +71 -71
  330. package/dist/{synthesis-dplLmFIP.js → synthesis-DSdF0vsi.js} +4 -4
  331. package/dist/{synthesis-BoZf8BeO.js → synthesis-j_kjlFo1.js} +52 -52
  332. package/dist/{system-cli-CCn-08Zm.js → system-cli-BM8KbtUc.js} +18 -18
  333. package/dist/{system-cli-D5FffFX5.js → system-cli-CQFH_HwX.js} +10 -10
  334. package/dist/{systemd-bkj5giUQ.js → systemd-9LEEqibe.js} +2 -2
  335. package/dist/{systemd-hints-UeG2BDXq.js → systemd-hints-A1W3AdVo.js} +3 -3
  336. package/dist/{systemd-hints-CufcSfMk.js → systemd-hints-BejQ6J2Y.js} +2 -2
  337. package/dist/{systemd-linger-DVkUgWAi.js → systemd-linger-PqG8iGCt.js} +2 -2
  338. package/dist/{table-Sfrx6RZ-.js → table-CSEp22Mk.js} +1 -1
  339. package/dist/{table-B4DunWtf.js → table-DkAQzCOR.js} +2 -2
  340. package/dist/{tailscale-G_tEEN9T.js → tailscale-D7dC-5EX.js} +3 -3
  341. package/dist/{tokens-BdVB8KXo.js → tokens-BKbemuIk.js} +1 -1
  342. package/dist/{tokens-h4i8ww8n.js → tokens-K3kGchJA.js} +1 -1
  343. package/dist/{tool-display-BngPYwnR.js → tool-display-Dr6VaTg5.js} +1 -1
  344. package/dist/{tool-display-DccYrlOh.js → tool-display-wSdT0Ynz.js} +1 -1
  345. package/dist/{tool-loop-detection-ckNnHN4a.js → tool-loop-detection-CLDr_JBu.js} +1 -1
  346. package/dist/{tool-loop-detection-DldKffR8.js → tool-loop-detection-CSSq5kkt.js} +4 -4
  347. package/dist/{trash-S6FbJcDo.js → trash-BjVrPcAx.js} +1 -1
  348. package/dist/{tui-DZ8gksSZ.js → tui-D0j61PXx.js} +8 -8
  349. package/dist/{tui-DroW8IOb.js → tui-DFuScHlA.js} +10 -10
  350. package/dist/{tui-cli-CyBJYh9u.js → tui-cli-25xTveHh.js} +24 -24
  351. package/dist/{tui-cli-1SpmbQMM.js → tui-cli-C3dXNtPo.js} +36 -36
  352. package/dist/{unified-runner-BFLLzEHE.js → unified-runner-BNt7TQKM.js} +10 -13
  353. package/dist/{unified-runner-CSPkKZHX.js → unified-runner-DCiPB--z.js} +73 -73
  354. package/dist/{update-BITFZPr2.js → update-C1rkPV1C.js} +3 -3
  355. package/dist/{update-OkPZ3jjl.js → update-CjZgU686.js} +3 -3
  356. package/dist/{update-check-CMbKkelk.js → update-check-CZxZhEXr.js} +2 -2
  357. package/dist/{update-cli-Dh5dvdv-.js → update-cli-CWufRpkr.js} +104 -104
  358. package/dist/{update-cli-yW6Xl6fs.js → update-cli-Dl_QbjXc.js} +77 -77
  359. package/dist/{update-runner-BI8ZSR1b.js → update-runner-Dq5UYQbo.js} +5 -5
  360. package/dist/{update-runner-CIgLduhH.js → update-runner-ENJw0Mco.js} +2 -2
  361. package/dist/{utils-CTPsqyE_.js → utils-BU8jVQFM.js} +1 -1
  362. package/dist/{webhooks-cli-Cwhu9vyD.js → webhooks-cli-Clx8DGfA.js} +14 -14
  363. package/dist/{webhooks-cli-4bmyKzwb.js → webhooks-cli-UfO_WffC.js} +11 -11
  364. package/dist/{widearea-dns-BZ7fV_kq.js → widearea-dns-C5NqCQ3L.js} +1 -1
  365. package/dist/{widearea-dns-D9KXb2gb.js → widearea-dns-drOINmDM.js} +1 -1
  366. package/dist/{with-timeout-D_FOTx48.js → with-timeout-BE7lxhxW.js} +2 -2
  367. package/dist/{with-timeout-bWr6yBeX.js → with-timeout-BcL6qAbd.js} +2 -2
  368. package/dist/{workspace-DxscDsm6.js → workspace-B3sO7QlN.js} +2 -2
  369. package/dist/{workspace-BHDa_VCi.js → workspace-Bb1HX2I0.js} +1 -1
  370. package/dist/{workspace-dirs-2xcWGse3.js → workspace-dirs-23IYtZj2.js} +1 -1
  371. package/dist/{workspace-dirs-aYEM1rQE.js → workspace-dirs-D5OnUmvw.js} +1 -1
  372. package/extensions/memory-core/node_modules/.bin/symi +0 -0
  373. package/extensions/msteams/node_modules/.bin/symi +0 -0
  374. package/extensions/outlook/node_modules/.bin/symi +0 -0
  375. package/extensions/slack/node_modules/.bin/symi +0 -0
  376. package/package.json +108 -79
  377. package/dist/cli-CK62Eh_9.js +0 -128
  378. package/dist/control-ui/css/revert-red-theme.md +0 -141
  379. package/dist/control-ui/css/style.css +0 -5843
  380. package/dist/control-ui/css/style.css.backup-2026-03-03-162525 +0 -3546
  381. package/dist/control-ui/css/style.css.backup-before-red-2026-03-03-162525 +0 -3546
  382. package/dist/control-ui/css/style.css.backup-before-red-theme-2026-03-03-162530 +0 -3546
  383. package/dist/control-ui/css/style.css.pre-2row +0 -2165
  384. package/dist/control-ui/css/style.css.pre-brand +0 -1776
  385. package/dist/control-ui/css/style.css.pre-history +0 -1974
  386. package/dist/control-ui/css/style.css.pre-nav +0 -2264
  387. package/dist/control-ui/css/style.css.pre-newsession +0 -1898
  388. package/dist/control-ui/css/style.css.pre-queue +0 -2195
  389. package/dist/control-ui/css/style.css.pre-red-prompt +0 -2524
  390. package/dist/control-ui/css/style.css.pre-stop +0 -2239
  391. package/dist/control-ui/css/style.css.pre-textarea +0 -2184
  392. package/dist/control-ui/css/style.css.pre-watchdog +0 -1848
  393. package/dist/control-ui/css/style.css.red-theme +0 -2999
  394. package/dist/control-ui/index.html +0 -1042
  395. package/dist/control-ui/js/app.js +0 -1304
  396. package/dist/control-ui/js/app.js.pre-2row +0 -463
  397. package/dist/control-ui/js/app.js.pre-heartbeat-filter +0 -595
  398. package/dist/control-ui/js/app.js.pre-newsession +0 -408
  399. package/dist/control-ui/js/app.js.pre-queue +0 -476
  400. package/dist/control-ui/js/app.js.pre-stop +0 -564
  401. package/dist/control-ui/js/app.js.pre-textarea +0 -467
  402. package/dist/control-ui/js/app.js.pre-watchdog +0 -293
  403. package/dist/control-ui/js/connections.js +0 -438
  404. package/dist/control-ui/js/gateway.js +0 -233
  405. package/dist/control-ui/js/gateway.js.pre-stop +0 -110
  406. package/dist/control-ui/js/history.js +0 -732
  407. package/dist/control-ui/js/logs.js +0 -238
  408. package/dist/control-ui/js/menu.js +0 -230
  409. package/dist/control-ui/js/menu.js.pre-nav +0 -66
  410. package/dist/control-ui/js/metrics.js +0 -53
  411. package/dist/control-ui/js/models.js +0 -138
  412. package/dist/control-ui/js/render.js +0 -882
  413. package/dist/control-ui/js/render.test.js +0 -112
  414. package/dist/control-ui/js/scheduling.js +0 -461
  415. package/dist/control-ui/js/settings.js +0 -909
  416. package/dist/control-ui/js/slash-autocomplete.js +0 -168
  417. package/dist/control-ui/js/subagents.js +0 -560
  418. package/dist/control-ui/js/utils.js +0 -29
  419. package/dist/control-ui/vendor/highlight.min.js +0 -2518
  420. package/dist/control-ui/vendor/marked.min.js +0 -69
  421. package/dist/register.configure-RhKVlfWH.js +0 -125
  422. package/dist/register.configure-q33027ym.js +0 -129
@@ -1,2999 +0,0 @@
1
- /* ── Floating Prompt Bar ─────────────────────────────────────────── */
2
- .prompt-wrap {
3
- position: fixed;
4
- bottom: 28px;
5
- left: calc(50% - 370px);
6
- right: calc(50% - 370px);
7
- z-index: 20;
8
- display: flex;
9
- justify-content: center;
10
- }
11
-
12
- .prompt-bar {
13
- width: 100%;
14
- max-width: 720px;
15
- display: flex;
16
- flex-direction: column;
17
- gap: 10px;
18
- background: rgba(255,0,0,0.05);
19
- backdrop-filter: blur(32px) saturate(200%);
20
- -webkit-backdrop-filter: blur(32px) saturate(200%);
21
- border: 1px solid rgba(255,0,0,0.12);
22
- border-radius: 20px;
23
- padding: 14px 16px 12px;
24
- box-shadow:
25
- 0 0 0 1px rgba(255,0,0,0.08),
26
- 0 8px 40px rgba(0,0,0,0.6),
27
- 0 0 60px rgba(255,0,0,0.04),
28
- inset 0 1px 0 rgba(255,255,255,0.08);
29
- transition: border-color 0.3s, box-shadow 0.3s;
30
- cursor: text;
31
- }
32
-
33
- /* ── Prompt rows ──────────────────────────────────────────────────── */
34
- .prompt-row-main {
35
- display: flex;
36
- align-items: center;
37
- gap: 12px;
38
- width: 100%;
39
- }
40
-
41
- .prompt-row-actions {
42
- display: flex;
43
- align-items: center;
44
- justify-content: flex-end;
45
- gap: 8px;
46
- width: 100%;
47
- padding-top: 2px;
48
- border-top: 1px solid rgba(255,255,255,0.05);
49
- }
50
-
51
- .prompt-bar:focus-within {
52
- border-color: rgba(255,0,0,0.3);
53
- box-shadow:
54
- 0 0 0 1px rgba(255,0,0,0.15),
55
- 0 8px 40px rgba(0,0,0,0.6),
56
- 0 0 80px rgba(255,0,0,0.08),
57
- inset 0 1px 0 rgba(255,255,255,0.1);
58
- }
59
-
60
- .prompt-icon {
61
- color: rgba(255,0,0,0.85);
62
- opacity: 0.8;
63
- flex-shrink: 0;
64
- display: flex;
65
- align-items: center;
66
- filter: drop-shadow(0 0 4px rgba(255,0,0,0.6));
67
- }
68
-
69
- .prompt-bar textarea {
70
- flex: 1;
71
- background: transparent;
72
- border: none;
73
- outline: none;
74
- color: var(--text);
75
- font-family: var(--font);
76
- font-size: 14px;
77
- line-height: 1.55;
78
- letter-spacing: 0.01em;
79
- caret-color: rgba(255,0,0,0.85);
80
- resize: none;
81
- overflow-y: hidden;
82
- min-height: 22px;
83
- max-height: calc(3 * 1.55 * 14px); /* 3 lines */
84
- padding: 0;
85
- margin: 0;
86
- display: block;
87
- scrollbar-width: none;
88
- }
89
-
90
- .prompt-bar textarea::-webkit-scrollbar { display: none; }
91
-
92
- .prompt-bar textarea::placeholder {
93
- color: var(--text-dim);
94
- }
95
-
96
- .send-btn {
97
- background: rgba(255,0,0,0.12);
98
- border: 1px solid rgba(255,0,0,0.2);
99
- border-radius: 50%;
100
- width: 32px;
101
- height: 32px;
102
- display: flex;
103
- align-items: center;
104
- justify-content: center;
105
- color: rgba(255,0,0,0.85);
106
- cursor: pointer;
107
- flex-shrink: 0;
108
- transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
109
- }
110
-
111
- .send-btn:hover {
112
- background: rgba(255,0,0,0.22);
113
- box-shadow: 0 0 16px rgba(255,0,0,0.25);
114
- transform: scale(1.05);
115
- }
116
-
117
- .send-btn:active {
118
- transform: scale(0.95);
119
- }
120
-
121
- /* ── New Session Button ───────────────────────────────────────────── */
122
- .prompt-divider {
123
- width: 1px;
124
- height: 18px;
125
- background: rgba(255,255,255,0.08);
126
- flex-shrink: 0;
127
- }
128
-
129
- .new-session-btn {
130
- display: flex;
131
- align-items: center;
132
- gap: 5px;
133
- background: rgba(139,92,246,0.1);
134
- border: 1px solid rgba(139,92,246,0.2);
135
- border-radius: 8px;
136
- padding: 0 11px;
137
- height: 28px;
138
- color: rgba(139,92,246,0.85);
139
- cursor: pointer;
140
- flex-shrink: 0;
141
- transition: background 0.2s, box-shadow 0.2s, transform 0.15s, opacity 0.2s;
142
- }
143
-
144
- .new-session-btn:hover {
145
- background: rgba(139,92,246,0.2);
146
- box-shadow: 0 0 16px rgba(139,92,246,0.2);
147
- transform: scale(1.03);
148
- }
149
-
150
- .new-session-btn:active {
151
- transform: scale(0.96);
152
- }
153
-
154
- .new-session-btn:disabled {
155
- opacity: 0.3;
156
- cursor: not-allowed;
157
- transform: none;
158
- }
159
-
160
- .new-session-label {
161
- font-family: var(--font-mono);
162
- font-size: 11px;
163
- letter-spacing: 0.08em;
164
- font-weight: 600;
165
- }
166
-
167
- /* ── New Session Cleared State ───────────────────────────────────── */
168
- .session-cleared {
169
- display: flex;
170
- flex-direction: column;
171
- align-items: center;
172
- justify-content: center;
173
- gap: 10px;
174
- padding: 60px 20px;
175
- opacity: 0;
176
- animation: session-cleared-in 0.5s ease forwards;
177
- }
178
-
179
- .session-cleared-icon {
180
- font-size: 28px;
181
- opacity: 0.3;
182
- }
183
-
184
- .session-cleared-text {
185
- font-family: var(--font-mono);
186
- font-size: 12px;
187
- letter-spacing: 0.12em;
188
- color: var(--text-dim);
189
- opacity: 0.5;
190
- }
191
-
192
- @keyframes session-cleared-in {
193
- from { opacity: 0; transform: translateY(8px); }
194
- to { opacity: 1; transform: translateY(0); }
195
- }
196
-
197
- /* ── Thinking Bubble ──────────────────────────────────────────────── */
198
- .thinking-bubble {
199
- background: rgba(255,0,0,0.04) !important;
200
- border-color: rgba(255,0,0,0.15) !important;
201
- padding: 10px 16px !important;
202
- }
203
-
204
- .think-header {
205
- display: flex;
206
- align-items: center;
207
- gap: 10px;
208
- margin-bottom: 8px;
209
- }
210
-
211
- .think-badge {
212
- font-family: var(--font-mono);
213
- font-size: 9px;
214
- font-weight: 700;
215
- letter-spacing: 0.15em;
216
- color: rgba(255,0,0,0.85);
217
- text-shadow: 0 0 8px rgba(255,0,0,0.6);
218
- }
219
-
220
- .think-dots span {
221
- display: inline-block;
222
- color: rgba(255,0,0,0.85);
223
- animation: dot-pulse 1.2s ease-in-out infinite;
224
- font-size: 14px;
225
- opacity: 0;
226
- }
227
- .think-dots span:nth-child(1) { animation-delay: 0s; }
228
- .think-dots span:nth-child(2) { animation-delay: 0.2s; }
229
- .think-dots span:nth-child(3) { animation-delay: 0.4s; }
230
-
231
- @keyframes dot-pulse {
232
- 0%, 100% { opacity: 0; transform: translateY(0); }
233
- 50% { opacity: 1; transform: translateY(-3px); }
234
- }
235
-
236
- .think-bar-wrap {
237
- height: 2px;
238
- background: rgba(255,255,255,0.06);
239
- border-radius: 99px;
240
- overflow: hidden;
241
- }
242
-
243
- .think-bar {
244
- height: 100%;
245
- width: 0%;
246
- background: linear-gradient(90deg, transparent, rgba(255,0,0,0.85), transparent);
247
- border-radius: 99px;
248
- border: 1px solid rgba(0,212,255,0.2);
249
- border-radius: 50%;
250
- width: 32px;
251
- height: 32px;
252
- display: flex;
253
- align-items: center;
254
- justify-content: center;
255
- color: var(--accent-cyan);
256
- cursor: pointer;
257
- flex-shrink: 0;
258
- transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
259
- }
260
-
261
- .send-btn:hover {
262
- background: rgba(0,212,255,0.22);
263
- box-shadow: 0 0 16px rgba(0,212,255,0.25);
264
- transform: scale(1.05);
265
- }
266
-
267
- .send-btn:active {
268
- transform: scale(0.95);
269
- }
270
-
271
- /* ── New Session Button ───────────────────────────────────────────── */
272
- .prompt-divider {
273
- width: 1px;
274
- height: 18px;
275
- background: rgba(255,255,255,0.08);
276
- flex-shrink: 0;
277
- }
278
-
279
- .new-session-btn {
280
- display: flex;
281
- align-items: center;
282
- gap: 5px;
283
- background: rgba(139,92,246,0.1);
284
- border: 1px solid rgba(139,92,246,0.2);
285
- border-radius: 8px;
286
- padding: 0 11px;
287
- height: 28px;
288
- color: rgba(139,92,246,0.85);
289
- cursor: pointer;
290
- flex-shrink: 0;
291
- transition: background 0.2s, box-shadow 0.2s, transform 0.15s, opacity 0.2s;
292
- }
293
-
294
- .new-session-btn:hover {
295
- background: rgba(139,92,246,0.2);
296
- box-shadow: 0 0 16px rgba(139,92,246,0.2);
297
- transform: scale(1.03);
298
- }
299
-
300
- .new-session-btn:active {
301
- transform: scale(0.96);
302
- }
303
-
304
- .new-session-btn:disabled {
305
- opacity: 0.3;
306
- cursor: not-allowed;
307
- transform: none;
308
- }
309
-
310
- .new-session-label {
311
- font-family: var(--font-mono);
312
- font-size: 11px;
313
- letter-spacing: 0.08em;
314
- font-weight: 600;
315
- }
316
-
317
- /* ── New Session Cleared State ───────────────────────────────────── */
318
- .session-cleared {
319
- display: flex;
320
- flex-direction: column;
321
- align-items: center;
322
- justify-content: center;
323
- gap: 10px;
324
- padding: 60px 20px;
325
- opacity: 0;
326
- animation: session-cleared-in 0.5s ease forwards;
327
- }
328
-
329
- .session-cleared-icon {
330
- font-size: 28px;
331
- opacity: 0.3;
332
- }
333
-
334
- .session-cleared-text {
335
- font-family: var(--font-mono);
336
- font-size: 12px;
337
- letter-spacing: 0.12em;
338
- color: var(--text-dim);
339
- opacity: 0.5;
340
- }
341
-
342
- @keyframes session-cleared-in {
343
- from { opacity: 0; transform: translateY(8px); }
344
- to { opacity: 1; transform: translateY(0); }
345
- }
346
-
347
- /* ── Thinking Bubble ──────────────────────────────────────────────── */
348
- .thinking-bubble {
349
- background: rgba(0,212,255,0.04) !important;
350
- border-color: rgba(0,212,255,0.15) !important;
351
- padding: 10px 16px !important;
352
- }
353
-
354
- .think-header {
355
- display: flex;
356
- align-items: center;
357
- gap: 10px;
358
- margin-bottom: 8px;
359
- }
360
-
361
- .think-badge {
362
- font-family: var(--font-mono);
363
- font-size: 9px;
364
- font-weight: 700;
365
- letter-spacing: 0.15em;
366
- color: var(--accent-cyan);
367
- text-shadow: 0 0 8px var(--accent-cyan);
368
- }
369
-
370
- .think-dots span {
371
- display: inline-block;
372
- color: var(--accent-cyan);
373
- animation: dot-pulse 1.2s ease-in-out infinite;
374
- font-size: 14px;
375
- opacity: 0;
376
- }
377
- .think-dots span:nth-child(1) { animation-delay: 0s; }
378
- .think-dots span:nth-child(2) { animation-delay: 0.2s; }
379
- .think-dots span:nth-child(3) { animation-delay: 0.4s; }
380
-
381
- @keyframes dot-pulse {
382
- 0%, 100% { opacity: 0; transform: translateY(0); }
383
- 50% { opacity: 1; transform: translateY(-3px); }
384
- }
385
-
386
- .think-bar-wrap {
387
- height: 2px;
388
- background: rgba(255,255,255,0.06);
389
- border-radius: 99px;
390
- overflow: hidden;
391
- }
392
-
393
- .think-bar {
394
- height: 100%;
395
- width: 0%;
396
- background: linear-gradient(90deg, transparent, var(--accent-cyan), transparent);
397
- border-radius: 99px;
398
- animation: think-scan 1s ease-in-out infinite;
399
- }
400
-
401
- @keyframes think-scan {
402
- 0% { width: 0%; margin-left: 0%; opacity: 1; }
403
- 50% { width: 60%; margin-left: 20%; opacity: 1; }
404
- 100% { width: 0%; margin-left: 100%; opacity: 0; }
405
- }
406
-
407
- /* ── Streaming Bubble ─────────────────────────────────────────────── */
408
- .stream-bubble {
409
- position: relative;
410
- }
411
-
412
- .stream-bubble.streaming {
413
- width: 100% !important;
414
- border-color: rgba(0,212,255,0.25) !important;
415
- box-shadow:
416
- 0 8px 32px rgba(0,0,0,0.5),
417
- 0 0 20px rgba(0,212,255,0.06),
418
- inset 0 1px 0 rgba(255,255,255,0.06) !important;
419
- animation: stream-pulse 1.8s ease-in-out infinite;
420
- }
421
-
422
- @keyframes stream-pulse {
423
- 0%, 100% { box-shadow: 0 8px 32px rgba(0,0,0,0.5), 0 0 20px rgba(0,212,255,0.06), inset 0 1px 0 rgba(255,255,255,0.06); }
424
- 50% { box-shadow: 0 8px 32px rgba(0,0,0,0.5), 0 0 40px rgba(0,212,255,0.12), inset 0 1px 0 rgba(255,255,255,0.06); }
425
- }
426
-
427
- .stream-bubble.streaming::after {
428
- content: '';
429
- position: absolute;
430
- top: 0; left: 0; right: 0;
431
- height: 1px;
432
- background: linear-gradient(90deg, transparent, var(--accent-cyan), transparent);
433
- opacity: 0.6;
434
- animation: top-scan 2s linear infinite;
435
- }
436
-
437
- @keyframes top-scan {
438
- 0% { transform: scaleX(0); transform-origin: left; opacity: 0.8; }
439
- 50% { transform: scaleX(1); transform-origin: left; opacity: 0.6; }
440
- 100% { transform: scaleX(0); transform-origin: right; opacity: 0; }
441
- }
442
-
443
- .stream-bubble.done {
444
- width: fit-content;
445
- max-width: 100%;
446
- border-color: rgba(255,255,255,0.1) !important;
447
- transition: border-color 0.8s, box-shadow 0.8s, width 0.3s ease;
448
- }
449
-
450
- /* ── Character spawn animation ────────────────────────────────────── */
451
- .char-spawn {
452
- display: inline;
453
- color: transparent;
454
- text-shadow: none;
455
- transition: color 0.12s ease, text-shadow 0.2s ease;
456
- }
457
-
458
- .char-spawn.char-visible {
459
- color: var(--text);
460
- text-shadow: 0 0 8px rgba(0,212,255,0.4);
461
- animation: char-settle 0.4s ease forwards;
462
- }
463
-
464
- @keyframes char-settle {
465
- 0% { color: var(--accent-cyan); text-shadow: 0 0 12px var(--accent-cyan), 0 0 24px rgba(0,212,255,0.3); }
466
- 40% { color: rgba(200,240,255,0.95); text-shadow: 0 0 6px rgba(0,212,255,0.2); }
467
- 100% { color: var(--text); text-shadow: none; }
468
- }
469
-
470
- /* ── Telemetry footer ─────────────────────────────────────────────── */
471
- .telemetry {
472
- display: flex;
473
- align-items: center;
474
- gap: 6px;
475
- margin-top: 10px;
476
- padding-top: 8px;
477
- border-top: 1px solid rgba(255,255,255,0.05);
478
- opacity: 0;
479
- transform: translateY(4px);
480
- transition: opacity 0.5s ease 0.2s, transform 0.5s ease 0.2s;
481
- }
482
-
483
- .telemetry.tele-visible {
484
- opacity: 1;
485
- transform: translateY(0);
486
- }
487
-
488
- .tele-item {
489
- font-family: var(--font-mono);
490
- font-size: 9px;
491
- color: var(--text-dim);
492
- letter-spacing: 0.06em;
493
- }
494
-
495
- .tele-sep {
496
- color: rgba(255,255,255,0.12);
497
- font-size: 9px;
498
- }
499
-
500
- /* ── Send button loading state ────────────────────────────────────── */
501
- .send-btn.btn-loading {
502
- animation: btn-spin 1s linear infinite;
503
- }
504
- @keyframes btn-spin {
505
- to { transform: rotate(360deg); }
506
- }
507
-
508
- /* ── Connection status ────────────────────────────────────────────── */
509
- .conn-status {
510
- position: fixed;
511
- top: 16px;
512
- left: 50%;
513
- transform: translateX(-50%);
514
- z-index: 30;
515
- display: flex;
516
- align-items: center;
517
- gap: 7px;
518
- background: var(--glass-bg);
519
- backdrop-filter: var(--blur);
520
- -webkit-backdrop-filter: var(--blur);
521
- border: 1px solid var(--glass-border);
522
- border-radius: 99px;
523
- padding: 5px 12px;
524
- pointer-events: none;
525
- }
526
-
527
- .conn-label {
528
- font-family: var(--font-mono);
529
- font-size: 9px;
530
- letter-spacing: 0.1em;
531
- color: var(--text-dim);
532
- }
533
-
534
- .dot-red { background: #f87171; box-shadow: 0 0 6px #f87171; }
535
-
536
- /* ── UI Toggle button ─────────────────────────────────────────────── */
537
- .ui-toggle {
538
- position: fixed;
539
- top: 16px;
540
- right: 24px;
541
- z-index: 30;
542
- display: flex;
543
- align-items: center;
544
- gap: 7px;
545
- background: var(--glass-bg);
546
- backdrop-filter: var(--blur);
547
- -webkit-backdrop-filter: var(--blur);
548
- border: 1px solid var(--glass-border);
549
- border-radius: 99px;
550
- padding: 6px 14px;
551
- color: var(--text-muted);
552
- font-size: 11px;
553
- font-family: var(--font-mono);
554
- letter-spacing: 0.05em;
555
- text-decoration: none;
556
- transition: border-color 0.2s, color 0.2s, box-shadow 0.2s;
557
- }
558
-
559
- .ui-toggle:hover {
560
- border-color: var(--glass-border-strong);
561
- color: var(--text);
562
- box-shadow: 0 0 16px rgba(0,212,255,0.08);
563
- }
564
-
565
- /* ── Scrollbar ────────────────────────────────────────────────────── */
566
- .response-area::-webkit-scrollbar { display: none; }
567
- .response-area { scrollbar-width: none; }
568
-
569
- /* ═══════════════════════════════════════════════════════════════════
570
- CONTENT TYPES — Markdown, Thinking, Tool Cards, Code
571
- ═══════════════════════════════════════════════════════════════════ */
572
-
573
- /* ── Markdown prose ────────────────────────────────────────────────── */
574
- .msg-text {
575
- font-size: 14.5px;
576
- line-height: 1.75;
577
- color: var(--text);
578
- word-wrap: break-word;
579
- overflow-wrap: anywhere;
580
- word-break: break-word;
581
- }
582
-
583
- /* Paragraph spacing */
584
- .msg-text :where(p, ul, ol, pre, blockquote, table) { margin: 0; }
585
- .msg-text :where(p + p,
586
- p + ul, p + ol, p + pre, p + blockquote, p + table,
587
- ul + p, ol + p, pre + p, blockquote + p, table + p) { margin-top: 0.75em; }
588
- .msg-text :where(li + li) { margin-top: 0.25em; }
589
-
590
- /* Headings */
591
- .msg-text :where(h1, h2, h3, h4, h5, h6) {
592
- font-weight: 600;
593
- line-height: 1.3;
594
- color: rgba(255,255,255,0.96);
595
- margin: 1.1em 0 0.4em;
596
- }
597
- .msg-text :where(h1) { font-size: 1.35em; border-bottom: 1px solid var(--glass-border); padding-bottom: 0.3em; }
598
- .msg-text :where(h2) { font-size: 1.18em; border-bottom: 1px solid rgba(255,255,255,0.05); padding-bottom: 0.2em; }
599
- .msg-text :where(h3) { font-size: 1.06em; }
600
- .msg-text :where(h4, h5, h6) { font-size: 1em; color: rgba(255,255,255,0.8); }
601
- .msg-text :where(h1, h2, h3, h4, h5, h6):first-child { margin-top: 0.3em; }
602
-
603
- /* Lists */
604
- .msg-text :where(ul, ol) { padding-left: 1.4em; }
605
- .msg-text :where(ul) { list-style-type: disc; }
606
- .msg-text :where(ol) { list-style-type: decimal; }
607
- .msg-text :where(ul ul) { list-style-type: circle; margin-top: 0.25em; }
608
-
609
- /* Text formatting */
610
- .msg-text :where(strong) { font-weight: 600; color: rgba(255,255,255,0.97); }
611
- .msg-text :where(em) { font-style: italic; color: rgba(255,255,255,0.82); }
612
- .msg-text :where(del) { text-decoration: line-through; opacity: 0.6; }
613
- .msg-text :where(mark) { background: rgba(251,191,36,0.2); color: #fbbf24; border-radius: 2px; padding: 0 3px; }
614
- .msg-text :where(sup) { font-size: 0.75em; vertical-align: super; }
615
- .msg-text :where(sub) { font-size: 0.75em; vertical-align: sub; }
616
-
617
- /* Links */
618
- .msg-text :where(a) { color: var(--accent-cyan); text-decoration: none; border-bottom: 1px solid rgba(0,212,255,0.3); }
619
- .msg-text :where(a:hover) { border-bottom-color: var(--accent-cyan); }
620
-
621
- /* Horizontal rule */
622
- .msg-text :where(hr) {
623
- border: none;
624
- border-top: 1px solid var(--glass-border);
625
- margin: 1em 0;
626
- }
627
-
628
- /* Blockquote */
629
- .msg-text :where(blockquote) {
630
- border-left: 2px solid rgba(0,212,255,0.3);
631
- margin: 0.6em 0;
632
- padding: 6px 14px;
633
- background: rgba(0,212,255,0.03);
634
- color: var(--text-muted);
635
- border-radius: 0 6px 6px 0;
636
- }
637
- .msg-text :where(blockquote blockquote) {
638
- border-left-color: rgba(139,92,246,0.4);
639
- background: rgba(139,92,246,0.03);
640
- margin-top: 6px;
641
- }
642
-
643
- /* ── Tables ─────────────────────────────────────────────────────────── */
644
- .msg-text :where(table) {
645
- width: 100%;
646
- border-collapse: collapse;
647
- font-size: 13px;
648
- margin-top: 0.75em;
649
- border: 1px solid var(--glass-border);
650
- border-radius: 8px;
651
- overflow: hidden;
652
- }
653
-
654
- .msg-text :where(thead) {
655
- background: rgba(0,212,255,0.06);
656
- }
657
-
658
- .msg-text :where(th) {
659
- font-family: var(--font-mono);
660
- font-size: 10.5px;
661
- font-weight: 600;
662
- letter-spacing: 0.08em;
663
- text-transform: uppercase;
664
- color: var(--accent-cyan);
665
- border: 1px solid var(--glass-border);
666
- padding: 8px 12px;
667
- text-align: left;
668
- background: rgba(0,0,0,0.15);
669
- }
670
-
671
- .msg-text :where(td) {
672
- border: 1px solid var(--glass-border);
673
- padding: 7px 12px;
674
- vertical-align: top;
675
- color: var(--text);
676
- line-height: 1.5;
677
- }
678
-
679
- .msg-text :where(tr:nth-child(even) td) {
680
- background: rgba(255,255,255,0.015);
681
- }
682
-
683
- .msg-text :where(tr:hover td) {
684
- background: rgba(0,212,255,0.03);
685
- }
686
-
687
- /* ── Inline code ────────────────────────────────────────────────────── */
688
- .inline-code,
689
- .msg-text :where(:not(pre) > code) {
690
- font-family: var(--font-mono);
691
- font-size: 0.875em;
692
- background: rgba(255,255,255,0.08);
693
- border: 1px solid rgba(255,255,255,0.1);
694
- border-radius: 4px;
695
- padding: 0.1em 0.4em;
696
- color: var(--accent-cyan);
697
- }
698
-
699
- /* ── Code blocks — full-featured ────────────────────────────────────── */
700
- .code-block {
701
- margin: 0.75em 0;
702
- border: 1px solid var(--glass-border);
703
- border-radius: 10px;
704
- overflow: hidden;
705
- background: rgba(0,0,0,0.45);
706
- font-family: var(--font-mono);
707
- }
708
-
709
- /* Full-width breakout — code gets the whole column regardless of bubble */
710
- .code-block-full {
711
- width: 100%;
712
- max-width: 100%;
713
- }
714
-
715
- /* ── Header ── */
716
- .code-header {
717
- display: flex;
718
- align-items: center;
719
- justify-content: space-between;
720
- padding: 7px 12px;
721
- background: rgba(255,255,255,0.04);
722
- border-bottom: 1px solid var(--glass-border);
723
- gap: 10px;
724
- }
725
-
726
- .code-header-left { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
727
- .code-header-right { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
728
-
729
- /* Language badge with per-language color */
730
- .code-lang-badge {
731
- font-family: var(--font-mono);
732
- font-size: 10px;
733
- font-weight: 700;
734
- letter-spacing: 0.06em;
735
- text-transform: uppercase;
736
- color: var(--lang-color, var(--accent-cyan));
737
- display: flex;
738
- align-items: center;
739
- gap: 2px;
740
- flex-shrink: 0;
741
- text-shadow: 0 0 8px var(--lang-color, var(--accent-cyan));
742
- }
743
-
744
- /* Filename */
745
- .code-filename {
746
- font-family: var(--font-mono);
747
- font-size: 11px;
748
- color: var(--text-muted);
749
- background: rgba(255,255,255,0.05);
750
- border: 1px solid var(--glass-border);
751
- border-radius: 4px;
752
- padding: 1px 7px;
753
- white-space: nowrap;
754
- overflow: hidden;
755
- text-overflow: ellipsis;
756
- max-width: 200px;
757
- }
758
-
759
- /* Line count */
760
- .code-lines-count {
761
- font-family: var(--font-mono);
762
- font-size: 9.5px;
763
- color: var(--text-dim);
764
- white-space: nowrap;
765
- }
766
-
767
- /* Expand button */
768
- .code-expand-btn {
769
- font-size: 14px;
770
- background: transparent;
771
- border: none;
772
- color: var(--text-dim);
773
- cursor: pointer;
774
- padding: 0 4px;
775
- line-height: 1;
776
- transition: color 0.2s;
777
- }
778
- .code-expand-btn:hover { color: var(--text); }
779
-
780
- /* Copy button */
781
- .code-copy {
782
- display: flex;
783
- align-items: center;
784
- gap: 5px;
785
- font-family: var(--font-mono);
786
- font-size: 10px;
787
- color: var(--text-dim);
788
- background: transparent;
789
- border: none;
790
- cursor: pointer;
791
- padding: 3px 8px;
792
- border-radius: 4px;
793
- transition: color 0.2s, background 0.2s;
794
- white-space: nowrap;
795
- }
796
- .code-copy:hover { color: var(--text); background: rgba(255,255,255,0.06); }
797
- .code-copy.copied { color: var(--accent-green); }
798
-
799
- /* ── Code body ── */
800
- .code-body { overflow: hidden; }
801
- .code-body-collapsed { max-height: 400px; overflow: hidden; position: relative; }
802
- .code-body-collapsed::after {
803
- content: '';
804
- position: absolute;
805
- bottom: 0; left: 0; right: 0;
806
- height: 80px;
807
- background: linear-gradient(to bottom, transparent, rgba(0,0,0,0.8));
808
- pointer-events: none;
809
- }
810
- .code-expanded .code-body-collapsed { max-height: none; overflow: auto; }
811
- .code-expanded .code-body-collapsed::after { display: none; }
812
-
813
- /* Show more button */
814
- .code-show-more {
815
- display: block;
816
- width: 100%;
817
- padding: 8px;
818
- background: rgba(255,255,255,0.03);
819
- border: none;
820
- border-top: 1px solid var(--glass-border);
821
- color: var(--text-dim);
822
- font-family: var(--font-mono);
823
- font-size: 10px;
824
- cursor: pointer;
825
- letter-spacing: 0.06em;
826
- transition: background 0.2s, color 0.2s;
827
- text-align: center;
828
- }
829
- .code-show-more:hover { background: rgba(255,255,255,0.06); color: var(--text); }
830
-
831
- /* ── Line numbers ── */
832
- .code-pre {
833
- margin: 0;
834
- padding: 12px 0;
835
- overflow-x: auto;
836
- font-size: 12.5px;
837
- line-height: 1.65;
838
- }
839
-
840
- .code-numbered { display: block; }
841
-
842
- .code-line {
843
- display: flex;
844
- min-height: 1.65em;
845
- }
846
-
847
- .code-line:hover { background: rgba(255,255,255,0.03); }
848
-
849
- .line-num {
850
- display: inline-block;
851
- min-width: 44px;
852
- padding: 0 12px 0 14px;
853
- color: rgba(255,255,255,0.2);
854
- text-align: right;
855
- user-select: none;
856
- border-right: 1px solid rgba(255,255,255,0.06);
857
- flex-shrink: 0;
858
- font-size: 11px;
859
- line-height: inherit;
860
- }
861
-
862
- .line-content {
863
- display: inline-block;
864
- padding: 0 16px;
865
- white-space: pre;
866
- flex: 1;
867
- }
868
-
869
- .hljs { background: transparent !important; padding: 0 !important; }
870
-
871
- /* ── Thinking block ─────────────────────────────────────────────────── */
872
- .msg-thinking { margin: 4px 0 8px; }
873
-
874
- .thinking-toggle {
875
- display: flex;
876
- align-items: center;
877
- gap: 7px;
878
- background: transparent;
879
- border: none;
880
- cursor: pointer;
881
- padding: 4px 0;
882
- color: var(--text-dim);
883
- font-size: 11px;
884
- font-family: var(--font-mono);
885
- letter-spacing: 0.05em;
886
- transition: color 0.2s;
887
- }
888
- .thinking-toggle:hover { color: var(--text-muted); }
889
- .thinking-icon { color: var(--accent-purple); }
890
- .thinking-chevron { font-size: 9px; transition: transform 0.2s; }
891
-
892
- .thinking-body {
893
- max-height: 0;
894
- overflow: hidden;
895
- transition: max-height 0.35s ease;
896
- }
897
- .thinking-body.thinking-open { max-height: 600px; overflow-y: auto; }
898
-
899
- .thinking-text {
900
- margin-top: 6px;
901
- padding: 10px 14px;
902
- border: 1px dashed rgba(139,92,246,0.25);
903
- border-radius: 8px;
904
- background: rgba(139,92,246,0.04);
905
- font-size: 12px;
906
- line-height: 1.65;
907
- color: var(--text-muted);
908
- white-space: pre-wrap;
909
- font-family: var(--font-mono);
910
- }
911
-
912
- /* ── Tool call card ─────────────────────────────────────────────────── */
913
- .msg-tool-card {
914
- margin: 4px 0;
915
- border: 1px solid var(--glass-border);
916
- border-radius: 8px;
917
- overflow: hidden;
918
- background: rgba(255,255,255,0.02);
919
- }
920
-
921
- .tool-header {
922
- display: flex;
923
- align-items: center;
924
- gap: 8px;
925
- width: 100%;
926
- padding: 8px 12px;
927
- background: transparent;
928
- border: none;
929
- cursor: pointer;
930
- text-align: left;
931
- color: var(--text-muted);
932
- font-size: 12px;
933
- transition: background 0.2s;
934
- }
935
- .tool-header:hover { background: rgba(255,255,255,0.03); }
936
- .tool-icon { font-size: 13px; flex-shrink: 0; }
937
- .tool-name { flex: 1; font-family: var(--font-mono); font-size: 11px; color: var(--text); }
938
- .tool-chevron { font-size: 9px; color: var(--text-dim); }
939
-
940
- .tool-body {
941
- max-height: 0;
942
- overflow: hidden;
943
- transition: max-height 0.3s ease;
944
- border-top: 0 solid var(--glass-border);
945
- }
946
- .tool-body.tool-open { max-height: 320px; overflow-y: auto; border-top-width: 1px; }
947
-
948
- .tool-input {
949
- margin: 0;
950
- padding: 10px 14px;
951
- font-family: var(--font-mono);
952
- font-size: 11.5px;
953
- line-height: 1.5;
954
- color: var(--text-muted);
955
- white-space: pre-wrap;
956
- word-break: break-all;
957
- background: rgba(0,0,0,0.25);
958
- }
959
-
960
- /* ── Tool result ────────────────────────────────────────────────────── */
961
- .msg-tool-result {
962
- margin: 2px 0 6px;
963
- border: 1px solid rgba(52,211,153,0.14);
964
- border-radius: 8px;
965
- overflow: hidden;
966
- background: rgba(52,211,153,0.02);
967
- }
968
-
969
- .result-header {
970
- display: flex;
971
- align-items: center;
972
- gap: 8px;
973
- padding: 6px 12px;
974
- font-size: 11px;
975
- color: var(--text-dim);
976
- }
977
- .result-icon { color: var(--accent-green); font-size: 12px; }
978
- .result-label { font-family: var(--font-mono); letter-spacing: 0.06em; flex: 1; }
979
-
980
- .result-expand {
981
- font-family: var(--font-mono);
982
- font-size: 9px;
983
- background: transparent;
984
- border: 1px solid var(--glass-border);
985
- border-radius: 4px;
986
- color: var(--text-dim);
987
- cursor: pointer;
988
- padding: 2px 8px;
989
- transition: color 0.2s;
990
- }
991
- .result-expand:hover { color: var(--text); }
992
-
993
- .result-preview { max-height: 0; overflow: hidden; transition: max-height 0.3s ease; border-top: 0 solid rgba(52,211,153,0.14); }
994
- .result-open { max-height: 260px; overflow-y: auto; border-top-width: 1px; }
995
-
996
- .result-text {
997
- margin: 0;
998
- padding: 8px 14px;
999
- font-family: var(--font-mono);
1000
- font-size: 11.5px;
1001
- line-height: 1.5;
1002
- color: var(--text-muted);
1003
- white-space: pre-wrap;
1004
- word-break: break-all;
1005
- background: rgba(0,0,0,0.2);
1006
- }
1007
-
1008
- /* ── Message image ──────────────────────────────────────────────────── */
1009
- .msg-image img {
1010
- max-width: 100%;
1011
- border-radius: 8px;
1012
- border: 1px solid var(--glass-border);
1013
- margin: 4px 0;
1014
- }
1015
-
1016
- /* ── Copy button ────────────────────────────────────────────────────── */
1017
- .msg-copy-btn {
1018
- position: absolute;
1019
- top: 8px;
1020
- right: 8px;
1021
- background: rgba(255,255,255,0.06);
1022
- border: 1px solid var(--glass-border);
1023
- border-radius: 6px;
1024
- color: var(--text-dim);
1025
- cursor: pointer;
1026
- padding: 5px 6px;
1027
- opacity: 0;
1028
- transition: opacity 0.2s, color 0.2s, background 0.2s;
1029
- display: flex;
1030
- align-items: center;
1031
- line-height: 1;
1032
- }
1033
- .stream-bubble:hover .msg-copy-btn,
1034
- .msg-copy-visible { opacity: 1; }
1035
- .msg-copy-btn:hover { color: var(--text); background: rgba(255,255,255,0.1); }
1036
- .msg-copy-btn.copied { color: var(--accent-green); }
1037
-
1038
- /* ── Timestamp ──────────────────────────────────────────────────────── */
1039
- .msg-timestamp {
1040
- font-family: var(--font-mono);
1041
- font-size: 9.5px;
1042
- color: var(--text-dim);
1043
- margin-top: 10px;
1044
- letter-spacing: 0.05em;
1045
- }
1046
-
1047
-
1048
- /* ── Task lists ─────────────────────────────────────────────────────── */
1049
- .msg-text :where(li.task-item) {
1050
- list-style: none;
1051
- margin-left: -1.4em;
1052
- padding-left: 0.2em;
1053
- display: flex;
1054
- align-items: baseline;
1055
- gap: 7px;
1056
- }
1057
-
1058
- .task-cb {
1059
- appearance: none;
1060
- -webkit-appearance: none;
1061
- width: 14px;
1062
- height: 14px;
1063
- border: 1.5px solid var(--glass-border-strong);
1064
- border-radius: 3px;
1065
- background: transparent;
1066
- flex-shrink: 0;
1067
- position: relative;
1068
- top: 2px;
1069
- cursor: default;
1070
- }
1071
-
1072
- .task-cb:checked {
1073
- background: var(--accent-cyan);
1074
- border-color: var(--accent-cyan);
1075
- }
1076
-
1077
- .task-cb:checked::after {
1078
- content: '';
1079
- position: absolute;
1080
- top: 1px; left: 3px;
1081
- width: 5px; height: 8px;
1082
- border: 2px solid #000;
1083
- border-top: none;
1084
- border-left: none;
1085
- transform: rotate(45deg);
1086
- }
1087
-
1088
- .task-done > * { opacity: 0.55; }
1089
- .task-done .task-cb + span,
1090
- .task-done .task-cb ~ * { text-decoration: line-through; }
1091
-
1092
- /* ── Table overflow wrapper ──────────────────────────────────────────── */
1093
- .msg-text :where(table) {
1094
- display: block;
1095
- overflow-x: auto;
1096
- white-space: nowrap;
1097
- }
1098
- /* Allow cells to wrap when content isn't too wide */
1099
- .msg-text :where(th, td) {
1100
- white-space: normal;
1101
- min-width: 80px;
1102
- }
1103
-
1104
- /* ── Details / Summary (collapsible sections) ─────────────────────────── */
1105
- .msg-text :where(details) {
1106
- border: 1px solid var(--glass-border);
1107
- border-radius: 8px;
1108
- padding: 0;
1109
- margin: 0.6em 0;
1110
- overflow: hidden;
1111
- background: rgba(255,255,255,0.02);
1112
- }
1113
-
1114
- .msg-text :where(summary) {
1115
- padding: 8px 14px;
1116
- cursor: pointer;
1117
- font-weight: 600;
1118
- font-size: 13px;
1119
- color: var(--text-muted);
1120
- list-style: none;
1121
- display: flex;
1122
- align-items: center;
1123
- gap: 8px;
1124
- user-select: none;
1125
- transition: background 0.2s;
1126
- }
1127
- .msg-text :where(summary):hover { background: rgba(255,255,255,0.03); }
1128
- .msg-text :where(summary)::before {
1129
- content: '▸';
1130
- font-size: 9px;
1131
- color: var(--accent-cyan);
1132
- transition: transform 0.2s;
1133
- }
1134
- .msg-text :where(details[open] summary)::before {
1135
- transform: rotate(90deg);
1136
- }
1137
- .msg-text :where(details) > *:not(summary) {
1138
- padding: 0 14px 10px;
1139
- }
1140
-
1141
- /* ── Spacing improvements ────────────────────────────────────────────── */
1142
- .bubble-content + .bubble-content { margin-top: 0.5em; }
1143
-
1144
- .msg-text :where(h1 + p, h2 + p, h3 + p) { margin-top: 0.4em; }
1145
- .msg-text :where(p:last-child, ul:last-child, ol:last-child) { margin-bottom: 0; }
1146
-
1147
- /* Separator after heading when followed by block content */
1148
- .msg-text :where(h2, h3) {
1149
- padding-top: 0.3em;
1150
- }
1151
-
1152
- /* Better nested list indent */
1153
- .msg-text :where(ul ul, ol ol, ul ol, ol ul) {
1154
- margin-top: 0.25em;
1155
- margin-bottom: 0.25em;
1156
- padding-left: 1.2em;
1157
- }
1158
-
1159
- /* ── Keyboard shortcut styling ───────────────────────────────────────── */
1160
- .msg-text :where(kbd) {
1161
- font-family: var(--font-mono);
1162
- font-size: 0.8em;
1163
- background: rgba(255,255,255,0.1);
1164
- border: 1px solid rgba(255,255,255,0.2);
1165
- border-bottom: 2px solid rgba(255,255,255,0.15);
1166
- border-radius: 4px;
1167
- padding: 1px 5px;
1168
- color: var(--text);
1169
- }
1170
-
1171
- /* ── Abbr tooltip ────────────────────────────────────────────────────── */
1172
- .msg-text :where(abbr[title]) {
1173
- border-bottom: 1px dotted var(--text-muted);
1174
- cursor: help;
1175
- text-decoration: none;
1176
- }
1177
-
1178
- /* ── Scrollbar ────────────────────────────────────────────────────── */
1179
- .response-area::-webkit-scrollbar { display: none; }
1180
- .response-area { scrollbar-width: none; }
1181
-
1182
- /* ══════════════════════════════════════════════════════════════════════
1183
- COMMAND MENU SYSTEM
1184
- ══════════════════════════════════════════════════════════════════════ */
1185
-
1186
- /* ── Group accent colours ─────────────────────────────────────────── */
1187
- :root {
1188
- --cmd-chat: #00d4ff;
1189
- --cmd-control: #60a5fa;
1190
- --cmd-agent: #a78bfa;
1191
- --cmd-settings: #f59e0b;
1192
- --cmd-resources: #34d399;
1193
- }
1194
-
1195
- /* ── Menu Trigger Button ──────────────────────────────────────────── */
1196
- .menu-trigger {
1197
- position: fixed;
1198
- top: 20px;
1199
- left: 20px;
1200
- z-index: 50;
1201
- width: 38px;
1202
- height: 38px;
1203
- display: flex;
1204
- align-items: center;
1205
- justify-content: center;
1206
- background: var(--glass-bg);
1207
- backdrop-filter: var(--blur);
1208
- -webkit-backdrop-filter: var(--blur);
1209
- border: 1px solid var(--glass-border);
1210
- border-radius: 10px;
1211
- color: var(--text-muted);
1212
- cursor: pointer;
1213
- transition: color 0.2s, border-color 0.2s, box-shadow 0.2s, transform 0.2s;
1214
- }
1215
- .menu-trigger:hover {
1216
- color: var(--accent-cyan);
1217
- border-color: rgba(0,212,255,0.35);
1218
- box-shadow: 0 0 12px rgba(0,212,255,0.15);
1219
- }
1220
- .menu-trigger:active { transform: scale(0.93); }
1221
-
1222
- /* Icon swap: grid → close */
1223
- .menu-icon-close { display: none; }
1224
- .menu-trigger.menu-open .menu-icon-grid { display: none; }
1225
- .menu-trigger.menu-open .menu-icon-close { display: block; color: var(--accent-cyan); }
1226
- .menu-trigger.menu-open {
1227
- color: var(--accent-cyan);
1228
- border-color: rgba(0,212,255,0.4);
1229
- box-shadow: 0 0 16px rgba(0,212,255,0.2);
1230
- }
1231
-
1232
- /* ── Full-Screen Overlay ──────────────────────────────────────────── */
1233
- .cmd-overlay {
1234
- position: fixed;
1235
- inset: 0;
1236
- z-index: 40;
1237
- display: flex;
1238
- align-items: center;
1239
- justify-content: center;
1240
- /* Hidden state */
1241
- opacity: 0;
1242
- pointer-events: none;
1243
- transform: scale(0.97);
1244
- transition: opacity 0.28s ease, transform 0.28s ease;
1245
- }
1246
- .cmd-overlay.open {
1247
- opacity: 1;
1248
- pointer-events: auto;
1249
- transform: scale(1);
1250
- }
1251
-
1252
- /* Dark glass backdrop */
1253
- .cmd-backdrop {
1254
- position: absolute;
1255
- inset: 0;
1256
- background: rgba(6, 8, 14, 0.9);
1257
- backdrop-filter: blur(24px);
1258
- -webkit-backdrop-filter: blur(24px);
1259
- }
1260
-
1261
- /* Shell (content on top of backdrop) */
1262
- .cmd-shell {
1263
- position: relative;
1264
- z-index: 1;
1265
- width: 100%;
1266
- max-width: 1080px;
1267
- padding: 0 32px;
1268
- display: flex;
1269
- flex-direction: column;
1270
- gap: 24px;
1271
- }
1272
-
1273
- /* ── Header Bar ───────────────────────────────────────────────────── */
1274
- .cmd-header {
1275
- display: flex;
1276
- align-items: center;
1277
- justify-content: space-between;
1278
- padding-bottom: 16px;
1279
- border-bottom: 1px solid var(--glass-border);
1280
- }
1281
- .cmd-brand {
1282
- display: flex;
1283
- align-items: center;
1284
- gap: 10px;
1285
- }
1286
- .cmd-brand-glyph {
1287
- font-size: 22px;
1288
- color: var(--accent-cyan);
1289
- text-shadow: 0 0 12px var(--accent-cyan);
1290
- animation: aso-breathe 3s ease-in-out infinite;
1291
- }
1292
- .cmd-brand-name {
1293
- font-family: var(--font-mono);
1294
- font-size: 18px;
1295
- font-weight: 700;
1296
- color: var(--text);
1297
- letter-spacing: 0.15em;
1298
- }
1299
- .cmd-brand-sep {
1300
- font-size: 16px;
1301
- color: var(--text-dim);
1302
- margin: 0 2px;
1303
- }
1304
- .cmd-brand-sub {
1305
- font-family: var(--font-mono);
1306
- font-size: 11px;
1307
- color: var(--text-dim);
1308
- letter-spacing: 0.22em;
1309
- padding-top: 2px;
1310
- }
1311
- .cmd-esc-hint {
1312
- font-size: 11px;
1313
- color: var(--text-dim);
1314
- display: flex;
1315
- align-items: center;
1316
- gap: 5px;
1317
- }
1318
- .cmd-kbd {
1319
- font-family: var(--font-mono);
1320
- font-size: 10px;
1321
- padding: 2px 6px;
1322
- background: rgba(255,255,255,0.07);
1323
- border: 1px solid rgba(255,255,255,0.12);
1324
- border-radius: 4px;
1325
- color: var(--text-muted);
1326
- }
1327
-
1328
- /* ── Command Grid ─────────────────────────────────────────────────── */
1329
- .cmd-grid {
1330
- display: grid;
1331
- grid-template-columns: 200px 1fr 200px;
1332
- grid-template-rows: auto auto;
1333
- gap: 14px;
1334
- width: 100%;
1335
- }
1336
-
1337
- .cmd-group--chat { grid-column: 1; grid-row: 1 / 3; }
1338
- .cmd-group--control { grid-column: 2; grid-row: 1; }
1339
- .cmd-group--agent { grid-column: 3; grid-row: 1; }
1340
- .cmd-group--settings { grid-column: 2; grid-row: 2; }
1341
- .cmd-group--resources { grid-column: 3; grid-row: 2; }
1342
-
1343
- /* ── Group Card ───────────────────────────────────────────────────── */
1344
- .cmd-group {
1345
- background: var(--glass-bg);
1346
- border: 1px solid var(--glass-border);
1347
- border-radius: 16px;
1348
- padding: 18px;
1349
- display: flex;
1350
- flex-direction: column;
1351
- gap: 14px;
1352
- /* Stagger-reveal when overlay opens */
1353
- opacity: 0;
1354
- transform: translateY(14px);
1355
- transition: border-color 0.25s, box-shadow 0.25s;
1356
- }
1357
- .cmd-overlay.open .cmd-group {
1358
- animation: cmd-card-in 0.32s ease forwards;
1359
- }
1360
- .cmd-overlay.open .cmd-group:nth-child(1) { animation-delay: 30ms; }
1361
- .cmd-overlay.open .cmd-group:nth-child(2) { animation-delay: 80ms; }
1362
- .cmd-overlay.open .cmd-group:nth-child(3) { animation-delay: 130ms; }
1363
- .cmd-overlay.open .cmd-group:nth-child(4) { animation-delay: 180ms; }
1364
- .cmd-overlay.open .cmd-group:nth-child(5) { animation-delay: 230ms; }
1365
-
1366
- @keyframes cmd-card-in {
1367
- from { opacity: 0; transform: translateY(14px); }
1368
- to { opacity: 1; transform: translateY(0); }
1369
- }
1370
-
1371
- /* Per-group accent borders & hover glow */
1372
- .cmd-group--chat:hover { border-color: rgba(0,212,255,0.35); box-shadow: 0 0 20px rgba(0,212,255,0.06); }
1373
- .cmd-group--control:hover { border-color: rgba(96,165,250,0.35); box-shadow: 0 0 20px rgba(96,165,250,0.06); }
1374
- .cmd-group--agent:hover { border-color: rgba(167,139,250,0.35); box-shadow: 0 0 20px rgba(167,139,250,0.06); }
1375
- .cmd-group--settings:hover { border-color: rgba(245,158,11,0.35); box-shadow: 0 0 20px rgba(245,158,11,0.06); }
1376
- .cmd-group--resources:hover { border-color: rgba(52,211,153,0.35); box-shadow: 0 0 20px rgba(52,211,153,0.06); }
1377
-
1378
- /* ── Group Header ─────────────────────────────────────────────────── */
1379
- .cmd-group-hd {
1380
- display: flex;
1381
- align-items: center;
1382
- gap: 9px;
1383
- padding-bottom: 10px;
1384
- border-bottom: 1px solid var(--glass-border);
1385
- }
1386
- .cmd-group-svg {
1387
- width: 16px;
1388
- height: 16px;
1389
- flex-shrink: 0;
1390
- }
1391
- .cmd-group-label {
1392
- font-family: var(--font-mono);
1393
- font-size: 10px;
1394
- font-weight: 700;
1395
- letter-spacing: 0.2em;
1396
- }
1397
-
1398
- /* Accent colours on group labels and icons */
1399
- .cmd-group--chat .cmd-group-hd { color: var(--cmd-chat); }
1400
- .cmd-group--control .cmd-group-hd { color: var(--cmd-control); }
1401
- .cmd-group--agent .cmd-group-hd { color: var(--cmd-agent); }
1402
- .cmd-group--settings .cmd-group-hd { color: var(--cmd-settings); }
1403
- .cmd-group--resources .cmd-group-hd { color: var(--cmd-resources); }
1404
-
1405
- /* ── Items List ───────────────────────────────────────────────────── */
1406
- .cmd-items {
1407
- display: flex;
1408
- flex-direction: column;
1409
- gap: 6px;
1410
- flex: 1;
1411
- }
1412
-
1413
- /* 3-column sub-grid for CONTROL (6 items) */
1414
- .cmd-items--grid {
1415
- display: grid;
1416
- grid-template-columns: 1fr 1fr 1fr;
1417
- gap: 8px;
1418
- }
1419
-
1420
- /* ── Individual Item ──────────────────────────────────────────────── */
1421
- .cmd-item {
1422
- display: flex;
1423
- align-items: center;
1424
- gap: 10px;
1425
- padding: 10px 12px;
1426
- border-radius: 10px;
1427
- border: 1px solid transparent;
1428
- background: rgba(255,255,255,0.025);
1429
- text-decoration: none;
1430
- cursor: pointer;
1431
- transition: background 0.18s, border-color 0.18s, transform 0.15s;
1432
- }
1433
- .cmd-item:hover {
1434
- background: rgba(255,255,255,0.06);
1435
- transform: translateY(-1px);
1436
- }
1437
- /* Per-group item hover accent */
1438
- .cmd-group--chat .cmd-item:hover { border-color: rgba(0,212,255,0.3); }
1439
- .cmd-group--control .cmd-item:hover { border-color: rgba(96,165,250,0.3); }
1440
- .cmd-group--agent .cmd-item:hover { border-color: rgba(167,139,250,0.3); }
1441
- .cmd-group--settings .cmd-item:hover { border-color: rgba(245,158,11,0.3); }
1442
- .cmd-group--resources .cmd-item:hover { border-color: rgba(52,211,153,0.3); }
1443
-
1444
- .cmd-item-icon {
1445
- font-size: 16px;
1446
- flex-shrink: 0;
1447
- width: 20px;
1448
- text-align: center;
1449
- opacity: 0.7;
1450
- }
1451
- .cmd-group--chat .cmd-item-icon { color: var(--cmd-chat); }
1452
- .cmd-group--control .cmd-item-icon { color: var(--cmd-control); }
1453
- .cmd-group--agent .cmd-item-icon { color: var(--cmd-agent); }
1454
- .cmd-group--settings .cmd-item-icon { color: var(--cmd-settings); }
1455
- .cmd-group--resources .cmd-item-icon { color: var(--cmd-resources); }
1456
-
1457
- .cmd-item-body {
1458
- display: flex;
1459
- flex-direction: column;
1460
- gap: 2px;
1461
- min-width: 0;
1462
- flex: 1;
1463
- }
1464
- .cmd-item-name {
1465
- font-family: var(--font-mono);
1466
- font-size: 12px;
1467
- font-weight: 600;
1468
- color: var(--text);
1469
- white-space: nowrap;
1470
- overflow: hidden;
1471
- text-overflow: ellipsis;
1472
- }
1473
- .cmd-item-desc {
1474
- font-size: 10px;
1475
- color: var(--text-dim);
1476
- white-space: nowrap;
1477
- overflow: hidden;
1478
- text-overflow: ellipsis;
1479
- }
1480
- .cmd-item-badge {
1481
- font-family: var(--font-mono);
1482
- font-size: 8px;
1483
- font-weight: 700;
1484
- letter-spacing: 0.1em;
1485
- padding: 2px 6px;
1486
- border-radius: 99px;
1487
- background: rgba(0,212,255,0.12);
1488
- color: var(--accent-cyan);
1489
- border: 1px solid rgba(0,212,255,0.25);
1490
- flex-shrink: 0;
1491
- }
1492
-
1493
- /* ── History button ─────────────────────────────────────────────────── */
1494
- .history-btn {
1495
- display: flex; align-items: center; gap: 5px;
1496
- padding: 5px 11px;
1497
- height: 28px;
1498
- background: rgba(139,92,246,0.08);
1499
- border: 1px solid rgba(139,92,246,0.2);
1500
- border-radius: 8px;
1501
- color: rgba(139,92,246,0.85);
1502
- font-size: 10px; font-family: var(--font-mono); letter-spacing: 0.08em; font-weight: 600;
1503
- cursor: pointer; transition: all 0.2s; white-space: nowrap; flex-shrink: 0;
1504
- }
1505
- .history-btn:hover {
1506
- background: rgba(139,92,246,0.16);
1507
- border-color: rgba(139,92,246,0.4);
1508
- box-shadow: 0 0 12px rgba(139,92,246,0.12);
1509
- }
1510
- .history-btn-label { font-size: 10px; }
1511
-
1512
- /* ── History overlay + drawer ───────────────────────────────────────── */
1513
- .history-overlay {
1514
- position: fixed; inset: 0; z-index: 1100;
1515
- background: rgba(0,0,0,0.55);
1516
- backdrop-filter: blur(4px);
1517
- opacity: 0; pointer-events: none;
1518
- transition: opacity 0.25s ease;
1519
- }
1520
- .history-overlay.open { opacity: 1; pointer-events: auto; }
1521
-
1522
- .history-drawer {
1523
- position: fixed; top: 0; right: -440px; height: 100vh; width: 420px;
1524
- z-index: 1101;
1525
- background: rgba(10,12,20,0.97);
1526
- border-left: 1px solid rgba(139,92,246,0.25);
1527
- box-shadow: -20px 0 60px rgba(0,0,0,0.6);
1528
- display: flex; flex-direction: column;
1529
- transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1530
- }
1531
- .history-drawer.open { right: 0; }
1532
-
1533
- .history-drawer-header {
1534
- display: flex; align-items: center; justify-content: space-between;
1535
- padding: 16px 18px 14px;
1536
- border-bottom: 1px solid rgba(139,92,246,0.15);
1537
- flex-shrink: 0;
1538
- }
1539
- .history-drawer-title {
1540
- display: flex; align-items: center; gap: 7px;
1541
- font-family: var(--font-mono); font-size: 11px; font-weight: 700;
1542
- letter-spacing: 0.14em; color: rgba(139,92,246,0.9);
1543
- }
1544
- .history-close-btn {
1545
- background: none; border: none; color: var(--text-dim);
1546
- font-size: 13px; cursor: pointer; padding: 4px 6px; border-radius: 4px;
1547
- transition: color 0.15s, background 0.15s;
1548
- }
1549
- .history-close-btn:hover { color: var(--text-primary); background: rgba(255,255,255,0.06); }
1550
-
1551
- .history-drawer-body {
1552
- flex: 1; overflow-y: auto; padding: 12px 0;
1553
- }
1554
- .history-drawer-body::-webkit-scrollbar { width: 4px; }
1555
- .history-drawer-body::-webkit-scrollbar-track { background: transparent; }
1556
- .history-drawer-body::-webkit-scrollbar-thumb { background: rgba(139,92,246,0.3); border-radius: 2px; }
1557
-
1558
- .history-loading {
1559
- padding: 24px 18px;
1560
- color: var(--text-dim);
1561
- font-size: 12px; font-family: var(--font-mono);
1562
- text-align: center;
1563
- }
1564
-
1565
- /* ── Session list items ─────────────────────────────────────────────── */
1566
- .history-session-item {
1567
- padding: 12px 18px;
1568
- cursor: pointer;
1569
- border-bottom: 1px solid rgba(255,255,255,0.04);
1570
- transition: background 0.15s;
1571
- position: relative;
1572
- }
1573
- .history-session-item:hover { background: rgba(139,92,246,0.07); }
1574
- .history-session-item:last-child { border-bottom: none; }
1575
-
1576
- .history-session-meta {
1577
- display: flex; align-items: center; justify-content: space-between;
1578
- margin-bottom: 5px;
1579
- }
1580
- .history-session-date {
1581
- font-family: var(--font-mono); font-size: 10px; font-weight: 600;
1582
- color: rgba(139,92,246,0.8); letter-spacing: 0.06em;
1583
- }
1584
- .history-session-count {
1585
- font-family: var(--font-mono); font-size: 9px;
1586
- color: var(--text-dim); letter-spacing: 0.05em;
1587
- }
1588
- .history-session-preview {
1589
- font-size: 12px; color: var(--text-secondary);
1590
- white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
1591
- line-height: 1.4;
1592
- }
1593
- .history-session-badge {
1594
- display: inline-block; margin-bottom: 4px;
1595
- font-family: var(--font-mono); font-size: 9px; font-weight: 700;
1596
- letter-spacing: 0.1em; padding: 2px 6px; border-radius: 99px;
1597
- }
1598
- .history-session-badge.live {
1599
- background: rgba(0,212,255,0.12); color: var(--accent-cyan);
1600
- border: 1px solid rgba(0,212,255,0.25);
1601
- }
1602
- .history-session-badge.archived {
1603
- background: rgba(139,92,246,0.1); color: rgba(139,92,246,0.7);
1604
- border: 1px solid rgba(139,92,246,0.2);
1605
- }
1606
-
1607
- /* ── Archive viewer banner ──────────────────────────────────────────── */
1608
- .archive-banner {
1609
- display: flex; align-items: center; justify-content: space-between;
1610
- padding: 10px 14px; margin: 0 0 8px;
1611
- background: rgba(139,92,246,0.1);
1612
- border-bottom: 1px solid rgba(139,92,246,0.2);
1613
- flex-shrink: 0;
1614
- }
1615
- .archive-banner-label {
1616
- font-family: var(--font-mono); font-size: 10px;
1617
- color: rgba(139,92,246,0.8); letter-spacing: 0.08em;
1618
- }
1619
- .archive-banner-back {
1620
- font-family: var(--font-mono); font-size: 10px; font-weight: 600;
1621
- color: rgba(139,92,246,0.9); cursor: pointer;
1622
- background: none; border: none; padding: 3px 8px;
1623
- border: 1px solid rgba(139,92,246,0.3); border-radius: 6px;
1624
- transition: all 0.15s;
1625
- }
1626
- .archive-banner-back:hover { background: rgba(139,92,246,0.15); }
1627
-
1628
- .history-transcript {
1629
- flex: 1; overflow-y: auto; padding: 8px 12px;
1630
- }
1631
- .history-transcript::-webkit-scrollbar { width: 4px; }
1632
- .history-transcript::-webkit-scrollbar-thumb { background: rgba(139,92,246,0.3); border-radius: 2px; }
1633
-
1634
- .history-msg {
1635
- margin-bottom: 12px; font-size: 12.5px; line-height: 1.5;
1636
- }
1637
- .history-msg-role {
1638
- font-family: var(--font-mono); font-size: 9px; font-weight: 700;
1639
- letter-spacing: 0.1em; margin-bottom: 3px;
1640
- }
1641
- .history-msg-role.user { color: var(--accent-cyan); }
1642
- .history-msg-role.assistant { color: rgba(139,92,246,0.8); }
1643
- .history-msg-text {
1644
- color: var(--text-secondary); padding: 6px 10px;
1645
- background: rgba(255,255,255,0.025);
1646
- border-radius: 6px; border-left: 2px solid rgba(255,255,255,0.08);
1647
- white-space: pre-wrap; word-break: break-word;
1648
- }
1649
- .history-msg.assistant .history-msg-text {
1650
- border-left-color: rgba(139,92,246,0.3);
1651
- }
1652
- .history-msg.user .history-msg-text {
1653
- border-left-color: rgba(0,212,255,0.25);
1654
- }
1655
-
1656
- .history-empty {
1657
- padding: 32px 18px; text-align: center;
1658
- color: var(--text-dim); font-size: 12px; font-family: var(--font-mono);
1659
- }
1660
-
1661
- /* ── Archive toast ──────────────────────────────────────────────────── */
1662
- .session-archive-toast {
1663
- position: fixed; bottom: 80px; left: 50%; transform: translateX(-50%) translateY(20px);
1664
- z-index: 1200;
1665
- display: flex; align-items: center; gap: 7px;
1666
- padding: 8px 16px;
1667
- background: rgba(15,17,28,0.95);
1668
- border: 1px solid rgba(139,92,246,0.35);
1669
- border-radius: 99px;
1670
- font-size: 11.5px; font-family: var(--font-mono); color: var(--text-secondary);
1671
- box-shadow: 0 4px 24px rgba(0,0,0,0.5), 0 0 20px rgba(139,92,246,0.08);
1672
- opacity: 0; pointer-events: none;
1673
- transition: opacity 0.25s ease, transform 0.25s ease;
1674
- white-space: nowrap;
1675
- }
1676
- .session-archive-toast.show {
1677
- opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0);
1678
- }
1679
- #session-archive-link {
1680
- color: rgba(139,92,246,0.9); cursor: pointer; font-weight: 600;
1681
- text-decoration: underline; text-underline-offset: 2px;
1682
- }
1683
- #session-archive-link:hover { color: rgba(139,92,246,1); }
1684
-
1685
- /* ── Queue button ───────────────────────────────────────────────────── */
1686
- .queue-btn {
1687
- display: none; /* hidden until streaming starts */
1688
- align-items: center;
1689
- gap: 5px;
1690
- padding: 0 11px;
1691
- height: 28px;
1692
- background: rgba(0,212,255,0.08);
1693
- border: 1px solid rgba(0,212,255,0.2);
1694
- border-radius: 8px;
1695
- color: rgba(0,212,255,0.8);
1696
- font-size: 10px; font-family: var(--font-mono); letter-spacing: 0.08em; font-weight: 600;
1697
- cursor: pointer; flex-shrink: 0;
1698
- transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
1699
- white-space: nowrap;
1700
- }
1701
- .queue-btn.visible { display: flex; }
1702
- .queue-btn:hover {
1703
- background: rgba(0,212,255,0.15);
1704
- border-color: rgba(0,212,255,0.4);
1705
- box-shadow: 0 0 12px rgba(0,212,255,0.12);
1706
- }
1707
-
1708
- /* Active state — item is queued */
1709
- .queue-btn.has-queue {
1710
- background: rgba(0,212,255,0.14);
1711
- border-color: rgba(0,212,255,0.45);
1712
- color: var(--accent-cyan);
1713
- box-shadow: 0 0 14px rgba(0,212,255,0.1);
1714
- }
1715
-
1716
- .queue-cancel-x {
1717
- display: none;
1718
- margin-left: 2px;
1719
- font-size: 10px;
1720
- opacity: 0.6;
1721
- line-height: 1;
1722
- padding: 1px 3px;
1723
- border-radius: 3px;
1724
- transition: opacity 0.15s, background 0.15s;
1725
- }
1726
- .queue-btn.has-queue .queue-cancel-x { display: inline; }
1727
- .queue-cancel-x:hover { opacity: 1; background: rgba(255,255,255,0.1); }
1728
-
1729
- /* ── Stop button ────────────────────────────────────────────────────── */
1730
- .stop-btn {
1731
- display: none; /* hidden until streaming starts */
1732
- align-items: center;
1733
- gap: 5px;
1734
- padding: 0 11px;
1735
- height: 28px;
1736
- background: rgba(239,68,68,0.08);
1737
- border: 1px solid rgba(239,68,68,0.22);
1738
- border-radius: 8px;
1739
- color: rgba(239,68,68,0.85);
1740
- font-size: 10px; font-family: var(--font-mono); letter-spacing: 0.08em; font-weight: 600;
1741
- cursor: pointer; flex-shrink: 0;
1742
- transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
1743
- white-space: nowrap;
1744
- }
1745
- .stop-btn.visible { display: flex; }
1746
- .stop-btn:hover {
1747
- background: rgba(239,68,68,0.18);
1748
- border-color: rgba(239,68,68,0.5);
1749
- box-shadow: 0 0 14px rgba(239,68,68,0.14);
1750
- color: rgba(239,68,68,1);
1751
- }
1752
- .stop-btn-label { font-size: 10px; }
1753
-
1754
- /* ── Page Navigation Overlay ────────────────────────────────────────── */
1755
- .page-overlay {
1756
- position: fixed;
1757
- inset: 0;
1758
- z-index: 1050;
1759
- display: flex;
1760
- flex-direction: column;
1761
- background: rgba(8, 10, 18, 0.98);
1762
- backdrop-filter: blur(24px);
1763
- opacity: 0;
1764
- pointer-events: none;
1765
- transform: translateY(12px);
1766
- transition: opacity 0.22s ease, transform 0.22s ease;
1767
- }
1768
- .page-overlay.open {
1769
- opacity: 1;
1770
- pointer-events: auto;
1771
- transform: translateY(0);
1772
- }
1773
-
1774
- .page-overlay-header {
1775
- display: flex;
1776
- align-items: center;
1777
- gap: 12px;
1778
- padding: 10px 16px;
1779
- border-bottom: 1px solid rgba(139,92,246,0.18);
1780
- background: rgba(10,12,20,0.95);
1781
- flex-shrink: 0;
1782
- height: 46px;
1783
- }
1784
-
1785
- .page-back-btn {
1786
- display: flex; align-items: center; gap: 6px;
1787
- padding: 5px 12px; height: 28px;
1788
- background: rgba(139,92,246,0.1);
1789
- border: 1px solid rgba(139,92,246,0.25);
1790
- border-radius: 8px;
1791
- color: rgba(139,92,246,0.9);
1792
- font-size: 11px; font-family: var(--font-mono); font-weight: 600; letter-spacing: 0.07em;
1793
- cursor: pointer; white-space: nowrap; flex-shrink: 0;
1794
- transition: all 0.15s;
1795
- }
1796
- .page-back-btn:hover {
1797
- background: rgba(139,92,246,0.2);
1798
- border-color: rgba(139,92,246,0.45);
1799
- }
1800
-
1801
- .page-overlay-title {
1802
- flex: 1;
1803
- font-family: var(--font-mono);
1804
- font-size: 11px; font-weight: 700; letter-spacing: 0.14em;
1805
- color: rgba(255,255,255,0.6);
1806
- text-align: center;
1807
- }
1808
-
1809
- .page-popout-btn {
1810
- display: flex; align-items: center; gap: 5px;
1811
- padding: 5px 11px; height: 28px;
1812
- background: rgba(0,212,255,0.06);
1813
- border: 1px solid rgba(0,212,255,0.15);
1814
- border-radius: 8px;
1815
- color: rgba(0,212,255,0.6);
1816
- font-size: 10px; font-family: var(--font-mono); letter-spacing: 0.07em;
1817
- cursor: pointer; text-decoration: none; flex-shrink: 0;
1818
- transition: all 0.15s;
1819
- }
1820
- .page-popout-btn:hover {
1821
- background: rgba(0,212,255,0.12);
1822
- border-color: rgba(0,212,255,0.35);
1823
- color: rgba(0,212,255,0.9);
1824
- }
1825
-
1826
- .page-overlay-frame {
1827
- flex: 1;
1828
- border: none;
1829
- width: 100%;
1830
- background: transparent;
1831
- }
1832
-
1833
- /* ══════════════════════════════════════════════════════════════════════════
1834
- CONNECTIONS PANEL
1835
- ══════════════════════════════════════════════════════════════════════════ */
1836
-
1837
- .connections-panel {
1838
- display: flex;
1839
- flex-direction: column;
1840
- gap: 8px;
1841
- }
1842
-
1843
- .conn-btn {
1844
- position: relative;
1845
- display: flex;
1846
- align-items: center;
1847
- gap: 12px;
1848
- width: 100%;
1849
- padding: 10px 12px;
1850
- background: rgba(255,255,255,0.02);
1851
- border: 1px solid rgba(255,255,255,0.06);
1852
- border-radius: 10px;
1853
- cursor: pointer;
1854
- transition: all 0.25s ease;
1855
- text-align: left;
1856
- color: var(--text);
1857
- font-family: inherit;
1858
- }
1859
- .conn-btn:hover {
1860
- background: rgba(255,255,255,0.05);
1861
- border-color: rgba(255,255,255,0.12);
1862
- transform: translateX(2px);
1863
- }
1864
- .conn-btn:active {
1865
- transform: translateX(2px) scale(0.99);
1866
- }
1867
-
1868
- .conn-btn[data-state="connected"] {
1869
- border-color: rgba(52, 211, 153, 0.25);
1870
- background: rgba(52, 211, 153, 0.04);
1871
- }
1872
- .conn-btn[data-state="connected"]:hover {
1873
- border-color: rgba(52, 211, 153, 0.4);
1874
- background: rgba(52, 211, 153, 0.08);
1875
- }
1876
- .conn-btn[data-state="error"] {
1877
- border-color: rgba(248, 113, 113, 0.25);
1878
- background: rgba(248, 113, 113, 0.04);
1879
- }
1880
- .conn-btn[data-state="pending"] {
1881
- border-color: rgba(251, 191, 36, 0.25);
1882
- background: rgba(251, 191, 36, 0.04);
1883
- }
1884
-
1885
- .conn-icon {
1886
- flex-shrink: 0;
1887
- width: 32px;
1888
- height: 32px;
1889
- border-radius: 8px;
1890
- display: flex;
1891
- align-items: center;
1892
- justify-content: center;
1893
- transition: all 0.25s ease;
1894
- }
1895
- .conn-icon svg {
1896
- width: 18px;
1897
- height: 18px;
1898
- }
1899
-
1900
- .conn-icon-slack {
1901
- background: linear-gradient(135deg, rgba(74, 21, 75, 0.3), rgba(54, 197, 171, 0.2));
1902
- border: 1px solid rgba(224, 30, 90, 0.2);
1903
- color: #E01E5A;
1904
- }
1905
- .conn-btn[data-state="connected"] .conn-icon-slack {
1906
- box-shadow: 0 0 12px rgba(224, 30, 90, 0.2);
1907
- }
1908
-
1909
- .conn-icon-email {
1910
- background: linear-gradient(135deg, rgba(96, 165, 250, 0.2), rgba(139, 92, 246, 0.2));
1911
- border: 1px solid rgba(96, 165, 250, 0.2);
1912
- color: var(--accent-blue);
1913
- }
1914
- .conn-btn[data-state="connected"] .conn-icon-email {
1915
- box-shadow: 0 0 12px rgba(96, 165, 250, 0.2);
1916
- }
1917
-
1918
- .conn-icon-teams {
1919
- background: linear-gradient(135deg, rgba(98, 100, 167, 0.3), rgba(139, 92, 246, 0.2));
1920
- border: 1px solid rgba(98, 100, 167, 0.25);
1921
- color: #6264A7;
1922
- }
1923
- .conn-btn[data-state="connected"] .conn-icon-teams {
1924
- box-shadow: 0 0 12px rgba(98, 100, 167, 0.2);
1925
- }
1926
-
1927
- .conn-info {
1928
- flex: 1;
1929
- min-width: 0;
1930
- display: flex;
1931
- flex-direction: column;
1932
- gap: 2px;
1933
- }
1934
- .conn-name {
1935
- font-size: 12px;
1936
- font-weight: 600;
1937
- color: var(--text);
1938
- letter-spacing: 0.02em;
1939
- }
1940
- .conn-btn-status {
1941
- font-size: 10px;
1942
- font-family: var(--font-mono);
1943
- font-weight: 500;
1944
- color: var(--text-muted);
1945
- letter-spacing: 0.03em;
1946
- }
1947
- .conn-btn[data-state="connected"] .conn-btn-status {
1948
- color: var(--accent-green);
1949
- }
1950
- .conn-btn[data-state="error"] .conn-btn-status {
1951
- color: #f87171;
1952
- }
1953
- .conn-btn[data-state="pending"] .conn-btn-status {
1954
- color: #fbbf24;
1955
- }
1956
-
1957
- .conn-state {
1958
- flex-shrink: 0;
1959
- width: 24px;
1960
- display: flex;
1961
- align-items: center;
1962
- justify-content: center;
1963
- }
1964
- .conn-state .conn-dot {
1965
- width: 8px;
1966
- height: 8px;
1967
- border-radius: 50%;
1968
- background: var(--text-dim);
1969
- transition: all 0.3s ease;
1970
- }
1971
- .conn-btn[data-state="connected"] .conn-state .conn-dot {
1972
- background: var(--accent-green);
1973
- box-shadow: 0 0 8px rgba(52, 211, 153, 0.5);
1974
- animation: conn-pulse 2s ease-in-out infinite;
1975
- }
1976
- .conn-btn[data-state="error"] .conn-state .conn-dot {
1977
- background: #f87171;
1978
- box-shadow: 0 0 8px rgba(248, 113, 113, 0.4);
1979
- }
1980
- .conn-btn[data-state="pending"] .conn-state .conn-dot {
1981
- background: #fbbf24;
1982
- animation: conn-blink 1s ease-in-out infinite;
1983
- }
1984
-
1985
- @keyframes conn-pulse {
1986
- 0%, 100% { opacity: 1; transform: scale(1); }
1987
- 50% { opacity: 0.7; transform: scale(0.9); }
1988
- }
1989
- @keyframes conn-blink {
1990
- 0%, 100% { opacity: 1; }
1991
- 50% { opacity: 0.4; }
1992
- }
1993
-
1994
- .conn-notif {
1995
- position: absolute;
1996
- top: -4px;
1997
- right: -4px;
1998
- min-width: 18px;
1999
- height: 18px;
2000
- padding: 0 5px;
2001
- background: linear-gradient(135deg, #f43f5e, #ec4899);
2002
- border-radius: 9px;
2003
- font-size: 10px;
2004
- font-weight: 700;
2005
- color: white;
2006
- display: none;
2007
- align-items: center;
2008
- justify-content: center;
2009
- box-shadow: 0 2px 8px rgba(244, 63, 94, 0.4);
2010
- animation: notif-bounce 0.4s ease;
2011
- }
2012
- .conn-notif:not(:empty) {
2013
- display: flex;
2014
- }
2015
- @keyframes notif-bounce {
2016
- 0% { transform: scale(0); }
2017
- 50% { transform: scale(1.2); }
2018
- 100% { transform: scale(1); }
2019
- }
2020
-
2021
- /* ── Connection Modal ────────────────────────────────────────────────── */
2022
- .conn-modal-overlay {
2023
- position: fixed;
2024
- inset: 0;
2025
- z-index: 9000;
2026
- display: flex;
2027
- align-items: center;
2028
- justify-content: center;
2029
- background: rgba(0, 0, 0, 0.7);
2030
- backdrop-filter: blur(8px);
2031
- opacity: 0;
2032
- visibility: hidden;
2033
- transition: opacity 0.25s ease, visibility 0.25s ease;
2034
- }
2035
- .conn-modal-overlay.open {
2036
- opacity: 1;
2037
- visibility: visible;
2038
- }
2039
-
2040
- .conn-modal {
2041
- position: relative;
2042
- width: 90%;
2043
- max-width: 420px;
2044
- background: linear-gradient(135deg, rgba(15, 15, 25, 0.98), rgba(10, 10, 18, 0.98));
2045
- border: 1px solid rgba(255, 255, 255, 0.1);
2046
- border-radius: 16px;
2047
- box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6), 0 0 1px rgba(255, 255, 255, 0.1);
2048
- transform: scale(0.95) translateY(10px);
2049
- transition: transform 0.25s ease;
2050
- overflow: hidden;
2051
- }
2052
- .conn-modal-overlay.open .conn-modal {
2053
- transform: scale(1) translateY(0);
2054
- }
2055
-
2056
- .conn-modal-header {
2057
- display: flex;
2058
- align-items: center;
2059
- gap: 14px;
2060
- padding: 20px 20px 16px;
2061
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
2062
- }
2063
- .conn-modal-icon {
2064
- width: 44px;
2065
- height: 44px;
2066
- border-radius: 12px;
2067
- display: flex;
2068
- align-items: center;
2069
- justify-content: center;
2070
- }
2071
- .conn-modal-icon svg {
2072
- width: 24px;
2073
- height: 24px;
2074
- }
2075
- .conn-modal-icon.slack {
2076
- background: linear-gradient(135deg, rgba(74, 21, 75, 0.4), rgba(54, 197, 171, 0.3));
2077
- border: 1px solid rgba(224, 30, 90, 0.3);
2078
- color: #E01E5A;
2079
- }
2080
- .conn-modal-icon.email {
2081
- background: linear-gradient(135deg, rgba(96, 165, 250, 0.3), rgba(139, 92, 246, 0.3));
2082
- border: 1px solid rgba(96, 165, 250, 0.3);
2083
- color: var(--accent-blue);
2084
- }
2085
- .conn-modal-icon.msteams {
2086
- background: linear-gradient(135deg, rgba(98, 100, 167, 0.4), rgba(139, 92, 246, 0.3));
2087
- border: 1px solid rgba(98, 100, 167, 0.35);
2088
- color: #6264A7;
2089
- }
2090
- .conn-modal-title {
2091
- flex: 1;
2092
- font-size: 18px;
2093
- font-weight: 600;
2094
- color: var(--text);
2095
- letter-spacing: 0.02em;
2096
- }
2097
- .conn-modal-close {
2098
- width: 32px;
2099
- height: 32px;
2100
- border: none;
2101
- background: rgba(255, 255, 255, 0.05);
2102
- border-radius: 8px;
2103
- color: var(--text-muted);
2104
- cursor: pointer;
2105
- display: flex;
2106
- align-items: center;
2107
- justify-content: center;
2108
- transition: all 0.2s ease;
2109
- }
2110
- .conn-modal-close:hover {
2111
- background: rgba(255, 255, 255, 0.1);
2112
- color: var(--text);
2113
- }
2114
- .conn-modal-body {
2115
- padding: 20px;
2116
- }
2117
- .conn-modal-status {
2118
- display: flex;
2119
- align-items: center;
2120
- gap: 12px;
2121
- padding: 14px 16px;
2122
- background: rgba(255, 255, 255, 0.03);
2123
- border: 1px solid rgba(255, 255, 255, 0.06);
2124
- border-radius: 10px;
2125
- margin-bottom: 16px;
2126
- }
2127
- .conn-modal-status-dot {
2128
- width: 10px;
2129
- height: 10px;
2130
- border-radius: 50%;
2131
- background: var(--text-dim);
2132
- }
2133
- .conn-modal-status.connected .conn-modal-status-dot {
2134
- background: var(--accent-green);
2135
- box-shadow: 0 0 10px rgba(52, 211, 153, 0.5);
2136
- }
2137
- .conn-modal-status.disconnected .conn-modal-status-dot {
2138
- background: var(--text-dim);
2139
- }
2140
- .conn-modal-status-text {
2141
- flex: 1;
2142
- font-size: 13px;
2143
- color: var(--text);
2144
- }
2145
- .conn-modal-status-badge {
2146
- font-size: 10px;
2147
- font-family: var(--font-mono);
2148
- font-weight: 600;
2149
- padding: 4px 10px;
2150
- border-radius: 20px;
2151
- letter-spacing: 0.08em;
2152
- }
2153
- .conn-modal-status.connected .conn-modal-status-badge {
2154
- background: rgba(52, 211, 153, 0.15);
2155
- color: var(--accent-green);
2156
- }
2157
- .conn-modal-status.disconnected .conn-modal-status-badge {
2158
- background: rgba(255, 255, 255, 0.08);
2159
- color: var(--text-muted);
2160
- }
2161
- .conn-modal-info {
2162
- font-size: 13px;
2163
- line-height: 1.6;
2164
- color: var(--text-muted);
2165
- margin-bottom: 16px;
2166
- }
2167
- .conn-modal-info code {
2168
- background: rgba(255, 255, 255, 0.08);
2169
- padding: 2px 6px;
2170
- border-radius: 4px;
2171
- font-family: var(--font-mono);
2172
- font-size: 12px;
2173
- color: var(--accent-cyan);
2174
- }
2175
- .conn-modal-config {
2176
- background: rgba(0, 0, 0, 0.3);
2177
- border: 1px solid rgba(255, 255, 255, 0.06);
2178
- border-radius: 8px;
2179
- padding: 12px 14px;
2180
- font-family: var(--font-mono);
2181
- font-size: 11px;
2182
- color: var(--text-muted);
2183
- overflow-x: auto;
2184
- white-space: pre;
2185
- }
2186
- .conn-modal-footer {
2187
- padding: 16px 20px 20px;
2188
- border-top: 1px solid rgba(255, 255, 255, 0.06);
2189
- display: flex;
2190
- justify-content: flex-end;
2191
- }
2192
- .conn-modal-docs {
2193
- display: flex;
2194
- align-items: center;
2195
- gap: 8px;
2196
- font-size: 12px;
2197
- font-weight: 500;
2198
- color: var(--accent-cyan);
2199
- text-decoration: none;
2200
- padding: 8px 14px;
2201
- background: rgba(0, 212, 255, 0.1);
2202
- border: 1px solid rgba(0, 212, 255, 0.2);
2203
- border-radius: 8px;
2204
- transition: all 0.2s ease;
2205
- }
2206
- .conn-modal-docs:hover {
2207
- background: rgba(0, 212, 255, 0.15);
2208
- border-color: rgba(0, 212, 255, 0.35);
2209
- }
2210
-
2211
-
2212
- /* ══════════════════════════════════════════════════════════════════════════
2213
- SUBAGENTS PANEL
2214
- ══════════════════════════════════════════════════════════════════════════ */
2215
-
2216
- .subagents-panel {
2217
- display: flex;
2218
- flex-direction: column;
2219
- gap: 0;
2220
- }
2221
-
2222
- .subagents-count {
2223
- font-size: 10px;
2224
- font-family: var(--font-mono);
2225
- color: var(--accent-cyan);
2226
- margin-left: 6px;
2227
- font-weight: 600;
2228
- }
2229
-
2230
- /* Quick Deploy */
2231
- .quick-deploy-section {
2232
- margin-bottom: 10px;
2233
- }
2234
- .quick-deploy-label {
2235
- font-size: 9px;
2236
- font-family: var(--font-mono);
2237
- font-weight: 700;
2238
- letter-spacing: 0.12em;
2239
- color: var(--text-muted);
2240
- margin-bottom: 8px;
2241
- }
2242
- .quick-deploy-grid {
2243
- display: grid;
2244
- grid-template-columns: 1fr 1fr;
2245
- gap: 6px;
2246
- }
2247
- .quick-deploy-btn {
2248
- display: flex;
2249
- align-items: center;
2250
- gap: 6px;
2251
- padding: 7px 10px;
2252
- background: rgba(255,255,255,0.02);
2253
- border: 1px solid rgba(255,255,255,0.06);
2254
- border-radius: 8px;
2255
- color: var(--text);
2256
- font-size: 12px;
2257
- font-weight: 500;
2258
- font-family: inherit;
2259
- cursor: pointer;
2260
- transition: all 0.2s ease;
2261
- }
2262
- .quick-deploy-btn svg {
2263
- width: 14px;
2264
- height: 14px;
2265
- flex-shrink: 0;
2266
- opacity: 0.7;
2267
- }
2268
- .quick-deploy-btn:hover {
2269
- background: rgba(0, 212, 255, 0.06);
2270
- border-color: rgba(0, 212, 255, 0.2);
2271
- color: var(--accent-cyan);
2272
- }
2273
- .quick-deploy-btn:hover svg {
2274
- opacity: 1;
2275
- }
2276
- .quick-deploy-btn.selected {
2277
- background: rgba(0, 212, 255, 0.1);
2278
- border-color: rgba(0, 212, 255, 0.3);
2279
- color: var(--accent-cyan);
2280
- }
2281
- .quick-deploy-btn.selected svg {
2282
- opacity: 1;
2283
- }
2284
-
2285
- /* Staging Box */
2286
- .staging-box {
2287
- display: flex;
2288
- align-items: center;
2289
- gap: 8px;
2290
- padding: 8px 10px;
2291
- background: rgba(255,255,255,0.015);
2292
- border: 1px solid rgba(255,255,255,0.05);
2293
- border-radius: 8px;
2294
- margin-bottom: 12px;
2295
- min-height: 38px;
2296
- }
2297
- .staging-chips {
2298
- flex: 1;
2299
- display: flex;
2300
- flex-wrap: wrap;
2301
- gap: 4px;
2302
- min-height: 22px;
2303
- align-items: center;
2304
- }
2305
- .staging-empty {
2306
- font-size: 10px;
2307
- color: var(--text-muted);
2308
- font-family: var(--font-mono);
2309
- letter-spacing: 0.04em;
2310
- }
2311
- .staging-chip {
2312
- display: inline-flex;
2313
- align-items: center;
2314
- gap: 4px;
2315
- padding: 3px 8px;
2316
- background: rgba(0, 212, 255, 0.1);
2317
- border: 1px solid rgba(0, 212, 255, 0.2);
2318
- border-radius: 12px;
2319
- font-size: 10px;
2320
- font-family: var(--font-mono);
2321
- color: var(--accent-cyan);
2322
- cursor: default;
2323
- }
2324
- .staging-chip-remove {
2325
- cursor: pointer;
2326
- opacity: 0.6;
2327
- font-size: 12px;
2328
- line-height: 1;
2329
- }
2330
- .staging-chip-remove:hover {
2331
- opacity: 1;
2332
- }
2333
- .staging-deploy-btn {
2334
- display: flex;
2335
- align-items: center;
2336
- gap: 5px;
2337
- padding: 6px 12px;
2338
- background: rgba(0, 212, 255, 0.12);
2339
- border: 1px solid rgba(0, 212, 255, 0.25);
2340
- border-radius: 8px;
2341
- color: var(--accent-cyan);
2342
- font-size: 11px;
2343
- font-weight: 600;
2344
- font-family: inherit;
2345
- cursor: pointer;
2346
- transition: all 0.2s ease;
2347
- white-space: nowrap;
2348
- }
2349
- .staging-deploy-btn svg {
2350
- width: 13px;
2351
- height: 13px;
2352
- }
2353
- .staging-deploy-btn:disabled {
2354
- opacity: 0.35;
2355
- cursor: not-allowed;
2356
- }
2357
- .staging-deploy-btn:not(:disabled):hover {
2358
- background: rgba(0, 212, 255, 0.2);
2359
- border-color: rgba(0, 212, 255, 0.4);
2360
- }
2361
-
2362
- /* Active subagents */
2363
- .subagents-active-label {
2364
- font-size: 9px;
2365
- font-family: var(--font-mono);
2366
- font-weight: 700;
2367
- letter-spacing: 0.12em;
2368
- color: var(--text-muted);
2369
- margin-bottom: 6px;
2370
- }
2371
- .subagents-list {
2372
- display: flex;
2373
- flex-direction: column;
2374
- gap: 4px;
2375
- margin-bottom: 10px;
2376
- max-height: 240px;
2377
- overflow-y: auto;
2378
- }
2379
- .subagents-empty {
2380
- display: flex;
2381
- flex-direction: column;
2382
- align-items: center;
2383
- gap: 6px;
2384
- padding: 16px 0;
2385
- }
2386
- .subagents-empty-icon {
2387
- width: 32px;
2388
- height: 32px;
2389
- display: flex;
2390
- align-items: center;
2391
- justify-content: center;
2392
- opacity: 0.35;
2393
- }
2394
- .subagents-empty-icon svg {
2395
- width: 24px;
2396
- height: 24px;
2397
- }
2398
- .subagents-empty-text {
2399
- font-size: 11px;
2400
- font-family: var(--font-mono);
2401
- color: var(--text-muted);
2402
- letter-spacing: 0.04em;
2403
- }
2404
-
2405
- /* Individual subagent item */
2406
- .subagent-item {
2407
- display: flex;
2408
- align-items: center;
2409
- gap: 10px;
2410
- padding: 8px 10px;
2411
- background: rgba(255,255,255,0.02);
2412
- border: 1px solid rgba(255,255,255,0.05);
2413
- border-radius: 8px;
2414
- cursor: pointer;
2415
- transition: all 0.2s ease;
2416
- }
2417
- .subagent-item:hover {
2418
- background: rgba(255,255,255,0.04);
2419
- border-color: rgba(255,255,255,0.1);
2420
- }
2421
- .subagent-item[data-status="running"] {
2422
- border-color: rgba(0, 212, 255, 0.2);
2423
- background: rgba(0, 212, 255, 0.03);
2424
- }
2425
- .subagent-item[data-status="completed"] {
2426
- border-color: rgba(52, 211, 153, 0.15);
2427
- }
2428
- .subagent-item[data-status="error"] {
2429
- border-color: rgba(248, 113, 113, 0.2);
2430
- }
2431
-
2432
- .subagent-icon {
2433
- flex-shrink: 0;
2434
- width: 20px;
2435
- height: 20px;
2436
- display: flex;
2437
- align-items: center;
2438
- justify-content: center;
2439
- font-size: 14px;
2440
- }
2441
- .subagent-info {
2442
- flex: 1;
2443
- min-width: 0;
2444
- display: flex;
2445
- flex-direction: column;
2446
- gap: 1px;
2447
- }
2448
- .subagent-label {
2449
- font-size: 12px;
2450
- font-weight: 600;
2451
- color: var(--text);
2452
- white-space: nowrap;
2453
- overflow: hidden;
2454
- text-overflow: ellipsis;
2455
- }
2456
- .subagent-task {
2457
- font-size: 10px;
2458
- font-family: var(--font-mono);
2459
- color: var(--text-muted);
2460
- white-space: nowrap;
2461
- overflow: hidden;
2462
- text-overflow: ellipsis;
2463
- }
2464
- .subagent-runtime {
2465
- flex-shrink: 0;
2466
- font-size: 10px;
2467
- font-family: var(--font-mono);
2468
- color: var(--text-muted);
2469
- letter-spacing: 0.04em;
2470
- }
2471
-
2472
- /* Spawn button */
2473
- .subagent-spawn-btn {
2474
- display: flex;
2475
- align-items: center;
2476
- justify-content: center;
2477
- gap: 6px;
2478
- width: 100%;
2479
- padding: 8px;
2480
- background: rgba(139, 92, 246, 0.08);
2481
- border: 1px dashed rgba(139, 92, 246, 0.25);
2482
- border-radius: 8px;
2483
- color: rgba(139, 92, 246, 0.85);
2484
- font-size: 12px;
2485
- font-weight: 600;
2486
- font-family: inherit;
2487
- cursor: pointer;
2488
- transition: all 0.2s ease;
2489
- }
2490
- .subagent-spawn-btn svg {
2491
- width: 14px;
2492
- height: 14px;
2493
- }
2494
- .subagent-spawn-btn:hover {
2495
- background: rgba(139, 92, 246, 0.12);
2496
- border-color: rgba(139, 92, 246, 0.35);
2497
- color: var(--accent-purple);
2498
- }
2499
-
2500
- /* ── Subagent Modal ──────────────────────────────────────────────────── */
2501
- .subagent-modal-overlay {
2502
- position: fixed;
2503
- inset: 0;
2504
- z-index: 9000;
2505
- display: flex;
2506
- align-items: center;
2507
- justify-content: center;
2508
- background: rgba(0, 0, 0, 0.7);
2509
- backdrop-filter: blur(8px);
2510
- opacity: 0;
2511
- visibility: hidden;
2512
- transition: opacity 0.25s ease, visibility 0.25s ease;
2513
- }
2514
- .subagent-modal-overlay.open {
2515
- opacity: 1;
2516
- visibility: visible;
2517
- }
2518
-
2519
- .subagent-modal {
2520
- position: relative;
2521
- width: 90%;
2522
- max-width: 460px;
2523
- background: linear-gradient(135deg, rgba(15, 15, 25, 0.98), rgba(10, 10, 18, 0.98));
2524
- border: 1px solid rgba(255, 255, 255, 0.1);
2525
- border-radius: 16px;
2526
- box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6), 0 0 1px rgba(255, 255, 255, 0.1);
2527
- transform: scale(0.95) translateY(10px);
2528
- transition: transform 0.25s ease;
2529
- overflow: hidden;
2530
- }
2531
- .subagent-modal-overlay.open .subagent-modal {
2532
- transform: scale(1) translateY(0);
2533
- }
2534
-
2535
- .subagent-modal-header {
2536
- display: flex;
2537
- align-items: center;
2538
- justify-content: space-between;
2539
- padding: 18px 20px 14px;
2540
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
2541
- }
2542
- .subagent-modal-title {
2543
- font-size: 16px;
2544
- font-weight: 600;
2545
- color: var(--text);
2546
- letter-spacing: 0.02em;
2547
- }
2548
- .subagent-modal-close {
2549
- width: 32px;
2550
- height: 32px;
2551
- border: none;
2552
- background: rgba(255, 255, 255, 0.05);
2553
- border-radius: 8px;
2554
- color: var(--text-muted);
2555
- cursor: pointer;
2556
- display: flex;
2557
- align-items: center;
2558
- justify-content: center;
2559
- transition: all 0.2s ease;
2560
- }
2561
- .subagent-modal-close:hover {
2562
- background: rgba(255, 255, 255, 0.1);
2563
- color: var(--text);
2564
- }
2565
-
2566
- .subagent-modal-body {
2567
- padding: 20px;
2568
- display: flex;
2569
- flex-direction: column;
2570
- gap: 14px;
2571
- }
2572
-
2573
- .subagent-form-group {
2574
- display: flex;
2575
- flex-direction: column;
2576
- gap: 5px;
2577
- }
2578
- .subagent-form-label {
2579
- font-size: 10px;
2580
- font-family: var(--font-mono);
2581
- font-weight: 600;
2582
- letter-spacing: 0.1em;
2583
- color: var(--text-muted);
2584
- text-transform: uppercase;
2585
- }
2586
- .subagent-form-input,
2587
- .subagent-form-select,
2588
- .subagent-form-textarea {
2589
- width: 100%;
2590
- padding: 9px 12px;
2591
- background: rgba(255, 255, 255, 0.04);
2592
- border: 1px solid rgba(255, 255, 255, 0.08);
2593
- border-radius: 8px;
2594
- color: var(--text);
2595
- font-size: 13px;
2596
- font-family: inherit;
2597
- outline: none;
2598
- transition: border-color 0.2s ease;
2599
- }
2600
- .subagent-form-input:focus,
2601
- .subagent-form-select:focus,
2602
- .subagent-form-textarea:focus {
2603
- border-color: rgba(139, 92, 246, 0.4);
2604
- }
2605
- .subagent-form-textarea {
2606
- min-height: 80px;
2607
- resize: vertical;
2608
- font-family: var(--font-mono);
2609
- font-size: 12px;
2610
- }
2611
- .subagent-form-select {
2612
- appearance: none;
2613
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='rgba(255,255,255,0.4)' viewBox='0 0 16 16'%3E%3Cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
2614
- background-repeat: no-repeat;
2615
- background-position: right 12px center;
2616
- padding-right: 32px;
2617
- }
2618
- .subagent-form-select option {
2619
- background: #0f0f19;
2620
- color: var(--text);
2621
- }
2622
-
2623
- .subagent-modal-footer {
2624
- padding: 14px 20px 18px;
2625
- border-top: 1px solid rgba(255, 255, 255, 0.06);
2626
- display: flex;
2627
- justify-content: flex-end;
2628
- gap: 10px;
2629
- }
2630
- .subagent-modal-cancel {
2631
- padding: 8px 16px;
2632
- background: rgba(255, 255, 255, 0.05);
2633
- border: 1px solid rgba(255, 255, 255, 0.08);
2634
- border-radius: 8px;
2635
- color: var(--text-muted);
2636
- font-size: 12px;
2637
- font-weight: 500;
2638
- font-family: inherit;
2639
- cursor: pointer;
2640
- transition: all 0.2s ease;
2641
- }
2642
- .subagent-modal-cancel:hover {
2643
- background: rgba(255, 255, 255, 0.08);
2644
- color: var(--text);
2645
- }
2646
- .subagent-modal-spawn {
2647
- padding: 8px 18px;
2648
- background: rgba(139, 92, 246, 0.15);
2649
- border: 1px solid rgba(139, 92, 246, 0.3);
2650
- border-radius: 8px;
2651
- color: var(--accent-purple);
2652
- font-size: 12px;
2653
- font-weight: 600;
2654
- font-family: inherit;
2655
- cursor: pointer;
2656
- transition: all 0.2s ease;
2657
- }
2658
- .subagent-modal-spawn:hover {
2659
- background: rgba(139, 92, 246, 0.25);
2660
- border-color: rgba(139, 92, 246, 0.5);
2661
- }
2662
-
2663
-
2664
- /* ══════════════════════════════════════════════════════════════════════════
2665
- SCHEDULING PANEL
2666
- ══════════════════════════════════════════════════════════════════════════ */
2667
-
2668
- .scheduling-panel {
2669
- display: flex;
2670
- flex-direction: column;
2671
- gap: 0;
2672
- }
2673
-
2674
- .schedule-count {
2675
- font-size: 10px;
2676
- font-family: var(--font-mono);
2677
- color: var(--accent-green);
2678
- margin-left: 6px;
2679
- font-weight: 600;
2680
- }
2681
-
2682
- .schedule-list {
2683
- display: flex;
2684
- flex-direction: column;
2685
- gap: 4px;
2686
- margin-bottom: 10px;
2687
- max-height: 260px;
2688
- overflow-y: auto;
2689
- }
2690
-
2691
- /* Empty state */
2692
- .schedule-empty {
2693
- display: flex;
2694
- flex-direction: column;
2695
- align-items: center;
2696
- gap: 6px;
2697
- padding: 16px 0;
2698
- }
2699
- .schedule-empty-icon {
2700
- width: 32px;
2701
- height: 32px;
2702
- display: flex;
2703
- align-items: center;
2704
- justify-content: center;
2705
- opacity: 0.35;
2706
- }
2707
- .schedule-empty-icon svg {
2708
- width: 24px;
2709
- height: 24px;
2710
- }
2711
- .schedule-empty-text {
2712
- font-size: 11px;
2713
- font-family: var(--font-mono);
2714
- color: var(--text-muted);
2715
- letter-spacing: 0.04em;
2716
- }
2717
-
2718
- /* Schedule items */
2719
- .schedule-item {
2720
- display: flex;
2721
- align-items: center;
2722
- gap: 10px;
2723
- padding: 8px 10px;
2724
- background: rgba(255,255,255,0.02);
2725
- border: 1px solid rgba(255,255,255,0.05);
2726
- border-radius: 8px;
2727
- cursor: pointer;
2728
- transition: all 0.2s ease;
2729
- }
2730
- .schedule-item:hover {
2731
- background: rgba(255,255,255,0.04);
2732
- border-color: rgba(255,255,255,0.1);
2733
- }
2734
- .schedule-item[data-active="true"] {
2735
- border-color: rgba(52, 211, 153, 0.15);
2736
- }
2737
- .schedule-item[data-active="false"] {
2738
- opacity: 0.5;
2739
- }
2740
-
2741
- /* Toggle dot */
2742
- .schedule-toggle {
2743
- flex-shrink: 0;
2744
- width: 12px;
2745
- height: 12px;
2746
- border-radius: 50%;
2747
- background: var(--text-dim);
2748
- border: 2px solid rgba(255,255,255,0.1);
2749
- transition: all 0.2s ease;
2750
- cursor: pointer;
2751
- }
2752
- .schedule-item[data-active="true"] .schedule-toggle {
2753
- background: var(--accent-green);
2754
- border-color: rgba(52, 211, 153, 0.3);
2755
- box-shadow: 0 0 6px rgba(52, 211, 153, 0.3);
2756
- }
2757
- .schedule-toggle:hover {
2758
- border-color: rgba(255,255,255,0.3);
2759
- }
2760
-
2761
- .schedule-info {
2762
- flex: 1;
2763
- min-width: 0;
2764
- display: flex;
2765
- flex-direction: column;
2766
- gap: 1px;
2767
- }
2768
- .schedule-name {
2769
- font-size: 12px;
2770
- font-weight: 600;
2771
- color: var(--text);
2772
- white-space: nowrap;
2773
- overflow: hidden;
2774
- text-overflow: ellipsis;
2775
- }
2776
- .schedule-next {
2777
- font-size: 10px;
2778
- font-family: var(--font-mono);
2779
- color: var(--text-muted);
2780
- white-space: nowrap;
2781
- overflow: hidden;
2782
- text-overflow: ellipsis;
2783
- }
2784
- .schedule-interval {
2785
- flex-shrink: 0;
2786
- font-size: 10px;
2787
- font-family: var(--font-mono);
2788
- color: var(--text-muted);
2789
- letter-spacing: 0.04em;
2790
- padding: 3px 8px;
2791
- background: rgba(255,255,255,0.03);
2792
- border-radius: 6px;
2793
- }
2794
-
2795
- /* Add schedule button */
2796
- .schedule-add-btn {
2797
- display: flex;
2798
- align-items: center;
2799
- justify-content: center;
2800
- gap: 6px;
2801
- width: 100%;
2802
- padding: 8px;
2803
- background: rgba(52, 211, 153, 0.08);
2804
- border: 1px dashed rgba(52, 211, 153, 0.25);
2805
- border-radius: 8px;
2806
- color: rgba(52, 211, 153, 0.85);
2807
- font-size: 12px;
2808
- font-weight: 600;
2809
- font-family: inherit;
2810
- cursor: pointer;
2811
- transition: all 0.2s ease;
2812
- }
2813
- .schedule-add-btn svg {
2814
- width: 14px;
2815
- height: 14px;
2816
- }
2817
- .schedule-add-btn:hover {
2818
- background: rgba(52, 211, 153, 0.12);
2819
- border-color: rgba(52, 211, 153, 0.35);
2820
- color: var(--accent-green);
2821
- }
2822
-
2823
- /* ── Schedule Modal ──────────────────────────────────────────────────── */
2824
- .schedule-modal-overlay {
2825
- position: fixed;
2826
- inset: 0;
2827
- z-index: 9000;
2828
- display: flex;
2829
- align-items: center;
2830
- justify-content: center;
2831
- background: rgba(0, 0, 0, 0.7);
2832
- backdrop-filter: blur(8px);
2833
- opacity: 0;
2834
- visibility: hidden;
2835
- transition: opacity 0.25s ease, visibility 0.25s ease;
2836
- }
2837
- .schedule-modal-overlay.open {
2838
- opacity: 1;
2839
- visibility: visible;
2840
- }
2841
-
2842
- .schedule-modal {
2843
- position: relative;
2844
- width: 90%;
2845
- max-width: 460px;
2846
- background: linear-gradient(135deg, rgba(15, 15, 25, 0.98), rgba(10, 10, 18, 0.98));
2847
- border: 1px solid rgba(255, 255, 255, 0.1);
2848
- border-radius: 16px;
2849
- box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6), 0 0 1px rgba(255, 255, 255, 0.1);
2850
- transform: scale(0.95) translateY(10px);
2851
- transition: transform 0.25s ease;
2852
- overflow: hidden;
2853
- }
2854
- .schedule-modal-overlay.open .schedule-modal {
2855
- transform: scale(1) translateY(0);
2856
- }
2857
-
2858
- .schedule-modal-header {
2859
- display: flex;
2860
- align-items: center;
2861
- justify-content: space-between;
2862
- padding: 18px 20px 14px;
2863
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
2864
- }
2865
- .schedule-modal-title {
2866
- font-size: 16px;
2867
- font-weight: 600;
2868
- color: var(--text);
2869
- letter-spacing: 0.02em;
2870
- }
2871
- .schedule-modal-close {
2872
- width: 32px;
2873
- height: 32px;
2874
- border: none;
2875
- background: rgba(255, 255, 255, 0.05);
2876
- border-radius: 8px;
2877
- color: var(--text-muted);
2878
- cursor: pointer;
2879
- display: flex;
2880
- align-items: center;
2881
- justify-content: center;
2882
- transition: all 0.2s ease;
2883
- }
2884
- .schedule-modal-close:hover {
2885
- background: rgba(255, 255, 255, 0.1);
2886
- color: var(--text);
2887
- }
2888
-
2889
- .schedule-modal-body {
2890
- padding: 20px;
2891
- display: flex;
2892
- flex-direction: column;
2893
- gap: 14px;
2894
- }
2895
-
2896
- .schedule-form-group {
2897
- display: flex;
2898
- flex-direction: column;
2899
- gap: 5px;
2900
- }
2901
- .schedule-form-label {
2902
- font-size: 10px;
2903
- font-family: var(--font-mono);
2904
- font-weight: 600;
2905
- letter-spacing: 0.1em;
2906
- color: var(--text-muted);
2907
- text-transform: uppercase;
2908
- }
2909
- .schedule-form-input,
2910
- .schedule-form-textarea {
2911
- width: 100%;
2912
- padding: 9px 12px;
2913
- background: rgba(255, 255, 255, 0.04);
2914
- border: 1px solid rgba(255, 255, 255, 0.08);
2915
- border-radius: 8px;
2916
- color: var(--text);
2917
- font-size: 13px;
2918
- font-family: inherit;
2919
- outline: none;
2920
- transition: border-color 0.2s ease;
2921
- }
2922
- .schedule-form-input:focus,
2923
- .schedule-form-textarea:focus {
2924
- border-color: rgba(52, 211, 153, 0.4);
2925
- }
2926
- .schedule-form-textarea {
2927
- min-height: 70px;
2928
- resize: vertical;
2929
- font-family: var(--font-mono);
2930
- font-size: 12px;
2931
- }
2932
-
2933
- /* Interval presets */
2934
- .schedule-interval-presets {
2935
- display: flex;
2936
- flex-wrap: wrap;
2937
- gap: 6px;
2938
- }
2939
- .schedule-interval-btn {
2940
- padding: 6px 12px;
2941
- background: rgba(255,255,255,0.04);
2942
- border: 1px solid rgba(255,255,255,0.08);
2943
- border-radius: 8px;
2944
- color: var(--text-muted);
2945
- font-size: 11px;
2946
- font-family: var(--font-mono);
2947
- cursor: pointer;
2948
- transition: all 0.2s ease;
2949
- }
2950
- .schedule-interval-btn:hover {
2951
- background: rgba(52, 211, 153, 0.08);
2952
- border-color: rgba(52, 211, 153, 0.2);
2953
- color: var(--accent-green);
2954
- }
2955
- .schedule-interval-btn.selected {
2956
- background: rgba(52, 211, 153, 0.12);
2957
- border-color: rgba(52, 211, 153, 0.3);
2958
- color: var(--accent-green);
2959
- }
2960
-
2961
- .schedule-modal-footer {
2962
- padding: 14px 20px 18px;
2963
- border-top: 1px solid rgba(255, 255, 255, 0.06);
2964
- display: flex;
2965
- justify-content: flex-end;
2966
- gap: 10px;
2967
- }
2968
- .schedule-modal-cancel {
2969
- padding: 8px 16px;
2970
- background: rgba(255, 255, 255, 0.05);
2971
- border: 1px solid rgba(255, 255, 255, 0.08);
2972
- border-radius: 8px;
2973
- color: var(--text-muted);
2974
- font-size: 12px;
2975
- font-weight: 500;
2976
- font-family: inherit;
2977
- cursor: pointer;
2978
- transition: all 0.2s ease;
2979
- }
2980
- .schedule-modal-cancel:hover {
2981
- background: rgba(255, 255, 255, 0.08);
2982
- color: var(--text);
2983
- }
2984
- .schedule-modal-save {
2985
- padding: 8px 18px;
2986
- background: rgba(52, 211, 153, 0.15);
2987
- border: 1px solid rgba(52, 211, 153, 0.3);
2988
- border-radius: 8px;
2989
- color: var(--accent-green);
2990
- font-size: 12px;
2991
- font-weight: 600;
2992
- font-family: inherit;
2993
- cursor: pointer;
2994
- transition: all 0.2s ease;
2995
- }
2996
- .schedule-modal-save:hover {
2997
- background: rgba(52, 211, 153, 0.25);
2998
- border-color: rgba(52, 211, 153, 0.5);
2999
- }