@xopcai/xopc 0.0.27 → 0.0.29

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 (239) hide show
  1. package/dist/extensions/telegram/xopc.extension.json +1 -1
  2. package/dist/extensions/weixin/src/adapters/onboard-cli.d.ts +7 -0
  3. package/dist/extensions/weixin/src/adapters/onboard-cli.js +61 -0
  4. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +1 -0
  5. package/dist/extensions/weixin/src/cli/qr-login.d.ts +5 -0
  6. package/dist/extensions/weixin/src/cli/qr-login.js +1 -1
  7. package/dist/extensions/weixin/src/cli/qr-login.js.map +1 -1
  8. package/dist/extensions/weixin/src/index.js +1 -1
  9. package/dist/extensions/weixin/src/plugin.d.ts +1 -0
  10. package/dist/extensions/weixin/src/plugin.js +2 -0
  11. package/dist/extensions/weixin/src/plugin.js.map +1 -1
  12. package/dist/gateway/static/root/assets/agents-CkgFSiCY.js +216 -0
  13. package/dist/gateway/static/root/assets/agents-CkgFSiCY.js.map +1 -0
  14. package/dist/gateway/static/root/assets/{apps-page-CBBh_Ww8.js → apps-page-Bmq19MS-.js} +2 -2
  15. package/dist/gateway/static/root/assets/{apps-page-CBBh_Ww8.js.map → apps-page-Bmq19MS-.js.map} +1 -1
  16. package/dist/gateway/static/root/assets/channels-settings-CE7jrdkO.js +9 -0
  17. package/dist/gateway/static/root/assets/channels-settings-CE7jrdkO.js.map +1 -0
  18. package/dist/gateway/static/root/assets/cron-page-BpPPcykJ.js +2 -0
  19. package/dist/gateway/static/root/assets/cron-page-BpPPcykJ.js.map +1 -0
  20. package/dist/gateway/static/root/assets/{cron-utils-08gdQfl9.js → cron-utils-N1PqD2DB.js} +2 -2
  21. package/dist/gateway/static/root/assets/{cron-utils-08gdQfl9.js.map → cron-utils-N1PqD2DB.js.map} +1 -1
  22. package/dist/gateway/static/root/assets/{dist-C1MrygQH.js → dist--p2HQ2QF.js} +2 -2
  23. package/dist/gateway/static/root/assets/{dist-C1MrygQH.js.map → dist--p2HQ2QF.js.map} +1 -1
  24. package/dist/gateway/static/root/assets/{extension-debug-page-DN3HKUGS.js → extension-debug-page-DwHCB_6T.js} +2 -2
  25. package/dist/gateway/static/root/assets/{extension-debug-page-DN3HKUGS.js.map → extension-debug-page-DwHCB_6T.js.map} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-page-CoFDHZtZ.js → extension-page-BsYwQIex.js} +2 -2
  27. package/dist/gateway/static/root/assets/{extension-page-CoFDHZtZ.js.map → extension-page-BsYwQIex.js.map} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-settings-page-BcPCu_Go.js → extension-settings-page-nsisEgjB.js} +2 -2
  29. package/dist/gateway/static/root/assets/{extension-settings-page-BcPCu_Go.js.map → extension-settings-page-nsisEgjB.js.map} +1 -1
  30. package/dist/gateway/static/root/assets/index-CR8zUHGR.js +4734 -0
  31. package/dist/gateway/static/root/assets/{index-PfkB8N37.js.map → index-CR8zUHGR.js.map} +1 -1
  32. package/dist/gateway/static/root/assets/index-Dnfha4O2.css +1 -0
  33. package/dist/gateway/static/root/assets/logs-page-CQwdV_Xw.js +2 -0
  34. package/dist/gateway/static/root/assets/logs-page-CQwdV_Xw.js.map +1 -0
  35. package/dist/gateway/static/root/assets/sessions-page-Be5kIGl_.js +2 -0
  36. package/dist/gateway/static/root/assets/sessions-page-Be5kIGl_.js.map +1 -0
  37. package/dist/gateway/static/root/assets/settings-page-PodSlNwr.js +2 -0
  38. package/dist/gateway/static/root/assets/settings-page-PodSlNwr.js.map +1 -0
  39. package/dist/gateway/static/root/assets/skills-page-Clg8deH0.js +3 -0
  40. package/dist/gateway/static/root/assets/{skills-page-BmBDCEbY.js.map → skills-page-Clg8deH0.js.map} +1 -1
  41. package/dist/gateway/static/root/index.html +2 -2
  42. package/dist/package.js +1 -1
  43. package/dist/src/agent/lifecycle/hook-handler.d.ts +2 -0
  44. package/dist/src/agent/lifecycle/hook-handler.js +24 -0
  45. package/dist/src/agent/lifecycle/hook-handler.js.map +1 -1
  46. package/dist/src/agent/messaging/command-handler.js +10 -2
  47. package/dist/src/agent/messaging/command-handler.js.map +1 -1
  48. package/dist/src/agent/service/process-direct-streaming.js +77 -20
  49. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  50. package/dist/src/agent/service.d.ts +15 -0
  51. package/dist/src/agent/service.js +21 -1
  52. package/dist/src/agent/service.js.map +1 -1
  53. package/dist/src/channels/weixin/index.js +1 -1
  54. package/dist/src/cli/agent-chat-log-level-preset.d.ts +8 -0
  55. package/dist/src/cli/agent-chat-log-level-preset.js +25 -0
  56. package/dist/src/cli/agent-chat-log-level-preset.js.map +1 -0
  57. package/dist/src/cli/commands/agent/interactive.js +4 -2
  58. package/dist/src/cli/commands/agent/interactive.js.map +1 -1
  59. package/dist/src/cli/commands/agent/stream-renderer.d.ts +14 -0
  60. package/dist/src/cli/commands/agent/stream-renderer.js +99 -0
  61. package/dist/src/cli/commands/agent/stream-renderer.js.map +1 -0
  62. package/dist/src/cli/commands/agent.js +2 -2
  63. package/dist/src/cli/commands/agent.js.map +1 -1
  64. package/dist/src/cli/commands/onboard.js +77 -93
  65. package/dist/src/cli/commands/onboard.js.map +1 -1
  66. package/dist/src/cli/commands/tui.d.ts +1 -0
  67. package/dist/src/cli/commands/tui.js +40 -0
  68. package/dist/src/cli/commands/tui.js.map +1 -0
  69. package/dist/src/cli/index.d.ts +2 -0
  70. package/dist/src/cli/index.js +7 -3
  71. package/dist/src/cli/index.js.map +1 -1
  72. package/dist/src/config/schema.d.ts +6 -0
  73. package/dist/src/config/schema.js +11 -3
  74. package/dist/src/config/schema.js.map +1 -1
  75. package/dist/src/extensions/hooks.js +5 -1
  76. package/dist/src/extensions/hooks.js.map +1 -1
  77. package/dist/src/extensions/loader.d.ts +1 -0
  78. package/dist/src/extensions/loader.js +3 -1
  79. package/dist/src/extensions/loader.js.map +1 -1
  80. package/dist/src/extensions/sdk/index.d.ts +1 -1
  81. package/dist/src/extensions/sdk/index.js.map +1 -1
  82. package/dist/src/extensions/types/core.d.ts +8 -0
  83. package/dist/src/extensions/types/hooks.d.ts +16 -1
  84. package/dist/src/extensions/types/hooks.js +1 -0
  85. package/dist/src/extensions/types/hooks.js.map +1 -1
  86. package/dist/src/gateway/agents-admin.d.ts +19 -1
  87. package/dist/src/gateway/agents-admin.js +164 -3
  88. package/dist/src/gateway/agents-admin.js.map +1 -1
  89. package/dist/src/gateway/auth.d.ts +17 -3
  90. package/dist/src/gateway/auth.js +35 -16
  91. package/dist/src/gateway/auth.js.map +1 -1
  92. package/dist/src/gateway/hono/app.js +31 -1
  93. package/dist/src/gateway/hono/app.js.map +1 -1
  94. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -1
  95. package/dist/src/gateway/hono/middleware/auth.js +4 -3
  96. package/dist/src/gateway/hono/middleware/auth.js.map +1 -1
  97. package/dist/src/gateway/hono/middleware/scopes.d.ts +15 -0
  98. package/dist/src/gateway/hono/middleware/scopes.js +41 -0
  99. package/dist/src/gateway/hono/middleware/scopes.js.map +1 -0
  100. package/dist/src/gateway/hono/routes/agents.js +59 -5
  101. package/dist/src/gateway/hono/routes/agents.js.map +1 -1
  102. package/dist/src/gateway/hono/routes/config.js +2 -2
  103. package/dist/src/gateway/hono/routes/config.js.map +1 -1
  104. package/dist/src/gateway/hono/routes/public-gateway.js +1 -0
  105. package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
  106. package/dist/src/gateway/hono/routes/sessions.js +17 -0
  107. package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
  108. package/dist/src/gateway/security/audit.d.ts +18 -0
  109. package/dist/src/gateway/security/audit.js +68 -0
  110. package/dist/src/gateway/security/audit.js.map +1 -0
  111. package/dist/src/gateway/security/csp.d.ts +19 -0
  112. package/dist/src/gateway/security/csp.js +52 -0
  113. package/dist/src/gateway/security/csp.js.map +1 -0
  114. package/dist/src/gateway/security/dangerous-tools.d.ts +20 -0
  115. package/dist/src/gateway/security/dangerous-tools.js +46 -0
  116. package/dist/src/gateway/security/dangerous-tools.js.map +1 -0
  117. package/dist/src/gateway/security/flood-guard.d.ts +28 -0
  118. package/dist/src/gateway/security/flood-guard.js +42 -0
  119. package/dist/src/gateway/security/flood-guard.js.map +1 -0
  120. package/dist/src/gateway/security/index.d.ts +9 -0
  121. package/dist/src/gateway/security/index.js +10 -0
  122. package/dist/src/gateway/security/known-weak-secrets.d.ts +10 -0
  123. package/dist/src/gateway/security/known-weak-secrets.js +36 -0
  124. package/dist/src/gateway/security/known-weak-secrets.js.map +1 -0
  125. package/dist/src/gateway/security/operator-scopes.d.ts +37 -0
  126. package/dist/src/gateway/security/operator-scopes.js +137 -0
  127. package/dist/src/gateway/security/operator-scopes.js.map +1 -0
  128. package/dist/src/gateway/security/origin-check.d.ts +21 -0
  129. package/dist/src/gateway/security/origin-check.js +56 -0
  130. package/dist/src/gateway/security/origin-check.js.map +1 -0
  131. package/dist/src/gateway/security/preauth-connection-budget.d.ts +17 -0
  132. package/dist/src/gateway/security/preauth-connection-budget.js +49 -0
  133. package/dist/src/gateway/security/preauth-connection-budget.js.map +1 -0
  134. package/dist/src/gateway/security/secret-equal.d.ts +8 -0
  135. package/dist/src/gateway/security/secret-equal.js +30 -0
  136. package/dist/src/gateway/security/secret-equal.js.map +1 -0
  137. package/dist/src/gateway/service.d.ts +3 -1
  138. package/dist/src/gateway/service.js +40 -4
  139. package/dist/src/gateway/service.js.map +1 -1
  140. package/dist/src/session/client-history.d.ts +21 -0
  141. package/dist/src/session/client-history.js +89 -0
  142. package/dist/src/session/client-history.js.map +1 -0
  143. package/dist/src/session/index.d.ts +1 -0
  144. package/dist/src/session/index.js +2 -1
  145. package/dist/src/session/manager.d.ts +2 -0
  146. package/dist/src/session/manager.js +5 -0
  147. package/dist/src/session/manager.js.map +1 -1
  148. package/dist/src/session/thinking-resolve.js +1 -1
  149. package/dist/src/session/thinking-resolve.js.map +1 -1
  150. package/dist/src/tui/backends/embedded-backend.d.ts +42 -0
  151. package/dist/src/tui/backends/embedded-backend.js +173 -0
  152. package/dist/src/tui/backends/embedded-backend.js.map +1 -0
  153. package/dist/src/tui/backends/gateway-sse-backend.d.ts +53 -0
  154. package/dist/src/tui/backends/gateway-sse-backend.js +256 -0
  155. package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -0
  156. package/dist/src/tui/chat-history.d.ts +4 -0
  157. package/dist/src/tui/chat-history.js +29 -0
  158. package/dist/src/tui/chat-history.js.map +1 -0
  159. package/dist/src/tui/components/assistant-message.d.ts +6 -0
  160. package/dist/src/tui/components/assistant-message.js +19 -0
  161. package/dist/src/tui/components/assistant-message.js.map +1 -0
  162. package/dist/src/tui/components/chat-log.d.ts +21 -0
  163. package/dist/src/tui/components/chat-log.js +113 -0
  164. package/dist/src/tui/components/chat-log.js.map +1 -0
  165. package/dist/src/tui/components/custom-editor.d.ts +14 -0
  166. package/dist/src/tui/components/custom-editor.js +50 -0
  167. package/dist/src/tui/components/custom-editor.js.map +1 -0
  168. package/dist/src/tui/components/fuzzy-filter.d.ts +17 -0
  169. package/dist/src/tui/components/fuzzy-filter.js +85 -0
  170. package/dist/src/tui/components/fuzzy-filter.js.map +1 -0
  171. package/dist/src/tui/components/searchable-select-list.d.ts +39 -0
  172. package/dist/src/tui/components/searchable-select-list.js +257 -0
  173. package/dist/src/tui/components/searchable-select-list.js.map +1 -0
  174. package/dist/src/tui/components/tool-execution.d.ts +16 -0
  175. package/dist/src/tui/components/tool-execution.js +76 -0
  176. package/dist/src/tui/components/tool-execution.js.map +1 -0
  177. package/dist/src/tui/components/user-message.d.ts +6 -0
  178. package/dist/src/tui/components/user-message.js +22 -0
  179. package/dist/src/tui/components/user-message.js.map +1 -0
  180. package/dist/src/tui/sse-consumer.d.ts +15 -0
  181. package/dist/src/tui/sse-consumer.js +75 -0
  182. package/dist/src/tui/sse-consumer.js.map +1 -0
  183. package/dist/src/tui/stream-assembler.d.ts +22 -0
  184. package/dist/src/tui/stream-assembler.js +63 -0
  185. package/dist/src/tui/stream-assembler.js.map +1 -0
  186. package/dist/src/tui/theme.d.ts +73 -0
  187. package/dist/src/tui/theme.js +157 -0
  188. package/dist/src/tui/theme.js.map +1 -0
  189. package/dist/src/tui/tui-agent-events.d.ts +7 -0
  190. package/dist/src/tui/tui-agent-events.js +103 -0
  191. package/dist/src/tui/tui-agent-events.js.map +1 -0
  192. package/dist/src/tui/tui-backend.d.ts +80 -0
  193. package/dist/src/tui/tui-backend.js +1 -0
  194. package/dist/src/tui/tui-commands.d.ts +23 -0
  195. package/dist/src/tui/tui-commands.js +165 -0
  196. package/dist/src/tui/tui-commands.js.map +1 -0
  197. package/dist/src/tui/tui-lifecycle.d.ts +26 -0
  198. package/dist/src/tui/tui-lifecycle.js +57 -0
  199. package/dist/src/tui/tui-lifecycle.js.map +1 -0
  200. package/dist/src/tui/tui-local-shell.d.ts +28 -0
  201. package/dist/src/tui/tui-local-shell.js +147 -0
  202. package/dist/src/tui/tui-local-shell.js.map +1 -0
  203. package/dist/src/tui/tui-overlays.d.ts +8 -0
  204. package/dist/src/tui/tui-overlays.js +22 -0
  205. package/dist/src/tui/tui-overlays.js.map +1 -0
  206. package/dist/src/tui/tui-picker-overlay.d.ts +26 -0
  207. package/dist/src/tui/tui-picker-overlay.js +69 -0
  208. package/dist/src/tui/tui-picker-overlay.js.map +1 -0
  209. package/dist/src/tui/tui-stdio-filter.d.ts +17 -0
  210. package/dist/src/tui/tui-stdio-filter.js +96 -0
  211. package/dist/src/tui/tui-stdio-filter.js.map +1 -0
  212. package/dist/src/tui/tui-submit.d.ts +25 -0
  213. package/dist/src/tui/tui-submit.js +102 -0
  214. package/dist/src/tui/tui-submit.js.map +1 -0
  215. package/dist/src/tui/tui-suspend.d.ts +10 -0
  216. package/dist/src/tui/tui-suspend.js +18 -0
  217. package/dist/src/tui/tui-suspend.js.map +1 -0
  218. package/dist/src/tui/tui-types.d.ts +86 -0
  219. package/dist/src/tui/tui-types.js +21 -0
  220. package/dist/src/tui/tui-types.js.map +1 -0
  221. package/dist/src/tui/tui.d.ts +5 -0
  222. package/dist/src/tui/tui.js +389 -0
  223. package/dist/src/tui/tui.js.map +1 -0
  224. package/package.json +5 -3
  225. package/dist/gateway/static/root/assets/agents-w8_jzuiX.js +0 -216
  226. package/dist/gateway/static/root/assets/agents-w8_jzuiX.js.map +0 -1
  227. package/dist/gateway/static/root/assets/channels-settings-DUKRPC7C.js +0 -9
  228. package/dist/gateway/static/root/assets/channels-settings-DUKRPC7C.js.map +0 -1
  229. package/dist/gateway/static/root/assets/cron-page-S18t1yG-.js +0 -2
  230. package/dist/gateway/static/root/assets/cron-page-S18t1yG-.js.map +0 -1
  231. package/dist/gateway/static/root/assets/index-OT4cGzon.css +0 -1
  232. package/dist/gateway/static/root/assets/index-PfkB8N37.js +0 -4734
  233. package/dist/gateway/static/root/assets/logs-page-DoWe1GWy.js +0 -2
  234. package/dist/gateway/static/root/assets/logs-page-DoWe1GWy.js.map +0 -1
  235. package/dist/gateway/static/root/assets/sessions-page-2uOYwEwd.js +0 -2
  236. package/dist/gateway/static/root/assets/sessions-page-2uOYwEwd.js.map +0 -1
  237. package/dist/gateway/static/root/assets/settings-page-fQWswCuq.js +0 -2
  238. package/dist/gateway/static/root/assets/settings-page-fQWswCuq.js.map +0 -1
  239. package/dist/gateway/static/root/assets/skills-page-BmBDCEbY.js +0 -3
@@ -0,0 +1 @@
1
+ pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.markdown-body{letter-spacing:-.011em;color:inherit;font-size:.9375rem;line-height:1.5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{letter-spacing:-.022em;color:var(--color-fg);margin-top:1.35em;margin-bottom:.45em;font-weight:600;line-height:1.25}.markdown-body h1{border-bottom:1px solid var(--color-edge);padding-bottom:.3em;font-size:1.5em}.markdown-body h2{border-bottom:1px solid var(--color-edge);padding-bottom:.3em;font-size:1.3em}.markdown-body h3{font-size:1.1em}.markdown-body ul,.markdown-body ol{margin-bottom:1em;padding-left:2em}.markdown-body li{margin-bottom:.35em}.markdown-body code{font-family:var(--font-mono);background:var(--color-surface-hover);border-radius:var(--radius-sm);color:var(--color-accent-fg);padding:.15em .4em;font-size:.875em}.markdown-body pre{background:var(--color-surface-hover);border-radius:var(--radius-xl);border:1px solid var(--color-edge);margin-bottom:1em;padding:1em;overflow-x:auto}.markdown-body pre code{color:inherit;background:0 0;padding:0;font-size:.8125rem}.markdown-body blockquote{border-left:3px solid var(--color-accent);color:var(--color-fg-muted);background:var(--color-surface-hover);border-radius:0 var(--radius-lg) var(--radius-lg) 0;margin:0 0 1em;padding:.75em 1em}.markdown-body a{color:var(--color-accent-fg);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body hr{background:var(--color-edge);border:none;height:1px;margin:1.5em 0}.markdown-body table{border-collapse:collapse;border:1px solid var(--color-edge);border-radius:var(--radius-lg);width:100%;margin:0 0 1em;font-size:.875rem;line-height:1.5;overflow:hidden}.markdown-body th,.markdown-body td{border:1px solid var(--color-edge-subtle);text-align:left;vertical-align:top;padding:.5rem .75rem}.markdown-body th{background:var(--color-surface-hover);color:var(--color-fg);font-weight:600}.markdown-body tbody tr:hover td{background:var(--color-surface-hover)}.markdown-body p{margin:0 0 .75em}.markdown-body strong{font-weight:600}.markdown-body em{font-style:italic}.markdown-body.markdown-compact h1,.markdown-body.markdown-compact h2,.markdown-body.markdown-compact h3{margin-top:.75em;margin-bottom:.25em}.markdown-body.markdown-compact p{margin:0 0 .5em}.markdown-body.markdown-compact pre{margin-bottom:.75em}html.dark .markdown-body pre code.hljs{padding:1em;display:block;overflow-x:auto}html.dark .markdown-body code.hljs{padding:3px 5px}html.dark .markdown-body .hljs{color:#c9d1d9;background:#0d1117}html.dark .markdown-body .hljs-doctag,html.dark .markdown-body .hljs-keyword,html.dark .markdown-body .hljs-meta .hljs-keyword,html.dark .markdown-body .hljs-template-tag,html.dark .markdown-body .hljs-template-variable,html.dark .markdown-body .hljs-type,html.dark .markdown-body .hljs-variable.language_{color:#ff7b72}html.dark .markdown-body .hljs-title,html.dark .markdown-body .hljs-title.class_,html.dark .markdown-body .hljs-title.class_.inherited__,html.dark .markdown-body .hljs-title.function_{color:#d2a8ff}html.dark .markdown-body .hljs-attr,html.dark .markdown-body .hljs-attribute,html.dark .markdown-body .hljs-literal,html.dark .markdown-body .hljs-meta,html.dark .markdown-body .hljs-number,html.dark .markdown-body .hljs-operator,html.dark .markdown-body .hljs-variable,html.dark .markdown-body .hljs-selector-attr,html.dark .markdown-body .hljs-selector-class,html.dark .markdown-body .hljs-selector-id{color:#79c0ff}html.dark .markdown-body .hljs-regexp,html.dark .markdown-body .hljs-string,html.dark .markdown-body .hljs-meta .hljs-string{color:#a5d6ff}html.dark .markdown-body .hljs-built_in,html.dark .markdown-body .hljs-symbol{color:#ffa657}html.dark .markdown-body .hljs-comment,html.dark .markdown-body .hljs-code,html.dark .markdown-body .hljs-formula{color:#8b949e}html.dark .markdown-body .hljs-name,html.dark .markdown-body .hljs-quote,html.dark .markdown-body .hljs-selector-tag,html.dark .markdown-body .hljs-selector-pseudo{color:#7ee787}html.dark .markdown-body .hljs-subst{color:#c9d1d9}html.dark .markdown-body .hljs-section{color:#1f6feb;font-weight:700}html.dark .markdown-body .hljs-bullet{color:#f2cc60}html.dark .markdown-body .hljs-emphasis{color:#c9d1d9;font-style:italic}html.dark .markdown-body .hljs-strong{color:#c9d1d9;font-weight:700}html.dark .markdown-body .hljs-addition{color:#aff5b4;background-color:#033a16}html.dark .markdown-body .hljs-deletion{color:#ffdcd7;background-color:#67060c}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", system-ui, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Microsoft YaHei", 微软雅黑, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, Consolas, monospace;--color-red-50:#fef2f2;--color-red-100:#ffe2e2;--color-red-200:#ffcaca;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-800:#9f0712;--color-red-900:#82181a;--color-red-950:#460809;--color-amber-50:#fffbeb;--color-amber-100:#fef3c6;--color-amber-200:#fee685;--color-amber-400:#fcbb00;--color-amber-500:#f99c00;--color-amber-600:#dd7400;--color-amber-800:#953d00;--color-amber-900:#7b3306;--color-amber-950:#461901;--color-yellow-400:#fac800;--color-yellow-600:#cd8900;--color-green-400:#05df72;--color-green-600:#00a544;--color-emerald-50:#ecfdf5;--color-emerald-100:#d0fae5;--color-emerald-200:#a4f4cf;--color-emerald-300:#5ee9b5;--color-emerald-400:#00d294;--color-emerald-500:#00bb7f;--color-emerald-600:#009767;--color-emerald-700:#007956;--color-emerald-800:#005f46;--color-emerald-900:#004e3b;--color-emerald-950:#002c22;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bedbff;--color-blue-400:#54a2ff;--color-blue-600:#155dfc;--color-blue-800:#193cb8;--color-blue-900:#1c398e;--color-blue-950:#162456;--color-indigo-300:#a4b3ff;--color-indigo-400:#7d87ff;--color-indigo-500:#625fff;--color-indigo-950:#1e1a4d;--color-purple-300:#d9b3ff;--color-purple-400:#c07eff;--color-purple-500:#ac4bff;--color-purple-950:#3c0366;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:.625rem;--radius-md:.75rem;--radius-lg:.875rem;--radius-xl:1.125rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-surface-base:#f5f5f7;--color-surface-panel:#fff;--color-surface-hover:#e8e8ed;--color-surface-active:#dcdcde;--color-fg:#1d1d1f;--color-fg-muted:#6e6e73;--color-fg-subtle:#86868b;--color-fg-disabled:#aeaeb2;--color-edge-subtle:#ebebed;--color-edge:#d2d2d7;--color-edge-strong:#bcbcc0;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-accent-soft:#eff6ff;--color-accent-fg:#2563eb;--color-checkbox-accent:#3c3c43;--color-success:#059669;--color-success-soft:#d1fae5;--color-danger:#dc2626;--color-warning:#d97706;--color-scrim:#0000005c;--radius-pill:9999px;--max-width-app-main:56rem;--max-width-chat:64rem}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-100:lab(92.243% 10.2865 3.83865);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-300:lab(76.5514% 36.422 15.5335);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-800:lab(33.7174% 55.8993 41.0293);--color-red-900:lab(28.5139% 44.5539 29.0463);--color-red-950:lab(13.003% 29.04 16.7519);--color-amber-50:lab(98.6252% -.635922 8.42309);--color-amber-100:lab(95.916% -1.21653 23.111);--color-amber-200:lab(91.7203% -.505269 49.9084);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-500:lab(72.7183% 31.8672 97.9407);--color-amber-600:lab(60.3514% 40.5624 87.1228);--color-amber-800:lab(37.8822% 37.1699 52.2718);--color-amber-900:lab(31.2288% 30.2627 40.0378);--color-amber-950:lab(15.8111% 20.9107 23.3752);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-600:lab(62.7799% 22.4197 86.1544);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-emerald-50:lab(97.8462% -6.94966 1.85487);--color-emerald-100:lab(94.9004% -17.0769 5.63836);--color-emerald-200:lab(90.2247% -31.039 9.47084);--color-emerald-300:lab(83.9203% -48.7124 13.8849);--color-emerald-400:lab(75.0771% -60.7313 19.4147);--color-emerald-500:lab(66.9756% -58.27 19.5419);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-emerald-700:lab(44.4871% -41.0396 11.0361);--color-emerald-800:lab(35.3675% -33.1188 8.04002);--color-emerald-900:lab(28.8637% -26.9249 5.45986);--color-emerald-950:lab(15.0582% -17.9507 2.38369);--color-blue-50:lab(96.492% -1.14644 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-200:lab(86.15% -4.04379 -21.0797);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-800:lab(30.2514% 27.7853 -70.2699);--color-blue-900:lab(26.1542% 15.7545 -51.5504);--color-blue-950:lab(15.6723% 8.86232 -32.2945);--color-indigo-300:lab(74.0235% 8.54138 -41.6075);--color-indigo-400:lab(59.866% 22.4834 -64.4485);--color-indigo-500:lab(48.295% 38.3129 -81.9673);--color-indigo-950:lab(12.4853% 14.9672 -31.3418);--color-purple-300:lab(78.3298% 26.2195 -34.9499);--color-purple-400:lab(63.6946% 47.6127 -59.2066);--color-purple-500:lab(52.0183% 66.11 -78.2316);--color-purple-950:lab(14.8253% 38.9005 -44.5861)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{box-sizing:border-box}html{height:100%;font-family:var(--font-sans);background-color:var(--color-surface-base);color:var(--color-fg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:100%;overflow:hidden}@media (prefers-color-scheme:dark){html{--lightningcss-light: ;--lightningcss-dark:initial}}html[data-font-scale=compact]{font-size:87.5%}html[data-font-scale=large]{font-size:112.5%}body{letter-spacing:-.006em;height:100%;min-height:100%;margin:0;font-size:.9375rem;line-height:1.47059;overflow:hidden}#root{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}::selection{background:var(--color-accent-soft);color:var(--color-accent-fg)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus-visible:not(input):not(textarea){border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}input:focus,input:focus-visible,textarea:focus,textarea:focus-visible,select:focus,select:focus-visible{outline-offset:0;box-shadow:none;outline:none}}@layer components{.ui-checkbox{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);cursor:pointer;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-edge);background-color:var(--color-surface-panel);accent-color:var(--color-checkbox-accent);border-radius:.25rem;flex-shrink:0}.ui-checkbox:disabled{cursor:not-allowed;opacity:.5}.ui-select{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-edge-subtle);background-color:var(--color-surface-panel);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-snug);line-height:var(--leading-snug);--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-fg);cursor:pointer;transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out)}@media (hover:hover){.ui-select:hover{border-color:var(--color-edge);background-color:#e8e8ed73}@supports (color:color-mix(in lab, red, red)){.ui-select:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 45%, transparent)}}}.ui-select:focus,.ui-select:focus-visible{--tw-outline-style:none;outline-style:none}.ui-select:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ui-select:focus-visible{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);border-color:var(--color-edge)}html.dark .ui-select{border-color:var(--color-edge-subtle);background-color:var(--color-surface-panel)}html.dark .ui-select:hover{border-color:var(--color-edge);background-color:#e8e8ed8c}@supports (color:color-mix(in lab, red, red)){html.dark .ui-select:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 55%, transparent)}}.ui-select:disabled{cursor:not-allowed;opacity:.5}.chat-skill-pill{max-width:100%;padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * .5);vertical-align:baseline;--tw-leading:calc(var(--spacing) * 5);font-size:.9375rem;line-height:calc(var(--spacing) * 5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:#8a8a2e;background-color:#f5f5e6;border-radius:3.40282e38px;flex-shrink:0;align-items:center;display:inline-flex}html.dark .chat-skill-pill{color:#c4c47a;background-color:#2d2d24}.chat-file-pill{background:var(--color-accent-soft);color:var(--color-accent-fg);white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:default;vertical-align:baseline;border-radius:.25rem;align-items:center;gap:.125rem;padding:.0625rem .375rem;font-size:.8125rem;font-weight:500;display:inline-flex}.composer-input{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;position:relative}.composer-input-empty:before{content:attr(data-placeholder);color:var(--color-fg-disabled);pointer-events:none}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-4{inset:calc(var(--spacing) * 4)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-1{top:calc(var(--spacing) * -1)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1{bottom:calc(var(--spacing) * 1)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-\[calc\(11rem\+env\(safe-area-inset-bottom\,0px\)\)\]{bottom:calc(11rem + env(safe-area-inset-bottom,0px))}.left-0{left:calc(var(--spacing) * 0)}.left-0\.5{left:calc(var(--spacing) * .5)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-\[18\%\]{left:18%}.left-full{left:100%}.isolate{isolation:isolate}.\!z-\[10000\]{z-index:10000!important}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[55\]{z-index:55}.z-\[60\]{z-index:60}.z-\[62\]{z-index:62}.z-\[65\]{z-index:65}.z-\[66\]{z-index:66}.z-\[70\]{z-index:70}.z-\[71\]{z-index:71}.z-\[80\]{z-index:80}.z-\[81\]{z-index:81}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[131\]{z-index:131}.z-\[200\]{z-index:200}.z-\[201\]{z-index:201}.order-1{order:1}.order-2{order:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-\[1\.35rem\]{width:1.35rem;height:1.35rem}.size-\[1\.125rem\]{width:1.125rem;height:1.125rem}.size-\[4\.5rem\]{width:4.5rem;height:4.5rem}.size-\[14px\]{width:14px;height:14px}.size-\[18px\]{width:18px;height:18px}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-36{height:calc(var(--spacing) * 36)}.h-40{height:calc(var(--spacing) * 40)}.h-52{height:calc(var(--spacing) * 52)}.h-\[100dvh\]{height:100dvh}.h-\[calc\(100dvh-2rem\)\]{height:calc(100dvh - 2rem)}.h-\[min\(18rem\,40vh\)\]{height:min(18rem,40vh)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-16{max-height:calc(var(--spacing) * 16)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[4\.5rem\]{max-height:4.5rem}.max-h-\[12rem\]{max-height:12rem}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.max-h-\[min\(12rem\,40vh\)\]{max-height:min(12rem,40vh)}.max-h-\[min\(16rem\,calc\(100vh-10rem\)\)\]{max-height:min(16rem,100vh - 10rem)}.max-h-\[min\(20rem\,calc\(100vh-6rem\)\)\]{max-height:min(20rem,100vh - 6rem)}.max-h-\[min\(24rem\,50vh\)\]{max-height:min(24rem,50vh)}.max-h-\[min\(24rem\,55vh\)\]{max-height:min(24rem,55vh)}.max-h-\[min\(26rem\,54vh\)\]{max-height:min(26rem,54vh)}.max-h-\[min\(28rem\,60vh\)\]{max-height:min(28rem,60vh)}.max-h-\[min\(30vh\,11rem\)\]{max-height:min(30vh,11rem)}.max-h-\[min\(32rem\,85vh\)\]{max-height:min(32rem,85vh)}.max-h-\[min\(32rem\,90vh\)\]{max-height:min(32rem,90vh)}.max-h-\[min\(42vh\,20rem\)\]{max-height:min(42vh,20rem)}.max-h-\[min\(50vh\,20rem\)\]{max-height:min(50vh,20rem)}.max-h-\[min\(50vh\,22rem\)\]{max-height:min(50vh,22rem)}.max-h-\[min\(60vh\,26rem\)\]{max-height:min(60vh,26rem)}.max-h-\[min\(90dvh\,36rem\)\]{max-height:min(90dvh,36rem)}.max-h-\[min\(90vh\,32rem\)\]{max-height:min(90vh,32rem)}.max-h-\[min\(90vh\,44rem\)\]{max-height:min(90vh,44rem)}.max-h-\[min\(90vh\,48rem\)\]{max-height:min(90vh,48rem)}.max-h-\[min\(90vh\,52rem\)\]{max-height:min(90vh,52rem)}.max-h-\[min\(90vh\,56rem\)\]{max-height:min(90vh,56rem)}.max-h-\[min\(90vh\,640px\)\]{max-height:min(90vh,640px)}.max-h-\[min\(90vh\,720px\)\]{max-height:min(90vh,720px)}.max-h-\[min\(90vh\,800px\)\]{max-height:min(90vh,800px)}.max-h-\[min\(90vh\,840px\)\]{max-height:min(90vh,840px)}.max-h-\[min\(100\%\,calc\(100dvh-9rem\)\)\]{max-height:min(100%,100dvh - 9rem)}.max-h-\[min\(100vh-2rem\,44rem\)\]{max-height:min(100vh - 2rem,44rem)}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-64{min-height:calc(var(--spacing) * 64)}.min-h-\[1\.125rem\]{min-height:1.125rem}.min-h-\[1\.3125rem\]{min-height:1.3125rem}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[2\.75rem\]{min-height:2.75rem}.min-h-\[2px\]{min-height:2px}.min-h-\[4\.5rem\]{min-height:4.5rem}.min-h-\[7\.5rem\]{min-height:7.5rem}.min-h-\[11rem\]{min-height:11rem}.min-h-\[12rem\]{min-height:12rem}.min-h-\[44px\]{min-height:44px}.min-h-\[88px\]{min-height:88px}.min-h-\[100dvh\]{min-height:100dvh}.min-h-\[100px\]{min-height:100px}.min-h-\[140px\]{min-height:140px}.min-h-\[200px\]{min-height:200px}.min-h-\[320px\]{min-height:320px}.min-h-\[min\(40vh\,16rem\)\]{min-height:min(40vh,16rem)}.min-h-\[min\(40vh\,20rem\)\]{min-height:min(40vh,20rem)}.min-h-full{min-height:100%}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-64{width:calc(var(--spacing) * 64)}.w-\[4\.5rem\]{width:4.5rem}.w-\[5\.25rem\]{width:5.25rem}.w-\[9\.25rem\]{width:9.25rem}.w-\[42\%\]{width:42%}.w-\[min\(22rem\,calc\(100vw-2rem\)\)\]{width:min(22rem,100vw - 2rem)}.w-\[min\(28rem\,calc\(100vw-2rem\)\)\]{width:min(28rem,100vw - 2rem)}.w-\[min\(42rem\,calc\(100vw-1\.5rem\)\)\]{width:min(42rem,100vw - 1.5rem)}.w-\[min\(100\%\,var\(--max-width-app-main\)\)\]{width:min(100%, var(--max-width-app-main))}.w-\[min\(100\%-2rem\,22rem\)\]{width:min(100% - 2rem,22rem)}.w-\[min\(100\%-2rem\,24rem\)\]{width:min(100% - 2rem,24rem)}.w-\[min\(100\%-2rem\,26rem\)\]{width:min(100% - 2rem,26rem)}.w-\[min\(100\%-2rem\,28rem\)\]{width:min(100% - 2rem,28rem)}.w-\[min\(100\%-2rem\,32rem\)\]{width:min(100% - 2rem,32rem)}.w-\[min\(100\%-2rem\,36rem\)\]{width:min(100% - 2rem,36rem)}.w-\[min\(100\%-2rem\,min\(92vw\,48rem\)\)\]{width:min(100% - 2rem,min(92vw,48rem))}.w-\[min\(100\%-2rem\,min\(92vw\,56rem\)\)\]{width:min(100% - 2rem,min(92vw,56rem))}.w-\[min\(calc\(100vw-2rem\)\,15rem\)\]{width:min(100vw - 2rem,15rem)}.w-\[min\(calc\(100vw-2rem\)\,20rem\)\]{width:min(100vw - 2rem,20rem)}.w-\[min\(calc\(100vw-2rem\)\,26rem\)\]{width:min(100vw - 2rem,26rem)}.w-\[var\(--radix-popover-trigger-width\)\]{width:var(--radix-popover-trigger-width)}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.\[max-width\:min\(20rem\,90vw\)\]{max-width:min(20rem,90vw)}.max-w-\(--max-width-chat\){max-width:var(--max-width-chat)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-\[4\.5rem\]{max-width:4.5rem}.max-w-\[7rem\]{max-width:7rem}.max-w-\[8rem\]{max-width:8rem}.max-w-\[10ch\]{max-width:10ch}.max-w-\[10rem\]{max-width:10rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[12rem\]{max-width:12rem}.max-w-\[14rem\]{max-width:14rem}.max-w-\[16rem\]{max-width:16rem}.max-w-\[17rem\]{max-width:17rem}.max-w-\[200px\]{max-width:200px}.max-w-\[min\(6\.5rem\,30vw\)\]{max-width:min(6.5rem,30vw)}.max-w-\[min\(12rem\,40vw\)\]{max-width:min(12rem,40vw)}.max-w-\[min\(12rem\,46\%\)\]{max-width:min(12rem,46%)}.max-w-\[min\(16rem\,48vw\)\]{max-width:min(16rem,48vw)}.max-w-\[min\(20rem\,calc\(100vw-10rem\)\)\]{max-width:min(20rem,100vw - 10rem)}.max-w-\[min\(22rem\,90vw\)\]{max-width:min(22rem,90vw)}.max-w-\[min\(32rem\,calc\(100vw-8rem\)\)\]{max-width:min(32rem,100vw - 8rem)}.max-w-\[min\(85\%\,var\(--max-width-chat\)\)\]{max-width:min(85%, var(--max-width-chat))}.max-w-\[min\(100\%\,12rem\)\]{max-width:min(100%,12rem)}.max-w-\[min\(100\%\,48rem\)\]{max-width:min(100%,48rem)}.max-w-\[min\(100\%\,52rem\)\]{max-width:min(100%,52rem)}.max-w-\[min\(220px\,88vw\)\]{max-width:min(220px,88vw)}.max-w-\[min\(calc\(10ch\+3rem\)\,calc\(100vw-8rem\)\)\]{max-width:min(10ch + 3rem,100vw - 8rem)}.max-w-\[min\(calc\(100vw-1rem\)\,28rem\)\]{max-width:min(100vw - 1rem,28rem)}.max-w-\[min\(calc\(100vw-2rem\)\,16rem\)\]{max-width:min(100vw - 2rem,16rem)}.max-w-\[var\(--max-width-chat\)\]{max-width:var(--max-width-chat)}.max-w-app-main{max-width:var(--max-width-app-main)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-\[4\.5rem\]{min-width:4.5rem}.min-w-\[4\.25rem\]{min-width:4.25rem}.min-w-\[4rem\]{min-width:4rem}.min-w-\[5rem\]{min-width:5rem}.min-w-\[6\.5rem\]{min-width:6.5rem}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[8\.5rem\]{min-width:8.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[9\.5rem\]{min-width:9.5rem}.min-w-\[9rem\]{min-width:9rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[11rem\]{min-width:11rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[32rem\]{min-width:32rem}.min-w-\[44px\]{min-width:44px}.min-w-\[700px\]{min-width:700px}.min-w-\[min\(100\%\,36rem\)\]{min-width:min(100%,36rem)}.min-w-\[min\(160px\,80vw\)\]{min-width:min(160px,80vw)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-wait{cursor:wait}.touch-none{touch-action:none}.resize{resize:both}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[5\.5rem_1fr\]{grid-template-columns:5.5rem 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[auto_minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:auto minmax(0,1fr) auto auto}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0\.5{column-gap:calc(var(--spacing) * .5)}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-0{row-gap:calc(var(--spacing) * 0)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-edge>:not(:last-child)){border-color:var(--color-edge)}:where(.divide-edge-subtle>:not(:last-child)){border-color:var(--color-edge-subtle)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-y-contain{overscroll-behavior-y:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#2563eb33}@supports (color:color-mix(in lab, red, red)){.border-accent\/20{border-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.border-accent\/25{border-color:#2563eb40}@supports (color:color-mix(in lab, red, red)){.border-accent\/25{border-color:color-mix(in oklab, var(--color-accent) 25%, transparent)}}.border-accent\/40{border-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.border-accent\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-accent\/50{border-color:#2563eb80}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/25{border-color:color-mix(in oklab, var(--color-amber-500) 25%, transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/40{border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.border-blue-200\/80{border-color:#bedbffcc}@supports (color:color-mix(in lab, red, red)){.border-blue-200\/80{border-color:color-mix(in oklab, var(--color-blue-200) 80%, transparent)}}.border-danger\/30{border-color:#dc26264d}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-danger\/35{border-color:#dc262659}@supports (color:color-mix(in lab, red, red)){.border-danger\/35{border-color:color-mix(in oklab, var(--color-danger) 35%, transparent)}}.border-danger\/40{border-color:#dc262666}@supports (color:color-mix(in lab, red, red)){.border-danger\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-edge{border-color:var(--color-edge)}.border-edge-subtle{border-color:var(--color-edge-subtle)}.border-edge-subtle\/60{border-color:#ebebed99}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/60{border-color:color-mix(in oklab, var(--color-edge-subtle) 60%, transparent)}}.border-edge-subtle\/70{border-color:#ebebedb3}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/70{border-color:color-mix(in oklab, var(--color-edge-subtle) 70%, transparent)}}.border-edge-subtle\/80{border-color:#ebebedcc}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/80{border-color:color-mix(in oklab, var(--color-edge-subtle) 80%, transparent)}}.border-edge-subtle\/90{border-color:#ebebede6}@supports (color:color-mix(in lab, red, red)){.border-edge-subtle\/90{border-color:color-mix(in oklab, var(--color-edge-subtle) 90%, transparent)}}.border-edge\/60{border-color:#d2d2d799}@supports (color:color-mix(in lab, red, red)){.border-edge\/60{border-color:color-mix(in oklab, var(--color-edge) 60%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-400\/30{border-color:#00d2944d}@supports (color:color-mix(in lab, red, red)){.border-emerald-400\/30{border-color:color-mix(in oklab, var(--color-emerald-400) 30%, transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/20{border-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.border-emerald-500\/40{border-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/40{border-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.border-fg{border-color:var(--color-fg)}.border-indigo-400\/30{border-color:#7d87ff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-400\/30{border-color:color-mix(in oklab, var(--color-indigo-400) 30%, transparent)}}.border-purple-400\/30{border-color:#c07eff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-400\/30{border-color:color-mix(in oklab, var(--color-purple-400) 30%, transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.border-red-500\/40{border-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.border-red-500\/40{border-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.border-red-500\/50{border-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.border-success\/30{border-color:#0596694d}@supports (color:color-mix(in lab, red, red)){.border-success\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-white\/55{border-color:#ffffff8c}@supports (color:color-mix(in lab, red, red)){.border-white\/55{border-color:color-mix(in oklab, var(--color-white) 55%, transparent)}}.border-white\/58{border-color:#ffffff94}@supports (color:color-mix(in lab, red, red)){.border-white\/58{border-color:color-mix(in oklab, var(--color-white) 58%, transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-accent\/60{border-left-color:#2563eb99}@supports (color:color-mix(in lab, red, red)){.border-l-accent\/60{border-left-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.bg-\[\#0a0a0a\]{background-color:#0a0a0a}.bg-\[\#000000\]{background-color:#000}.bg-\[\#1c1c1e\]\/70{background-color:#1c1c1eb3;background-color:lab(10.3307% .387788 -1.38484/.7)}.bg-\[\#1d1d1f\]{background-color:#1d1d1f}.bg-\[\#10b981\]{background-color:#10b981}.bg-\[\#28c840\]{background-color:#28c840}.bg-\[\#34d399\]{background-color:#34d399}.bg-\[\#065f46\]{background-color:#065f46}.bg-\[\#134e2a\]{background-color:#134e2a}.bg-\[\#2563eb\]{background-color:#2563eb}.bg-\[\#d2d2d7\]{background-color:#d2d2d7}.bg-\[\#f5f5f7\]{background-color:#f5f5f7}.bg-\[\#febc2e\]{background-color:#febc2e}.bg-\[\#ff5f57\]{background-color:#ff5f57}.bg-\[\#ffffff\]{background-color:#fff}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-accent-soft\/20{background-color:#eff6ff33}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/20{background-color:color-mix(in oklab, var(--color-accent-soft) 20%, transparent)}}.bg-accent-soft\/30{background-color:#eff6ff4d}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/30{background-color:color-mix(in oklab, var(--color-accent-soft) 30%, transparent)}}.bg-accent-soft\/40{background-color:#eff6ff66}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/40{background-color:color-mix(in oklab, var(--color-accent-soft) 40%, transparent)}}.bg-accent-soft\/60{background-color:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/60{background-color:color-mix(in oklab, var(--color-accent-soft) 60%, transparent)}}.bg-accent-soft\/70{background-color:#eff6ffb3}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/70{background-color:color-mix(in oklab, var(--color-accent-soft) 70%, transparent)}}.bg-accent-soft\/80{background-color:#eff6ffcc}@supports (color:color-mix(in lab, red, red)){.bg-accent-soft\/80{background-color:color-mix(in oklab, var(--color-accent-soft) 80%, transparent)}}.bg-accent\/5{background-color:#2563eb0d}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab, var(--color-accent) 5%, transparent)}}.bg-accent\/10{background-color:#2563eb1a}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-accent\/15{background-color:#2563eb26}@supports (color:color-mix(in lab, red, red)){.bg-accent\/15{background-color:color-mix(in oklab, var(--color-accent) 15%, transparent)}}.bg-accent\/45{background-color:#2563eb73}@supports (color:color-mix(in lab, red, red)){.bg-accent\/45{background-color:color-mix(in oklab, var(--color-accent) 45%, transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/80{background-color:#fffbebcc}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/80{background-color:color-mix(in oklab, var(--color-amber-50) 80%, transparent)}}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/5{background-color:color-mix(in oklab, var(--color-amber-500) 5%, transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-black\/0{background-color:#0000}@supports (color:color-mix(in lab, red, red)){.bg-black\/0{background-color:color-mix(in oklab, var(--color-black) 0%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-50\/95{background-color:#eff6fff2}@supports (color:color-mix(in lab, red, red)){.bg-blue-50\/95{background-color:color-mix(in oklab, var(--color-blue-50) 95%, transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-danger{background-color:var(--color-danger)}.bg-danger\/10{background-color:#dc26261a}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-edge{background-color:var(--color-edge)}.bg-edge-subtle{background-color:var(--color-edge-subtle)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500\/5{background-color:#00bb7f0d}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/5{background-color:color-mix(in oklab, var(--color-emerald-500) 5%, transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.bg-emerald-950\/60{background-color:#002c2299}@supports (color:color-mix(in lab, red, red)){.bg-emerald-950\/60{background-color:color-mix(in oklab, var(--color-emerald-950) 60%, transparent)}}.bg-fg{background-color:var(--color-fg)}.bg-indigo-950\/60{background-color:#1e1a4d99}@supports (color:color-mix(in lab, red, red)){.bg-indigo-950\/60{background-color:color-mix(in oklab, var(--color-indigo-950) 60%, transparent)}}.bg-purple-950\/60{background-color:#3c036699}@supports (color:color-mix(in lab, red, red)){.bg-purple-950\/60{background-color:color-mix(in oklab, var(--color-purple-950) 60%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/15{background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/20{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-scrim{background-color:var(--color-scrim)}.bg-scrim\/55{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-scrim\/55{background-color:color-mix(in oklab, var(--color-scrim) 55%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-surface-active{background-color:var(--color-surface-active)}.bg-surface-active\/70{background-color:#dcdcdeb3}@supports (color:color-mix(in lab, red, red)){.bg-surface-active\/70{background-color:color-mix(in oklab, var(--color-surface-active) 70%, transparent)}}.bg-surface-base{background-color:var(--color-surface-base)}.bg-surface-base\/40{background-color:#f5f5f766}@supports (color:color-mix(in lab, red, red)){.bg-surface-base\/40{background-color:color-mix(in oklab, var(--color-surface-base) 40%, transparent)}}.bg-surface-base\/80{background-color:#f5f5f7cc}@supports (color:color-mix(in lab, red, red)){.bg-surface-base\/80{background-color:color-mix(in oklab, var(--color-surface-base) 80%, transparent)}}.bg-surface-hover{background-color:var(--color-surface-hover)}.bg-surface-hover\/20{background-color:#e8e8ed33}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/20{background-color:color-mix(in oklab, var(--color-surface-hover) 20%, transparent)}}.bg-surface-hover\/25{background-color:#e8e8ed40}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/25{background-color:color-mix(in oklab, var(--color-surface-hover) 25%, transparent)}}.bg-surface-hover\/30{background-color:#e8e8ed4d}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/30{background-color:color-mix(in oklab, var(--color-surface-hover) 30%, transparent)}}.bg-surface-hover\/35{background-color:#e8e8ed59}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/35{background-color:color-mix(in oklab, var(--color-surface-hover) 35%, transparent)}}.bg-surface-hover\/40{background-color:#e8e8ed66}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/40{background-color:color-mix(in oklab, var(--color-surface-hover) 40%, transparent)}}.bg-surface-hover\/45{background-color:#e8e8ed73}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/45{background-color:color-mix(in oklab, var(--color-surface-hover) 45%, transparent)}}.bg-surface-hover\/50{background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/50{background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.bg-surface-hover\/60{background-color:#e8e8ed99}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/60{background-color:color-mix(in oklab, var(--color-surface-hover) 60%, transparent)}}.bg-surface-hover\/70{background-color:#e8e8edb3}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/70{background-color:color-mix(in oklab, var(--color-surface-hover) 70%, transparent)}}.bg-surface-hover\/80{background-color:#e8e8edcc}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/80{background-color:color-mix(in oklab, var(--color-surface-hover) 80%, transparent)}}.bg-surface-hover\/90{background-color:#e8e8ede6}@supports (color:color-mix(in lab, red, red)){.bg-surface-hover\/90{background-color:color-mix(in oklab, var(--color-surface-hover) 90%, transparent)}}.bg-surface-panel{background-color:var(--color-surface-panel)}.bg-surface-panel\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/40{background-color:color-mix(in oklab, var(--color-surface-panel) 40%, transparent)}}.bg-surface-panel\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/50{background-color:color-mix(in oklab, var(--color-surface-panel) 50%, transparent)}}.bg-surface-panel\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/60{background-color:color-mix(in oklab, var(--color-surface-panel) 60%, transparent)}}.bg-surface-panel\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/80{background-color:color-mix(in oklab, var(--color-surface-panel) 80%, transparent)}}.bg-surface-panel\/\[0\.96\]{background-color:#fffffff5}@supports (color:color-mix(in lab, red, red)){.bg-surface-panel\/\[0\.96\]{background-color:color-mix(in oklab, var(--color-surface-panel) 96%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/45{background-color:#ffffff73}@supports (color:color-mix(in lab, red, red)){.bg-white\/45{background-color:color-mix(in oklab, var(--color-white) 45%, transparent)}}.bg-white\/86{background-color:#ffffffdb}@supports (color:color-mix(in lab, red, red)){.bg-white\/86{background-color:color-mix(in oklab, var(--color-white) 86%, transparent)}}.bg-white\/92{background-color:#ffffffeb}@supports (color:color-mix(in lab, red, red)){.bg-white\/92{background-color:color-mix(in oklab, var(--color-white) 92%, transparent)}}.\[fill\:var\(--color-fg\)\]{fill:var(--color-fg)}.fill-edge{fill:var(--color-edge)}.\[stroke\:var\(--color-accent\)\]{stroke:var(--color-accent)}.stroke-\[1\.75\]{stroke-width:1.75px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-\[min\(18vh\,7rem\)\]{padding-top:min(18vh,7rem)}.pt-\[min\(20vh\,8rem\)\]{padding-top:min(20vh,8rem)}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-0\.5{padding-right:calc(var(--spacing) * .5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\[text-align\:inherit\]{text-align:inherit}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[0\.9375rem\]{font-size:.9375rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-accent-fg{color:var(--color-accent-fg)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-amber-950{color:var(--color-amber-950)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-current{color:currentColor}.text-danger{color:var(--color-danger)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-fg{color:var(--color-fg)}.text-fg-disabled{color:var(--color-fg-disabled)}.text-fg-muted{color:var(--color-fg-muted)}.text-fg-muted\/25{color:#6e6e7340}@supports (color:color-mix(in lab, red, red)){.text-fg-muted\/25{color:color-mix(in oklab, var(--color-fg-muted) 25%, transparent)}}.text-fg-subtle{color:var(--color-fg-subtle)}.text-green-600{color:var(--color-green-600)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-500{color:var(--color-indigo-500)}.text-purple-300{color:var(--color-purple-300)}.text-purple-500{color:var(--color-purple-500)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-success{color:var(--color-success)}.text-surface-base{color:var(--color-surface-base)}.text-surface-panel{color:var(--color-surface-panel)}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-accent-fg\/40{text-decoration-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.decoration-accent-fg\/40{-webkit-text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent);text-decoration-color:color-mix(in oklab, var(--color-accent-fg) 40%, transparent)}}.decoration-edge{-webkit-text-decoration-color:var(--color-edge);-webkit-text-decoration-color:var(--color-edge);-webkit-text-decoration-color:var(--color-edge);text-decoration-color:var(--color-edge)}.underline-offset-2{text-underline-offset:2px}.caret-current{caret-color:currentColor}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_var\(--color-accent\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--color-accent));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgb\(255_255_255\/0\.65\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffffa6);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-elevated{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-float{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a), 0 12px 40px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-popover{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f), 0 2px 12px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-surface{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000a), 0 1px 6px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent{--tw-ring-color:var(--color-accent)}.ring-accent\/25{--tw-ring-color:#2563eb40}@supports (color:color-mix(in lab, red, red)){.ring-accent\/25{--tw-ring-color:color-mix(in oklab, var(--color-accent) 25%, transparent)}}.ring-accent\/30{--tw-ring-color:#2563eb4d}@supports (color:color-mix(in lab, red, red)){.ring-accent\/30{--tw-ring-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.ring-edge{--tw-ring-color:var(--color-edge)}.ring-edge-subtle{--tw-ring-color:var(--color-edge-subtle)}.ring-edge-subtle\/40{--tw-ring-color:#ebebed66}@supports (color:color-mix(in lab, red, red)){.ring-edge-subtle\/40{--tw-ring-color:color-mix(in oklab, var(--color-edge-subtle) 40%, transparent)}}.ring-edge-subtle\/80{--tw-ring-color:#ebebedcc}@supports (color:color-mix(in lab, red, red)){.ring-edge-subtle\/80{--tw-ring-color:color-mix(in oklab, var(--color-edge-subtle) 80%, transparent)}}.ring-edge\/35{--tw-ring-color:#d2d2d759}@supports (color:color-mix(in lab, red, red)){.ring-edge\/35{--tw-ring-color:color-mix(in oklab, var(--color-edge) 35%, transparent)}}.ring-edge\/40{--tw-ring-color:#d2d2d766}@supports (color:color-mix(in lab, red, red)){.ring-edge\/40{--tw-ring-color:color-mix(in oklab, var(--color-edge) 40%, transparent)}}.ring-edge\/60{--tw-ring-color:#d2d2d799}@supports (color:color-mix(in lab, red, red)){.ring-edge\/60{--tw-ring-color:color-mix(in oklab, var(--color-edge) 60%, transparent)}}.ring-offset-surface-base{--tw-ring-offset-color:var(--color-surface-base)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\]{transition-property:background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,background-color\]{transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[box-shadow\]{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,border-color\,opacity\]{transition-property:color,background-color,border-color,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,border-color\]{transition-property:color,background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,box-shadow\]{transition-property:color,background-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,box-shadow\]{transition-property:transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,width\,height\]{transition-property:transform,width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[transition-timing-function\:cubic-bezier\(0\.32\,0\.72\,0\,1\)\]{transition-timing-function:cubic-bezier(.32,.72,0,1)}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[-webkit-app-region\:drag\]{-webkit-app-region:drag}.\[-webkit-app-region\:no-drag\]{-webkit-app-region:no-drag}.\[backface-visibility\:hidden\]{backface-visibility:hidden}.\[fill-opacity\:0\.82\]{fill-opacity:.82}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.\[scrollbar-gutter\:stable_both-edges\]{scrollbar-gutter:stable both-edges}.\[scrollbar-width\:none\]{scrollbar-width:none}.ring-inset{--tw-ring-inset:inset}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}.group-open\:rounded-b-none:is(:where(.group):is([open],:popover-open,:open) *){border-bottom-right-radius:0;border-bottom-left-radius:0}.group-open\:text-fg:is(:where(.group):is([open],:popover-open,:open) *){color:var(--color-fg)}.group-open\:text-fg-muted:is(:where(.group):is([open],:popover-open,:open) *){color:var(--color-fg-muted)}.group-focus-within\/msg\:pointer-events-auto:is(:where(.group\/msg):focus-within *){pointer-events:auto}.group-focus-within\/msg\:opacity-100:is(:where(.group\/msg):focus-within *){opacity:1}@media (hover:hover){.group-hover\:-translate-y-px:is(:where(.group):hover *){--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-black\/25:is(:where(.group):hover *){background-color:#00000040}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-black\/25:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-black) 25%, transparent)}}.group-hover\:text-fg:is(:where(.group):hover *){color:var(--color-fg)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:ring-edge\/55:is(:where(.group):hover *){--tw-ring-color:#d2d2d78c}@supports (color:color-mix(in lab, red, red)){.group-hover\:ring-edge\/55:is(:where(.group):hover *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 55%, transparent)}}.group-hover\/msg\:pointer-events-auto:is(:where(.group\/msg):hover *){pointer-events:auto}.group-hover\/msg\:opacity-100:is(:where(.group\/msg):hover *){opacity:1}}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-fg-disabled::placeholder{color:var(--color-fg-disabled)}.placeholder\:text-fg-muted::placeholder{color:var(--color-fg-muted)}.placeholder\:text-fg-muted\/70::placeholder{color:#6e6e73b3}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-fg-muted\/70::placeholder{color:color-mix(in oklab, var(--color-fg-muted) 70%, transparent)}}.placeholder\:text-fg-subtle::placeholder{color:var(--color-fg-subtle)}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\:left-1\/2:before{content:var(--tw-content);left:50%}.before\:z-0:before{content:var(--tw-content);z-index:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:-translate-x-1\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:\!bg-edge\/80:before{content:var(--tw-content);background-color:#d2d2d7cc!important}@supports (color:color-mix(in lab, red, red)){.before\:\!bg-edge\/80:before{background-color:color-mix(in oklab, var(--color-edge) 80%, transparent)!important}}.before\:bg-transparent:before{content:var(--tw-content);background-color:#0000}.before\:transition-\[background-color\]:before{content:var(--tw-content);transition-property:background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\:duration-150:before{content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:h-0\.5:after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.after\:w-9:after{content:var(--tw-content);width:calc(var(--spacing) * 9)}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-accent:after{content:var(--tw-content);background-color:var(--color-accent)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.open\:bg-surface-base:is([open],:popover-open,:open){background-color:var(--color-surface-base)}.open\:pb-3:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 3)}.focus-within\:outline-none:focus-within{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/40:hover{border-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-accent\/50:hover{border-color:#2563eb80}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\:border-edge:hover{border-color:var(--color-edge)}.hover\:border-edge-strong:hover{border-color:var(--color-edge-strong)}.hover\:border-edge-subtle:hover{border-color:var(--color-edge-subtle)}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-accent-soft:hover{background-color:var(--color-accent-soft)}.hover\:bg-accent-soft\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-soft\/50:hover{background-color:color-mix(in oklab, var(--color-accent-soft) 50%, transparent)}}.hover\:bg-accent-soft\/60:hover{background-color:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-soft\/60:hover{background-color:color-mix(in oklab, var(--color-accent-soft) 60%, transparent)}}.hover\:bg-accent-soft\/80:hover{background-color:#eff6ffcc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-soft\/80:hover{background-color:color-mix(in oklab, var(--color-accent-soft) 80%, transparent)}}.hover\:bg-accent\/15:hover{background-color:#2563eb26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/15:hover{background-color:color-mix(in oklab, var(--color-accent) 15%, transparent)}}.hover\:bg-accent\/90:hover{background-color:#2563ebe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/90:hover{background-color:color-mix(in oklab, var(--color-accent) 90%, transparent)}}.hover\:bg-danger\/90:hover{background-color:#dc2626e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-danger\/90:hover{background-color:color-mix(in oklab, var(--color-danger) 90%, transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.hover\:bg-red-500\/15:hover{background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/15:hover{background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-surface-active:hover{background-color:var(--color-surface-active)}.hover\:bg-surface-active\/70:hover{background-color:#dcdcdeb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-active\/70:hover{background-color:color-mix(in oklab, var(--color-surface-active) 70%, transparent)}}.hover\:bg-surface-base:hover{background-color:var(--color-surface-base)}.hover\:bg-surface-hover:hover{background-color:var(--color-surface-hover)}.hover\:bg-surface-hover\/20:hover{background-color:#e8e8ed33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/20:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 20%, transparent)}}.hover\:bg-surface-hover\/40:hover{background-color:#e8e8ed66}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/40:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 40%, transparent)}}.hover\:bg-surface-hover\/45:hover{background-color:#e8e8ed73}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/45:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 45%, transparent)}}.hover\:bg-surface-hover\/50:hover{background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/50:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.hover\:bg-surface-hover\/60:hover{background-color:#e8e8ed99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/60:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 60%, transparent)}}.hover\:bg-surface-hover\/70:hover{background-color:#e8e8edb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/70:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 70%, transparent)}}.hover\:bg-surface-hover\/80:hover{background-color:#e8e8edcc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/80:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 80%, transparent)}}.hover\:bg-surface-hover\/90:hover{background-color:#e8e8ede6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-hover\/90:hover{background-color:color-mix(in oklab, var(--color-surface-hover) 90%, transparent)}}.hover\:bg-surface-panel:hover{background-color:var(--color-surface-panel)}.hover\:bg-surface-panel\/60:hover{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-panel\/60:hover{background-color:color-mix(in oklab, var(--color-surface-panel) 60%, transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent-fg:hover{color:var(--color-accent-fg)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:text-fg-muted:hover{color:var(--color-fg-muted)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-accent-fg:hover{-webkit-text-decoration-color:var(--color-accent-fg);-webkit-text-decoration-color:var(--color-accent-fg);-webkit-text-decoration-color:var(--color-accent-fg);text-decoration-color:var(--color-accent-fg)}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-95:hover{opacity:.95}.hover\:ring-accent\/40:hover{--tw-ring-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.hover\:ring-accent\/40:hover{--tw-ring-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:before\:bg-edge\/65:hover:before{content:var(--tw-content);background-color:#d2d2d7a6}@supports (color:color-mix(in lab, red, red)){.hover\:before\:bg-edge\/65:hover:before{background-color:color-mix(in oklab, var(--color-edge) 65%, transparent)}}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:absolute:focus{position:absolute}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-4:focus{left:calc(var(--spacing) * 4)}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-edge-strong:focus{border-color:var(--color-edge-strong)}.focus\:opacity-100:focus{opacity:1}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent:focus{--tw-ring-color:var(--color-accent)}.focus\:ring-accent\/30:focus{--tw-ring-color:#2563eb4d}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.focus\:ring-accent\/40:focus{--tw-ring-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/40:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-edge:focus-visible{border-color:var(--color-edge)}.focus-visible\:border-edge-strong:focus-visible{border-color:var(--color-edge-strong)}.focus-visible\:shadow-none:focus-visible{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-accent:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:#2563eb66}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.focus-visible\:ring-red-500\/40:focus-visible{--tw-ring-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-red-500\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-surface-base:focus-visible{--tw-ring-offset-color:var(--color-surface-base)}.focus-visible\:ring-offset-surface-panel:focus-visible{--tw-ring-offset-color:var(--color-surface-panel)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-100:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.97\]:active{scale:.97}.active\:scale-\[0\.98\]:active{scale:.98}.active\:scale-\[0\.99\]:active{scale:.99}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-35:disabled{opacity:.35}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-100:disabled{opacity:1}.data-highlighted\:bg-red-500\/10[data-highlighted]{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:bg-red-500\/10[data-highlighted]{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.data-highlighted\:bg-surface-hover[data-highlighted]{background-color:var(--color-surface-hover)}.data-\[highlighted\]\:bg-red-50[data-highlighted]{background-color:var(--color-red-50)}.data-\[highlighted\]\:bg-surface-hover[data-highlighted]{background-color:var(--color-surface-hover)}.data-\[state\=open\]\:border-edge[data-state=open]{border-color:var(--color-edge)}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\:transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.motion-safe\:duration-150{--tw-duration:.15s;transition-duration:.15s}.motion-safe\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.motion-safe\:active\:scale-\[0\.97\]:active{scale:.97}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:opacity-100{opacity:1}.motion-reduce\:\!transition-none{transition-property:none!important}.motion-reduce\:transition-none{transition-property:none}.motion-reduce\:\!duration-0{--tw-duration:0s!important;transition-duration:0s!important}.motion-reduce\:active\:scale-100:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@media not all and (min-width:48rem){.max-md\:pointer-events-none{pointer-events:none}.max-md\:fixed{position:fixed}.max-md\:top-0{top:calc(var(--spacing) * 0)}.max-md\:right-0{right:calc(var(--spacing) * 0)}.max-md\:left-0{left:calc(var(--spacing) * 0)}.max-md\:z-50{z-index:50}.max-md\:hidden{display:none}.max-md\:h-\[100dvh\]{height:100dvh}.max-md\:w-\[min\(16rem\,85vw\)\]{width:min(16rem,85vw)}.max-md\:w-\[min\(20rem\,92vw\)\]{width:min(20rem,92vw)}.max-md\:-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:shadow-elevated{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.max-md\:shadow-popover{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f), 0 2px 12px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.max-md\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.max-md\:duration-200{--tw-duration:.2s;transition-duration:.2s}.max-md\:ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}@media (prefers-reduced-motion:reduce){@media not all and (min-width:48rem){.motion-reduce\:max-md\:transition-none{transition-property:none}}}@media (min-width:40rem){.sm\:not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.sm\:inset-auto{inset:auto}.sm\:top-1\/2{top:50%}.sm\:top-4{top:calc(var(--spacing) * 4)}.sm\:right-2{right:calc(var(--spacing) * 2)}.sm\:right-3{right:calc(var(--spacing) * 3)}.sm\:right-4{right:calc(var(--spacing) * 4)}.sm\:left-1\/2{left:50%}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:mt-12{margin-top:calc(var(--spacing) * 12)}.sm\:mr-auto{margin-right:auto}.sm\:ml-2\.5{margin-left:calc(var(--spacing) * 2.5)}.sm\:ml-auto{margin-left:auto}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.sm\:size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.sm\:size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.sm\:h-\[min\(88vh\,48rem\)\]{height:min(88vh,48rem)}.sm\:max-h-\[min\(88vh\,48rem\)\]{max-height:min(88vh,48rem)}.sm\:min-h-9{min-height:calc(var(--spacing) * 9)}.sm\:min-h-10{min-height:calc(var(--spacing) * 10)}.sm\:min-h-\[32rem\]{min-height:32rem}.sm\:w-9{width:calc(var(--spacing) * 9)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-\[5\.25rem\]{width:5.25rem}.sm\:w-\[min\(100\%\,14rem\)\]{width:min(100%,14rem)}.sm\:w-\[min\(100\%-2rem\,58rem\)\]{width:min(100% - 2rem,58rem)}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-\[11rem\]{max-width:11rem}.sm\:max-w-\[12rem\]{max-width:12rem}.sm\:max-w-\[17rem\]{max-width:17rem}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-none{max-width:none}.sm\:max-w-xs{max-width:var(--container-xs)}.sm\:min-w-0{min-width:calc(var(--spacing) * 0)}.sm\:min-w-\[7\.5rem\]{min-width:7.5rem}.sm\:min-w-\[7rem\]{min-width:7rem}.sm\:min-w-\[11rem\]{min-width:11rem}.sm\:min-w-\[12rem\]{min-width:12rem}.sm\:flex-1{flex:1}.sm\:shrink-0{flex-shrink:0}.sm\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:items-stretch{align-items:stretch}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:justify-start{justify-content:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:self-center{align-self:center}.sm\:overflow-hidden{overflow:hidden}.sm\:overflow-y-auto{overflow-y:auto}.sm\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.sm\:border-edge{border-color:var(--color-edge)}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-0{padding-inline:calc(var(--spacing) * 0)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:px-12{padding-inline:calc(var(--spacing) * 12)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-10{padding-block:calc(var(--spacing) * 10)}.sm\:pt-10{padding-top:calc(var(--spacing) * 10)}.sm\:pr-3{padding-right:calc(var(--spacing) * 3)}.sm\:pr-5{padding-right:calc(var(--spacing) * 5)}.sm\:pr-16{padding-right:calc(var(--spacing) * 16)}.sm\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.sm\:pl-2{padding-left:calc(var(--spacing) * 2)}.sm\:pl-4{padding-left:calc(var(--spacing) * 4)}.sm\:text-left{text-align:left}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[0\.9375rem\]{font-size:.9375rem}}@media (min-width:48rem){.md\:pointer-events-none{pointer-events:none}.md\:relative{position:relative}.md\:right-10{right:calc(var(--spacing) * 10)}.md\:m-3{margin:calc(var(--spacing) * 3)}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline-flex{display:inline-flex}.md\:h-full{height:100%}.md\:max-h-\[calc\(100dvh-1\.5rem\)\]{max-height:calc(100dvh - 1.5rem)}.md\:max-h-none{max-height:none}.md\:min-h-0{min-height:calc(var(--spacing) * 0)}.md\:w-0{width:calc(var(--spacing) * 0)}.md\:w-\[4\.5rem\]{width:4.5rem}.md\:max-w-0{max-width:calc(var(--spacing) * 0)}.md\:min-w-0{min-width:calc(var(--spacing) * 0)}.md\:flex-1{flex:1}.md\:shrink-0{flex-shrink:0}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:flex-row{flex-direction:row}.md\:overflow-hidden{overflow:hidden}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:border-edge{border-color:var(--color-edge)}.md\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.md\:text-center{text-align:center}.md\:shadow-elevated{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (prefers-reduced-motion:reduce){@media (min-width:48rem){.motion-reduce\:md\:transition-none{transition-property:none}}}@media (min-width:64rem){.lg\:inline{display:inline}.lg\:max-w-app-main{max-width:var(--max-width-app-main)}.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (min-width:80rem){.xl\:px-6{padding-inline:calc(var(--spacing) * 6)}}:where(.dark\:divide-edge:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-edge)}.dark\:border-accent\/30:where(.dark,.dark *){border-color:#2563eb4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-accent\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.dark\:border-accent\/50:where(.dark,.dark *){border-color:#2563eb80}@supports (color:color-mix(in lab, red, red)){.dark\:border-accent\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.dark\:border-amber-800:where(.dark,.dark *){border-color:var(--color-amber-800)}.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:#7b330666}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-amber-900) 40%, transparent)}}.dark\:border-blue-900\/50:where(.dark,.dark *){border-color:#1c398e80}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-blue-900) 50%, transparent)}}.dark\:border-danger\/40:where(.dark,.dark *){border-color:#dc262666}@supports (color:color-mix(in lab, red, red)){.dark\:border-danger\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.dark\:border-edge:where(.dark,.dark *){border-color:var(--color-edge)}.dark\:border-edge-subtle:where(.dark,.dark *){border-color:var(--color-edge-subtle)}.dark\:border-edge-subtle\/70:where(.dark,.dark *){border-color:#ebebedb3}@supports (color:color-mix(in lab, red, red)){.dark\:border-edge-subtle\/70:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-edge-subtle) 70%, transparent)}}.dark\:border-edge-subtle\/90:where(.dark,.dark *){border-color:#ebebede6}@supports (color:color-mix(in lab, red, red)){.dark\:border-edge-subtle\/90:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-edge-subtle) 90%, transparent)}}.dark\:border-emerald-900\/40:where(.dark,.dark *){border-color:#004e3b66}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-emerald-900) 40%, transparent)}}.dark\:border-red-800:where(.dark,.dark *){border-color:var(--color-red-800)}.dark\:border-red-900\/40:where(.dark,.dark *){border-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.dark\:border-red-900\/50:where(.dark,.dark *){border-color:#82181a80}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-900) 50%, transparent)}}.dark\:border-red-900\/60:where(.dark,.dark *){border-color:#82181a99}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/60:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-red-900) 60%, transparent)}}.dark\:border-white\/13:where(.dark,.dark *){border-color:#ffffff21}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/13:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-white) 13%, transparent)}}.dark\:border-white\/14:where(.dark,.dark *){border-color:#ffffff24}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/14:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-white) 14%, transparent)}}.dark\:bg-\[\#1e1e1e\]:where(.dark,.dark *){background-color:#1e1e1e}.dark\:bg-accent-soft\/10:where(.dark,.dark *){background-color:#eff6ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 10%, transparent)}}.dark\:bg-accent-soft\/25:where(.dark,.dark *){background-color:#eff6ff40}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/25:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 25%, transparent)}}.dark\:bg-accent-soft\/35:where(.dark,.dark *){background-color:#eff6ff59}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/35:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 35%, transparent)}}.dark\:bg-accent-soft\/40:where(.dark,.dark *){background-color:#eff6ff66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent-soft\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent-soft) 40%, transparent)}}.dark\:bg-accent\/10:where(.dark,.dark *){background-color:#2563eb1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-accent\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.dark\:bg-amber-950\/30:where(.dark,.dark *){background-color:#4619014d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 30%, transparent)}}.dark\:bg-amber-950\/40:where(.dark,.dark *){background-color:#46190166}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 40%, transparent)}}.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:#46190180}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 50%, transparent)}}.dark\:bg-black\/50:where(.dark,.dark *){background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.dark\:bg-black\/60:where(.dark,.dark *){background-color:#0009}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.dark\:bg-black\/\[0\.22\]:where(.dark,.dark *){background-color:#00000038}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/\[0\.22\]:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-black) 22%, transparent)}}.dark\:bg-blue-950:where(.dark,.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/40:where(.dark,.dark *){background-color:#16245666}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-950) 40%, transparent)}}.dark\:bg-blue-950\/45:where(.dark,.dark *){background-color:#16245673}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/45:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-950) 45%, transparent)}}.dark\:bg-edge\/65:where(.dark,.dark *){background-color:#d2d2d7a6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-edge\/65:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-edge) 65%, transparent)}}.dark\:bg-emerald-950:where(.dark,.dark *){background-color:var(--color-emerald-950)}.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:#002c2266}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-950) 40%, transparent)}}.dark\:bg-fg:where(.dark,.dark *){background-color:var(--color-fg)}.dark\:bg-red-500\/25:where(.dark,.dark *){background-color:#fb2c3640}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-500\/25:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-500) 25%, transparent)}}.dark\:bg-red-950\/40:where(.dark,.dark *){background-color:#46080966}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-950) 40%, transparent)}}.dark\:bg-red-950\/50:where(.dark,.dark *){background-color:#46080980}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-red-950) 50%, transparent)}}.dark\:bg-surface-active:where(.dark,.dark *){background-color:var(--color-surface-active)}.dark\:bg-surface-active\/50:where(.dark,.dark *){background-color:#dcdcde80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-active\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-active) 50%, transparent)}}.dark\:bg-surface-active\/80:where(.dark,.dark *){background-color:#dcdcdecc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-active\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-active) 80%, transparent)}}.dark\:bg-surface-base:where(.dark,.dark *){background-color:var(--color-surface-base)}.dark\:bg-surface-base\/20:where(.dark,.dark *){background-color:#f5f5f733}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-base\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-base) 20%, transparent)}}.dark\:bg-surface-hover\/15:where(.dark,.dark *){background-color:#e8e8ed26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 15%, transparent)}}.dark\:bg-surface-hover\/20:where(.dark,.dark *){background-color:#e8e8ed33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 20%, transparent)}}.dark\:bg-surface-hover\/25:where(.dark,.dark *){background-color:#e8e8ed40}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/25:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 25%, transparent)}}.dark\:bg-surface-hover\/30:where(.dark,.dark *){background-color:#e8e8ed4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 30%, transparent)}}.dark\:bg-surface-hover\/35:where(.dark,.dark *){background-color:#e8e8ed59}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/35:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 35%, transparent)}}.dark\:bg-surface-hover\/40:where(.dark,.dark *){background-color:#e8e8ed66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 40%, transparent)}}.dark\:bg-surface-hover\/50:where(.dark,.dark *){background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.dark\:bg-surface-hover\/70:where(.dark,.dark *){background-color:#e8e8edb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 70%, transparent)}}.dark\:bg-surface-hover\/80:where(.dark,.dark *){background-color:#e8e8edcc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/80:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 80%, transparent)}}.dark\:bg-surface-hover\/98:where(.dark,.dark *){background-color:#e8e8edfa}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-hover\/98:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-hover) 98%, transparent)}}.dark\:bg-surface-panel:where(.dark,.dark *){background-color:var(--color-surface-panel)}.dark\:bg-surface-panel\/60:where(.dark,.dark *){background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 60%, transparent)}}.dark\:bg-surface-panel\/90:where(.dark,.dark *){background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 90%, transparent)}}.dark\:bg-surface-panel\/92:where(.dark,.dark *){background-color:#ffffffeb}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/92:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 92%, transparent)}}.dark\:bg-surface-panel\/95:where(.dark,.dark *){background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.dark\:bg-surface-panel\/95:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-surface-panel) 95%, transparent)}}.dark\:bg-white\/14:where(.dark,.dark *){background-color:#ffffff24}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/14:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-white) 14%, transparent)}}.dark\:text-accent-fg:where(.dark,.dark *){color:var(--color-accent-fg)}.dark\:text-amber-100:where(.dark,.dark *){color:var(--color-amber-100)}.dark\:text-amber-200:where(.dark,.dark *){color:var(--color-amber-200)}.dark\:text-amber-200\/90:where(.dark,.dark *){color:#fee685e6}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-200\/90:where(.dark,.dark *){color:color-mix(in oklab, var(--color-amber-200) 90%, transparent)}}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-amber-500:where(.dark,.dark *){color:var(--color-amber-500)}.dark\:text-blue-200:where(.dark,.dark *){color:var(--color-blue-200)}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-emerald-200:where(.dark,.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-200\/90:where(.dark,.dark *){color:#a4f4cfe6}@supports (color:color-mix(in lab, red, red)){.dark\:text-emerald-200\/90:where(.dark,.dark *){color:color-mix(in oklab, var(--color-emerald-200) 90%, transparent)}}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\:text-red-100:where(.dark,.dark *){color:var(--color-red-100)}.dark\:text-red-200:where(.dark,.dark *){color:var(--color-red-200)}.dark\:text-red-300:where(.dark,.dark *){color:var(--color-red-300)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-surface-panel:where(.dark,.dark *){color:var(--color-surface-panel)}.dark\:text-yellow-400:where(.dark,.dark *){color:var(--color-yellow-400)}.dark\:shadow-elevated:where(.dark,.dark *){--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000f), 0 4px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-none:where(.dark,.dark *){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-sm:where(.dark,.dark *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-1:where(.dark,.dark *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-edge:where(.dark,.dark *){--tw-ring-color:var(--color-edge)}.dark\:ring-edge-strong\/40:where(.dark,.dark *){--tw-ring-color:#bcbcc066}@supports (color:color-mix(in lab, red, red)){.dark\:ring-edge-strong\/40:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-edge-strong) 40%, transparent)}}.dark\:ring-edge-subtle:where(.dark,.dark *){--tw-ring-color:var(--color-edge-subtle)}.dark\:ring-edge\/50:where(.dark,.dark *){--tw-ring-color:#d2d2d780}@supports (color:color-mix(in lab, red, red)){.dark\:ring-edge\/50:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 50%, transparent)}}.dark\:ring-edge\/55:where(.dark,.dark *){--tw-ring-color:#d2d2d78c}@supports (color:color-mix(in lab, red, red)){.dark\:ring-edge\/55:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 55%, transparent)}}.dark\:backdrop-blur-sm:where(.dark,.dark *){--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}@media (hover:hover){.dark\:group-hover\:ring-edge\/65:where(.dark,.dark *):is(:where(.group):hover *){--tw-ring-color:#d2d2d7a6}@supports (color:color-mix(in lab, red, red)){.dark\:group-hover\:ring-edge\/65:where(.dark,.dark *):is(:where(.group):hover *){--tw-ring-color:color-mix(in oklab, var(--color-edge) 65%, transparent)}}}.dark\:before\:\!bg-edge\/85:where(.dark,.dark *):before{content:var(--tw-content);background-color:#d2d2d7d9!important}@supports (color:color-mix(in lab, red, red)){.dark\:before\:\!bg-edge\/85:where(.dark,.dark *):before{background-color:color-mix(in oklab, var(--color-edge) 85%, transparent)!important}}@media (hover:hover){.dark\:hover\:border-edge:where(.dark,.dark *):hover{border-color:var(--color-edge)}.dark\:hover\:bg-accent-soft:where(.dark,.dark *):hover{background-color:var(--color-accent-soft)}.dark\:hover\:bg-black\/70:where(.dark,.dark *):hover{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-black\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.dark\:hover\:bg-red-950\/40:where(.dark,.dark *):hover{background-color:#46080966}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-950\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-red-950) 40%, transparent)}}.dark\:hover\:bg-red-950\/70:where(.dark,.dark *):hover{background-color:#460809b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-950\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-red-950) 70%, transparent)}}.dark\:hover\:bg-surface-hover\/25:where(.dark,.dark *):hover{background-color:#e8e8ed40}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/25:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 25%, transparent)}}.dark\:hover\:bg-surface-hover\/30:where(.dark,.dark *):hover{background-color:#e8e8ed4d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/30:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 30%, transparent)}}.dark\:hover\:bg-surface-hover\/50:where(.dark,.dark *):hover{background-color:#e8e8ed80}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 50%, transparent)}}.dark\:hover\:bg-surface-hover\/55:where(.dark,.dark *):hover{background-color:#e8e8ed8c}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-hover\/55:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-hover) 55%, transparent)}}.dark\:hover\:bg-surface-panel\/40:where(.dark,.dark *):hover{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-surface-panel\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-surface-panel) 40%, transparent)}}.dark\:hover\:text-red-400:where(.dark,.dark *):hover{color:var(--color-red-400)}.dark\:hover\:before\:bg-edge\/75:where(.dark,.dark *):hover:before{content:var(--tw-content);background-color:#d2d2d7bf}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:before\:bg-edge\/75:where(.dark,.dark *):hover:before{background-color:color-mix(in oklab, var(--color-edge) 75%, transparent)}}}@media (min-width:40rem){.dark\:sm\:border-edge:where(.dark,.dark *){border-color:var(--color-edge)}}.\[\&_\.markdown-body\]\:text-sm .markdown-body{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_\.markdown-body\]\:leading-snug .markdown-body{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.\[\&_svg\]\:align-middle svg{vertical-align:middle}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>\*\]\:min-h-0>*{min-height:calc(var(--spacing) * 0)}.\[\&\>\*\]\:flex-1>*{flex:1}.\[\&\>div\]\:border-0>div{border-style:var(--tw-border-style);border-width:0}.\[\&\>div\]\:pt-0>div{padding-top:calc(var(--spacing) * 0)}@media (hover:none) and (pointer:coarse){.\[\@media\(hover\:none\)_and_\(pointer\:coarse\)\]\:pointer-events-auto{pointer-events:auto}.\[\@media\(hover\:none\)_and_\(pointer\:coarse\)\]\:opacity-100{opacity:1}}}html.dark{--color-surface-base:#1c1c1e;--color-surface-panel:#2c2c2e;--color-surface-hover:#3a3a3c;--color-surface-active:#48484a;--color-fg:#f5f5f7;--color-fg-muted:#a1a1a6;--color-fg-subtle:#8e8e93;--color-fg-disabled:#636366;--color-edge-subtle:#3a3a3c;--color-edge:#48484a;--color-edge-strong:#636366;--color-accent:#3b82f6;--color-accent-hover:#60a5fa;--color-accent-soft:#1e3a8a8c;--color-accent-fg:#60a5fa;--color-checkbox-accent:#c7c7cc;--color-success:#34d399;--color-success-soft:#064e3b80;--color-danger:#f87171;--color-danger-soft:#7f1d1d80;--color-warning:#fbbf24;--color-warning-soft:#713f1280;--color-scrim:#00000085;--shadow-surface:0 0 0 1px #ffffff0f;--shadow-elevated:0 8px 32px #00000073;--shadow-float:0 12px 48px #0000008c;--shadow-popover:0 16px 48px #00000080}.app-sidebar-push{transform:translateZ(0)}@media (min-width:768px){.app-sidebar-push{transition:width .2s cubic-bezier(.4,0,.2,1)}.app-sidebar-expanded-width{width:var(--sidebar-expanded-px,16rem)}}.app-sidebar-push.sidebar-width-resizing{transition:none!important}@media (prefers-reduced-motion:reduce){.app-sidebar-push{transition:none}}@media (min-width:768px){.settings-page-rail{width:var(--sidebar-expanded-px,16rem);transition:width .2s cubic-bezier(.4,0,.2,1);transform:translateZ(0)}}.settings-page-rail.settings-page-rail-resizing{transition:none!important}@media (prefers-reduced-motion:reduce){.settings-page-rail{transition:none}}@media (min-width:768px){.app-workspace-panel-expanded-width{width:var(--workspace-panel-px,20rem);max-width:var(--workspace-panel-px,20rem);transition:width .2s cubic-bezier(.4,0,.2,1);transform:translateZ(0)}}.app-workspace-panel-expanded-width.workspace-panel-rail-resizing{transition:none!important}@media (prefers-reduced-motion:reduce){.app-workspace-panel-expanded-width{transition:none}}@keyframes page-enter{0%{opacity:0;transform:translateY(4px)translateZ(0)}to{opacity:1;transform:translateY(0)translateZ(0)}}.page-enter{animation:.2s both page-enter}.page-enter--gentle{animation-duration:.28s;animation-timing-function:cubic-bezier(.22,1,.36,1)}@media (prefers-reduced-motion:reduce){.page-enter,.page-enter--gentle{animation:none}}@keyframes settings-sheet-enter{0%{opacity:.85;transform:translate(.5rem)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion:no-preference){.settings-sheet-enter{animation:.25s ease-out both settings-sheet-enter}}@media (prefers-reduced-motion:reduce){.settings-sheet-enter{animation:none}}@media (prefers-reduced-motion:no-preference){::view-transition-old(root){animation-duration:.42s;animation-timing-function:ease}::view-transition-new(root){animation-duration:.42s;animation-timing-function:ease}}html[data-color-scheme=emerald]{--color-surface-base:#f0fdf4;--color-surface-panel:#fff;--color-surface-hover:#dcfce7;--color-surface-active:#bbf7d0;--color-fg:#052e16;--color-fg-muted:#166534;--color-fg-subtle:#15803d;--color-fg-disabled:#86efac;--color-edge-subtle:#bbf7d0;--color-edge:#86efac;--color-edge-strong:#4ade80;--color-accent:#059669;--color-accent-hover:#047857;--color-accent-soft:#d1fae5;--color-accent-fg:#047857;--color-checkbox-accent:#059669;--color-success:#059669;--color-success-soft:#d1fae5;--color-danger:#dc2626;--color-danger-soft:#fee2e2;--color-warning:#d97706;--color-warning-soft:#fef3c7;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem}html.dark[data-color-scheme=emerald]{--color-surface-base:#000;--color-surface-panel:#0a0a0a;--color-surface-hover:#111;--color-surface-active:#1a1a1a;--color-fg:#d1fae5;--color-fg-muted:#6ee7b7;--color-fg-subtle:#34d399;--color-fg-disabled:#065f46;--color-edge-subtle:#0d2818;--color-edge:#134e2a;--color-edge-strong:#166534;--color-accent:#10b981;--color-accent-hover:#34d399;--color-accent-soft:#064e3b99;--color-accent-fg:#34d399;--color-checkbox-accent:#10b981;--color-success:#34d399;--color-success-soft:#064e3b80;--color-danger:#f87171;--color-danger-soft:#7f1d1d80;--color-warning:#fbbf24;--color-warning-soft:#713f1280;--color-scrim:#000000b8;--shadow-surface:0 0 0 1px #10b9811a;--shadow-elevated:0 8px 32px #000c, 0 0 0 1px #10b98112;--shadow-float:0 12px 48px #000000e6, 0 0 0 1px #10b9810f;--shadow-popover:0 16px 48px #000000d9, 0 0 0 1px #10b9811f;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-edge-strong);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:var(--color-fg-subtle)}.chat-messages{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#bcbcc094 transparent}@supports (color:color-mix(in lab, red, red)){.chat-messages{scrollbar-color:color-mix(in srgb, var(--color-edge-strong) 58%, transparent) transparent}}.chat-messages{overscroll-behavior-y:contain;padding-inline-end:.5rem}.markdown-content{min-width:0;max-width:100%}.markdown-content .markdown-body{overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.markdown-content .markdown-body pre{box-sizing:border-box;min-width:0;max-width:100%}.markdown-content .markdown-body pre code.hljs{box-sizing:border-box;max-width:100%}.markdown-content .markdown-body table{table-layout:fixed;max-width:100%}.markdown-content .markdown-body th,.markdown-content .markdown-body td{word-break:break-word;overflow-wrap:anywhere}html.dark .chat-messages{scrollbar-color:#d2d2d7b8 transparent}@supports (color:color-mix(in lab, red, red)){html.dark .chat-messages{scrollbar-color:color-mix(in srgb, var(--color-edge) 72%, transparent) transparent}}.chat-messages::-webkit-scrollbar{width:10px}.chat-messages::-webkit-scrollbar-track{background:0 0}.chat-messages::-webkit-scrollbar-thumb{background-color:#bcbcc080;background-clip:content-box;border:3px solid #0000;border-radius:9999px}@supports (color:color-mix(in lab, red, red)){.chat-messages::-webkit-scrollbar-thumb{background-color:color-mix(in srgb, var(--color-edge-strong) 50%, transparent)}}.chat-messages::-webkit-scrollbar-thumb:hover{background-color:#86868b61}@supports (color:color-mix(in lab, red, red)){.chat-messages::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--color-fg-subtle) 38%, transparent)}}html.dark .chat-messages::-webkit-scrollbar-thumb{background-color:#d2d2d78c}@supports (color:color-mix(in lab, red, red)){html.dark .chat-messages::-webkit-scrollbar-thumb{background-color:color-mix(in srgb, var(--color-edge) 55%, transparent)}}html.dark .chat-messages::-webkit-scrollbar-thumb:hover{background-color:#6e6e7373}@supports (color:color-mix(in lab, red, red)){html.dark .chat-messages::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--color-fg-muted) 45%, transparent)}}.app-sidebar-nav-scroll{-ms-overflow-style:none;scrollbar-width:none}.app-sidebar-nav-scroll::-webkit-scrollbar{width:0;height:0;display:none}@keyframes xopc-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes xopc-dialog-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-dialog-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes xopc-dialog-content-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-dialog-content-out{0%{opacity:1}to{opacity:0}}@keyframes xopc-dialog-fullscreen-in{0%{opacity:0}to{opacity:1}}@keyframes xopc-dialog-fullscreen-out{0%{opacity:1}to{opacity:0}}@keyframes xopc-dialog-pane-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes xopc-dialog-pane-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}@keyframes xopc-drawer-right-in{0%{opacity:.92;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes xopc-drawer-right-out{0%{opacity:1;transform:translate(0)}to{opacity:.92;transform:translate(100%)}}.xopc-dialog-overlay[data-state=open]{animation:.2s ease-out both xopc-dialog-overlay-in}.xopc-dialog-overlay[data-state=closed]{animation:.15s ease-in both xopc-dialog-overlay-out}.xopc-dialog-content[data-state=open]{animation:.25s cubic-bezier(.32,.72,0,1) both xopc-dialog-content-in}.xopc-dialog-content[data-state=closed]{animation:.2s ease-in both xopc-dialog-content-out}.xopc-dialog-content-fullscreen[data-state=open]{animation:.25s cubic-bezier(.32,.72,0,1) both xopc-dialog-fullscreen-in}.xopc-dialog-content-fullscreen[data-state=closed]{animation:.2s ease-in both xopc-dialog-fullscreen-out}.xopc-dialog-content-pane[data-state=open]{animation:.25s cubic-bezier(.32,.72,0,1) both xopc-dialog-pane-in}.xopc-dialog-content-pane[data-state=closed]{animation:.2s ease-in both xopc-dialog-pane-out}.xopc-drawer-right[data-state=open]{animation:.38s cubic-bezier(.22,1,.36,1) both xopc-drawer-right-in}.xopc-drawer-right[data-state=closed]{animation:.24s cubic-bezier(.4,0,1,1) both xopc-drawer-right-out}.xopc-mobile-nav-overlay[data-state=open]{animation:.2s ease-out both xopc-overlay-in}.xopc-mobile-nav-overlay[data-state=closed]{animation:.15s ease-in both xopc-dialog-overlay-out}.xopc-mobile-nav-content[data-state=open]{animation:.28s cubic-bezier(.32,.72,0,1) both xopc-drawer-in}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes dreaming-overlay-enter{0%{opacity:0}to{opacity:1}}@keyframes dreaming-overlay-exit{0%{opacity:1}to{opacity:0}}@keyframes dreaming-pill-enter{0%{opacity:0;transform:translateY(12px)translate(-50%)}to{opacity:1;transform:translateY(0)translate(-50%)}}@keyframes dreaming-pulse-dot{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.dreaming-overlay-enter{animation:.6s cubic-bezier(.22,1,.36,1) both dreaming-overlay-enter}.dreaming-overlay-exit{animation:.8s cubic-bezier(.4,0,1,1) both dreaming-overlay-exit}.dreaming-pill-enter{animation:.5s cubic-bezier(.22,1,.36,1) .3s both dreaming-pill-enter}.dreaming-pulse-dot{background:currentColor;border-radius:9999px;width:6px;height:6px;animation:2s ease-in-out infinite dreaming-pulse-dot;display:inline-block}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{i as t,t as n}from"./vendor-react-DbimaAId.js";import{t as r}from"./cn-BMCV0OMB.js";import{Cn as i,Ct as a,Dt as o,Et as s,Gr as ee,Jn as te,Ln as ne,Mr as re,Mt as ie,Nt as ae,On as c,Or as oe,Ot as se,Pt as ce,St as l,Tt as u,Zn as d,cn as f,ei as le,gn as ue,hi as de,hn as fe,hr as pe,jt as me,on as p,un as he,vt as ge,wn as m,xn as _e}from"./index-CR8zUHGR.js";var h=e(t(),1);function ve(e){let t=new URLSearchParams;if(!e)return``;e.level?.length&&t.set(`level`,e.level.join(`,`)),e.from&&t.set(`from`,e.from),e.to&&t.set(`to`,e.to),e.q&&t.set(`q`,e.q),e.module&&t.set(`module`,e.module),e.limit!=null&&t.set(`limit`,String(e.limit)),e.offset!=null&&t.set(`offset`,String(e.offset));let n=t.toString();return n?`?${n}`:``}async function g(e){return f(p(`/api/logs${ve(e)}`))}async function _(){return(await f(p(`/api/logs/files`))).files??[]}async function ye(){return(await f(p(`/api/logs/modules`))).modules??[]}async function be(){return{byLevel:(await f(p(`/api/logs/stats`))).byLevel??{}}}async function xe(){return(await f(p(`/api/logs/dir`))).dir??``}var v=[`trace`,`debug`,`info`,`warn`,`error`,`fatal`],y=n(),b=50,Se=5e3,Ce=new Set(v),x=[`error`,`fatal`],S=[`warn`,`error`,`fatal`],C=[`info`,`warn`,`error`,`fatal`];function we(e){if(!e)return new Set;let t=new Set;for(let n of e.split(`,`)){let e=n.trim();Ce.has(e)&&t.add(e)}return t}function Te(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function w(e,t){return e.size===t.length?t.every(t=>e.has(t)):!1}function T(e){return e.size===0?`all`:w(e,x)?`errors`:w(e,S)?`warnPlus`:w(e,C)?`infoPlus`:e.size===v.length&&v.every(t=>e.has(t))?`verbose`:`custom`}function Ee(e){let t=T(e);return t===`custom`?`other`:t}function De(e){switch(e){case`all`:return new Set;case`errors`:return new Set(x);case`warnPlus`:return new Set(S);case`infoPlus`:return new Set(C);case`verbose`:return new Set(v)}}function Oe(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function E(e){return String(e.module||e.prefix||e.service||e.extension||`—`)}function ke(e){if(typeof e.message==`string`&&e.message)return e.message;try{return JSON.stringify(e)}catch{return``}}function Ae(e){try{return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1})}catch{return e}}function je(e){try{return new Date(e).toLocaleString()}catch{return e}}function Me(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Ne(e){let t=e.trim();return t.length<=10?t:`${t.slice(0,8)}…`}function Pe(e){return String(e).toLowerCase()}function Fe(e,t){let n=[];for(let r of v){let i=e[r]??0;i>0&&n.push(`${t[r]} ${i}`)}return n.join(` · `)}function D(){let e=i(fe(e=>e.language)).logs,t=!!he(e=>e.token),[n,f]=de(),p=n.get(`q`)??``,ve=we(n.get(`level`)),Ce=n.get(`module`)??``,x=n.get(`from`)??``,S=n.get(`to`)??``,C=n.get(`live`)===`1`,[w,T]=(0,h.useState)([]),[D,O]=(0,h.useState)(!1),[Le,k]=(0,h.useState)(null),[A,j]=(0,h.useState)(!1),[M,N]=(0,h.useState)(p),[P,F]=(0,h.useState)(p.trim()),[I,L]=(0,h.useState)(ve),[R,z]=(0,h.useState)(Ce),[B,V]=(0,h.useState)(x),[H,U]=(0,h.useState)(S),[Re,ze]=(0,h.useState)([]),[W,G]=(0,h.useState)([]),[K,q]=(0,h.useState)(null),[J,Be]=(0,h.useState)(null),[Y,Ve]=(0,h.useState)(!1),[He,X]=(0,h.useState)(!1),[Ue,We]=(0,h.useState)(null),[Z,Ge]=(0,h.useState)(C),[Q,Ke]=(0,h.useState)(null),qe=(0,h.useMemo)(()=>Ee(I),[I]),Je=P.length>0||I.size>0||!!R||!!B||!!H,Ye=+(P.length>0)+ +(I.size>0)+ +!!R+(B||H?1:0);(0,h.useEffect)(()=>{let e=setTimeout(()=>F(M.trim()),300);return()=>clearTimeout(e)},[M]),(0,h.useEffect)(()=>{let e=n.get(`q`)??``,t=n.get(`module`)??``,r=n.get(`from`)??``,i=n.get(`to`)??``,a=n.get(`live`)===`1`,o=we(n.get(`level`)),s=e.trim();N(t=>t===e?t:e),F(e=>e===s?e:s),L(e=>Te(o,e)?e:o),z(e=>e===t?e:t),V(e=>e===r?e:r),U(e=>e===i?e:i),Ge(e=>e===a?e:a)},[n]),(0,h.useEffect)(()=>{let e=new URLSearchParams(n),t=P.trim();t?e.set(`q`,t):e.delete(`q`),I.size>0?e.set(`level`,Array.from(I).sort().join(`,`)):e.delete(`level`),R?e.set(`module`,R):e.delete(`module`),B?e.set(`from`,B):e.delete(`from`),H?e.set(`to`,H):e.delete(`to`),Z?e.set(`live`,`1`):e.delete(`live`),e.toString()!==n.toString()&&f(e,{replace:!0})},[Z,B,H,P,R,n,I,f]);let $=(0,h.useMemo)(()=>({q:P||void 0,level:I.size>0?Array.from(I):void 0,module:R||void 0,from:B||void 0,to:H||void 0,limit:b}),[P,I,R,B,H]);(0,h.useEffect)(()=>{if(!t)return;let n=!1;return(async()=>{O(!0),k(null),T([]);try{let e=await g({...$,offset:0});if(n)return;T(e.logs),j(e.logs.length===b)}catch(t){n||(k(t instanceof Error?t.message:e.loadError),T([]),j(!1))}finally{n||O(!1)}})(),()=>{n=!0}},[t,$,e.loadError]),(0,h.useEffect)(()=>{if(!t)return;let e=!1;return(async()=>{try{let[t,n,r]=await Promise.all([ye(),be(),_()]);e||(ze(t),q(n),G(r))}catch{}})(),()=>{e=!0}},[t]),(0,h.useEffect)(()=>{if(!t||!Y)return;let e=!1;return(async()=>{try{let[t,n]=await Promise.all([_(),xe()]);e||(G(t),We(n))}catch{e||G([])}})(),()=>{e=!0}},[t,Y]),(0,h.useEffect)(()=>{if(!Z||!t)return;let e=window.setInterval(()=>{(async()=>{try{let e=await g({...$,offset:0});T(e.logs),j(e.logs.length===b),q(await be())}catch{}})()},Se);return()=>clearInterval(e)},[Z,t,$]),(0,h.useEffect)(()=>{if(!Q)return;let e=window.setTimeout(()=>Ke(null),2e3);return()=>clearTimeout(e)},[Q]);let Xe=()=>{N(``),F(``),L(new Set),z(``),V(``),U(``)},Ze=e=>{if(e===`other`){X(!0);return}L(De(e))},Qe=e=>{L(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},$e=()=>{D||!A||(async()=>{O(!0),k(null);try{let e=await g({...$,offset:w.length});T(t=>[...t,...e.logs]),j(e.logs.length===b)}catch(t){k(t instanceof Error?t.message:e.loadError)}finally{O(!1)}})()},et=()=>{(async()=>{O(!0),k(null);try{let e=await g({...$,offset:0});T(e.logs),j(e.logs.length===b);let[t,n]=await Promise.all([be(),_()]);q(t),G(n)}catch(t){k(t instanceof Error?t.message:e.loadError)}finally{O(!1)}})()},tt=K?Fe(K.byLevel??{},e.levelNames):``;return t?(0,y.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6`,children:[(0,y.jsxs)(`header`,{className:`flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[(0,y.jsxs)(`div`,{className:`min-w-0`,children:[(0,y.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight text-fg`,children:e.title}),(0,y.jsx)(`p`,{className:`mt-0.5 text-sm leading-relaxed text-fg-muted`,children:e.subtitle})]}),(0,y.jsxs)(`div`,{className:`flex w-full shrink-0 flex-col gap-2 sm:w-auto sm:max-w-md sm:flex-row sm:items-center sm:justify-end`,children:[(0,y.jsx)(`div`,{className:`w-full sm:w-48`,children:(0,y.jsx)(ge,{"aria-label":e.refreshModeAria,value:Z?`live`:`paused`,onChange:e=>Ge(e===`live`),options:[{value:`paused`,label:e.refreshManual},{value:`live`,label:e.refreshLive}],buttonClassName:`h-8`})}),(0,y.jsxs)(`div`,{className:`flex items-center gap-1 self-end sm:self-center`,children:[(0,y.jsxs)(m,{type:`button`,variant:`ghost`,className:`h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0`,title:e.logFiles,"aria-label":e.logFiles,onClick:()=>Ve(!0),children:[(0,y.jsx)(oe,{className:`size-4`,strokeWidth:1.75}),W.length>0?(0,y.jsx)(`span`,{className:`rounded-full bg-surface-hover px-1.5 text-xs text-fg-muted`,children:W.length}):null]}),(0,y.jsx)(m,{type:`button`,variant:`ghost`,className:`h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0`,title:e.refresh,"aria-label":e.refresh,onClick:et,children:(0,y.jsx)(d,{className:r(`size-4 transition-transform duration-150 ease-out motion-reduce:transition-none`,D&&`animate-spin motion-reduce:animate-none`),strokeWidth:1.75})})]})]})]}),Le?(0,y.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg dark:border-edge`,role:`alert`,children:Le}):null,K&&tt?(0,y.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:(0,y.jsxs)(ae,{children:[(0,y.jsx)(ce,{asChild:!0,children:(0,y.jsxs)(`button`,{type:`button`,className:`max-w-full truncate rounded-lg border border-transparent px-1 py-0.5 text-left text-xs leading-5 text-fg-subtle transition-colors duration-150 ease-out hover:border-edge-subtle hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel dark:hover:border-edge`,children:[(0,y.jsx)(`span`,{className:`font-medium text-fg-muted`,children:e.statsRegion}),(0,y.jsx)(`span`,{className:`mx-1.5 text-fg-subtle`,children:`·`}),(0,y.jsx)(`span`,{className:`tabular-nums`,children:tt})]})}),(0,y.jsx)(ie,{children:(0,y.jsxs)(me,{side:`bottom`,align:`start`,sideOffset:6,className:r(`z-50 w-[min(calc(100vw-2rem),20rem)] rounded-xl border border-edge bg-surface-panel p-3 shadow-popover outline-none`,`dark:border-edge`),children:[(0,y.jsx)(`p`,{className:`text-xs font-medium text-fg`,children:e.statsDetailTitle}),(0,y.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:e.statsHint}),(0,y.jsx)(`ul`,{className:`mt-3 flex flex-col gap-1.5`,role:`list`,children:v.map(t=>{let n=K.byLevel?.[t]??0;return n===0?null:(0,y.jsxs)(`li`,{className:`flex items-center justify-between gap-2 rounded-md border border-edge-subtle bg-surface-base px-2 py-1 text-xs dark:border-edge`,children:[(0,y.jsx)(`span`,{className:`font-medium capitalize text-fg`,children:e.levelNames[t]}),(0,y.jsx)(`span`,{className:`tabular-nums text-fg-muted`,children:n})]},t)})})]})})]})}):null,(0,y.jsxs)(`section`,{className:`flex flex-col gap-3`,"aria-label":e.filters,children:[(0,y.jsx)(`div`,{className:`overflow-x-auto pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:(0,y.jsx)(`div`,{className:`min-w-[min(100%,36rem)]`,children:(0,y.jsx)(ge,{"aria-label":e.levelPresetAria,value:qe,onChange:Ze,options:[{value:`all`,label:e.presetAll},{value:`errors`,label:e.presetErrors},{value:`warnPlus`,label:e.presetWarnPlus},{value:`infoPlus`,label:e.presetInfoPlus},{value:`verbose`,label:e.presetVerbose},{value:`other`,label:e.presetOther}],buttonClassName:`h-8 px-1.5 text-[11px] sm:px-2 sm:text-xs`})})}),(0,y.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center`,children:[(0,y.jsxs)(`label`,{className:`relative min-w-0 flex-1 sm:min-w-[12rem]`,children:[(0,y.jsx)(`span`,{className:`sr-only`,children:e.searchPlaceholder}),(0,y.jsx)(te,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0}),(0,y.jsx)(`input`,{type:`search`,value:M,onChange:e=>N(e.target.value),placeholder:e.searchPlaceholder,autoComplete:`off`,spellCheck:!1,className:r(`h-10 w-full rounded-md border border-edge bg-surface-panel py-0 pl-10 pr-3 text-sm leading-5 text-fg placeholder:text-fg-subtle dark:border-edge`,ue)})]}),(0,y.jsxs)(`select`,{id:`log-module`,value:R,onChange:e=>z(e.target.value),"aria-label":e.module,title:e.module,className:r(_e,`h-10 w-full min-w-0 rounded-md py-0 sm:w-[min(100%,14rem)] sm:shrink-0`),children:[(0,y.jsx)(`option`,{value:``,children:e.allModules}),Re.map(e=>(0,y.jsx)(`option`,{value:e,children:e},e))]}),(0,y.jsxs)(`div`,{className:`flex min-w-0 shrink-0 items-center gap-2`,children:[(0,y.jsxs)(m,{type:`button`,variant:`secondary`,className:`h-10 min-h-[44px] gap-2 rounded-md sm:min-h-10`,onClick:()=>X(!0),children:[(0,y.jsx)(pe,{className:`size-4`,strokeWidth:1.75}),e.filtersMore,Ye>0?(0,y.jsx)(`span`,{className:`rounded-md bg-surface-hover px-1.5 text-xs tabular-nums text-fg-muted`,children:Ye}):null]}),Je?(0,y.jsxs)(m,{type:`button`,variant:`ghost`,className:`h-10 min-h-[44px] gap-1 sm:min-h-10`,onClick:Xe,children:[(0,y.jsx)(c,{className:`size-4`,strokeWidth:1.75}),e.clear]}):null]})]}),Z?(0,y.jsx)(`p`,{className:`text-xs leading-5 text-fg-subtle`,children:e.liveHint}):null]}),D&&w.length===0?(0,y.jsx)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel dark:divide-edge dark:border-edge`,"aria-busy":`true`,children:Array.from({length:8}).map((e,t)=>(0,y.jsxs)(`div`,{className:`flex gap-3 px-3 py-2.5`,children:[(0,y.jsx)(`div`,{className:`h-4 w-16 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse`}),(0,y.jsx)(`div`,{className:`h-4 w-12 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse`}),(0,y.jsx)(`div`,{className:`h-4 w-20 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse`}),(0,y.jsx)(`div`,{className:`h-4 min-w-0 flex-1 bg-surface-hover motion-reduce:animate-none animate-pulse`})]},t))}):null,!D&&w.length===0?(0,y.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 rounded-xl border border-edge-subtle bg-surface-base py-16 text-center dark:border-edge`,children:[(0,y.jsx)(re,{className:`size-12 text-fg-subtle`,strokeWidth:1.5,"aria-hidden":!0}),(0,y.jsx)(`h2`,{className:`text-base font-semibold tracking-tight text-fg`,children:e.noLogs}),(0,y.jsx)(`p`,{className:`max-w-sm text-sm leading-relaxed text-fg-muted`,children:e.noLogsDescription}),(0,y.jsxs)(m,{type:`button`,variant:`secondary`,className:`mt-4 gap-2`,onClick:et,children:[(0,y.jsx)(d,{className:`size-4`,strokeWidth:1.75}),e.refresh]})]}):null,w.length>0?(0,y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,y.jsxs)(`p`,{className:`text-xs leading-5 text-fg-muted`,children:[Oe(e.showingCount,{count:String(w.length)}),A?(0,y.jsxs)(`span`,{className:`text-fg-subtle`,children:[` · `,e.moreAvailable]}):null]}),(0,y.jsx)(`ul`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel font-mono text-sm leading-6 dark:divide-edge dark:border-edge`,role:`list`,children:w.map((t,n)=>{let i=t.level??`info`,a=typeof t.requestId==`string`?t.requestId.trim():``;return(0,y.jsx)(`li`,{children:(0,y.jsxs)(`button`,{type:`button`,onClick:()=>Be(t),className:r(`flex w-full min-w-0 items-center gap-3 px-3 py-2.5 text-left transition-colors duration-150 ease-out`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel`),children:[(0,y.jsx)(`span`,{className:`w-[5.25rem] shrink-0 tabular-nums text-fg-subtle`,children:Ae(t.timestamp)}),(0,y.jsx)(`span`,{className:`w-[4.5rem] shrink-0 truncate text-fg-muted`,title:i,children:Pe(i)}),(0,y.jsx)(`span`,{className:`w-[4.5rem] shrink-0 truncate text-fg-subtle sm:w-[5.25rem]`,title:a?`${e.requestId}: ${a}`:void 0,children:a?Ne(a):`—`}),(0,y.jsx)(`span`,{className:`hidden max-w-[7rem] shrink-0 truncate text-fg-muted lg:inline`,title:E(t),children:E(t)}),(0,y.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-fg`,children:ke(t)})]})},`${t.timestamp}-${n}`)})}),A?(0,y.jsx)(`div`,{className:`flex justify-center pt-1`,children:(0,y.jsxs)(m,{type:`button`,variant:`secondary`,className:`gap-2`,disabled:D,onClick:$e,children:[D?(0,y.jsx)(d,{className:`size-4 animate-spin motion-reduce:animate-none`,strokeWidth:1.75}):(0,y.jsx)(le,{className:`size-4`,strokeWidth:1.75}),e.loadMore]})}):null]}):null,(0,y.jsx)(o,{open:He,onOpenChange:X,children:(0,y.jsxs)(s,{children:[(0,y.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-50 bg-scrim`}),(0,y.jsxs)(a,{className:r(`xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,90vh)] w-[min(100%-2rem,22rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none`,`dark:border-edge`),"aria-describedby":`log-filters-desc`,children:[(0,y.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge`,children:[(0,y.jsx)(se,{className:`text-base font-semibold tracking-tight text-fg`,children:e.filtersDialogTitle}),(0,y.jsx)(l,{asChild:!0,children:(0,y.jsx)(m,{type:`button`,variant:`ghost`,className:`h-9 w-9 shrink-0 p-0`,"aria-label":e.close,children:(0,y.jsx)(c,{className:`size-5`,strokeWidth:1.75})})})]}),(0,y.jsx)(`div`,{id:`log-filters-desc`,className:`sr-only`,children:e.filtersDialogDesc}),(0,y.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4`,children:[(0,y.jsx)(`p`,{className:`text-xs font-medium text-fg-muted`,children:e.timeRange}),(0,y.jsxs)(`div`,{className:`mt-2 flex flex-col gap-3`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`label`,{htmlFor:`log-from-d`,className:`mb-1 block text-xs text-fg-muted`,children:e.from}),(0,y.jsx)(`input`,{id:`log-from-d`,type:`datetime-local`,value:B,onChange:e=>V(e.target.value),className:`w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge`})]}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`label`,{htmlFor:`log-to-d`,className:`mb-1 block text-xs text-fg-muted`,children:e.to}),(0,y.jsx)(`input`,{id:`log-to-d`,type:`datetime-local`,value:H,onChange:e=>U(e.target.value),className:`w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge`})]})]}),(0,y.jsx)(`p`,{className:`mt-6 text-xs font-medium text-fg-muted`,children:e.levelCustom}),(0,y.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:e.levelCustomHint}),(0,y.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,role:`group`,"aria-label":e.level,children:v.map(t=>(0,y.jsx)(`button`,{type:`button`,className:r(`rounded-full border px-3 py-1.5 text-xs font-medium capitalize transition-[color,background-color,border-color] duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel`,I.has(t)?`border-edge bg-surface-active text-fg dark:border-edge`:`border-edge-subtle bg-surface-base text-fg-muted hover:bg-surface-hover dark:border-edge`),onClick:()=>Qe(t),children:e.levelNames[t]},t))})]}),(0,y.jsx)(`div`,{className:`shrink-0 border-t border-edge-subtle px-4 py-3 dark:border-edge`,children:(0,y.jsx)(m,{type:`button`,className:`w-full rounded-xl`,onClick:()=>X(!1),children:e.filtersDone})})]})]})}),(0,y.jsx)(o,{open:J!==null,onOpenChange:e=>!e&&Be(null),children:(0,y.jsxs)(s,{children:[(0,y.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-50 bg-scrim`}),(0,y.jsxs)(a,{className:r(`xopc-drawer-right fixed right-0 top-0 z-50 flex h-full w-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none`,`dark:border-edge`),"aria-describedby":void 0,children:[(0,y.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge`,children:[(0,y.jsx)(se,{className:`text-base font-semibold tracking-tight text-fg`,children:e.details}),(0,y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1`,children:[J?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(m,{type:`button`,variant:`ghost`,className:`h-9 shrink-0 gap-1 px-2 text-xs`,onClick:()=>{let e=typeof J.message==`string`?J.message:``;navigator.clipboard.writeText(e).then(()=>Ke(`message`))},children:[(0,y.jsx)(ee,{className:`size-3.5 shrink-0`,strokeWidth:1.75}),(0,y.jsx)(`span`,{className:`hidden sm:inline`,children:Q===`message`?e.copied:e.copyMessage})]}),(0,y.jsxs)(m,{type:`button`,variant:`ghost`,className:`h-9 shrink-0 gap-1 px-2 text-xs`,onClick:()=>{navigator.clipboard.writeText(JSON.stringify(J,null,2)).then(()=>Ke(`json`))},children:[(0,y.jsx)(ee,{className:`size-3.5 shrink-0`,strokeWidth:1.75}),(0,y.jsx)(`span`,{className:`hidden sm:inline`,children:Q===`json`?e.copied:e.copyJson})]})]}):null,(0,y.jsx)(l,{asChild:!0,children:(0,y.jsx)(m,{type:`button`,variant:`ghost`,className:`h-9 w-9 shrink-0 p-0`,"aria-label":e.close,children:(0,y.jsx)(c,{className:`size-5`,strokeWidth:1.75})})})]})]}),(0,y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4 font-mono text-sm leading-relaxed`,children:J?(0,y.jsx)(Ie,{log:J,labels:{time:e.time,level:e.level,module:e.module,message:e.message,metadata:e.metadata,requestId:e.requestId,sessionId:e.sessionId}}):null})]})]})}),(0,y.jsx)(o,{open:Y,onOpenChange:Ve,children:(0,y.jsxs)(s,{children:[(0,y.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-50 bg-scrim`}),(0,y.jsxs)(a,{className:r(`xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,85vh)] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none`,`dark:border-edge`),children:[(0,y.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge`,children:[(0,y.jsxs)(se,{className:`flex items-center gap-2 text-base font-semibold tracking-tight text-fg`,children:[(0,y.jsx)(oe,{className:`size-4 text-fg-muted`,strokeWidth:1.75}),e.logFiles]}),(0,y.jsx)(l,{asChild:!0,children:(0,y.jsx)(m,{type:`button`,variant:`ghost`,className:`h-9 w-9 shrink-0 p-0`,"aria-label":e.close,children:(0,y.jsx)(c,{className:`size-5`,strokeWidth:1.75})})})]}),(0,y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:W.length===0?(0,y.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e.filesEmpty}):(0,y.jsx)(`ul`,{className:`flex flex-col gap-2`,role:`list`,children:W.map(e=>(0,y.jsxs)(`li`,{className:`flex flex-col gap-1 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 dark:border-edge`,children:[(0,y.jsx)(`span`,{className:`break-all font-mono text-xs text-fg`,children:e.name}),(0,y.jsxs)(`span`,{className:`flex flex-wrap gap-x-2 text-xs text-fg-subtle`,children:[(0,y.jsx)(`span`,{children:Me(e.size)}),(0,y.jsx)(`span`,{children:je(e.modified)})]})]},e.name))})}),Ue?(0,y.jsxs)(`div`,{className:`shrink-0 border-t border-edge-subtle px-4 py-2 text-xs text-fg-subtle dark:border-edge`,children:[(0,y.jsxs)(`span`,{className:`font-medium text-fg-muted`,children:[e.logDir,`: `]}),(0,y.jsx)(`code`,{className:`break-all text-fg-subtle`,children:Ue})]}):null]})]})})]}):(0,y.jsx)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10`,children:(0,y.jsxs)(`div`,{className:`flex items-start gap-3 rounded-2xl border border-edge-subtle bg-surface-base p-6 dark:border-edge`,children:[(0,y.jsx)(ne,{className:`mt-0.5 size-5 shrink-0 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`h1`,{className:`text-base font-semibold tracking-tight text-fg`,children:e.title}),(0,y.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:e.needToken})]})]})})}function Ie({log:e,labels:t}){let n=e.level??`info`,r=typeof e.requestId==`string`?e.requestId:``,i=typeof e.sessionId==`string`?e.sessionId:``;return(0,y.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`span`,{className:`text-xs font-sans font-medium text-fg-muted`,children:t.message}),(0,y.jsx)(`pre`,{className:`mt-2 whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge`,children:e.message||`—`})]}),(0,y.jsxs)(`div`,{className:`grid grid-cols-[5.5rem_1fr] gap-x-3 gap-y-2 text-xs`,children:[(0,y.jsx)(`span`,{className:`font-sans text-fg-muted`,children:t.time}),(0,y.jsx)(`code`,{className:`break-all text-fg`,children:e.timestamp}),(0,y.jsx)(`span`,{className:`font-sans text-fg-muted`,children:t.level}),(0,y.jsx)(`span`,{className:`text-fg`,children:Pe(n)}),(0,y.jsx)(`span`,{className:`font-sans text-fg-muted`,children:t.module}),(0,y.jsx)(`code`,{className:`break-all text-fg`,children:E(e)}),r?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`span`,{className:`font-sans text-fg-muted`,children:t.requestId}),(0,y.jsx)(`code`,{className:`break-all text-fg`,children:r})]}):null,i?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`span`,{className:`font-sans text-fg-muted`,children:t.sessionId}),(0,y.jsx)(`code`,{className:`break-all text-fg`,children:i})]}):null]}),e.meta&&Object.keys(e.meta).length>0?(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`span`,{className:`text-xs font-sans font-medium text-fg-muted`,children:t.metadata}),(0,y.jsx)(`pre`,{className:`mt-2 overflow-x-auto whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge`,children:JSON.stringify(e.meta,null,2)})]}):null]})}export{D as LogsPage};
2
+ //# sourceMappingURL=logs-page-CQwdV_Xw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-page-CQwdV_Xw.js","names":[],"sources":["../../../../../web/src/features/logs/log-api.ts","../../../../../web/src/features/logs/log.types.ts","../../../../../web/src/features/logs/logs-page.tsx"],"sourcesContent":["import { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport type { LogEntry, LogFile, LogQuery, LogStats } from '@/features/logs/log.types';\n\nfunction buildQueryString(query?: LogQuery): string {\n const params = new URLSearchParams();\n if (!query) return '';\n if (query.level?.length) params.set('level', query.level.join(','));\n if (query.from) params.set('from', query.from);\n if (query.to) params.set('to', query.to);\n if (query.q) params.set('q', query.q);\n if (query.module) params.set('module', query.module);\n if (query.limit != null) params.set('limit', String(query.limit));\n if (query.offset != null) params.set('offset', String(query.offset));\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n}\n\nexport async function queryLogs(query?: LogQuery): Promise<{ logs: LogEntry[]; count: number }> {\n return fetchJson<{ logs: LogEntry[]; count: number }>(apiUrl(`/api/logs${buildQueryString(query)}`));\n}\n\nexport async function getLogFiles(): Promise<LogFile[]> {\n const result = await fetchJson<{ files: LogFile[] }>(apiUrl('/api/logs/files'));\n return result.files ?? [];\n}\n\nexport async function getLogModules(): Promise<string[]> {\n const result = await fetchJson<{ modules: string[] }>(apiUrl('/api/logs/modules'));\n return result.modules ?? [];\n}\n\nexport async function getLogStats(): Promise<LogStats> {\n const raw = await fetchJson<Partial<LogStats>>(apiUrl('/api/logs/stats'));\n return { byLevel: raw.byLevel ?? {} };\n}\n\nexport async function getLogDir(): Promise<string> {\n const result = await fetchJson<{ dir: string }>(apiUrl('/api/logs/dir'));\n return result.dir ?? '';\n}\n","export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';\n\nexport const LOG_LEVELS: LogLevel[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\nexport interface LogEntry {\n timestamp: string;\n level: LogLevel;\n message: string;\n module?: string;\n prefix?: string;\n service?: string;\n extension?: string;\n requestId?: string;\n sessionId?: string;\n userId?: string;\n meta?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface LogQuery {\n level?: string[];\n from?: string;\n to?: string;\n q?: string;\n module?: string;\n limit?: number;\n offset?: number;\n}\n\nexport interface LogFile {\n name: string;\n size: number;\n modified: string;\n}\n\nexport interface LogStats {\n byLevel: Partial<Record<LogLevel | 'silent', number>>;\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n ChevronDown,\n ClipboardCopy,\n FileText,\n Folder,\n ListFilter,\n RefreshCw,\n Search,\n Terminal,\n X,\n} from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { SlidingSegmented } from '@/components/ui/sliding-segmented';\nimport { Button } from '@/components/ui/button';\nimport { bareInputFocusClass, selectControlBaseClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\nimport {\n getLogDir,\n getLogFiles,\n getLogModules,\n getLogStats,\n queryLogs,\n} from '@/features/logs/log-api';\nimport type { LogEntry, LogFile, LogLevel } from '@/features/logs/log.types';\nimport { LOG_LEVELS } from '@/features/logs/log.types';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nconst PAGE_LIMIT = 50;\nconst REFRESH_MS = 5000;\nconst LOG_LEVEL_SET = new Set<LogLevel>(LOG_LEVELS);\n\ntype LevelPreset = 'all' | 'errors' | 'warnPlus' | 'infoPlus' | 'verbose' | 'custom';\ntype LevelSegmentValue = Exclude<LevelPreset, 'custom'> | 'other';\n\nconst PRESET_ERRORS: LogLevel[] = ['error', 'fatal'];\nconst PRESET_WARN_PLUS: LogLevel[] = ['warn', 'error', 'fatal'];\nconst PRESET_INFO_PLUS: LogLevel[] = ['info', 'warn', 'error', 'fatal'];\n\nfunction parseLogLevelsParam(raw: string | null): Set<LogLevel> {\n if (!raw) return new Set<LogLevel>();\n const out = new Set<LogLevel>();\n for (const part of raw.split(',')) {\n const level = part.trim() as LogLevel;\n if (LOG_LEVEL_SET.has(level)) out.add(level);\n }\n return out;\n}\n\nfunction isSameLogLevelSet(a: Set<LogLevel>, b: Set<LogLevel>): boolean {\n if (a.size !== b.size) return false;\n for (const level of a) {\n if (!b.has(level)) return false;\n }\n return true;\n}\n\nfunction setMatchesLevels(s: Set<LogLevel>, levels: readonly LogLevel[]): boolean {\n if (s.size !== levels.length) return false;\n return levels.every((l) => s.has(l));\n}\n\nfunction derivePreset(levels: Set<LogLevel>): LevelPreset {\n if (levels.size === 0) return 'all';\n if (setMatchesLevels(levels, PRESET_ERRORS)) return 'errors';\n if (setMatchesLevels(levels, PRESET_WARN_PLUS)) return 'warnPlus';\n if (setMatchesLevels(levels, PRESET_INFO_PLUS)) return 'infoPlus';\n if (levels.size === LOG_LEVELS.length && LOG_LEVELS.every((l) => levels.has(l))) return 'verbose';\n return 'custom';\n}\n\nfunction segmentValueFromLevels(levels: Set<LogLevel>): LevelSegmentValue {\n const p = derivePreset(levels);\n return p === 'custom' ? 'other' : p;\n}\n\nfunction levelsForPreset(preset: Exclude<LevelPreset, 'custom'>): Set<LogLevel> {\n switch (preset) {\n case 'all':\n return new Set();\n case 'errors':\n return new Set(PRESET_ERRORS);\n case 'warnPlus':\n return new Set(PRESET_WARN_PLUS);\n case 'infoPlus':\n return new Set(PRESET_INFO_PLUS);\n case 'verbose':\n return new Set(LOG_LEVELS);\n }\n}\n\nfunction interpolate(template: string, params: Record<string, string | number>): string {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => String(params[key] ?? ''));\n}\n\nfunction moduleLabel(log: LogEntry): string {\n return String(log.module || log.prefix || log.service || log.extension || '—');\n}\n\nfunction messagePreview(log: LogEntry): string {\n if (typeof log.message === 'string' && log.message) return log.message;\n try {\n return JSON.stringify(log);\n } catch {\n return '';\n }\n}\n\nfunction formatTimeCompact(timestamp: string): string {\n try {\n const date = new Date(timestamp);\n return date.toLocaleTimeString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n } catch {\n return timestamp;\n }\n}\n\nfunction formatTimestampFull(timestamp: string): string {\n try {\n return new Date(timestamp).toLocaleString();\n } catch {\n return timestamp;\n }\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction requestIdPreview(id: string): string {\n const t = id.trim();\n if (t.length <= 10) return t;\n return `${t.slice(0, 8)}…`;\n}\n\nfunction levelLabel(level: string): string {\n return String(level).toLowerCase();\n}\n\nfunction formatStatsLine(\n byLevel: Partial<Record<LogLevel | 'silent', number>>,\n labels: Record<LogLevel, string>,\n): string {\n const parts: string[] = [];\n for (const lv of LOG_LEVELS) {\n const n = byLevel[lv] ?? 0;\n if (n > 0) parts.push(`${labels[lv]} ${n}`);\n }\n return parts.join(' · ');\n}\n\nexport function LogsPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const L = m.logs;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const [searchParams, setSearchParams] = useSearchParams();\n\n const initialSearch = searchParams.get('q') ?? '';\n const initialLevels = parseLogLevelsParam(searchParams.get('level'));\n const initialModule = searchParams.get('module') ?? '';\n const initialFrom = searchParams.get('from') ?? '';\n const initialTo = searchParams.get('to') ?? '';\n const initialAutoRefresh = searchParams.get('live') === '1';\n\n const [logs, setLogs] = useState<LogEntry[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [hasMore, setHasMore] = useState(false);\n\n const [searchInput, setSearchInput] = useState(initialSearch);\n const [debouncedSearch, setDebouncedSearch] = useState(initialSearch.trim());\n const [selectedLevels, setSelectedLevels] = useState<Set<LogLevel>>(initialLevels);\n const [moduleFilter, setModuleFilter] = useState(initialModule);\n const [dateFrom, setDateFrom] = useState(initialFrom);\n const [dateTo, setDateTo] = useState(initialTo);\n\n const [modules, setModules] = useState<string[]>([]);\n const [files, setFiles] = useState<LogFile[]>([]);\n const [stats, setStats] = useState<Awaited<ReturnType<typeof getLogStats>> | null>(null);\n\n const [selectedLog, setSelectedLog] = useState<LogEntry | null>(null);\n const [filesOpen, setFilesOpen] = useState(false);\n const [filtersOpen, setFiltersOpen] = useState(false);\n const [logDir, setLogDir] = useState<string | null>(null);\n const [autoRefresh, setAutoRefresh] = useState(initialAutoRefresh);\n const [copiedDetail, setCopiedDetail] = useState<'json' | 'message' | null>(null);\n\n const levelSegment = useMemo(() => segmentValueFromLevels(selectedLevels), [selectedLevels]);\n\n const hasActiveFilters =\n debouncedSearch.length > 0 ||\n selectedLevels.size > 0 ||\n Boolean(moduleFilter) ||\n Boolean(dateFrom) ||\n Boolean(dateTo);\n\n const activeFilterCount =\n (debouncedSearch.length > 0 ? 1 : 0) +\n (selectedLevels.size > 0 ? 1 : 0) +\n (moduleFilter ? 1 : 0) +\n (dateFrom || dateTo ? 1 : 0);\n\n useEffect(() => {\n const t = setTimeout(() => setDebouncedSearch(searchInput.trim()), 300);\n return () => clearTimeout(t);\n }, [searchInput]);\n\n useEffect(() => {\n const nextQ = searchParams.get('q') ?? '';\n const nextModule = searchParams.get('module') ?? '';\n const nextFrom = searchParams.get('from') ?? '';\n const nextTo = searchParams.get('to') ?? '';\n const nextAutoRefresh = searchParams.get('live') === '1';\n const nextLevels = parseLogLevelsParam(searchParams.get('level'));\n const nextDebouncedQ = nextQ.trim();\n\n setSearchInput((prev) => (prev === nextQ ? prev : nextQ));\n setDebouncedSearch((prev) => (prev === nextDebouncedQ ? prev : nextDebouncedQ));\n setSelectedLevels((prev) => (isSameLogLevelSet(nextLevels, prev) ? prev : nextLevels));\n setModuleFilter((prev) => (prev === nextModule ? prev : nextModule));\n setDateFrom((prev) => (prev === nextFrom ? prev : nextFrom));\n setDateTo((prev) => (prev === nextTo ? prev : nextTo));\n setAutoRefresh((prev) => (prev === nextAutoRefresh ? prev : nextAutoRefresh));\n }, [searchParams]);\n\n useEffect(() => {\n const params = new URLSearchParams(searchParams);\n const nextQ = debouncedSearch.trim();\n if (nextQ) params.set('q', nextQ);\n else params.delete('q');\n\n if (selectedLevels.size > 0) {\n params.set('level', Array.from(selectedLevels).sort().join(','));\n } else {\n params.delete('level');\n }\n\n if (moduleFilter) params.set('module', moduleFilter);\n else params.delete('module');\n if (dateFrom) params.set('from', dateFrom);\n else params.delete('from');\n if (dateTo) params.set('to', dateTo);\n else params.delete('to');\n if (autoRefresh) params.set('live', '1');\n else params.delete('live');\n\n const next = params.toString();\n if (next !== searchParams.toString()) {\n setSearchParams(params, { replace: true });\n }\n }, [\n autoRefresh,\n dateFrom,\n dateTo,\n debouncedSearch,\n moduleFilter,\n searchParams,\n selectedLevels,\n setSearchParams,\n ]);\n\n const queryParams = useMemo(\n () => ({\n q: debouncedSearch || undefined,\n level: selectedLevels.size > 0 ? Array.from(selectedLevels) : undefined,\n module: moduleFilter || undefined,\n from: dateFrom || undefined,\n to: dateTo || undefined,\n limit: PAGE_LIMIT,\n }),\n [debouncedSearch, selectedLevels, moduleFilter, dateFrom, dateTo],\n );\n\n useEffect(() => {\n if (!hasToken) return;\n let cancelled = false;\n (async () => {\n setLoading(true);\n setError(null);\n setLogs([]);\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n if (cancelled) return;\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n } catch (e) {\n if (!cancelled) {\n setError(e instanceof Error ? e.message : L.loadError);\n setLogs([]);\n setHasMore(false);\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken, queryParams, L.loadError]);\n\n useEffect(() => {\n if (!hasToken) return;\n let cancelled = false;\n (async () => {\n try {\n const [mods, st, fileList] = await Promise.all([getLogModules(), getLogStats(), getLogFiles()]);\n if (!cancelled) {\n setModules(mods);\n setStats(st);\n setFiles(fileList);\n }\n } catch {\n /* optional */\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken]);\n\n useEffect(() => {\n if (!hasToken || !filesOpen) return;\n let cancelled = false;\n (async () => {\n try {\n const [list, dir] = await Promise.all([getLogFiles(), getLogDir()]);\n if (!cancelled) {\n setFiles(list);\n setLogDir(dir);\n }\n } catch {\n if (!cancelled) setFiles([]);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken, filesOpen]);\n\n useEffect(() => {\n if (!autoRefresh || !hasToken) return;\n const id = window.setInterval(() => {\n void (async () => {\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n const st = await getLogStats();\n setStats(st);\n } catch {\n /* ignore */\n }\n })();\n }, REFRESH_MS);\n return () => clearInterval(id);\n }, [autoRefresh, hasToken, queryParams]);\n\n useEffect(() => {\n if (!copiedDetail) return;\n const t = window.setTimeout(() => setCopiedDetail(null), 2000);\n return () => clearTimeout(t);\n }, [copiedDetail]);\n\n const clearFilters = () => {\n setSearchInput('');\n setDebouncedSearch('');\n setSelectedLevels(new Set());\n setModuleFilter('');\n setDateFrom('');\n setDateTo('');\n };\n\n const handleLevelSegment = (value: LevelSegmentValue) => {\n if (value === 'other') {\n setFiltersOpen(true);\n return;\n }\n setSelectedLevels(levelsForPreset(value));\n };\n\n const toggleDialogLevel = (level: LogLevel) => {\n setSelectedLevels((prev) => {\n const next = new Set(prev);\n if (next.has(level)) next.delete(level);\n else next.add(level);\n return next;\n });\n };\n\n const handleLoadMore = () => {\n if (loading || !hasMore) return;\n void (async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await queryLogs({ ...queryParams, offset: logs.length });\n setLogs((prev) => [...prev, ...result.logs]);\n setHasMore(result.logs.length === PAGE_LIMIT);\n } catch (e) {\n setError(e instanceof Error ? e.message : L.loadError);\n } finally {\n setLoading(false);\n }\n })();\n };\n\n const refreshAll = () => {\n void (async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n const [st, fileList] = await Promise.all([getLogStats(), getLogFiles()]);\n setStats(st);\n setFiles(fileList);\n } catch (e) {\n setError(e instanceof Error ? e.message : L.loadError);\n } finally {\n setLoading(false);\n }\n })();\n };\n\n const statsLine = stats ? formatStatsLine(stats.byLevel ?? {}, L.levelNames) : '';\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <div className=\"flex items-start gap-3 rounded-2xl border border-edge-subtle bg-surface-base p-6 dark:border-edge\">\n <Terminal className=\"mt-0.5 size-5 shrink-0 text-fg-subtle\" strokeWidth={1.75} aria-hidden />\n <div>\n <h1 className=\"text-base font-semibold tracking-tight text-fg\">{L.title}</h1>\n <p className=\"mt-1 text-sm leading-relaxed text-fg-muted\">{L.needToken}</p>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6\">\n <header className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n <h1 className=\"text-xl font-semibold tracking-tight text-fg\">{L.title}</h1>\n <p className=\"mt-0.5 text-sm leading-relaxed text-fg-muted\">{L.subtitle}</p>\n </div>\n <div className=\"flex w-full shrink-0 flex-col gap-2 sm:w-auto sm:max-w-md sm:flex-row sm:items-center sm:justify-end\">\n <div className=\"w-full sm:w-48\">\n <SlidingSegmented\n aria-label={L.refreshModeAria}\n value={autoRefresh ? 'live' : 'paused'}\n onChange={(v) => setAutoRefresh(v === 'live')}\n options={[\n { value: 'paused', label: L.refreshManual },\n { value: 'live', label: L.refreshLive },\n ]}\n buttonClassName=\"h-8\"\n />\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-center\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0\"\n title={L.logFiles}\n aria-label={L.logFiles}\n onClick={() => setFilesOpen(true)}\n >\n <Folder className=\"size-4\" strokeWidth={1.75} />\n {files.length > 0 ? (\n <span className=\"rounded-full bg-surface-hover px-1.5 text-xs text-fg-muted\">{files.length}</span>\n ) : null}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0\"\n title={L.refresh}\n aria-label={L.refresh}\n onClick={refreshAll}\n >\n <RefreshCw\n className={cn(\n 'size-4 transition-transform duration-150 ease-out motion-reduce:transition-none',\n loading && 'animate-spin motion-reduce:animate-none',\n )}\n strokeWidth={1.75}\n />\n </Button>\n </div>\n </div>\n </header>\n\n {error ? (\n <div\n className=\"rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg dark:border-edge\"\n role=\"alert\"\n >\n {error}\n </div>\n ) : null}\n\n {stats && statsLine ? (\n <div className=\"flex flex-wrap items-center gap-2\">\n <Popover.Root>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className=\"max-w-full truncate rounded-lg border border-transparent px-1 py-0.5 text-left text-xs leading-5 text-fg-subtle transition-colors duration-150 ease-out hover:border-edge-subtle hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel dark:hover:border-edge\"\n >\n <span className=\"font-medium text-fg-muted\">{L.statsRegion}</span>\n <span className=\"mx-1.5 text-fg-subtle\">·</span>\n <span className=\"tabular-nums\">{statsLine}</span>\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={6}\n className={cn(\n 'z-50 w-[min(calc(100vw-2rem),20rem)] rounded-xl border border-edge bg-surface-panel p-3 shadow-popover outline-none',\n 'dark:border-edge',\n )}\n >\n <p className=\"text-xs font-medium text-fg\">{L.statsDetailTitle}</p>\n <p className=\"mt-1 text-xs leading-5 text-fg-muted\">{L.statsHint}</p>\n <ul className=\"mt-3 flex flex-col gap-1.5\" role=\"list\">\n {LOG_LEVELS.map((lv) => {\n const n = stats.byLevel?.[lv] ?? 0;\n if (n === 0) return null;\n return (\n <li\n key={lv}\n className=\"flex items-center justify-between gap-2 rounded-md border border-edge-subtle bg-surface-base px-2 py-1 text-xs dark:border-edge\"\n >\n <span className=\"font-medium capitalize text-fg\">{L.levelNames[lv]}</span>\n <span className=\"tabular-nums text-fg-muted\">{n}</span>\n </li>\n );\n })}\n </ul>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n ) : null}\n\n <section className=\"flex flex-col gap-3\" aria-label={L.filters}>\n <div className=\"overflow-x-auto pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">\n <div className=\"min-w-[min(100%,36rem)]\">\n <SlidingSegmented<LevelSegmentValue>\n aria-label={L.levelPresetAria}\n value={levelSegment}\n onChange={handleLevelSegment}\n options={[\n { value: 'all', label: L.presetAll },\n { value: 'errors', label: L.presetErrors },\n { value: 'warnPlus', label: L.presetWarnPlus },\n { value: 'infoPlus', label: L.presetInfoPlus },\n { value: 'verbose', label: L.presetVerbose },\n { value: 'other', label: L.presetOther },\n ]}\n buttonClassName=\"h-8 px-1.5 text-[11px] sm:px-2 sm:text-xs\"\n />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center\">\n <label className=\"relative min-w-0 flex-1 sm:min-w-[12rem]\">\n <span className=\"sr-only\">{L.searchPlaceholder}</span>\n <Search\n className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle\"\n strokeWidth={1.75}\n aria-hidden\n />\n <input\n type=\"search\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n placeholder={L.searchPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n className={cn(\n 'h-10 w-full rounded-md border border-edge bg-surface-panel py-0 pl-10 pr-3 text-sm leading-5 text-fg placeholder:text-fg-subtle dark:border-edge',\n bareInputFocusClass,\n )}\n />\n </label>\n\n <select\n id=\"log-module\"\n value={moduleFilter}\n onChange={(e) => setModuleFilter(e.target.value)}\n aria-label={L.module}\n title={L.module}\n className={cn(\n selectControlBaseClass,\n 'h-10 w-full min-w-0 rounded-md py-0 sm:w-[min(100%,14rem)] sm:shrink-0',\n )}\n >\n <option value=\"\">{L.allModules}</option>\n {modules.map((mod) => (\n <option key={mod} value={mod}>\n {mod}\n </option>\n ))}\n </select>\n\n <div className=\"flex min-w-0 shrink-0 items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-10 min-h-[44px] gap-2 rounded-md sm:min-h-10\"\n onClick={() => setFiltersOpen(true)}\n >\n <ListFilter className=\"size-4\" strokeWidth={1.75} />\n {L.filtersMore}\n {activeFilterCount > 0 ? (\n <span className=\"rounded-md bg-surface-hover px-1.5 text-xs tabular-nums text-fg-muted\">\n {activeFilterCount}\n </span>\n ) : null}\n </Button>\n {hasActiveFilters ? (\n <Button type=\"button\" variant=\"ghost\" className=\"h-10 min-h-[44px] gap-1 sm:min-h-10\" onClick={clearFilters}>\n <X className=\"size-4\" strokeWidth={1.75} />\n {L.clear}\n </Button>\n ) : null}\n </div>\n </div>\n\n {autoRefresh ? <p className=\"text-xs leading-5 text-fg-subtle\">{L.liveHint}</p> : null}\n </section>\n\n {loading && logs.length === 0 ? (\n <div\n className=\"divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel dark:divide-edge dark:border-edge\"\n aria-busy=\"true\"\n >\n {Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"flex gap-3 px-3 py-2.5\">\n <div className=\"h-4 w-16 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 w-12 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 w-20 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 min-w-0 flex-1 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n </div>\n ))}\n </div>\n ) : null}\n\n {!loading && logs.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center gap-2 rounded-xl border border-edge-subtle bg-surface-base py-16 text-center dark:border-edge\">\n <FileText className=\"size-12 text-fg-subtle\" strokeWidth={1.5} aria-hidden />\n <h2 className=\"text-base font-semibold tracking-tight text-fg\">{L.noLogs}</h2>\n <p className=\"max-w-sm text-sm leading-relaxed text-fg-muted\">{L.noLogsDescription}</p>\n <Button type=\"button\" variant=\"secondary\" className=\"mt-4 gap-2\" onClick={refreshAll}>\n <RefreshCw className=\"size-4\" strokeWidth={1.75} />\n {L.refresh}\n </Button>\n </div>\n ) : null}\n\n {logs.length > 0 ? (\n <div className=\"flex flex-col gap-2\">\n <p className=\"text-xs leading-5 text-fg-muted\">\n {interpolate(L.showingCount, { count: String(logs.length) })}\n {hasMore ? <span className=\"text-fg-subtle\"> · {L.moreAvailable}</span> : null}\n </p>\n <ul\n className=\"divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel font-mono text-sm leading-6 dark:divide-edge dark:border-edge\"\n role=\"list\"\n >\n {logs.map((log, idx) => {\n const lv = log.level ?? 'info';\n const rid = typeof log.requestId === 'string' ? log.requestId.trim() : '';\n return (\n <li key={`${log.timestamp}-${idx}`}>\n <button\n type=\"button\"\n onClick={() => setSelectedLog(log)}\n className={cn(\n 'flex w-full min-w-0 items-center gap-3 px-3 py-2.5 text-left transition-colors duration-150 ease-out',\n 'hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n >\n <span className=\"w-[5.25rem] shrink-0 tabular-nums text-fg-subtle\">\n {formatTimeCompact(log.timestamp)}\n </span>\n <span className=\"w-[4.5rem] shrink-0 truncate text-fg-muted\" title={lv}>\n {levelLabel(lv)}\n </span>\n <span\n className=\"w-[4.5rem] shrink-0 truncate text-fg-subtle sm:w-[5.25rem]\"\n title={rid ? `${L.requestId}: ${rid}` : undefined}\n >\n {rid ? requestIdPreview(rid) : '—'}\n </span>\n <span\n className=\"hidden max-w-[7rem] shrink-0 truncate text-fg-muted lg:inline\"\n title={moduleLabel(log)}\n >\n {moduleLabel(log)}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-fg\">{messagePreview(log)}</span>\n </button>\n </li>\n );\n })}\n </ul>\n {hasMore ? (\n <div className=\"flex justify-center pt-1\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"gap-2\"\n disabled={loading}\n onClick={handleLoadMore}\n >\n {loading ? (\n <RefreshCw className=\"size-4 animate-spin motion-reduce:animate-none\" strokeWidth={1.75} />\n ) : (\n <ChevronDown className=\"size-4\" strokeWidth={1.75} />\n )}\n {L.loadMore}\n </Button>\n </div>\n ) : null}\n </div>\n ) : null}\n\n <Dialog.Root open={filtersOpen} onOpenChange={setFiltersOpen}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,90vh)] w-[min(100%-2rem,22rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby=\"log-filters-desc\"\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold tracking-tight text-fg\">{L.filtersDialogTitle}</Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div id=\"log-filters-desc\" className=\"sr-only\">\n {L.filtersDialogDesc}\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4\">\n <p className=\"text-xs font-medium text-fg-muted\">{L.timeRange}</p>\n <div className=\"mt-2 flex flex-col gap-3\">\n <div>\n <label htmlFor=\"log-from-d\" className=\"mb-1 block text-xs text-fg-muted\">\n {L.from}\n </label>\n <input\n id=\"log-from-d\"\n type=\"datetime-local\"\n value={dateFrom}\n onChange={(e) => setDateFrom(e.target.value)}\n className=\"w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge\"\n />\n </div>\n <div>\n <label htmlFor=\"log-to-d\" className=\"mb-1 block text-xs text-fg-muted\">\n {L.to}\n </label>\n <input\n id=\"log-to-d\"\n type=\"datetime-local\"\n value={dateTo}\n onChange={(e) => setDateTo(e.target.value)}\n className=\"w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge\"\n />\n </div>\n </div>\n <p className=\"mt-6 text-xs font-medium text-fg-muted\">{L.levelCustom}</p>\n <p className=\"mt-1 text-xs leading-5 text-fg-subtle\">{L.levelCustomHint}</p>\n <div className=\"mt-3 flex flex-wrap gap-2\" role=\"group\" aria-label={L.level}>\n {LOG_LEVELS.map((level) => {\n const active = selectedLevels.has(level);\n return (\n <button\n key={level}\n type=\"button\"\n className={cn(\n 'rounded-full border px-3 py-1.5 text-xs font-medium capitalize transition-[color,background-color,border-color] duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n active\n ? 'border-edge bg-surface-active text-fg dark:border-edge'\n : 'border-edge-subtle bg-surface-base text-fg-muted hover:bg-surface-hover dark:border-edge',\n )}\n onClick={() => toggleDialogLevel(level)}\n >\n {L.levelNames[level]}\n </button>\n );\n })}\n </div>\n </div>\n <div className=\"shrink-0 border-t border-edge-subtle px-4 py-3 dark:border-edge\">\n <Button type=\"button\" className=\"w-full rounded-xl\" onClick={() => setFiltersOpen(false)}>\n {L.filtersDone}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <Dialog.Root open={selectedLog !== null} onOpenChange={(o) => !o && setSelectedLog(null)}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-drawer-right fixed right-0 top-0 z-50 flex h-full w-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby={undefined}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold tracking-tight text-fg\">{L.details}</Dialog.Title>\n <div className=\"flex min-w-0 items-center gap-1\">\n {selectedLog ? (\n <>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 shrink-0 gap-1 px-2 text-xs\"\n onClick={() => {\n const text = typeof selectedLog.message === 'string' ? selectedLog.message : '';\n void navigator.clipboard.writeText(text).then(() => setCopiedDetail('message'));\n }}\n >\n <ClipboardCopy className=\"size-3.5 shrink-0\" strokeWidth={1.75} />\n <span className=\"hidden sm:inline\">{copiedDetail === 'message' ? L.copied : L.copyMessage}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 shrink-0 gap-1 px-2 text-xs\"\n onClick={() => {\n void navigator.clipboard\n .writeText(JSON.stringify(selectedLog, null, 2))\n .then(() => setCopiedDetail('json'));\n }}\n >\n <ClipboardCopy className=\"size-3.5 shrink-0\" strokeWidth={1.75} />\n <span className=\"hidden sm:inline\">{copiedDetail === 'json' ? L.copied : L.copyJson}</span>\n </Button>\n </>\n ) : null}\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4 font-mono text-sm leading-relaxed\">\n {selectedLog ? (\n <LogDetailBody\n log={selectedLog}\n labels={{\n time: L.time,\n level: L.level,\n module: L.module,\n message: L.message,\n metadata: L.metadata,\n requestId: L.requestId,\n sessionId: L.sessionId,\n }}\n />\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <Dialog.Root open={filesOpen} onOpenChange={setFilesOpen}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,85vh)] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"flex items-center gap-2 text-base font-semibold tracking-tight text-fg\">\n <Folder className=\"size-4 text-fg-muted\" strokeWidth={1.75} />\n {L.logFiles}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n {files.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{L.filesEmpty}</p>\n ) : (\n <ul className=\"flex flex-col gap-2\" role=\"list\">\n {files.map((f) => (\n <li\n key={f.name}\n className=\"flex flex-col gap-1 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 dark:border-edge\"\n >\n <span className=\"break-all font-mono text-xs text-fg\">{f.name}</span>\n <span className=\"flex flex-wrap gap-x-2 text-xs text-fg-subtle\">\n <span>{formatFileSize(f.size)}</span>\n <span>{formatTimestampFull(f.modified)}</span>\n </span>\n </li>\n ))}\n </ul>\n )}\n </div>\n {logDir ? (\n <div className=\"shrink-0 border-t border-edge-subtle px-4 py-2 text-xs text-fg-subtle dark:border-edge\">\n <span className=\"font-medium text-fg-muted\">{L.logDir}: </span>\n <code className=\"break-all text-fg-subtle\">{logDir}</code>\n </div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n </div>\n );\n}\n\nfunction LogDetailBody({\n log,\n labels,\n}: {\n log: LogEntry;\n labels: {\n time: string;\n level: string;\n module: string;\n message: string;\n metadata: string;\n requestId: string;\n sessionId: string;\n };\n}) {\n const lv = log.level ?? 'info';\n const rid = typeof log.requestId === 'string' ? log.requestId : '';\n const sid = typeof log.sessionId === 'string' ? log.sessionId : '';\n return (\n <div className=\"flex flex-col gap-8\">\n <div>\n <span className=\"text-xs font-sans font-medium text-fg-muted\">{labels.message}</span>\n <pre className=\"mt-2 whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge\">\n {log.message || '—'}\n </pre>\n </div>\n <div className=\"grid grid-cols-[5.5rem_1fr] gap-x-3 gap-y-2 text-xs\">\n <span className=\"font-sans text-fg-muted\">{labels.time}</span>\n <code className=\"break-all text-fg\">{log.timestamp}</code>\n <span className=\"font-sans text-fg-muted\">{labels.level}</span>\n <span className=\"text-fg\">{levelLabel(lv)}</span>\n <span className=\"font-sans text-fg-muted\">{labels.module}</span>\n <code className=\"break-all text-fg\">{moduleLabel(log)}</code>\n {rid ? (\n <>\n <span className=\"font-sans text-fg-muted\">{labels.requestId}</span>\n <code className=\"break-all text-fg\">{rid}</code>\n </>\n ) : null}\n {sid ? (\n <>\n <span className=\"font-sans text-fg-muted\">{labels.sessionId}</span>\n <code className=\"break-all text-fg\">{sid}</code>\n </>\n ) : null}\n </div>\n {log.meta && Object.keys(log.meta).length > 0 ? (\n <div>\n <span className=\"text-xs font-sans font-medium text-fg-muted\">{labels.metadata}</span>\n <pre className=\"mt-2 overflow-x-auto whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge\">\n {JSON.stringify(log.meta, null, 2)}\n </pre>\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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"}