@symerian/symi 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/{accounts-Cd816n6l.js → accounts-DDuIpcln.js} +7 -7
  2. package/dist/{accounts-mN_EcgxC.js → accounts-DyJN4_vR.js} +1 -1
  3. package/dist/{accounts-CokRskCl.js → accounts-bK-Yqdwx.js} +1 -1
  4. package/dist/{acp-cli-o_sLVYUf.js → acp-cli-D54IzOnz.js} +6 -6
  5. package/dist/{agent-scope-BRwEc2pG.js → agent-scope-CgUHAtCo.js} +18 -18
  6. package/dist/{agents-fpLHaNi7.js → agents-DtoHlMPd.js} +4 -4
  7. package/dist/{agents.config-CsSO3wVx.js → agents.config-D42lZLmR.js} +1 -1
  8. package/dist/{agents.config-p7Y2nZHi.js → agents.config-DnUOlYlU.js} +2 -2
  9. package/dist/{api-key-rotation-Dbby3dlf.js → api-key-rotation-Do8JQqVN.js} +1 -1
  10. package/dist/{audio-preflight-79KNH7Tf.js → audio-preflight-CERzpj2b.js} +28 -28
  11. package/dist/{audio-preflight-DL5FZnXU.js → audio-preflight-Idsf-ZfU.js} +4 -4
  12. package/dist/{audit-BUu82PFi.js → audit-D8C59yOo.js} +23 -23
  13. package/dist/{auth-choice-CeNB3tht.js → auth-choice-C9otuJPA.js} +1 -1
  14. package/dist/{auth-choice-C5XKksbt.js → auth-choice-D5BDSGnl.js} +8 -8
  15. package/dist/{auth-token-D4sEkR38.js → auth-token-BszpreVL.js} +1 -1
  16. package/dist/{banner-Cf1EZP4s.js → banner-CF7C3krf.js} +1 -1
  17. package/dist/{bindings-ChzePa8q.js → bindings-DFaVVCsf.js} +1 -1
  18. package/dist/{browser-cli-VNgWKTmy.js → browser-cli-Bys7B4nj.js} +9 -9
  19. package/dist/build-info.json +3 -3
  20. package/dist/bundled/boot-md/handler.js +6 -6
  21. package/dist/bundled/session-memory/handler.js +6 -6
  22. package/dist/{call-DiLX2POZ.js → call-DAcmbtXf.js} +9 -9
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/{channel-options-cu6Y_a_F.js → channel-options-Csa-TtDi.js} +1 -1
  25. package/dist/{channel-options-B6UQDEaE.js → channel-options-DzhTX3wl.js} +2 -2
  26. package/dist/{channel-selection-DjfBv8kq.js → channel-selection-DuWs0Aak.js} +1 -1
  27. package/dist/{channel-web-Bi-6I1-W.js → channel-web-CjvCBPqU.js} +17 -17
  28. package/dist/{channels-cli-Bd5O4SA9.js → channels-cli-DDN_16Kv.js} +4 -4
  29. package/dist/{channels-cli-JCLUuFxJ.js → channels-cli-KlwkjyCS.js} +75 -75
  30. package/dist/{channels-status-issues-BoH1ZJPN.js → channels-status-issues-B_kBkl_u.js} +1 -1
  31. package/dist/{chrome-DuXtddnV.js → chrome-CVy4cA98.js} +7 -7
  32. package/dist/{chrome-CR4GU_ji.js → chrome-w5VRy_4h.js} +2 -2
  33. package/dist/cli/daemon-cli.js +1 -1
  34. package/dist/{cli-CDZec5HA.js → cli-B5hVys4U.js} +62 -62
  35. package/dist/{cli-nHMrloEB.js → cli-DJI_OS4-.js} +1 -1
  36. package/dist/{client-CIYHP9fS.js → client-Cnoh7nRo.js} +1 -1
  37. package/dist/{command-registry-DXb1lS7l.js → command-registry-DnZXmfQw.js} +9 -9
  38. package/dist/{commands-CtocZ4Lg.js → commands-BNLCWX6e.js} +1 -1
  39. package/dist/{commands-registry-BmO4ALva.js → commands-registry-FQYB6b0c.js} +3 -3
  40. package/dist/{completion-cli-BzDe-5CO.js → completion-cli-DCxqBDYi.js} +2 -2
  41. package/dist/{completion-cli-CZ0-L0Nx.js → completion-cli-DQL62fp3.js} +12 -12
  42. package/dist/{config-AVc1QpRD.js → config-HatzmzSF.js} +2 -2
  43. package/dist/{config-cli-BfsG-zzV.js → config-cli-BZ9IeSYB.js} +1 -1
  44. package/dist/{config-cli-BIUaw73M.js → config-cli-gykd9rl1.js} +4 -4
  45. package/dist/{config-guard-CPd-_Sug.js → config-guard-B_Oo29C_.js} +12 -12
  46. package/dist/{config-validation-QuKOX6cx.js → config-validation-DWRbfhqx.js} +1 -1
  47. package/dist/{configure-C1JhrX_n.js → configure-DaF95oCr.js} +3 -3
  48. package/dist/{configure-DpG3ItSi.js → configure-awU0fYIM.js} +15 -15
  49. package/dist/{control-service-CT6Tc8zz.js → control-service-su7ltHXJ.js} +4 -4
  50. package/dist/control-ui/css/revert-red-theme.md +141 -0
  51. package/dist/control-ui/css/style.css +23 -54
  52. package/dist/control-ui/css/style.css.backup-2026-03-03-162525 +3546 -0
  53. package/dist/control-ui/css/style.css.backup-before-red-2026-03-03-162525 +3546 -0
  54. package/dist/control-ui/css/style.css.backup-before-red-theme-2026-03-03-162530 +3546 -0
  55. package/dist/control-ui/css/style.css.red-theme +2999 -0
  56. package/dist/control-ui/index.html +5 -18
  57. package/dist/control-ui/js/app.js +1 -1
  58. package/dist/control-ui/js/models.js +35 -108
  59. package/dist/{control-ui-assets-DqGziq7x.js → control-ui-assets-Z947tKLt.js} +1 -1
  60. package/dist/{cron-cli-Dkt9uaVz.js → cron-cli-EwYM3Zhw.js} +10 -10
  61. package/dist/{daemon-cli-CK9BhScf.js → daemon-cli-gSfOKrXx.js} +11 -11
  62. package/dist/{daemon-runtime-CbWCEgFq.js → daemon-runtime-CNFxAJWo.js} +10 -10
  63. package/dist/{deliver-D7lL85xc.js → deliver-Ds9HRkSS.js} +1 -1
  64. package/dist/{deliver-BRZABn2h.js → deliver-Dt-RE3Vx.js} +7 -7
  65. package/dist/{devices-cli-Dt2dSPNN.js → devices-cli-B4Ml0nPd.js} +6 -6
  66. package/dist/{diagnostics-D2yUMZN1.js → diagnostics-BAMlsVVX.js} +5 -5
  67. package/dist/{directory-cli-Bd0yqzdX.js → directory-cli-Dr1AuGU_.js} +7 -7
  68. package/dist/{dm-policy-shared-BbBnj9fh.js → dm-policy-shared-B7mF98WG.js} +2 -2
  69. package/dist/{dns-cli-C8-wE4jg.js → dns-cli-BMuYSI5H.js} +3 -3
  70. package/dist/{dock-BYiRZSgZ.js → dock-BhS32F6E.js} +4 -4
  71. package/dist/{docs-cli-BfPfHTDs.js → docs-cli-BpnEOtJi.js} +1 -1
  72. package/dist/{doctor-completion-EiZoSgwZ.js → doctor-completion-CWxrDfTf.js} +2 -2
  73. package/dist/{doctor-completion-BUt4HQxm.js → doctor-completion-Dsc3BTPh.js} +1 -1
  74. package/dist/{doctor-config-flow-DVeRf3Nb.js → doctor-config-flow-CqkfYH5g.js} +10 -10
  75. package/dist/entry.js +1 -1
  76. package/dist/{exec-approvals-cli-_9YulN2v.js → exec-approvals-cli-Bjc1fnXd.js} +13 -13
  77. package/dist/extensionAPI.js +1 -1
  78. package/dist/{fs-safe-CTDvb1DF.js → fs-safe-CUjO1ca2.js} +6 -6
  79. package/dist/{gateway-cli-CEO3mZTr.js → gateway-cli-DE-6Dcty.js} +13 -10
  80. package/dist/{gateway-cli-BRuCMLHC.js → gateway-cli-ZjP8i4av.js} +117 -114
  81. package/dist/{gateway-rpc-CPJvpktM.js → gateway-rpc-fojfvlNM.js} +1 -1
  82. package/dist/{glass-ui-ws-BDGgl8ub.js → glass-ui-ws-D421doEO.js} +7 -7
  83. package/dist/{glass-ui-ws-DZBGtG3l.js → glass-ui-ws-DVJ8Jbb_.js} +82 -82
  84. package/dist/{health-JCH1-7ZC.js → health-6eO44S1z.js} +13 -13
  85. package/dist/{health-DOpwYIk9.js → health-Cg5ISkwP.js} +1 -1
  86. package/dist/{hooks-cli-C_swzA-Q.js → hooks-cli-CSudu0uW.js} +76 -76
  87. package/dist/{hooks-cli-8E0NEcp2.js → hooks-cli-DrJLLgya.js} +2 -2
  88. package/dist/{image-CMI-9eRz.js → image-BCpwZwMs.js} +3 -3
  89. package/dist/{image-Bw9ZjAgJ.js → image-CFJ6w7mA.js} +1 -1
  90. package/dist/{image-ops-DYbDWaIA.js → image-ops-1OJMSAUX.js} +10 -10
  91. package/dist/index.js +72 -72
  92. package/dist/{inspect-ZJkNX0WL.js → inspect-CllGjsWo.js} +4 -4
  93. package/dist/{install-safe-path-Qqr_t_tH.js → install-safe-path-tCLiMpmO.js} +11 -11
  94. package/dist/{installs-O9KlRu9h.js → installs-C1Cebk97.js} +10 -10
  95. package/dist/{ir-Dt4hOzxG.js → ir-DZam9q5M.js} +6 -6
  96. package/dist/{lifecycle-core-DJ99Nuea.js → lifecycle-core-D7yri0lq.js} +5 -5
  97. package/dist/llm-slug-generator.js +6 -6
  98. package/dist/{local-roots-BBeKX7PX.js → local-roots-aAFLQGkY.js} +2 -2
  99. package/dist/{login-BbKZ2DjB.js → login-DPZJ0dn5.js} +3 -3
  100. package/dist/{login-qr-DUMFnnHO.js → login-qr-1SS_KLmy.js} +5 -5
  101. package/dist/{logs-cli-Q9BjHa6r.js → logs-cli-DTv4zx9B.js} +7 -7
  102. package/dist/{manager-CMwIsp1s.js → manager-azRNiI63.js} +13 -13
  103. package/dist/{markdown-tables-ZwP14ydw.js → markdown-tables-CEbN0fEm.js} +1 -1
  104. package/dist/{memory-cli-BmVxmjsP.js → memory-cli-BbOD_MAm.js} +12 -12
  105. package/dist/{model-yOMXet9g.js → model-BqEwE-J2.js} +1 -1
  106. package/dist/{model-catalog-B2O_f8W3.js → model-catalog-DchCrtU_.js} +4 -4
  107. package/dist/{model-picker-Cza4RjM6.js → model-picker-kP9-zhYa.js} +3 -3
  108. package/dist/{model-selection-B7KLlkW9.js → model-selection-Bna6Ea2G.js} +9 -9
  109. package/dist/{models-DiSEm28S.js → models-BTRkvFtl.js} +2 -2
  110. package/dist/{models-cli-BNzrvtSd.js → models-cli-D2fJlrQk.js} +3 -3
  111. package/dist/{models-cli-mXtcSXES.js → models-cli-Dj8cNWRT.js} +72 -72
  112. package/dist/{models-config-BBYpnDiI.js → models-config-ClFXUp6F.js} +7 -7
  113. package/dist/{node-cli-0V_HpLpl.js → node-cli-NQpg02gK.js} +28 -28
  114. package/dist/{node-service-CJygtY5M.js → node-service-Cxz4e-Qd.js} +1 -1
  115. package/dist/{nodes-cli-CCcfRy8f.js → nodes-cli-Bb4xaKGj.js} +10 -10
  116. package/dist/{nodes-screen-C99kfE1u.js → nodes-screen-VBGXKdLk.js} +4 -4
  117. package/dist/{npm-registry-spec-DR_at_Hp.js → npm-registry-spec-C2JDdSZS.js} +9 -9
  118. package/dist/{onboard-L0M0Ovnd.js → onboard-CHEs4ExE.js} +2 -2
  119. package/dist/{onboard-t2R-9vg-.js → onboard-CK01iMWd.js} +13 -13
  120. package/dist/{onboard-channels-DUaPDyrm.js → onboard-channels-DRFYxuUu.js} +1 -1
  121. package/dist/{onboard-channels-C7WU9Iin.js → onboard-channels-wh9lIrOV.js} +5 -5
  122. package/dist/{onboard-custom-DPVbOEea.js → onboard-custom-CRCl78Cb.js} +3 -3
  123. package/dist/{onboard-helpers-KDMJj8FR.js → onboard-helpers-y4rvYrnW.js} +8 -8
  124. package/dist/{onboard-hooks-lsws7g2s.js → onboard-hooks-BAA8CoVv.js} +1 -1
  125. package/dist/{onboard-remote-BlAZ1eIO.js → onboard-remote-Jm1aS7bY.js} +1 -1
  126. package/dist/{onboard-skills-B_rjyFsX.js → onboard-skills-Cs350j4k.js} +4 -4
  127. package/dist/{onboarding-DXwjpA2U.js → onboarding-Bp1mnjrX.js} +13 -13
  128. package/dist/{onboarding-B70JwisU.js → onboarding-lUewk1wX.js} +3 -3
  129. package/dist/{onboarding.finalize-7Hj0Ns8P.js → onboarding.finalize-CMRmP9Gh.js} +6 -6
  130. package/dist/{onboarding.finalize-CfqZ4VMN.js → onboarding.finalize-CZdoYQ4E.js} +74 -74
  131. package/dist/{onboarding.gateway-config-DTociuRL.js → onboarding.gateway-config-BKBdInKw.js} +14 -14
  132. package/dist/{openai-model-default-qa2VGxV5.js → openai-model-default-VfhQkucT.js} +2 -2
  133. package/dist/{outbound-4_NH93LY.js → outbound-Bgf3-Xjf.js} +4 -4
  134. package/dist/{outbound-attachment-D62E0xDI.js → outbound-attachment-D_QuKi8U.js} +2 -2
  135. package/dist/{pairing-cli-BjylEroj.js → pairing-cli-DGZ81nF1.js} +8 -8
  136. package/dist/{pairing-labels-BTnwVbGk.js → pairing-labels-DqKysvKw.js} +1 -1
  137. package/dist/{pairing-store-GiI_Y6RI.js → pairing-store-BCNzdZKM.js} +2 -2
  138. package/dist/{pairing-token-AV-MMfVE.js → pairing-token-CX3NN_qj.js} +7 -7
  139. package/dist/{paths-CT6jsi4E.js → paths-BBm9fwuG.js} +1 -1
  140. package/dist/{pi-auth-json-B1BvsF_W.js → pi-auth-json-CZfGGhvs.js} +3 -3
  141. package/dist/{pi-embedded-DocZDkTo.js → pi-embedded-CS0wnHwK.js} +2 -11
  142. package/dist/{pi-embedded-D7ha4Og0.js → pi-embedded-_CVXk_1W.js} +16 -25
  143. package/dist/{pi-embedded-helpers-CMPwkzmk.js → pi-embedded-helpers-Ccv1YvCu.js} +4 -4
  144. package/dist/{pi-embedded-helpers-CwBUNbtz.js → pi-embedded-helpers-DTf21kBI.js} +6 -6
  145. package/dist/{pi-tools.policy-UOvl9TC5.js → pi-tools.policy-DzNBR_23.js} +4 -4
  146. package/dist/{plugin-auto-enable-DDZK_Dlb.js → plugin-auto-enable-DLa2EY7E.js} +2 -2
  147. package/dist/{plugin-registry-CdtWBNpp.js → plugin-registry-BbbgHAaN.js} +1 -1
  148. package/dist/{plugin-registry-CORXKvoW.js → plugin-registry-UAY71aAp.js} +3 -3
  149. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  150. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  151. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  152. package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
  153. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  154. package/dist/plugin-sdk/{api-key-rotation-BYeOYbFa.js → api-key-rotation-Q2dih0d4.js} +1 -1
  155. package/dist/plugin-sdk/{audio-preflight-ZgYHV7zZ.js → audio-preflight-B3jftH89.js} +24 -24
  156. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  157. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  158. package/dist/plugin-sdk/{channel-web-DMrXbXuB.js → channel-web-cl9GZI67.js} +22 -22
  159. package/dist/plugin-sdk/{chrome-aebG-57z.js → chrome-Dm5lVW6S.js} +3 -3
  160. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  161. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  162. package/dist/plugin-sdk/{commands-registry-C-40_AnX.js → commands-registry-CPpEN9Mp.js} +4 -4
  163. package/dist/plugin-sdk/{config-_mfvrqyn.js → config-BVu4isPG.js} +9 -9
  164. package/dist/plugin-sdk/{deliver-CjfwhaL4.js → deliver-DSY1Ey3q.js} +10 -10
  165. package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
  166. package/dist/plugin-sdk/{image-BPKGNrho.js → image-GJ7myokS.js} +4 -4
  167. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  168. package/dist/plugin-sdk/index.js +53 -53
  169. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  170. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  171. package/dist/plugin-sdk/{login-D7FDUOk4.js → login-O6IizOR2.js} +7 -7
  172. package/dist/plugin-sdk/{login-qr-T2-V0Xzo.js → login-qr-_OTg1XmP.js} +9 -9
  173. package/dist/plugin-sdk/{manager-BQMAFDKV.js → manager-DBUFLDPF.js} +8 -8
  174. package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
  175. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  176. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  177. package/dist/plugin-sdk/{model-selection-SoQVut2b.js → model-selection-DltSbjiW.js} +4 -4
  178. package/dist/plugin-sdk/{outbound-D6-dgoHk.js → outbound-CR8e3Z2m.js} +7 -7
  179. package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
  180. package/dist/plugin-sdk/{pi-auth-json-BcG0RJ5m.js → pi-auth-json-BZWLIjB8.js} +5 -5
  181. package/dist/plugin-sdk/{pi-embedded-helpers-CoCKvCMg.js → pi-embedded-helpers-DP6QavXU.js} +17 -17
  182. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  183. package/dist/plugin-sdk/{pw-ai-BtL_6nSQ.js → pw-ai--FUGpHYZ.js} +8 -8
  184. package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
  185. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  186. package/dist/plugin-sdk/{replies-DBhVchqS.js → replies-CbaarhX4.js} +3 -3
  187. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  188. package/dist/plugin-sdk/{reply-BAGhI0bM.js → reply-z8of-Etj.js} +78 -87
  189. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  190. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  191. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  192. package/dist/plugin-sdk/{runner-DI-v2QPz.js → runner-AJx8kwC8.js} +9 -9
  193. package/dist/plugin-sdk/{send-BXEvd9GG.js → send-B0ms2T8N.js} +6 -6
  194. package/dist/plugin-sdk/{send-BqfAkEXB.js → send-BqkPr3tk.js} +10 -10
  195. package/dist/plugin-sdk/{send-_NtbikAq.js → send-CQTQU2QA.js} +10 -10
  196. package/dist/plugin-sdk/{send-OeTV33Hw.js → send-CVgqxLOA.js} +6 -6
  197. package/dist/plugin-sdk/{send-BMFLy4AN.js → send-Czife03a.js} +7 -7
  198. package/dist/plugin-sdk/{session-fs4fyz3Q.js → session-Cj83K_4Y.js} +4 -4
  199. package/dist/plugin-sdk/{skill-commands-BHGE8qj7.js → skill-commands-BLr3yT6A.js} +5 -5
  200. package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
  201. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  202. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  203. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  204. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  205. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  206. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  207. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  208. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  209. package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-BVA6fax-.js} +2 -2
  210. package/dist/plugin-sdk/web-C3pizhFX.js +65 -0
  211. package/dist/plugin-sdk/{whatsapp-actions-BYyVUqQU.js → whatsapp-actions-nsnM4jgj.js} +21 -21
  212. package/dist/{plugins-BAyxWQSz.js → plugins-DKDeQZF0.js} +2 -2
  213. package/dist/{plugins-cli-CbYY2c02.js → plugins-cli-EwQ7OW8w.js} +2 -2
  214. package/dist/{plugins-cli-DZ6_6_9N.js → plugins-cli-XdoAm0EH.js} +71 -71
  215. package/dist/{ports-OZQlocB7.js → ports-BOmtxoTv.js} +2 -2
  216. package/dist/{ports-b36gHZbA.js → ports-BX0kKI0g.js} +1 -1
  217. package/dist/{program-C4255SbF.js → program-BU_8y1Dg.js} +7 -7
  218. package/dist/{program-context-CTjApG6i.js → program-context-wuhwrRCO.js} +39 -39
  219. package/dist/{prompt-select-styled-BwJ6oDuF.js → prompt-select-styled-C1ztGQs1.js} +4 -4
  220. package/dist/{prompt-select-styled-C9kVFhhN.js → prompt-select-styled-D1BkIe_s.js} +38 -38
  221. package/dist/{provider-auth-helpers-BhWko9CW.js → provider-auth-helpers-_5rSLUts.js} +1 -1
  222. package/dist/{provider-auth-helpers-Dh0Y9gRH.js → provider-auth-helpers-tpyE_YMw.js} +5 -5
  223. package/dist/{push-apns-Bc01EVHz.js → push-apns-CIcS3If1.js} +1 -1
  224. package/dist/{push-apns-CKA1Hybl.js → push-apns-zJAWgDEO.js} +4 -4
  225. package/dist/{pw-ai-DQ6HUvz0.js → pw-ai-COyYEUif.js} +1 -1
  226. package/dist/{pw-ai-jDxCE_me.js → pw-ai-hxKJoLPO.js} +7 -7
  227. package/dist/{qmd-manager-BP2r8b1D.js → qmd-manager-D85GJrir.js} +18 -18
  228. package/dist/{qr-cli-CqfILKdq.js → qr-cli-BevlQ0yQ.js} +3 -3
  229. package/dist/{register.agent-CjihKrgr.js → register.agent-DNcdFB4H.js} +81 -81
  230. package/dist/{register.agent-vJQWUB2a.js → register.agent-brAf6Dmv.js} +6 -6
  231. package/dist/register.configure-C76yU3JC.js +147 -0
  232. package/dist/{register.configure-CWkzQGtI.js → register.configure-DoJEj5YT.js} +6 -6
  233. package/dist/{register.maintenance-BIw99tAg.js → register.maintenance-CW2OCHRX.js} +8 -8
  234. package/dist/{register.maintenance-DSJfxKOM.js → register.maintenance-DYfYvEU8.js} +84 -84
  235. package/dist/{register.message-DYzHnVIl.js → register.message-CJZ0ZuHF.js} +2 -2
  236. package/dist/{register.message-Clc--Yw5.js → register.message-syMzQfo-.js} +63 -63
  237. package/dist/{register.onboard-BfUOVNll.js → register.onboard-DzZn1ZmN.js} +74 -74
  238. package/dist/{register.onboard-BHtw8kJf.js → register.onboard-dZyRfR6-.js} +4 -4
  239. package/dist/{register.setup-GFxvFYnK.js → register.setup-BbkD_3y3.js} +77 -77
  240. package/dist/{register.setup-DgSaVc_m.js → register.setup-XCPDMOgg.js} +4 -4
  241. package/dist/{register.status-health-sessions-BI-s8t9j.js → register.status-health-sessions-87LTzh7r.js} +3 -3
  242. package/dist/{register.status-health-sessions-D9SHcVWG.js → register.status-health-sessions-CPg2ES9O.js} +75 -75
  243. package/dist/{register.subclis-CY89gBXc.js → register.subclis-Bvb5TNzX.js} +9 -9
  244. package/dist/{replies-F62kkRDY.js → replies-Bqmvo_Kt.js} +1 -1
  245. package/dist/{reply-3UdAtBno.js → reply-D-tI2-6J.js} +131 -140
  246. package/dist/{reply-prefix-BLOOs1aW.js → reply-prefix-CE2YmmsD.js} +1 -1
  247. package/dist/{resolve-route-BcnaXYvh.js → resolve-route-BMoTaVAH.js} +2 -2
  248. package/dist/{routes-Byuu6IFb.js → routes-BTqP9I0j.js} +8 -8
  249. package/dist/{rpc-W2LE3Gsn.js → rpc-BWLVOOnl.js} +1 -1
  250. package/dist/{run-main-D1u34xwJ.js → run-main-Bt2x9hbu.js} +14 -14
  251. package/dist/{runner-BjY_9Mjp.js → runner-5jm68DaT.js} +20 -20
  252. package/dist/{runner-Duym_W6W.js → runner-D8jpl5qu.js} +1 -1
  253. package/dist/{sandbox-CZNPhRvt.js → sandbox-CI3HOlhZ.js} +18 -18
  254. package/dist/{sandbox-cli-DGr5ZbkP.js → sandbox-cli-XsQ7ytlP.js} +20 -20
  255. package/dist/{security-cli-sPaHQYwq.js → security-cli-CjP-MfW-.js} +36 -36
  256. package/dist/{send-Bq3a_Wnm.js → send-B6F9anOj.js} +6 -6
  257. package/dist/{send-D-WljKDl.js → send-Bdb6djZT.js} +6 -6
  258. package/dist/{send-BOpWKMA3.js → send-C-yyCp3G.js} +4 -4
  259. package/dist/{send-hUOxOHuS.js → send-CRQMds8q.js} +13 -13
  260. package/dist/{send-C-hO5d22.js → send-DCDHTHlP.js} +6 -6
  261. package/dist/{server-context-BvLdcVwk.js → server-context-XZaMhvsO.js} +5 -5
  262. package/dist/{server-methods-BJCrhJnd.js → server-methods-9BRiIiUB.js} +54 -54
  263. package/dist/{server-methods-D6_yT-Bb.js → server-methods-BaOFruL6.js} +7 -7
  264. package/dist/{server-node-events-CykWrHaN.js → server-node-events-CCOXKW9s.js} +63 -63
  265. package/dist/{server-node-events-tdraRFjy.js → server-node-events-DDEX2ugG.js} +2 -2
  266. package/dist/{service--qMN5DPm.js → service-Cl74hx8J.js} +15 -15
  267. package/dist/{session-CkpNcCi1.js → session-pB1anvds.js} +2 -2
  268. package/dist/{sessions-F_WFgwcy.js → sessions-Dg88xE66.js} +13 -13
  269. package/dist/{shared-Dj1vNdZR.js → shared-B811_S8D.js} +3 -3
  270. package/dist/{shared-Jm_QdQJQ.js → shared-BJvwnR5z.js} +1 -1
  271. package/dist/{skill-commands-CWFq0coF.js → skill-commands-D23OFeRU.js} +5 -5
  272. package/dist/{skill-scanner-CXg9eeyc.js → skill-scanner-CLs8u6vQ.js} +5 -5
  273. package/dist/{skills-DqQUtOph.js → skills-6jdJQ5ZL.js} +4 -4
  274. package/dist/{skills-cli-ZvR57mAe.js → skills-cli-Cr0T5ExG.js} +7 -7
  275. package/dist/{skills-install-DjcTy3CT.js → skills-install-D67isO1L.js} +3 -3
  276. package/dist/{skills-status-DS-NZQiq.js → skills-status-CURJKnyY.js} +1 -1
  277. package/dist/{sqlite-BV5ILFtC.js → sqlite-Dx3J_aSE.js} +12 -12
  278. package/dist/{status-P2xe2kB8.js → status-B_fSdR2z.js} +3 -3
  279. package/dist/{status-DpNpFHi8.js → status-Bhj6pODg.js} +2 -2
  280. package/dist/{status-bDX6eJeC.js → status-CHtXaQCL.js} +25 -25
  281. package/dist/{status-UTAzB6AW.js → status-DWYUBGDM.js} +1 -1
  282. package/dist/{status.update-FbG5gTPn.js → status.update-6yjKgcLs.js} +3 -3
  283. package/dist/{store-DvtcmOKj.js → store-r1DJSDq-.js} +5 -5
  284. package/dist/{subagent-registry-DW6V21LB.js → subagent-registry-C-rk8Ynb.js} +2 -11
  285. package/dist/{symi-root-MF6_6SCS.js → symi-root-CrGJbkzf.js} +2 -2
  286. package/dist/{system-cli-B13bcVd7.js → system-cli-D2Gy1uM8.js} +11 -11
  287. package/dist/{systemd-hints-CLsHKdY5.js → systemd-hints-TBjNlcr6.js} +6 -6
  288. package/dist/{systemd-linger-BXwqn1jL.js → systemd-linger-aQ75ZlXY.js} +1 -1
  289. package/dist/{systemd-AhJEsmIk.js → systemd-riq8uNJQ.js} +5 -5
  290. package/dist/{tables-C38rzF6E.js → tables-BEzT0Da4.js} +1 -1
  291. package/dist/{target-errors-CCz79CmV.js → target-errors-7AvoVa10.js} +4 -4
  292. package/dist/{tool-images-B-pqX3nX.js → tool-images-DvUBlqjX.js} +1 -1
  293. package/dist/{tui-9seSCxc3.js → tui-DdPONk1f.js} +7 -7
  294. package/dist/{tui-cli-DN4upjYg.js → tui-cli-BIUejAgV.js} +28 -28
  295. package/dist/{update-check-C0oYCI89.js → update-check-CtckACbb.js} +5 -5
  296. package/dist/{update-cli-BV-ydVs4.js → update-cli-BLezElt_.js} +8 -8
  297. package/dist/{update-cli-KxZVK_fV.js → update-cli-CCaYK9Sf.js} +94 -94
  298. package/dist/{update-runner-Bk1Dw23-.js → update-runner-Bq1u14RR.js} +1 -1
  299. package/dist/{update-runner-BU1pNjNR.js → update-runner-f9lbrrpe.js} +15 -15
  300. package/dist/{update-Df4sEKtI.js → update-rw7wJwHd.js} +3 -3
  301. package/dist/web-BJBlI9ZQ.js +109 -0
  302. package/dist/{web-CqNKJLiq.js → web-BzQURzi7.js} +1 -1
  303. package/dist/{web-CH5VMs5G.js → web-CP0DJI7i.js} +1 -1
  304. package/dist/{web-C9daLT-M.js → web-S8BbWMEn.js} +6 -6
  305. package/dist/{webhooks-cli-WXHppPGP.js → webhooks-cli-EjU4sMB6.js} +4 -4
  306. package/dist/{whatsapp-actions-CZxAV_jP.js → whatsapp-actions-CXbFvHGB.js} +15 -15
  307. package/dist/{with-timeout-B4dUX-ZK.js → with-timeout-CB59LniF.js} +1 -1
  308. package/dist/{workspace-dirs-DKu48umx.js → workspace-dirs-GpkFi6Kw.js} +1 -1
  309. package/dist/{wsl-BbXxnokd.js → wsl-C4424szg.js} +2 -2
  310. package/extensions/bluebubbles/node_modules/.bin/symi +4 -4
  311. package/extensions/bluebubbles/package.json +1 -1
  312. package/extensions/copilot-proxy/node_modules/.bin/symi +4 -4
  313. package/extensions/copilot-proxy/package.json +1 -1
  314. package/extensions/diagnostics-otel/node_modules/.bin/acorn +2 -2
  315. package/extensions/diagnostics-otel/node_modules/.bin/symi +4 -4
  316. package/extensions/diagnostics-otel/package.json +1 -1
  317. package/extensions/discord/node_modules/.bin/symi +4 -4
  318. package/extensions/discord/package.json +1 -1
  319. package/extensions/feishu/node_modules/.bin/symi +4 -4
  320. package/extensions/feishu/package.json +1 -1
  321. package/extensions/google-antigravity-auth/node_modules/.bin/symi +4 -4
  322. package/extensions/google-antigravity-auth/package.json +1 -1
  323. package/extensions/google-gemini-cli-auth/node_modules/.bin/symi +4 -4
  324. package/extensions/google-gemini-cli-auth/package.json +1 -1
  325. package/extensions/googlechat/node_modules/.bin/symi +4 -4
  326. package/extensions/googlechat/package.json +2 -2
  327. package/extensions/imessage/node_modules/.bin/symi +4 -4
  328. package/extensions/imessage/package.json +1 -1
  329. package/extensions/irc/node_modules/.bin/symi +4 -4
  330. package/extensions/irc/package.json +1 -1
  331. package/extensions/learning-loop/node_modules/.bin/symi +21 -0
  332. package/extensions/learning-loop/package.json +2 -2
  333. package/extensions/line/node_modules/.bin/symi +4 -4
  334. package/extensions/line/package.json +1 -1
  335. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  336. package/extensions/matrix/node_modules/.bin/symi +4 -4
  337. package/extensions/matrix/package.json +1 -1
  338. package/extensions/mattermost/node_modules/.bin/symi +4 -4
  339. package/extensions/mattermost/package.json +1 -1
  340. package/extensions/memory-core/node_modules/.bin/symi +4 -4
  341. package/extensions/memory-core/package.json +2 -2
  342. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +2 -2
  343. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  344. package/extensions/memory-lancedb/node_modules/.bin/symi +4 -4
  345. package/extensions/memory-lancedb/package.json +1 -1
  346. package/extensions/minimax-portal-auth/node_modules/.bin/symi +4 -4
  347. package/extensions/minimax-portal-auth/package.json +1 -1
  348. package/extensions/msteams/node_modules/.bin/symi +4 -4
  349. package/extensions/msteams/package.json +1 -1
  350. package/extensions/nextcloud-talk/node_modules/.bin/symi +4 -4
  351. package/extensions/nextcloud-talk/package.json +1 -1
  352. package/extensions/nostr/node_modules/.bin/symi +4 -4
  353. package/extensions/nostr/node_modules/.bin/tsc +2 -2
  354. package/extensions/nostr/node_modules/.bin/tsserver +2 -2
  355. package/extensions/nostr/package.json +1 -1
  356. package/extensions/signal/node_modules/.bin/symi +4 -4
  357. package/extensions/signal/package.json +1 -1
  358. package/extensions/slack/node_modules/.bin/symi +4 -4
  359. package/extensions/slack/package.json +1 -1
  360. package/extensions/telegram/node_modules/.bin/symi +4 -4
  361. package/extensions/telegram/package.json +1 -1
  362. package/extensions/tlon/node_modules/.bin/symi +4 -4
  363. package/extensions/tlon/package.json +1 -1
  364. package/extensions/twitch/node_modules/.bin/symi +4 -4
  365. package/extensions/twitch/package.json +1 -1
  366. package/extensions/voice-call/node_modules/.bin/symi +4 -4
  367. package/extensions/voice-call/package.json +1 -1
  368. package/extensions/whatsapp/node_modules/.bin/symi +4 -4
  369. package/extensions/whatsapp/package.json +1 -1
  370. package/extensions/zalo/node_modules/.bin/symi +4 -4
  371. package/extensions/zalo/package.json +1 -1
  372. package/extensions/zalouser/node_modules/.bin/symi +4 -4
  373. package/extensions/zalouser/package.json +1 -1
  374. package/package.json +1 -2
  375. package/CHANGELOG.md +0 -2520
  376. package/LICENSE +0 -21
  377. package/dist/control-ui/vendor/highlight.css +0 -96
  378. package/dist/control-ui/vendor/highlight.min.js +0 -1244
  379. package/dist/control-ui/vendor/marked.min.js +0 -69
  380. package/dist/plugin-sdk/web-CxcoX0Wr.js +0 -65
  381. package/dist/register.configure-Bb7LY0Z4.js +0 -147
  382. package/dist/session-dirs-D3qlvucD.js +0 -18
  383. package/dist/web-BCk_WT8d.js +0 -109
@@ -0,0 +1,2999 @@
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
+ }