manifest 5.45.1 → 7.0.0

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 (414) hide show
  1. package/CONTRACT.md +50 -0
  2. package/README.md +47 -101
  3. package/dist/chunk-DP2C4E42.js +720 -0
  4. package/dist/index.cjs +757 -0
  5. package/dist/index.d.cts +20 -0
  6. package/dist/index.d.ts +20 -0
  7. package/dist/index.js +8 -18
  8. package/dist/register.cjs +742 -0
  9. package/dist/register.d.cts +2 -0
  10. package/dist/register.d.ts +2 -0
  11. package/dist/register.js +6 -0
  12. package/docs/guide.md +94 -0
  13. package/docs/healing-diagram.svg +549 -0
  14. package/package.json +50 -79
  15. package/dist/backend/analytics/analytics.module.js +0 -60
  16. package/dist/backend/analytics/controllers/agent-analytics.controller.js +0 -69
  17. package/dist/backend/analytics/controllers/agents.controller.js +0 -176
  18. package/dist/backend/analytics/controllers/costs.controller.js +0 -71
  19. package/dist/backend/analytics/controllers/messages.controller.js +0 -67
  20. package/dist/backend/analytics/controllers/overview.controller.js +0 -104
  21. package/dist/backend/analytics/controllers/tokens.controller.js +0 -74
  22. package/dist/backend/analytics/dto/messages-query.dto.js +0 -73
  23. package/dist/backend/analytics/services/agent-analytics.service.js +0 -125
  24. package/dist/backend/analytics/services/agent-lifecycle.service.js +0 -102
  25. package/dist/backend/analytics/services/aggregation.service.js +0 -205
  26. package/dist/backend/analytics/services/message-details.service.js +0 -147
  27. package/dist/backend/analytics/services/messages-query.service.js +0 -197
  28. package/dist/backend/analytics/services/query-helpers.js +0 -45
  29. package/dist/backend/analytics/services/timeseries-queries.service.js +0 -237
  30. package/dist/backend/app.module.js +0 -94
  31. package/dist/backend/auth/auth.instance.js +0 -121
  32. package/dist/backend/auth/auth.module.js +0 -17
  33. package/dist/backend/auth/current-user.decorator.js +0 -9
  34. package/dist/backend/auth/local-auth.guard.js +0 -51
  35. package/dist/backend/auth/session.guard.js +0 -57
  36. package/dist/backend/common/common.module.js +0 -41
  37. package/dist/backend/common/constants/api-key.constants.js +0 -6
  38. package/dist/backend/common/constants/cache.constants.js +0 -8
  39. package/dist/backend/common/constants/local-mode.constants.js +0 -102
  40. package/dist/backend/common/constants/ollama.js +0 -5
  41. package/dist/backend/common/constants/providers.js +0 -134
  42. package/dist/backend/common/decorators/public.decorator.js +0 -8
  43. package/dist/backend/common/dto/create-agent.dto.js +0 -26
  44. package/dist/backend/common/dto/range-query.dto.js +0 -29
  45. package/dist/backend/common/dto/rename-agent.dto.js +0 -26
  46. package/dist/backend/common/filters/spa-fallback.filter.js +0 -46
  47. package/dist/backend/common/guards/api-key.guard.js +0 -89
  48. package/dist/backend/common/interceptors/agent-cache.interceptor.js +0 -39
  49. package/dist/backend/common/interceptors/user-cache.interceptor.js +0 -39
  50. package/dist/backend/common/middleware/http-error-logger.middleware.js +0 -19
  51. package/dist/backend/common/services/ingest-event-bus.service.js +0 -44
  52. package/dist/backend/common/services/manifest-runtime.service.js +0 -39
  53. package/dist/backend/common/services/tenant-cache.service.js +0 -56
  54. package/dist/backend/common/utils/anthropic-model-id.js +0 -36
  55. package/dist/backend/common/utils/cost-calculator.js +0 -19
  56. package/dist/backend/common/utils/crypto.util.js +0 -72
  57. package/dist/backend/common/utils/frontend-path.js +0 -21
  58. package/dist/backend/common/utils/hash.util.js +0 -32
  59. package/dist/backend/common/utils/local-ip.js +0 -33
  60. package/dist/backend/common/utils/period.util.js +0 -55
  61. package/dist/backend/common/utils/provider-aliases.js +0 -13
  62. package/dist/backend/common/utils/provider-inference.js +0 -7
  63. package/dist/backend/common/utils/range.util.js +0 -29
  64. package/dist/backend/common/utils/slugify.js +0 -13
  65. package/dist/backend/common/utils/sql-dialect.js +0 -71
  66. package/dist/backend/common/utils/subscription-support.js +0 -12
  67. package/dist/backend/common/utils/ttl-cache.js +0 -59
  68. package/dist/backend/common/utils/url-validation.js +0 -107
  69. package/dist/backend/config/app.config.js +0 -48
  70. package/dist/backend/database/database-seeder.service.js +0 -180
  71. package/dist/backend/database/database.module.js +0 -201
  72. package/dist/backend/database/datasource.js +0 -28
  73. package/dist/backend/database/local-bootstrap.service.js +0 -161
  74. package/dist/backend/database/migrations/1771464895790-InitialSchema.js +0 -91
  75. package/dist/backend/database/migrations/1771500000000-HashApiKeys.js +0 -67
  76. package/dist/backend/database/migrations/1771600000000-AddModelCapabilities.js +0 -27
  77. package/dist/backend/database/migrations/1771600000000-ModelPricingImprovements.js +0 -60
  78. package/dist/backend/database/migrations/1771700000000-AddRoutingTables.js +0 -50
  79. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.js +0 -31
  80. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.js +0 -16
  81. package/dist/backend/database/migrations/1771800000000-AddQualityScore.js +0 -50
  82. package/dist/backend/database/migrations/1771800100000-SeedQualityScores.js +0 -45
  83. package/dist/backend/database/migrations/1771900000000-EncryptApiKeys.js +0 -34
  84. package/dist/backend/database/migrations/1772000000000-MakeApiKeyNullable.js +0 -16
  85. package/dist/backend/database/migrations/1772100000000-AddRoutingTier.js +0 -17
  86. package/dist/backend/database/migrations/1772200000000-AddLimitAction.js +0 -17
  87. package/dist/backend/database/migrations/1772300000000-AddRoutingReason.js +0 -17
  88. package/dist/backend/database/migrations/1772400000000-AddAgentDisplayName.js +0 -13
  89. package/dist/backend/database/migrations/1772500000000-PerAgentRouting.js +0 -82
  90. package/dist/backend/database/migrations/1772668898071-AddCustomProviders.js +0 -31
  91. package/dist/backend/database/migrations/1772682112419-NullablePricing.js +0 -17
  92. package/dist/backend/database/migrations/1772843035514-AddPerformanceIndexes.js +0 -56
  93. package/dist/backend/database/migrations/1772900000000-AddProviderAuthType.js +0 -13
  94. package/dist/backend/database/migrations/1772905146384-AddDashboardIndexes.js +0 -24
  95. package/dist/backend/database/migrations/1772905260464-AddFallbacks.js +0 -18
  96. package/dist/backend/database/migrations/1772920000000-AddModelDisplayName.js +0 -14
  97. package/dist/backend/database/migrations/1772940000000-DropRedundantIndexes.js +0 -39
  98. package/dist/backend/database/migrations/1772948502780-BackfillTenantId.js +0 -20
  99. package/dist/backend/database/migrations/1772960000000-DropUnusedIndexes.js +0 -19
  100. package/dist/backend/database/migrations/1772960000000-PurgeNonCuratedModels.js +0 -86
  101. package/dist/backend/database/migrations/1773000000000-ExpandProviderUniqueKey.js +0 -19
  102. package/dist/backend/database/migrations/1773100000000-AddOverrideAuthType.js +0 -18
  103. package/dist/backend/database/migrations/1773200000000-AddMessageAuthType.js +0 -18
  104. package/dist/backend/database/migrations/1773202787708-AddModelsAgentIndex.js +0 -16
  105. package/dist/backend/database/migrations/1773300000000-AddEmailProviderKeyPrefix.js +0 -13
  106. package/dist/backend/database/migrations/1773400000000-AddProviderModelCache.js +0 -15
  107. package/dist/backend/database/migrations/1773500000000-DropModelPricingTables.js +0 -51
  108. package/dist/backend/database/migrations/1773600000000-AddOverrideProvider.js +0 -18
  109. package/dist/backend/database/migrations/1773650000000-AddProviderRegion.js +0 -13
  110. package/dist/backend/database/migrations/1773700000000-DropSecurityEventTable.js +0 -24
  111. package/dist/backend/database/migrations/1773800000000-FixNegativeCosts.js +0 -12
  112. package/dist/backend/database/migrations/1773900000000-AddKeyPrefixIndex.js +0 -15
  113. package/dist/backend/database/migrations/1774000000000-WidenKeyHashColumn.js +0 -15
  114. package/dist/backend/database/migrations/1774896789000-WidenApiKeyColumn.js +0 -14
  115. package/dist/backend/database/migrations/1775000000000-AddErrorHttpStatus.js +0 -18
  116. package/dist/backend/database/models-dev-sync.service.js +0 -238
  117. package/dist/backend/database/ollama-sync.service.js +0 -70
  118. package/dist/backend/database/pricing-sync.service.js +0 -116
  119. package/dist/backend/database/quality-score.util.js +0 -76
  120. package/dist/backend/database/seed-messages.js +0 -66
  121. package/dist/backend/entities/agent-api-key.entity.js +0 -91
  122. package/dist/backend/entities/agent-log.entity.js +0 -71
  123. package/dist/backend/entities/agent-message.entity.js +0 -163
  124. package/dist/backend/entities/agent.entity.js +0 -75
  125. package/dist/backend/entities/api-key.entity.js +0 -62
  126. package/dist/backend/entities/cost-snapshot.entity.js +0 -56
  127. package/dist/backend/entities/custom-provider.entity.js +0 -64
  128. package/dist/backend/entities/email-provider-config.entity.js +0 -72
  129. package/dist/backend/entities/llm-call.entity.js +0 -106
  130. package/dist/backend/entities/notification-log.entity.js +0 -67
  131. package/dist/backend/entities/notification-rule.entity.js +0 -84
  132. package/dist/backend/entities/tenant.entity.js +0 -62
  133. package/dist/backend/entities/tier-assignment.entity.js +0 -72
  134. package/dist/backend/entities/token-usage-snapshot.entity.js +0 -71
  135. package/dist/backend/entities/tool-execution.entity.js +0 -60
  136. package/dist/backend/entities/user-provider.entity.js +0 -87
  137. package/dist/backend/github/github.controller.js +0 -53
  138. package/dist/backend/github/github.module.js +0 -20
  139. package/dist/backend/health/health.controller.js +0 -51
  140. package/dist/backend/health/health.module.js +0 -22
  141. package/dist/backend/health/version-check.service.js +0 -95
  142. package/dist/backend/main.js +0 -154
  143. package/dist/backend/model-discovery/anthropic-subscription-probe.js +0 -87
  144. package/dist/backend/model-discovery/known-model-prices.js +0 -18
  145. package/dist/backend/model-discovery/model-discovery.module.js +0 -28
  146. package/dist/backend/model-discovery/model-discovery.service.js +0 -309
  147. package/dist/backend/model-discovery/model-fallback.js +0 -234
  148. package/dist/backend/model-discovery/model-fetcher.js +0 -3
  149. package/dist/backend/model-discovery/provider-model-fetcher.service.js +0 -376
  150. package/dist/backend/model-discovery/provider-model-registry.service.js +0 -84
  151. package/dist/backend/model-prices/model-name-normalizer.js +0 -129
  152. package/dist/backend/model-prices/model-prices.controller.js +0 -39
  153. package/dist/backend/model-prices/model-prices.module.js +0 -41
  154. package/dist/backend/model-prices/model-prices.service.js +0 -45
  155. package/dist/backend/model-prices/model-pricing-cache.service.js +0 -171
  156. package/dist/backend/notifications/dto/notification-rule.dto.js +0 -82
  157. package/dist/backend/notifications/dto/set-email-provider.dto.js +0 -86
  158. package/dist/backend/notifications/dto/set-notification-email.dto.js +0 -24
  159. package/dist/backend/notifications/emails/reset-password.js +0 -108
  160. package/dist/backend/notifications/emails/test-email.js +0 -91
  161. package/dist/backend/notifications/emails/threshold-alert.js +0 -187
  162. package/dist/backend/notifications/emails/verify-email.js +0 -108
  163. package/dist/backend/notifications/notifications.controller.js +0 -208
  164. package/dist/backend/notifications/notifications.module.js +0 -35
  165. package/dist/backend/notifications/services/email-provider-config.service.js +0 -184
  166. package/dist/backend/notifications/services/email-provider-validation.js +0 -47
  167. package/dist/backend/notifications/services/email-providers/email-provider.interface.js +0 -3
  168. package/dist/backend/notifications/services/email-providers/mailgun.provider.js +0 -62
  169. package/dist/backend/notifications/services/email-providers/resend.provider.js +0 -51
  170. package/dist/backend/notifications/services/email-providers/resolve-provider.js +0 -19
  171. package/dist/backend/notifications/services/email-providers/send-email.js +0 -34
  172. package/dist/backend/notifications/services/email-providers/sendgrid.provider.js +0 -59
  173. package/dist/backend/notifications/services/limit-check.service.js +0 -160
  174. package/dist/backend/notifications/services/notification-cron.service.js +0 -151
  175. package/dist/backend/notifications/services/notification-email.service.js +0 -65
  176. package/dist/backend/notifications/services/notification-log.service.js +0 -84
  177. package/dist/backend/notifications/services/notification-rules.service.js +0 -156
  178. package/dist/backend/otlp/guards/agent-key-auth.guard.js +0 -226
  179. package/dist/backend/otlp/interfaces/ingestion-context.interface.js +0 -3
  180. package/dist/backend/otlp/otlp-deprecated.controller.js +0 -61
  181. package/dist/backend/otlp/otlp.module.js +0 -30
  182. package/dist/backend/otlp/services/api-key.service.js +0 -143
  183. package/dist/backend/public-stats/public-stats.controller.js +0 -141
  184. package/dist/backend/public-stats/public-stats.module.js +0 -26
  185. package/dist/backend/public-stats/public-stats.service.js +0 -226
  186. package/dist/backend/routing/copilot.controller.js +0 -79
  187. package/dist/backend/routing/custom-provider/custom-provider.controller.js +0 -131
  188. package/dist/backend/routing/custom-provider/custom-provider.module.js +0 -27
  189. package/dist/backend/routing/custom-provider/custom-provider.service.js +0 -161
  190. package/dist/backend/routing/dto/custom-provider.dto.js +0 -124
  191. package/dist/backend/routing/dto/resolve-request.dto.js +0 -63
  192. package/dist/backend/routing/dto/resolve-response.js +0 -3
  193. package/dist/backend/routing/dto/routing.dto.js +0 -136
  194. package/dist/backend/routing/model.controller.js +0 -105
  195. package/dist/backend/routing/oauth/copilot-device-auth.service.js +0 -77
  196. package/dist/backend/routing/oauth/minimax-oauth-helpers.js +0 -70
  197. package/dist/backend/routing/oauth/minimax-oauth.controller.js +0 -80
  198. package/dist/backend/routing/oauth/minimax-oauth.service.js +0 -252
  199. package/dist/backend/routing/oauth/oauth.module.js +0 -29
  200. package/dist/backend/routing/oauth/openai-oauth.controller.js +0 -138
  201. package/dist/backend/routing/oauth/openai-oauth.service.js +0 -273
  202. package/dist/backend/routing/oauth/openai-oauth.types.js +0 -45
  203. package/dist/backend/routing/provider-base-url.js +0 -25
  204. package/dist/backend/routing/provider.controller.js +0 -152
  205. package/dist/backend/routing/proxy/anthropic-adapter.js +0 -295
  206. package/dist/backend/routing/proxy/cache-injection.js +0 -33
  207. package/dist/backend/routing/proxy/chatgpt-adapter.js +0 -272
  208. package/dist/backend/routing/proxy/chatgpt-helpers.js +0 -108
  209. package/dist/backend/routing/proxy/copilot-token.service.js +0 -63
  210. package/dist/backend/routing/proxy/fallback-status-codes.js +0 -7
  211. package/dist/backend/routing/proxy/google-adapter.js +0 -314
  212. package/dist/backend/routing/proxy/provider-client-converters.js +0 -190
  213. package/dist/backend/routing/proxy/provider-client.js +0 -130
  214. package/dist/backend/routing/proxy/provider-endpoints.js +0 -182
  215. package/dist/backend/routing/proxy/proxy-error-sanitizer.js +0 -40
  216. package/dist/backend/routing/proxy/proxy-exception.filter.js +0 -67
  217. package/dist/backend/routing/proxy/proxy-fallback.service.js +0 -227
  218. package/dist/backend/routing/proxy/proxy-friendly-response.js +0 -115
  219. package/dist/backend/routing/proxy/proxy-message-dedup.js +0 -121
  220. package/dist/backend/routing/proxy/proxy-message-recorder.js +0 -264
  221. package/dist/backend/routing/proxy/proxy-rate-limiter.js +0 -81
  222. package/dist/backend/routing/proxy/proxy-response-handler.js +0 -202
  223. package/dist/backend/routing/proxy/proxy-transport.js +0 -90
  224. package/dist/backend/routing/proxy/proxy-types.js +0 -3
  225. package/dist/backend/routing/proxy/proxy.controller.js +0 -174
  226. package/dist/backend/routing/proxy/proxy.module.js +0 -62
  227. package/dist/backend/routing/proxy/proxy.service.js +0 -227
  228. package/dist/backend/routing/proxy/session-momentum.service.js +0 -66
  229. package/dist/backend/routing/proxy/stream-writer.js +0 -147
  230. package/dist/backend/routing/proxy/thought-signature-cache.js +0 -45
  231. package/dist/backend/routing/qwen-region.js +0 -51
  232. package/dist/backend/routing/resolve/resolve.controller.js +0 -106
  233. package/dist/backend/routing/resolve/resolve.module.js +0 -28
  234. package/dist/backend/routing/resolve/resolve.service.js +0 -126
  235. package/dist/backend/routing/routing-core/provider-key.service.js +0 -190
  236. package/dist/backend/routing/routing-core/provider.service.js +0 -305
  237. package/dist/backend/routing/routing-core/resolve-agent.service.js +0 -62
  238. package/dist/backend/routing/routing-core/routing-cache.service.js +0 -73
  239. package/dist/backend/routing/routing-core/routing-core.module.js +0 -56
  240. package/dist/backend/routing/routing-core/routing-invalidation.service.js +0 -90
  241. package/dist/backend/routing/routing-core/tier-auto-assign.service.js +0 -138
  242. package/dist/backend/routing/routing-core/tier.service.js +0 -179
  243. package/dist/backend/routing/routing.module.js +0 -46
  244. package/dist/backend/routing/tier.controller.js +0 -129
  245. package/dist/backend/scoring/__tests__/fixtures.js +0 -191
  246. package/dist/backend/scoring/config.js +0 -383
  247. package/dist/backend/scoring/dimensions/contextual-dimensions.js +0 -85
  248. package/dist/backend/scoring/dimensions/index.js +0 -17
  249. package/dist/backend/scoring/dimensions/keyword-dimensions.js +0 -47
  250. package/dist/backend/scoring/dimensions/structural-dimensions.js +0 -118
  251. package/dist/backend/scoring/index.js +0 -186
  252. package/dist/backend/scoring/keyword-trie.js +0 -75
  253. package/dist/backend/scoring/momentum.js +0 -50
  254. package/dist/backend/scoring/overrides.js +0 -55
  255. package/dist/backend/scoring/sigmoid.js +0 -24
  256. package/dist/backend/scoring/text-extractor.js +0 -67
  257. package/dist/backend/scoring/types.js +0 -6
  258. package/dist/backend/sse/sse.controller.js +0 -45
  259. package/dist/backend/sse/sse.module.js +0 -20
  260. package/dist/node_modules/manifest-shared/dist/cjs/api-key.d.ts +0 -2
  261. package/dist/node_modules/manifest-shared/dist/cjs/api-key.d.ts.map +0 -1
  262. package/dist/node_modules/manifest-shared/dist/cjs/api-key.js +0 -5
  263. package/dist/node_modules/manifest-shared/dist/cjs/api-key.js.map +0 -1
  264. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.d.ts +0 -3
  265. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.d.ts.map +0 -1
  266. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.js +0 -5
  267. package/dist/node_modules/manifest-shared/dist/cjs/auth-types.js.map +0 -1
  268. package/dist/node_modules/manifest-shared/dist/cjs/index.d.ts +0 -10
  269. package/dist/node_modules/manifest-shared/dist/cjs/index.d.ts.map +0 -1
  270. package/dist/node_modules/manifest-shared/dist/cjs/index.js +0 -22
  271. package/dist/node_modules/manifest-shared/dist/cjs/index.js.map +0 -1
  272. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.d.ts +0 -8
  273. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.d.ts.map +0 -1
  274. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.js +0 -37
  275. package/dist/node_modules/manifest-shared/dist/cjs/provider-inference.js.map +0 -1
  276. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.d.ts +0 -12
  277. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.d.ts.map +0 -1
  278. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.js +0 -3
  279. package/dist/node_modules/manifest-shared/dist/cjs/resolve-response.js.map +0 -1
  280. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.d.ts +0 -4
  281. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.d.ts.map +0 -1
  282. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.js +0 -80
  283. package/dist/node_modules/manifest-shared/dist/cjs/subscription/configs.js.map +0 -1
  284. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.d.ts +0 -6
  285. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.d.ts.map +0 -1
  286. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.js +0 -25
  287. package/dist/node_modules/manifest-shared/dist/cjs/subscription/helpers.js.map +0 -1
  288. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.d.ts +0 -4
  289. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.d.ts.map +0 -1
  290. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.js +0 -12
  291. package/dist/node_modules/manifest-shared/dist/cjs/subscription/index.js.map +0 -1
  292. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.d.ts +0 -17
  293. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.d.ts.map +0 -1
  294. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.js +0 -3
  295. package/dist/node_modules/manifest-shared/dist/cjs/subscription/types.js.map +0 -1
  296. package/dist/node_modules/manifest-shared/dist/cjs/tiers.d.ts +0 -5
  297. package/dist/node_modules/manifest-shared/dist/cjs/tiers.d.ts.map +0 -1
  298. package/dist/node_modules/manifest-shared/dist/cjs/tiers.js +0 -17
  299. package/dist/node_modules/manifest-shared/dist/cjs/tiers.js.map +0 -1
  300. package/dist/node_modules/manifest-shared/dist/esm/api-key.d.ts +0 -2
  301. package/dist/node_modules/manifest-shared/dist/esm/api-key.d.ts.map +0 -1
  302. package/dist/node_modules/manifest-shared/dist/esm/api-key.js +0 -2
  303. package/dist/node_modules/manifest-shared/dist/esm/api-key.js.map +0 -1
  304. package/dist/node_modules/manifest-shared/dist/esm/auth-types.d.ts +0 -3
  305. package/dist/node_modules/manifest-shared/dist/esm/auth-types.d.ts.map +0 -1
  306. package/dist/node_modules/manifest-shared/dist/esm/auth-types.js +0 -2
  307. package/dist/node_modules/manifest-shared/dist/esm/auth-types.js.map +0 -1
  308. package/dist/node_modules/manifest-shared/dist/esm/index.d.ts +0 -10
  309. package/dist/node_modules/manifest-shared/dist/esm/index.d.ts.map +0 -1
  310. package/dist/node_modules/manifest-shared/dist/esm/index.js +0 -6
  311. package/dist/node_modules/manifest-shared/dist/esm/index.js.map +0 -1
  312. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.d.ts +0 -8
  313. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.d.ts.map +0 -1
  314. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.js +0 -33
  315. package/dist/node_modules/manifest-shared/dist/esm/provider-inference.js.map +0 -1
  316. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.d.ts +0 -12
  317. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.d.ts.map +0 -1
  318. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.js +0 -2
  319. package/dist/node_modules/manifest-shared/dist/esm/resolve-response.js.map +0 -1
  320. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.d.ts +0 -4
  321. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.d.ts.map +0 -1
  322. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.js +0 -77
  323. package/dist/node_modules/manifest-shared/dist/esm/subscription/configs.js.map +0 -1
  324. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.d.ts +0 -6
  325. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.d.ts.map +0 -1
  326. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.js +0 -19
  327. package/dist/node_modules/manifest-shared/dist/esm/subscription/helpers.js.map +0 -1
  328. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.d.ts +0 -4
  329. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.d.ts.map +0 -1
  330. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.js +0 -3
  331. package/dist/node_modules/manifest-shared/dist/esm/subscription/index.js.map +0 -1
  332. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.d.ts +0 -17
  333. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.d.ts.map +0 -1
  334. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.js +0 -2
  335. package/dist/node_modules/manifest-shared/dist/esm/subscription/types.js.map +0 -1
  336. package/dist/node_modules/manifest-shared/dist/esm/tiers.d.ts +0 -5
  337. package/dist/node_modules/manifest-shared/dist/esm/tiers.d.ts.map +0 -1
  338. package/dist/node_modules/manifest-shared/dist/esm/tiers.js +0 -14
  339. package/dist/node_modules/manifest-shared/dist/esm/tiers.js.map +0 -1
  340. package/dist/node_modules/manifest-shared/package.json +0 -26
  341. package/dist/openclaw.plugin.json +0 -37
  342. package/dist/package.json +0 -94
  343. package/dist/server.d.ts +0 -9
  344. package/dist/server.js +0 -69
  345. package/openclaw.plugin.json +0 -37
  346. package/public/assets/Account-C5g6WhPe.js +0 -1
  347. package/public/assets/AuthBadge-Dj2KkXRW.js +0 -1
  348. package/public/assets/ConnectProvider-axzk92LC.js +0 -1
  349. package/public/assets/CopyButton-BWMVlK2w.js +0 -1
  350. package/public/assets/FreeModels-D14GhDL_.js +0 -1
  351. package/public/assets/Help-ifWIlcDo.js +0 -1
  352. package/public/assets/Limits-Xgc4xTl5.js +0 -1
  353. package/public/assets/Login-DMXD4PMZ.js +0 -1
  354. package/public/assets/MessageLog-DoriYlHo.js +0 -1
  355. package/public/assets/ModelPrices-MhBT_7Zb.js +0 -1
  356. package/public/assets/Overview-Bi9FuoLx.js +0 -1
  357. package/public/assets/Pagination-D8BOkffh.js +0 -1
  358. package/public/assets/ProviderTokens-Cu2RUqQG.js +0 -1
  359. package/public/assets/Register-CrovWG_d.js +0 -1
  360. package/public/assets/ResetPassword-C6B1ubhL.js +0 -1
  361. package/public/assets/Routing-B-On2pvv.js +0 -6
  362. package/public/assets/Settings-BH-xNoID.js +0 -1
  363. package/public/assets/SetupStepAddProvider-CSNkQmoC.js +0 -3
  364. package/public/assets/SocialButtons-DudwEJ6b.js +0 -1
  365. package/public/assets/auth-CU91cd7V.js +0 -1
  366. package/public/assets/chart-utils-DTt1NOye.js +0 -1
  367. package/public/assets/charts-Cty976qB.js +0 -3
  368. package/public/assets/charts-Saz_VHki.css +0 -1
  369. package/public/assets/index-C4Qw7vZo.js +0 -2
  370. package/public/assets/index-DhaXpWfr.css +0 -1
  371. package/public/assets/model-display-DHwvDtl4.js +0 -1
  372. package/public/assets/overview-DKLGwfLs.js +0 -1
  373. package/public/assets/overview-vZEzTjBP.css +0 -1
  374. package/public/assets/provider-api-key-urls-1G6okUJ7.js +0 -1
  375. package/public/assets/routing-CLLAl6kl.js +0 -1
  376. package/public/assets/routing-utils-CHapjwyd.js +0 -1
  377. package/public/assets/vendor-C-Y5oNOq.js +0 -1
  378. package/public/example-messages.svg +0 -1
  379. package/public/example-overview.svg +0 -1
  380. package/public/favicon.ico +0 -0
  381. package/public/fonts/boxicons/boxicons-duotone.min.css +0 -37
  382. package/public/fonts/boxicons/boxicons-duotone.woff2 +0 -0
  383. package/public/fonts/bricolage-grotesque-latin.woff2 +0 -0
  384. package/public/fonts/dm-sans-latin.woff2 +0 -0
  385. package/public/fonts/jetbrains-mono-latin.woff2 +0 -0
  386. package/public/icons/caret-down.svg +0 -1
  387. package/public/icons/cohere.svg +0 -30
  388. package/public/icons/free.svg +0 -91
  389. package/public/icons/gemini.svg +0 -25
  390. package/public/icons/kilocode.jpg +0 -0
  391. package/public/icons/nvidia.svg +0 -1
  392. package/public/icons/providers/alibaba.svg +0 -1
  393. package/public/icons/providers/amazon.svg +0 -1
  394. package/public/icons/providers/anthropic.svg +0 -1
  395. package/public/icons/providers/cohere.svg +0 -1
  396. package/public/icons/providers/deepseek.svg +0 -1
  397. package/public/icons/providers/google.svg +0 -1
  398. package/public/icons/providers/meta.svg +0 -1
  399. package/public/icons/providers/mistral.svg +0 -1
  400. package/public/icons/providers/moonshot.svg +0 -1
  401. package/public/icons/providers/openai.svg +0 -1
  402. package/public/icons/providers/xai.svg +0 -1
  403. package/public/icons/providers/zhipu.svg +0 -1
  404. package/public/icons/qwen.svg +0 -1
  405. package/public/images/oauth-callback-example.mp4 +0 -0
  406. package/public/images/oauth-callback-example.png +0 -0
  407. package/public/index.html +0 -41
  408. package/public/logo-white.svg +0 -93
  409. package/public/logo.svg +0 -93
  410. package/public/logos/mailgun.svg +0 -13
  411. package/public/logos/resend.svg +0 -4
  412. package/public/logos/sendgrid.svg +0 -18
  413. package/public/manifest-logo.png +0 -0
  414. package/public/theme-init.js +0 -6
@@ -1 +0,0 @@
1
- @font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(/fonts/bricolage-grotesque-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/dm-sans-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:1000;padding:var(--gap-sm) var(--gap-md);background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-size:var(--font-size-sm);font-weight:600;text-decoration:none;border-radius:var(--radius)}.skip-link:focus{position:fixed;top:var(--gap-sm);left:var(--gap-sm);width:auto;height:auto;z-index:1000}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-body{display:flex;flex:1;padding-top:var(--header-height)}.container--lg{max-width:1400px;margin-inline:auto}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:var(--gap-xl);padding-bottom:var(--gap-lg);border-bottom:1px solid hsl(var(--border))}.page-header .btn{white-space:nowrap;flex-shrink:0}.theme-toggle{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius);background:transparent;border:1px solid hsl(var(--border));color:hsl(var(--muted-foreground));cursor:pointer;transition:all var(--transition-fast);padding:0}.theme-toggle__icon{display:flex;align-items:center;justify-content:center;line-height:1}.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;text-align:center;padding:var(--gap-xl)}.not-found__code{font-size:8rem;font-weight:800;letter-spacing:-.05em;line-height:1;background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--chart-1)));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.not-found__title{font-size:var(--font-size-2xl);font-weight:700;color:hsl(var(--foreground));margin-top:var(--gap-md);letter-spacing:-.025em}.not-found__text{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-top:var(--gap-sm);max-width:360px}.not-found__link{display:inline-flex;align-items:center;gap:var(--gap-xs);margin-top:var(--gap-xl);padding:.625rem 1.25rem;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-radius:var(--radius);font-size:var(--font-size-sm);font-weight:600;text-decoration:none;transition:opacity var(--transition-fast)}.not-found__link:hover{opacity:.9}.auth-layout{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--gap-lg);background:hsl(var(--background))}.auth-card{width:100%;max-width:420px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:12px;padding:var(--gap-xl) var(--gap-xl) var(--gap-lg);box-shadow:var(--card-shadow);animation:fadeInUp .3s ease-out both}.auth-logo{text-align:center}.auth-logo__link{display:inline-flex;align-items:center;gap:var(--gap-sm);font-size:var(--font-size-lg);font-weight:700;letter-spacing:-.025em;color:hsl(var(--foreground));text-decoration:none}.auth-logo__img{width:140px;height:auto;object-fit:contain}.auth-logo__img--dark,.dark .auth-logo__img--light{display:none}.dark .auth-logo__img--dark{display:inline-block}.auth-header{text-align:center;margin-bottom:var(--gap-lg)}.auth-header__title{font-size:var(--font-size-xl);font-weight:700;color:hsl(var(--foreground));letter-spacing:-.025em;line-height:1.2}.auth-header__subtitle{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-top:var(--gap-xs)}.auth-form{display:flex;flex-direction:column;gap:var(--gap-md);margin-bottom:var(--gap-lg)}.auth-form__label{display:flex;flex-direction:column;gap:var(--gap-xs);font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.auth-form__input{height:2.75rem;padding:0 var(--gap-md);background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);transition:border-color var(--transition-fast);outline:none}.auth-form__input::placeholder{color:hsl(var(--muted-foreground))}.auth-form__input:focus{border-color:hsl(var(--primary));box-shadow:0 0 0 2px hsl(var(--primary) / .15)}.auth-form__actions{display:flex;justify-content:flex-end;margin-top:calc(-1 * var(--gap-xs))}.auth-form__forgot{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));text-decoration:none;transition:color var(--transition-fast)}.auth-form__forgot:hover{color:hsl(var(--foreground))}.auth-form__submit{height:2.75rem;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:none;border-radius:var(--radius);font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-family);cursor:pointer;transition:opacity var(--transition-fast)}.auth-form__submit:hover:not(:disabled){opacity:.9}.auth-form__submit:disabled{opacity:.6;cursor:not-allowed}.auth-form__error{padding:var(--gap-sm) var(--gap-md);background:hsl(var(--destructive) / .1);color:hsl(var(--destructive));border:1px solid hsl(var(--destructive) / .2);border-radius:var(--radius);font-size:var(--font-size-xs)}.auth-form__error-link{color:hsl(var(--destructive));font-weight:600;text-decoration:underline}.auth-form__success{padding:var(--gap-sm) var(--gap-md);background:#21c45d1a;color:#1a9948;border:1px solid hsl(142 71% 45% / .2);border-radius:var(--radius);font-size:var(--font-size-xs);line-height:1.5}.auth-form__link-btn{background:none;border:none;padding:0;font-size:var(--font-size-sm);font-family:var(--font-family);color:hsl(var(--primary));font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:opacity var(--transition-fast)}.auth-form__link-btn:hover:not(:disabled){opacity:.8}.auth-form__link-btn:disabled{color:hsl(var(--muted-foreground));cursor:not-allowed;text-decoration:none}.auth-divider{display:flex;align-items:center;gap:var(--gap-md);margin-bottom:var(--gap-lg)}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:hsl(var(--border))}.auth-divider__text{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.05em}.auth-social-group{display:flex;flex-direction:column;gap:var(--gap-sm);margin-bottom:var(--gap-lg)}.auth-social-btn{display:flex;align-items:center;justify-content:center;gap:var(--gap-sm);width:100%;height:2.75rem;padding:0 var(--gap-md);background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);font-size:var(--font-size-sm);font-weight:500;font-family:var(--font-family);cursor:pointer;transition:all var(--transition-fast)}.auth-social-btn:hover{background:hsl(var(--accent));border-color:hsl(var(--foreground) / .2)}.auth-social-btn__icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.auth-social-btn--google:hover{border-color:#4285f4}.auth-social-btn--github:hover{border-color:#6e40c9}.auth-social-btn--discord:hover{border-color:#5865f2}.auth-footer{text-align:center;padding-top:var(--gap-md);border-top:1px solid hsl(var(--border));font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.auth-footer__link{color:hsl(var(--foreground));font-weight:500;text-decoration:none;transition:color var(--transition-fast)}.auth-footer__link:hover{text-decoration:underline}.auth-terms{text-align:center;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.5;margin-bottom:var(--gap-sm)}.auth-terms__link{color:hsl(var(--foreground));text-decoration:none}.auth-terms__link:hover{text-decoration:underline}@media(max-width:480px){.auth-card{padding:var(--gap-lg) var(--gap-md);border:none;box-shadow:none;background:transparent}}.summary-card{background:hsl(var(--card));border:none;border-radius:var(--radius);padding:var(--gap-lg);box-shadow:var(--card-shadow)}.trend--up,.trend--down{color:hsl(var(--muted-foreground));background:hsl(var(--muted))}.panel{background:hsl(var(--card));border:none;border-radius:var(--radius);padding:var(--gap-lg);margin-bottom:var(--gap-lg);box-shadow:var(--card-shadow);overflow-x:auto;overflow-y:hidden}.view-more-link{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));text-decoration:none;transition:color .15s}.view-more-link:hover{color:hsl(var(--foreground))}.chart-card{background:hsl(var(--card));border:none;border-radius:var(--radius);margin-bottom:var(--gap-lg);box-shadow:var(--card-shadow);animation:fadeInUp .3s ease-out both}.chart-card__header{display:flex;align-items:stretch;border-bottom:1px solid hsl(var(--border))}.chart-card__stat{display:flex;flex-direction:column;justify-content:center;min-width:200px;gap:2px;padding:var(--gap-lg) var(--gap-xl);border-right:1px solid hsl(var(--border))}.chart-card__stat:first-child{padding-left:var(--gap-lg)}.chart-card__stat--clickable{cursor:pointer;transition:all var(--transition-fast);position:relative}.chart-card__stat--clickable:after{content:"";position:absolute;bottom:-1px;left:-1px;right:-1px;height:2px;background:transparent;transition:background var(--transition-fast)}.chart-card__stat--active:after{background:hsl(var(--chart-1))}.chart-card__stat--clickable:not(.chart-card__stat--active):hover:after{background:hsl(var(--border))}.chart-card__value-row{display:flex;align-items:center;gap:var(--gap-sm)}.chart-card__controls{margin-left:auto;display:flex;align-items:center;padding:var(--gap-md) var(--gap-lg) var(--gap-md) var(--gap-xl)}.chart-card__body{padding:var(--gap-md) var(--gap-lg) var(--gap-lg);overflow:hidden}.chart-card__body .u-wrap{overflow:hidden!important}.u-cursor-x{border-left:1px solid hsl(var(--foreground) / .7)!important;border-left-style:solid!important;opacity:0!important;transition:opacity 60ms ease!important}.u-wrap:hover .u-cursor-x{opacity:1!important}.u-cursor-y{display:none!important}.expandable-card .panel{overflow:hidden;max-height:320px;padding-bottom:var(--gap-2xl)}.expandable-card__fade{position:absolute;bottom:0;left:0;right:0;height:80px;background:linear-gradient(transparent,hsl(var(--card)) 60%);border-radius:0 0 var(--radius) var(--radius);display:flex;align-items:flex-end;justify-content:center;padding-bottom:16px;opacity:0;transition:opacity var(--transition-base)}.select{display:inline-flex;align-items:center;height:2.25rem;background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);padding:0 2rem 0 .75rem;font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center}.cost-range-filter{display:inline-flex;align-items:center;gap:4px}.cost-range-filter__input{width:80px;height:2.25rem;background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);padding:0 .5rem;font-size:var(--font-size-sm);font-family:var(--font-family);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.cost-range-filter__input::placeholder{color:hsl(var(--muted-foreground))}.cost-range-filter__input:focus-visible{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.cost-range-filter__input::-webkit-inner-spin-button,.cost-range-filter__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cost-range-filter__input{-moz-appearance:textfield}.cost-range-filter__sep{color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);user-select:none}.setup-steps{display:flex;flex-direction:column}.setup-steps__step{display:flex;gap:var(--gap-md)}.setup-steps__divider{height:1px;background:hsl(var(--border));margin:var(--gap-lg) 0}.setup-steps__number{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:600;background:hsl(var(--primary));color:hsl(var(--primary-foreground));flex-shrink:0;margin-top:2px}.setup-steps__content{flex:1;min-width:0}.btn--primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground));gap:6px}.toast{position:fixed;bottom:var(--gap-lg);right:var(--gap-lg);display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radius);font-size:var(--font-size-sm);box-shadow:0 4px 16px #00000026;cursor:pointer;z-index:100;animation:toast-in .2s ease-out;max-width:420px}.toast--success{background:hsl(var(--card));border:1px solid hsl(var(--success) / .4);color:hsl(var(--foreground))}.toast--error{background:hsl(var(--card));border:1px solid hsl(var(--destructive) / .4);color:hsl(var(--foreground))}.toast__icon{flex-shrink:0;display:flex}.toast__message{line-height:1.4}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.btn--danger{background:hsl(var(--destructive));color:#fff}.btn--danger:hover{background:hsl(var(--destructive) / .9)}.settings-section__title--danger{color:hsl(var(--destructive))}.settings-card--danger{border-color:hsl(var(--destructive) / .3)}.settings-card--danger .settings-card__control{display:flex;justify-content:flex-end}.sidebar{width:var(--sidebar-width);height:calc(100vh - var(--header-height));position:fixed;top:var(--header-height);left:0;background:hsl(var(--sidebar-background));border-right:1px solid hsl(var(--sidebar-border));padding:var(--gap-md) 0;display:flex;flex-direction:column;z-index:10;overflow-y:auto}.sidebar__link--disabled{opacity:.4;pointer-events:none;cursor:default}.header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:hsl(var(--background));border-bottom:1px solid hsl(var(--border));display:flex;align-items:center;justify-content:space-between;padding:0 var(--gap-lg);z-index:40}.header__left{display:flex;align-items:center;gap:var(--gap-sm);min-width:0}.header__logo{display:flex;align-items:center;gap:var(--gap-sm);font-size:var(--font-size-sm);font-weight:700;letter-spacing:-.025em;color:hsl(var(--foreground));text-decoration:none}.header__logo-img{width:152px;height:auto;object-fit:contain;margin-bottom:9px}.header__logo-img--dark,.dark .header__logo-img--light{display:none}.dark .header__logo-img--dark{display:block}.header__mode-badge{display:inline-flex;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:4px 7px 3px;border-radius:var(--radius);background:hsl(var(--success) / .15);color:hsl(var(--success));line-height:1;user-select:none}.header__mode-badge--dev{background:#f9741526;color:#f97415}.header__separator{color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);user-select:none}.header__breadcrumb-link{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));text-decoration:none;transition:color var(--transition-fast)}.header__breadcrumb-link:hover{color:hsl(var(--foreground))}.header__breadcrumb-current{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.header__right{display:flex;align-items:center;align-self:stretch;gap:var(--gap-sm)}.header__avatar-btn{display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;padding:2px;border-radius:50%;transition:opacity var(--transition-fast)}.header__avatar-btn:hover{opacity:.8}.header__avatar{width:28px;height:28px;border-radius:50%;background:hsl(var(--chart-1));color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:600}.header__dropdown{position:absolute;top:100%;right:0;min-width:220px;margin-top:4px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 16px #00000026;padding:4px;z-index:50;animation:fadeInUp .1s ease-out}.header__dropdown-header{padding:8px 8px 6px}.header__dropdown-name{display:block;font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground))}.header__dropdown-email{display:block;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));margin-top:1px}.header__dropdown-divider{height:1px;background:hsl(var(--border));margin:4px 0}.header__dropdown-item{display:flex;align-items:center;gap:var(--gap-sm);width:100%;padding:6px 8px;border:none;background:transparent;color:hsl(var(--foreground));font-size:var(--font-size-sm);font-family:var(--font-family);border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:background var(--transition-fast);text-decoration:none}.header__dropdown-item:hover{background:hsl(var(--accent))}.header__dropdown-item--danger{color:hsl(var(--foreground))}.header__dropdown-item--danger:hover{background:hsl(var(--accent))}.header__docs-link{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;border-radius:6px;border:1px solid hsl(var(--border));background:hsl(var(--card));color:hsl(var(--foreground));font-size:var(--font-size-xs);font-weight:600;font-family:var(--font-family);text-decoration:none;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;line-height:1}.header__docs-link:hover{border-color:hsl(var(--ring) / .3);background:hsl(var(--muted))}.header__github-star{position:relative;display:flex;align-items:center}.header__github-star-btn{display:inline-flex;align-items:stretch;height:28px;border-radius:6px;border:1px solid hsl(var(--border));background:hsl(var(--card));color:hsl(var(--foreground));font-size:var(--font-size-xs);font-weight:600;font-family:var(--font-family);text-decoration:none;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;line-height:1;overflow:hidden}.header__github-star-btn:hover{border-color:hsl(var(--ring) / .3)}.header__github-star-action{display:flex;align-items:center;gap:6px;padding:0 10px;background:hsl(var(--muted));transition:background var(--transition-fast)}.header__github-star-btn:hover .header__github-star-action{background:hsl(var(--muted-foreground) / .15)}.header__github-icon{flex-shrink:0}.header__github-star-label{font-size:var(--font-size-xs);font-weight:600}.header__github-star-count{display:flex;align-items:center;padding:0 10px;font-size:var(--font-size-xs);font-weight:600;font-variant-numeric:tabular-nums;border-left:1px solid hsl(var(--border))}.header__github-star-close{position:absolute;top:-6px;right:-6px;width:16px;height:16px;border-radius:50%;border:1px solid hsl(var(--border));background:hsl(var(--card));color:hsl(var(--muted-foreground));display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:all var(--transition-fast);padding:0;line-height:1}.header__github-star:hover .header__github-star-close{opacity:1}.header__github-star-close:hover{background:hsl(var(--destructive));border-color:hsl(var(--destructive));color:#fff}.header__star-separator{width:1px;align-self:stretch;background:hsl(var(--border));margin:0 8px}.custom-select{position:relative;display:inline-block}.custom-select__trigger{display:inline-flex;align-items:center;gap:6px;height:2rem;padding:0 8px 0 10px;background:transparent;color:hsl(var(--foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);font-weight:400;cursor:pointer;transition:border-color var(--transition-fast);white-space:nowrap}.custom-select__trigger:hover,.custom-select__trigger--open{border-color:hsl(var(--foreground) / .3)}.custom-select__value{flex:1;text-align:left}.custom-select__chevron{color:hsl(var(--muted-foreground));flex-shrink:0;transition:transform var(--transition-fast)}.custom-select__trigger--open .custom-select__chevron{transform:rotate(180deg)}.custom-select__dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:max(100%,140px);background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 12px #00000014;padding:4px 0;z-index:50;animation:fadeInUp .1s ease-out}.custom-select__option{display:block;width:100%;padding:6px 14px;border:none;background:transparent;color:hsl(var(--popover-foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:background var(--transition-fast);white-space:nowrap;text-align:left}.custom-select__option:hover{background:hsl(var(--accent))}.custom-select__option--selected{background:hsl(var(--accent));font-weight:500}.data-table th{text-align:left;font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));padding:12px var(--gap-md);border-bottom:1px solid hsl(var(--border));height:40px;white-space:nowrap}.data-table__sortable{cursor:pointer;user-select:none}.data-table__sortable:hover{color:hsl(var(--foreground))}.data-table td{padding:12px var(--gap-md);border-bottom:1px solid hsl(var(--border));color:hsl(var(--foreground));white-space:nowrap}.data-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.status-badge--error,.status-badge--rate_limited{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.status-badge--rate_limited a{color:inherit;text-decoration:none}.status-badge--rate_limited a:hover{text-decoration:underline}.status-badge--fallback_error{background:#f59f0a26;color:#c47f08;cursor:pointer}@keyframes msg-highlight-flash{0%{background:#f59f0a26}to{background:transparent}}.data-table tr.msg-highlight{animation:msg-highlight-flash 2s ease-out}.status-badge-tooltip{position:relative;display:inline-flex;cursor:help}.status-badge-tooltip__bubble{display:none;position:absolute;bottom:calc(100% + 8px);right:0;padding:8px 12px;background:hsl(var(--popover));color:hsl(var(--popover-foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);font-size:var(--font-size-xs);font-weight:400;line-height:1.5;white-space:normal;width:max-content;max-width:320px;box-shadow:0 2px 8px hsl(var(--foreground) / .08);z-index:50;pointer-events:none}.status-badge-tooltip:hover .status-badge-tooltip__bubble,.status-badge-tooltip:focus .status-badge-tooltip__bubble{display:block}.tier-badge{display:inline-flex;align-items:center;vertical-align:middle;font-size:var(--font-size-2xs, 10px);padding:1px 6px;border-radius:var(--radius-sm);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.tier-badge--simple{background:hsl(var(--success) / .1);color:hsl(var(--success))}.tier-badge--standard{background:hsl(var(--chart-2) / .15);color:hsl(var(--chart-2))}.tier-badge--complex{background:hsl(var(--chart-5) / .15);color:hsl(var(--chart-5))}.tier-badge--reasoning{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.feed-item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid hsl(var(--border));transition:background var(--transition-fast)}.skill-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:7px;background:hsl(var(--muted-foreground))}.skill-dot--active{background:hsl(var(--chart-1))}.feed-item__icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:hsl(var(--muted));color:hsl(var(--muted-foreground));margin-top:2px}.feed-item__body{flex:1;min-width:0}.feed-item__desc{font-size:var(--font-size-sm);color:hsl(var(--foreground));line-height:1.4}.feed-item__sub{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.feed-item__sub span+span:before{content:"·";margin-right:6px}.feed-item__status{flex-shrink:0;margin-top:4px}.empty-state__img-wrapper{position:relative;width:50%;margin:var(--gap-xl) auto 0;overflow:hidden}.empty-state__img-wrapper:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 60%,hsl(var(--background)));pointer-events:none}.empty-state__img{display:block;width:100%}.dark .empty-state__img{filter:invert(.92) hue-rotate(180deg)}.pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--gap-md);border-top:1px solid hsl(var(--border))}.pagination__summary{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums}.pagination__controls{display:flex;gap:var(--gap-sm)}.pagination__btn{min-width:80px}.msg-detail__chevron-th{width:36px;padding:0;position:sticky;right:0;background:hsl(var(--card));z-index:2}.msg-detail__chevron-cell{width:36px;padding:4px 8px!important;text-align:center;border-bottom:1px solid hsl(var(--border));position:sticky;right:0;background:hsl(var(--card));z-index:1}.data-table tbody tr:hover .msg-detail__chevron-cell{background:hsl(var(--muted) / .5)}.msg-row--expanded .msg-detail__chevron-cell{background:hsl(var(--card))}.msg-detail__chevron-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:hsl(var(--muted-foreground));border-radius:var(--radius-sm);cursor:pointer;transition:transform var(--transition-fast),color var(--transition-fast)}.msg-detail__chevron-btn:hover{color:hsl(var(--foreground));background:hsl(var(--muted))}.msg-detail__chevron-btn--open{transform:rotate(180deg);color:hsl(var(--foreground))}.msg-row--expanded>td{border-bottom-color:transparent}.msg-detail__row>td{padding:0!important}.msg-detail__cell{border-bottom:1px solid hsl(var(--border))!important}.msg-detail{padding:12px var(--gap-md) 16px;background:hsl(var(--muted) / .25)}.msg-detail__loader{display:flex;align-items:center;gap:8px;padding:12px 0;font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.msg-detail__spinner{width:14px;height:14px;border:2px solid hsl(var(--border));border-top-color:hsl(var(--foreground));border-radius:50%;animation:msg-detail-spin .6s linear infinite}@keyframes msg-detail-spin{to{transform:rotate(360deg)}}.msg-detail__error{font-size:var(--font-size-sm);color:hsl(var(--destructive));padding:8px 0}.msg-detail__error-box{font-family:var(--font-mono);font-size:var(--font-size-xs);color:hsl(var(--destructive));background:hsl(var(--destructive) / .06);border:1px solid hsl(var(--destructive) / .15);border-radius:var(--radius-sm);padding:8px 12px;white-space:pre-wrap;word-break:break-word}.msg-detail__meta{display:flex;flex-wrap:wrap;gap:12px 24px;margin-bottom:12px;font-size:var(--font-size-xs)}.msg-detail__meta-item{display:flex;align-items:center;gap:6px;color:hsl(var(--foreground));font-family:var(--font-mono)}.msg-detail__meta-label{color:hsl(var(--muted-foreground));font-family:var(--font-sans, sans-serif);font-weight:500}.msg-detail__section{margin-bottom:12px}.msg-detail__section-title{display:flex;align-items:center;gap:8px;font-size:var(--font-size-xs);font-weight:600;color:hsl(var(--foreground));margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.msg-detail__count{font-weight:400;color:hsl(var(--muted-foreground))}.msg-detail__table th{font-size:10px;padding:6px var(--gap-sm);height:auto}.msg-detail__table td{padding:6px var(--gap-sm);font-size:var(--font-size-xs)}.msg-detail__mono{font-family:var(--font-mono)}.msg-detail__mono-xs{font-family:var(--font-mono);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.msg-detail__log-body{white-space:pre-wrap;word-break:break-word;max-width:500px}.msg-detail__severity-dot{display:inline-block;width:6px;height:6px;border-radius:50%;vertical-align:middle}.msg-detail__fallback-banner{font-size:var(--font-size-xs);padding:6px 12px;margin-bottom:10px;border-radius:var(--radius-sm);background:#f59f0a1a;color:#ab6f07;border:1px solid hsl(38 92% 50% / .2)}.msg-detail__summary{display:flex;flex-wrap:wrap;gap:8px 20px;margin-bottom:8px;font-size:var(--font-size-xs)}.msg-detail__summary-item{display:flex;align-items:center;gap:6px}.free-models-accordion{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .3s ease,opacity .25s ease}.free-models-accordion>*{overflow:hidden}.free-models-accordion--open{grid-template-rows:1fr;opacity:1}.free-models-base-url-row{display:flex;align-items:center;gap:8px}.dark .free-models-caret{filter:invert(1)}@media(max-width:640px){.free-models-base-url-row{flex-wrap:wrap}}.agents-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--gap-lg)}.agent-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:var(--gap-lg);box-shadow:var(--card-shadow);text-decoration:none;color:inherit;transition:all var(--transition-base);animation:fadeInUp .3s ease-out both}.agent-card:hover{box-shadow:var(--card-shadow-hover);border-color:hsl(var(--foreground) / .2)}.agent-card--skeleton{pointer-events:none}.agent-card__top{margin-bottom:var(--gap-sm)}.agent-card__name{font-size:var(--font-size-base);font-weight:600;color:hsl(var(--foreground))}.agent-card__stats{display:flex;flex-wrap:wrap;gap:var(--gap-sm) var(--gap-md);margin-bottom:var(--gap-md)}.agent-card__stat{display:flex;align-items:baseline;gap:4px}.agent-card__stat-value{font-size:var(--font-size-sm);font-weight:500;font-family:var(--font-mono);color:hsl(var(--foreground))}.agent-card__stat-label{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));width:55px;flex-shrink:0}.agent-card__chart{margin:0 calc(var(--gap-lg) * -1) calc(var(--gap-lg) * -1);overflow:hidden;border-radius:0 0 var(--radius) var(--radius);background:transparent}.agent-card__chart svg{width:100%;height:50px}.account-modal{position:fixed;inset:0;top:var(--header-height);z-index:30;background:hsl(var(--background));overflow-y:auto}.account-modal__inner{max-width:680px;margin-inline:auto;padding:var(--gap-xl) var(--gap-lg)}.account-modal__back{display:inline-flex;align-items:center;gap:4px;padding:0;border:none;background:transparent;color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;margin-bottom:var(--gap-lg);transition:color var(--transition-fast)}.account-modal__back:hover{color:hsl(var(--foreground))}.settings-section__title{font-size:var(--font-size-base);font-weight:600;color:hsl(var(--foreground));margin-bottom:var(--gap-md);margin-top:var(--gap-xl)}.settings-section__title:first-of-type{margin-top:0}.settings-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);margin-bottom:var(--gap-lg);overflow:hidden}.settings-card__row{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-xl);padding:var(--gap-lg);border-bottom:1px solid hsl(var(--border))}.settings-card__row:last-child{border-bottom:none}.settings-card__label{flex:1;min-width:0}.settings-card__label-title{display:block;font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.settings-card__label-desc{display:block;font-size:var(--font-size-xs);color:hsl(var(--foreground) / .7);margin-top:2px}.settings-card__control{flex-shrink:0;width:260px}.settings-card__input{width:100%;height:2.25rem;padding:0 .75rem;background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.settings-card__input:focus{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.settings-card__input[readonly]{opacity:.6;cursor:default}.settings-card__footer{display:flex;justify-content:flex-end;padding:var(--gap-sm) var(--gap-lg);background:hsl(var(--muted) / .3)}.settings-card__body{padding:var(--gap-md) var(--gap-lg)}.settings-card__desc{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-bottom:var(--gap-md)}.settings-card__id-row{display:inline-flex;align-items:center;gap:var(--gap-sm);padding:var(--gap-sm) var(--gap-md);background:hsl(var(--muted) / .5);border:1px solid hsl(var(--border));border-radius:var(--radius)}.settings-card__id-value{font-family:var(--font-mono);font-size:var(--font-size-sm);color:hsl(var(--foreground))}.settings-card__copy-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:hsl(var(--muted-foreground));border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:all var(--transition-fast)}.settings-card__copy-btn:hover{background:hsl(var(--accent));color:hsl(var(--foreground))}.settings-card__key-row{display:flex;align-items:center;gap:var(--gap-sm);margin-top:var(--gap-md);padding:10px 14px;background:hsl(var(--muted) / .5);border:1px solid hsl(var(--border));border-radius:var(--radius);min-width:0}.settings-card__key-value{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--font-size-sm);color:hsl(var(--foreground));word-break:break-all;line-height:1.5}.settings-card__key-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.settings-card__key-actions .modal-terminal__copy{position:static}.theme-picker{display:flex;gap:var(--gap-sm)}.theme-picker__option{display:flex;align-items:center;gap:var(--gap-sm);padding:var(--gap-sm) var(--gap-md);border:1px solid hsl(var(--border));border-radius:var(--radius);background:transparent;color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:all var(--transition-fast)}.theme-picker__option:hover{border-color:hsl(var(--foreground) / .3);color:hsl(var(--foreground))}.theme-picker__option--active{border-color:hsl(var(--chart-1));color:hsl(var(--foreground));background:hsl(var(--chart-1) / .08)}.modal{background:hsl(var(--background));border:none;border-radius:var(--radius);width:90%;max-width:680px;max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--card-shadow),0 25px 50px -12px #00000040;animation:fadeInUp .2s ease-out}.modal__close{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:var(--radius);border:none;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:all var(--transition-fast)}.modal-overlay{position:fixed;inset:0;z-index:100;background:#fbf9f3e0;backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:var(--gap-lg);animation:fadeIn .15s ease-out}.dark .modal-overlay{background:#000000b3}.modal-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:16px;box-shadow:0 0 25px #00000015;width:100%;max-width:520px;padding:32px;animation:fadeInUp .2s ease-out}.modal-card__title{font-size:var(--font-size-xl);font-weight:700;color:hsl(var(--foreground));margin-bottom:4px}.modal-card__desc{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-bottom:var(--gap-lg);line-height:1.5}.modal-card__desc strong{color:hsl(var(--chart-1));font-weight:600}.modal-card__note{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));text-align:center;margin-bottom:var(--gap-md)}.modal-card__privacy{display:flex;align-items:flex-start;gap:var(--gap-sm);padding:10px 12px;background:hsl(var(--chart-1) / .08);border:1px solid hsl(var(--chart-1) / .2);border-radius:var(--radius);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.5;margin-bottom:var(--gap-lg)}.modal-card__privacy svg{flex-shrink:0;margin-top:1px;color:hsl(var(--chart-1))}.modal-card__privacy strong{color:hsl(var(--chart-1))}.modal-card__field-label{display:block;font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground));margin-top:var(--gap-md);margin-bottom:6px}.modal-card__field-label:first-of-type{margin-top:0}.modal-card__input{width:100%;height:2.25rem;padding:0 12px;background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);margin-bottom:0;box-sizing:border-box}.modal-card__input:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.modal-card__input::placeholder{color:hsl(var(--muted-foreground))}.modal-card__input--error{border-color:hsl(var(--destructive))}.modal-card__input--error:focus{border-color:hsl(var(--destructive));box-shadow:0 0 0 2px hsl(var(--destructive) / .2)}.modal-card__cta{display:flex;align-items:center;justify-content:center;gap:var(--gap-sm);width:100%;padding:12px;border:none;border-radius:var(--radius);background:#f97015;color:#fff;font-size:var(--font-size-base);font-weight:600;font-family:var(--font-family);cursor:pointer;transition:background var(--transition-fast)}.modal-card__cta:hover:not(:disabled){background:#ef6306}.modal-card__cta:disabled{opacity:.5;cursor:not-allowed}.modal-card__back-link{display:flex;align-items:center;justify-content:center;gap:4px;width:100%;padding:8px;margin-top:var(--gap-sm);border:none;background:transparent;color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:color var(--transition-fast)}.modal-card__back-link:hover{color:hsl(var(--foreground))}.modal-card__footer{display:flex;justify-content:flex-end;margin-top:var(--gap-xl)}.modal-card__footer .btn:disabled{opacity:.4;cursor:not-allowed}.modal-stepper{display:flex;align-items:center;gap:0;margin-bottom:var(--gap-xl)}.modal-stepper__step{display:flex;align-items:center;gap:8px}.modal-stepper__circle{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:600;background:hsl(var(--muted));color:hsl(var(--muted-foreground));transition:all var(--transition-base)}.modal-stepper__step--active .modal-stepper__circle,.modal-stepper__step--done .modal-stepper__circle{background:hsl(var(--chart-1));color:#fff}.modal-stepper__label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--muted-foreground))}.modal-stepper__step--active .modal-stepper__label,.modal-stepper__step--done .modal-stepper__label{color:hsl(var(--foreground))}.modal-stepper__line{flex:1;height:1px;background:hsl(var(--border));margin:0 12px;min-width:24px}@layer base{:root{--background: 45 49% 97%;--foreground: 222.2 84% 4.9%;--card: 44 60% 99%;--card-foreground: 222.2 84% 4.9%;--popover: 44 60% 99%;--popover-foreground: 222.2 84% 4.9%;--primary: 222.2 47.4% 11.2%;--primary-foreground: 45 30% 97%;--secondary: 40 33% 93%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 40 33% 93%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 40 33% 93%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 45 30% 97%;--border: 36 25% 88%;--input: 36 25% 88%;--ring: 222.2 84% 4.9%;--radius: .5rem;--chart-1: 178 75% 44%;--chart-2: 197 37% 24%;--chart-3: 167 70% 48%;--bar-input: 178 75% 34%;--bar-output: 178 55% 72%;--bar-output-axis: 178 55% 48%;--chart-4: 349 52% 61%;--chart-5: 43 96% 56%;--sidebar-background: 43 38% 95%;--sidebar-foreground: 240 5.3% 26.1%;--sidebar-primary: 240 5.9% 10%;--sidebar-primary-foreground: 45 30% 97%;--sidebar-accent: 40 28% 93%;--sidebar-accent-foreground: 240 5.9% 10%;--sidebar-border: 36 20% 89%;--sidebar-ring: 217.2 91.2% 59.8%;--success: 178 75% 44%;--success-foreground: 0 0% 100%}.dark{--background: 0 0% 9%;--foreground: 0 0% 93%;--card: 0 0% 11%;--card-foreground: 0 0% 93%;--popover: 0 0% 11%;--popover-foreground: 0 0% 93%;--primary: 0 0% 93%;--primary-foreground: 0 0% 9%;--secondary: 0 0% 15%;--secondary-foreground: 0 0% 93%;--muted: 0 0% 15%;--muted-foreground: 0 0% 55%;--accent: 0 0% 15%;--accent-foreground: 0 0% 93%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 93%;--border: 0 0% 18%;--input: 0 0% 18%;--ring: 0 0% 60%;--chart-1: 178 70% 50%;--chart-2: 197 50% 55%;--chart-3: 167 70% 55%;--chart-4: 349 52% 65%;--chart-5: 43 96% 65%;--bar-input: 178 70% 40%;--bar-output: 178 50% 70%;--bar-output-axis: 178 50% 55%;--sidebar-background: 0 0% 7%;--sidebar-foreground: 0 0% 93%;--sidebar-primary: 0 0% 93%;--sidebar-primary-foreground: 0 0% 9%;--sidebar-accent: 0 0% 14%;--sidebar-accent-foreground: 0 0% 93%;--sidebar-border: 0 0% 18%;--sidebar-ring: 0 0% 60%;--success: 178 70% 50%;--success-foreground: 0 0% 100%}}:root{--sidebar-width: 230px;--header-height: 48px;--gap-xs: 4px;--gap-sm: 8px;--gap-md: 16px;--gap-lg: 24px;--gap-xl: 32px;--gap-2xl: 48px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: .9375rem;--font-size-lg: 1.125rem;--font-size-xl: 1.5rem;--font-size-2xl: 1.875rem;--font-size-3xl: 2.25rem;--font-size-4xl: 3rem;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--card-shadow: rgba(0, 0, 0, .06) 0px 0px 0px 1px, rgba(0, 0, 0, .03) 0px 2px 6px 0px;--card-shadow-hover: rgba(0, 0, 0, .08) 0px 0px 0px 1px, rgba(0, 0, 0, .06) 0px 3px 8px 0px}.modal-terminal{border-radius:var(--radius);overflow:hidden;border:1px solid hsl(var(--border));margin-bottom:var(--gap-md)}.modal-terminal__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:hsl(var(--muted));border-bottom:1px solid hsl(var(--border))}.modal-terminal__dots{display:flex;gap:6px}.modal-terminal__dot{width:10px;height:10px;border-radius:50%}.modal-terminal__dot--red{background:#ff5f57}.modal-terminal__dot--yellow{background:#febc2e}.modal-terminal__dot--green{background:#28c840}.modal-terminal__tabs{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs)}.modal-terminal__tab{padding:0;border:none;background:transparent;color:hsl(var(--muted-foreground));font-size:var(--font-size-xs);font-family:var(--font-family);cursor:pointer;font-weight:500}.modal-terminal__tab--active{color:hsl(var(--foreground));font-weight:600}.modal-terminal__tab:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px;border-radius:2px}.modal-terminal__tab-sep{color:hsl(var(--muted-foreground))}.modal-terminal__body{position:relative;padding:14px 44px 14px 16px;background:hsl(var(--background));font-family:var(--font-mono);font-size:var(--font-size-xs);line-height:1.7;color:hsl(var(--foreground))}.dark .modal-terminal__body{background:#080c16;color:#20dfd9}.modal-terminal__line--comment{color:hsl(var(--muted-foreground))}.modal-terminal__prompt{color:hsl(var(--chart-1));margin-right:8px}.dark .modal-terminal__prompt{color:hsl(var(--muted-foreground))}.modal-terminal__code{word-break:break-all}.modal-terminal__copy{position:absolute;top:7px;right:7px;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius);background:#0000000f;color:#0006;cursor:pointer;transition:all var(--transition-fast)}.modal-terminal__copy:hover{background:#0000001a;color:#000000b3}.dark .modal-terminal__copy{background:#ffffff1a;color:#ffffff80}.dark .modal-terminal__copy:hover{background:#fff3;color:#fffc}.modal-terminal__copy:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.modal-key-box{border:1px solid hsl(var(--chart-5) / .3);border-radius:var(--radius);overflow:hidden;margin-bottom:var(--gap-lg)}.modal-key-box__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px}.modal-key-box__label{font-size:var(--font-size-xs);font-weight:600;letter-spacing:.05em;color:hsl(var(--muted-foreground))}.modal-key-box__copy{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid hsl(var(--border));border-radius:var(--radius);background:transparent;color:hsl(var(--foreground));font-size:var(--font-size-xs);font-family:var(--font-family);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.modal-key-box__copy:hover{background:hsl(var(--accent))}.modal-key-box__value{display:block;padding:12px 14px;background:hsl(var(--muted));color:hsl(var(--foreground));font-family:var(--font-mono);font-size:var(--font-size-xs);word-break:break-all;line-height:1.6}.dark .modal-key-box__value{background:#080c16;color:#20dfd9}.modal-key-box__warning{display:flex;align-items:flex-start;gap:var(--gap-sm);padding:10px 14px;background:hsl(var(--chart-5) / .08);border-top:1px solid hsl(var(--chart-5) / .2);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.5}.modal-key-box__warning svg{flex-shrink:0;margin-top:1px;color:hsl(var(--chart-5))}.setup-step__heading{margin:0 0 4px;font-size:var(--font-size-base);font-weight:600}.setup-step__desc{margin:0 0 16px;font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));line-height:1.5}.api-key-display__warning{background:hsl(var(--chart-5) / .1);border:1px solid hsl(var(--chart-5) / .3);border-radius:var(--radius);padding:10px 14px;margin-bottom:12px;font-size:var(--font-size-sm);color:hsl(var(--foreground))}.api-key-display__value{display:flex;align-items:center;gap:8px;background:hsl(var(--muted));border-radius:var(--radius);padding:10px 14px;margin-bottom:16px;font-family:var(--font-mono);font-size:var(--font-size-sm);word-break:break-all}.api-key-display__value .modal-terminal__copy{position:static;flex-shrink:0;margin-left:auto}.api-key-display__prefix{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));padding:10px 14px;background:hsl(var(--muted));border-radius:var(--radius);margin-bottom:16px}.api-key-display__code{font-family:var(--font-mono);font-size:var(--font-size-sm)}.setup-method{border:1px solid hsl(var(--border));border-radius:var(--radius);overflow:hidden;margin-bottom:8px}.setup-method--recommended{border-color:hsl(var(--chart-1) / .4)}.setup-method__header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:hsl(var(--muted));cursor:pointer;border:none;width:100%;text-align:left;font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground))}.setup-method__header:hover{background:hsl(var(--accent))}.setup-method__header:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:-2px}.setup-method__badge{font-size:var(--font-size-xs);font-weight:600;padding:2px 8px;border-radius:99px;background:hsl(var(--chart-1) / .15);color:hsl(var(--chart-1))}.setup-method__chevron{margin-left:auto;transition:transform var(--transition-fast);color:hsl(var(--muted-foreground))}.setup-method__chevron--open{transform:rotate(180deg)}.setup-method-tabs{margin-top:8px}.setup-method-tabs .panel__tabs{width:100%;margin-bottom:12px}.setup-method-tabs .panel__tab{flex:1}.setup-method__body{padding:12px 14px;border-top:1px solid hsl(var(--border))}.setup-method__hint{margin:0 0 10px;font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));line-height:1.5}.setup-method__code{position:relative;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:12px 52px 12px 14px;font-family:var(--font-mono);font-size:var(--font-size-xs);line-height:1.7;word-break:break-all;white-space:pre-wrap}.setup-method__code .modal-terminal__copy{top:7px;transform:none}.setup-method__actions{position:absolute;right:8px;top:8px;display:flex;gap:4px;align-items:center}.setup-method__actions .modal-terminal__copy{position:static}.dark .setup-method__code{background:#080c16;color:#20dfd9}.setup-model-hint__code{font-family:var(--font-mono);font-size:var(--font-size-sm);color:hsl(var(--foreground));background:hsl(var(--muted));padding:2px 8px;border-radius:var(--radius)}.setup-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;font-size:var(--font-size-sm)}.setup-info-grid__card{background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:10px 14px}.setup-info-grid__label{color:hsl(var(--muted-foreground));margin-bottom:4px}.setup-info-grid__value{font-family:var(--font-mono);font-size:var(--font-size-xs);word-break:break-all;display:flex;align-items:center;gap:6px}.setup-info-grid__value .modal-terminal__copy{position:static;flex-shrink:0;margin-left:auto}.setup-checklist{background:hsl(var(--muted));border-radius:var(--radius);padding:14px;font-size:var(--font-size-sm);line-height:1.6}.setup-checklist__item{display:flex;align-items:center;gap:8px}.setup-checklist__item+.setup-checklist__item{margin-top:8px}.setup-onboard-fields{font-size:var(--font-size-sm)}.setup-onboard-fields__row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid hsl(var(--border))}.setup-onboard-fields__row:last-child{border-bottom:none}.setup-onboard-fields__label{color:hsl(var(--muted-foreground));font-weight:500}.setup-onboard-fields__value{font-family:var(--font-mono);font-size:var(--font-size-xs);display:flex;align-items:center;gap:6px;word-break:break-all}.setup-onboard-fields__value .modal-terminal__copy{position:static;flex-shrink:0}.notif-hint{display:flex;align-items:flex-start;gap:10px;margin-top:var(--gap-xl);margin-bottom:var(--gap-md);padding:12px 16px;background:hsl(var(--chart-1) / .06);border:1px solid hsl(var(--chart-1) / .18);border-radius:var(--radius);font-size:var(--font-size-sm);color:hsl(var(--foreground));line-height:1.5}.notif-hint svg{flex-shrink:0;margin-top:2px;color:hsl(var(--chart-1))}.notif-hint p{margin:0}.settings-card--disabled{opacity:.45;pointer-events:none;user-select:none}.notif-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.notif-table--flush{margin:0 calc(-1 * var(--gap-lg));width:calc(100% + 2 * var(--gap-lg))}.notif-table thead th{text-align:left;font-weight:500;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));padding:var(--gap-sm) var(--gap-lg);border-bottom:1px solid hsl(var(--border));white-space:nowrap}.notif-table tbody td{padding:var(--gap-sm) var(--gap-lg);color:hsl(var(--foreground));border-bottom:1px solid hsl(var(--border));white-space:nowrap}.notif-table tbody tr:last-child td{border-bottom:none}.notif-table__mono{font-family:var(--font-mono)}.notif-table__period{color:hsl(var(--muted-foreground))}.notif-table__row--disabled td{opacity:.45}.notif-table__row--disabled td:last-child{opacity:1}.notif-table__actions{text-align:right;display:flex;align-items:center;justify-content:flex-end;gap:var(--gap-sm)}.notification-rule__edit,.notification-rule__delete{color:hsl(var(--muted-foreground));padding:4px;height:auto}.notification-rule__edit:hover{color:hsl(var(--foreground))}.notification-rule__delete:hover{color:hsl(var(--destructive))}.notification-toggle{position:relative;display:inline-flex;cursor:pointer}.notification-toggle input{opacity:0;width:0;height:0;position:absolute}.notification-toggle__slider{width:36px;height:20px;background:hsl(var(--muted));border-radius:9999px;transition:background var(--transition-fast);position:relative}.notification-toggle__slider:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;top:2px;left:2px;transition:transform var(--transition-fast)}.notification-toggle input:checked+.notification-toggle__slider{background:hsl(var(--success))}.notification-toggle input:checked+.notification-toggle__slider:after{transform:translate(16px)}.notification-modal__select{width:100%}.provider-setup__title{margin:0 0 4px;font-size:var(--font-size-md);font-weight:600;color:hsl(var(--foreground))}.provider-setup__subtitle{margin:0 0 var(--gap-lg);font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.provider-setup-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap-md)}.provider-setup-card{display:flex;align-items:center;gap:12px;padding:16px 20px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;text-align:left;font-family:var(--font-family);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.provider-setup-card:hover{border-color:hsl(var(--foreground) / .3);box-shadow:0 1px 4px hsl(var(--foreground) / .06)}.provider-setup-card__logo{width:32px;height:32px;border-radius:6px;flex-shrink:0;object-fit:contain}.provider-setup-card__name{font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground))}.provider-setup-card__desc{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.provider-modal-picker{display:flex;gap:var(--gap-sm)}.provider-modal-option{flex:1;display:flex;align-items:center;gap:8px;padding:10px 14px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--muted-foreground));transition:border-color var(--transition-fast),color var(--transition-fast)}.provider-modal-option:hover{border-color:hsl(var(--foreground) / .3)}.provider-modal-option--active{border-color:hsl(var(--primary));color:hsl(var(--foreground))}.provider-modal-option__logo{width:22px;height:22px;border-radius:4px;object-fit:contain}.provider-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:16px 20px;margin-bottom:var(--gap-lg)}.provider-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.provider-card__label{font-size:var(--font-size-base);font-weight:600;color:hsl(var(--foreground));margin-bottom:0}.provider-card__actions{display:flex;gap:4px}.provider-card__body{display:flex;align-items:center;gap:12px}.provider-card__logo{width:36px;height:36px;border-radius:8px;flex-shrink:0;object-fit:contain}.provider-card__name{font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground))}.provider-card__meta{display:flex;align-items:center;gap:8px;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));font-family:var(--font-mono);margin-top:2px}.provider-card__key{opacity:.5}.provider-card__email{display:flex;align-items:center;gap:4px;opacity:.7}.provider-card__menu{position:relative}.provider-card__menu-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.provider-card__menu-btn:hover{background:hsl(var(--accent));color:hsl(var(--foreground))}.provider-card__dropdown{position:absolute;top:100%;right:0;min-width:150px;margin-top:4px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 12px hsl(var(--foreground) / .08);padding:4px;z-index:20;animation:fadeIn .1s ease-out}.provider-card__dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:hsl(var(--foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:background var(--transition-fast)}.provider-card__dropdown-item:hover{background:hsl(var(--accent))}.provider-card__dropdown-item--danger:hover{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.masked-key{display:flex;align-items:center;gap:var(--gap-sm);padding:0 1px 0 14px;height:2.5rem;background:hsl(var(--muted) / .4);border:1px solid hsl(var(--border));border-radius:var(--radius)}.masked-key__value{flex:1;font-family:var(--font-mono);font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));letter-spacing:.02em}.masked-key__edit{flex-shrink:0;font-size:var(--font-size-xs);padding:4px 8px;height:auto;gap:4px}.modal-card__input--error{border-color:hsl(var(--destructive));margin-bottom:0}.modal-card__field-error{margin:4px 0 0;padding:0;font-size:var(--font-size-xs);color:hsl(var(--destructive));line-height:1.4}.modal-card__field-hint{margin:4px 0 0;padding:0;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.4}.modal-card__field-link{color:inherit;text-decoration:underline;text-underline-offset:2px}.modal-card__field-link:hover{color:hsl(var(--foreground))}.modal-card__footer--split{display:flex;justify-content:space-between;align-items:center}.cloud-email-info{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius)}.cloud-email-info__icon{flex-shrink:0;margin-top:2px;color:hsl(var(--success))}.cloud-email-info__title{font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground));margin-bottom:2px}.cloud-email-info__desc{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.5}.limit-type-icons{display:inline-flex;align-items:center;gap:6px}.limit-type-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;color:hsl(var(--foreground));cursor:default}.limit-warn-tag{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:2px 8px;border-radius:9999px;font-size:var(--font-size-xs);font-weight:500;background:#e694191f;color:#e69419;white-space:nowrap;vertical-align:middle}.rule-menu__btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.rule-menu__btn:hover{background:hsl(var(--accent));color:hsl(var(--foreground))}.rule-menu__dropdown{min-width:140px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 12px hsl(var(--foreground) / .08);padding:4px;z-index:100;animation:fadeIn .1s ease-out}.rule-menu__item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:hsl(var(--foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:background var(--transition-fast)}.rule-menu__item:hover{background:hsl(var(--accent))}.rule-menu__item--danger:hover{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.confirm-modal__warning{display:flex;align-items:flex-start;gap:10px;margin-bottom:var(--gap-md);padding:12px 14px;background:hsl(var(--destructive) / .06);border:1px solid hsl(var(--destructive) / .18);border-radius:var(--radius);font-size:var(--font-size-sm);color:hsl(var(--foreground));line-height:1.5}.confirm-modal__warning svg{flex-shrink:0;margin-top:2px;color:hsl(var(--destructive))}.confirm-modal__confirm-row{display:flex;align-items:center;gap:8px;margin-bottom:var(--gap-md);font-size:var(--font-size-sm);color:hsl(var(--foreground));cursor:pointer;user-select:none}.confirm-modal__confirm-row input[type=checkbox]{accent-color:hsl(var(--destructive))}.confirm-modal__footer{display:flex;justify-content:flex-end;gap:var(--gap-sm);padding-top:var(--gap-md);border-top:1px solid hsl(var(--border))}.btn--danger{background:hsl(var(--destructive));color:#fff;border:none}.btn--danger:hover:not(:disabled){background:hsl(var(--destructive) / .85)}.btn--danger:disabled{opacity:.45;cursor:not-allowed}.limits-warning-banner{display:flex;align-items:flex-start;gap:10px;margin-bottom:var(--gap-lg);padding:12px 16px;background:hsl(var(--destructive) / .06);border:1px solid hsl(var(--destructive) / .18);border-radius:var(--radius);font-size:var(--font-size-sm);color:hsl(var(--foreground));line-height:1.5}.limits-warning-banner svg{flex-shrink:0;margin-top:2px;color:hsl(var(--destructive))}.limits-routing-cta{display:flex;align-items:flex-start;gap:10px;margin-bottom:var(--gap-lg);padding:12px 16px;background:hsl(var(--chart-1) / .06);border:1px solid hsl(var(--chart-1) / .18);border-radius:var(--radius);font-size:var(--font-size-sm);color:hsl(var(--foreground));line-height:1.5}.limits-routing-cta svg{flex-shrink:0;margin-top:2px;color:hsl(var(--chart-1))}.limits-routing-cta p{margin:4px 0 0;color:hsl(var(--muted-foreground))}.panel--disabled{opacity:.5;pointer-events:none}.limits-provider-hint{padding:8px 0 12px;font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.limit-modal__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-md);margin-top:var(--gap-md)}.limit-modal__row .modal-card__field-label{margin-top:0}.limit-block-toggle{display:flex;align-items:center;justify-content:space-between;margin-top:var(--gap-lg)}.limit-block-toggle__label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground));line-height:1.4}.provider-modal__tabs-wrapper{padding:0 24px;margin-bottom:12px}.provider-modal__tabs-wrapper .panel__tabs{width:100%}.provider-modal__tabs-wrapper .panel__tab{flex:1;gap:6px}.provider-modal__tab-icon{flex-shrink:0;display:block}.provider-modal__tab-hint{padding:10px 24px 4px;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.4}.provider-modal__list{padding:8px 0;max-height:416px;overflow-y:auto;position:relative}.provider-toggle--action{text-decoration:none;color:hsl(var(--muted-foreground));border-top:1px solid hsl(var(--border) / .5)}.provider-toggle__name--action{color:hsl(var(--muted-foreground));font-weight:400}.provider-toggle--action:hover .provider-toggle__name--action{color:hsl(var(--foreground))}.provider-modal__disclaimer{display:flex;flex-direction:column;gap:6px;margin:4px 24px 0;padding:10px 12px;font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.5;background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:var(--radius)}.provider-modal__disclaimer-label{align-self:flex-start;font-size:var(--font-size-xs);font-weight:600;color:hsl(var(--foreground));border:1px solid hsl(var(--foreground) / .35);border-radius:9999px;padding:2px 10px;line-height:1.4}.provider-modal__footer{padding:16px 24px;border-top:1px solid hsl(var(--border));display:flex;justify-content:flex-end}.provider-toggle{display:flex;align-items:center;gap:var(--gap-sm);width:100%;padding:10px 24px;background:none;border:none;cursor:pointer;font-family:var(--font-family);text-align:left;transition:background var(--transition-fast)}.provider-toggle:hover{background:hsl(var(--muted) / .5)}.provider-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:-2px}.provider-toggle:disabled{opacity:.6;cursor:not-allowed}.provider-toggle__icon{width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:hsl(var(--foreground))}.provider-toggle__info{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}.provider-toggle__name{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.provider-toggle__subtitle{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.provider-toggle__local-only{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));font-style:italic}.provider-toggle__tag{font-size:10px;font-weight:500;color:hsl(var(--foreground));padding:1px 6px;border-radius:9999px;border:1px solid hsl(var(--foreground) / .4);white-space:nowrap;line-height:1.4;margin-left:6px;vertical-align:middle}.provider-toggle__switch{position:relative;width:36px;height:20px;background:hsl(var(--muted));border-radius:10px;flex-shrink:0;transition:background var(--transition-fast)}.provider-toggle__switch--on{background:hsl(var(--success))}.provider-toggle__switch-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform var(--transition-fast);box-shadow:0 1px 2px #00000026}.provider-toggle__switch--on .provider-toggle__switch-thumb{transform:translate(16px)}.provider-toggle__badge{font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));padding:2px 8px;border-radius:9999px;background:hsl(var(--muted) / .6);white-space:nowrap;flex-shrink:0}.provider-toggle__badge--connected{color:hsl(var(--success));background:hsl(var(--success) / .12)}.provider-toggle__expand{padding:0 24px 12px 60px}.provider-toggle__key-row{display:flex;align-items:center;gap:8px}.provider-toggle__key-input{flex:1;height:2rem;padding:0 10px;background:hsl(var(--muted) / .4);color:hsl(var(--foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none;transition:border-color var(--transition-fast);box-sizing:border-box}.provider-toggle__key-input:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.provider-toggle__key-input::placeholder{color:hsl(var(--muted-foreground) / .6)}.provider-toggle__disconnect-btn{color:hsl(var(--destructive));border-color:hsl(var(--destructive) / .3)}.provider-toggle__disconnect-btn:hover{background:hsl(var(--destructive) / .08)}.provider-detail{padding:20px 24px 24px;overflow:hidden}.provider-detail__header{display:flex;align-items:center;gap:var(--gap-sm);margin-bottom:20px}.provider-detail__back{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:8px;margin:-8px -8px 4px;color:hsl(var(--muted-foreground));cursor:pointer;transition:color var(--transition-fast);min-width:44px;min-height:44px}.provider-detail__back:hover{color:hsl(var(--foreground))}.provider-detail__back:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px;border-radius:var(--radius)}.provider-detail__icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:hsl(var(--foreground))}.provider-detail__title-group{flex:1;min-width:0}.provider-detail__name{font-size:var(--font-size-md);font-weight:600;color:hsl(var(--foreground))}.anthropic-credits{display:flex;align-items:center;gap:6px;flex-shrink:0}.anthropic-credits__btn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--background));background:hsl(var(--foreground));border:none;border-radius:var(--radius);text-decoration:none;white-space:nowrap;cursor:pointer;transition:opacity var(--transition-fast)}.anthropic-credits__btn:hover{opacity:.85}.anthropic-credits__btn-icon{flex-shrink:0;display:block}.anthropic-credits__info-wrapper{position:relative;display:inline-flex;align-items:center;cursor:help}.anthropic-credits__info-icon{color:hsl(var(--muted-foreground));transition:color var(--transition-fast)}.anthropic-credits__info-wrapper:hover .anthropic-credits__info-icon{color:hsl(var(--foreground))}.anthropic-credits__tooltip{position:fixed;z-index:10000;width:280px;padding:12px 14px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius-lg);box-shadow:0 8px 24px #0000001f,0 2px 8px #0000000f;font-size:var(--font-size-xs);line-height:1.5;color:hsl(var(--foreground))}.anthropic-credits__tooltip p{margin:0}.anthropic-credits__tooltip p+p{margin-top:8px}.anthropic-credits__tooltip a{color:hsl(var(--primary));text-decoration:underline;text-underline-offset:2px}.anthropic-credits__tooltip a:hover{text-decoration-color:hsl(var(--primary) / .5)}.provider-detail__subtitle{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.provider-detail__field{margin-bottom:16px}.provider-detail__label{display:block;font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground));margin-bottom:6px}.provider-detail__input{width:100%;height:2.25rem;padding:0 12px;background:hsl(var(--muted) / .4);color:hsl(var(--foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none;transition:border-color var(--transition-fast);box-sizing:border-box}.provider-detail__input:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.provider-detail__input::placeholder{color:hsl(var(--muted-foreground) / .6)}.provider-detail__input--masked{-webkit-text-security:disc;text-security:disc}.provider-detail__input--disabled{opacity:.7;font-family:var(--font-mono, monospace);letter-spacing:.05em;cursor:not-allowed}.provider-detail__input--error{border-color:hsl(var(--destructive))}.provider-detail__input--error:focus{box-shadow:0 0 0 2px hsl(var(--destructive) / .2)}.provider-detail__error{font-size:var(--font-size-xs);color:hsl(var(--destructive));margin-top:4px}.provider-detail__key-help{margin:6px 0 0;font-size:var(--font-size-xs)}.provider-detail__key-help-link{color:hsl(var(--muted-foreground));text-decoration:underline;text-underline-offset:2px}.provider-detail__key-help-link:hover{color:hsl(var(--foreground))}.provider-detail__key-row{display:flex;align-items:center;gap:8px}.provider-detail__key-row .provider-detail__input{flex:1;min-width:0}.provider-detail__key-row .btn{height:2.25rem;flex-shrink:0;white-space:nowrap}.provider-detail__action{width:auto;margin-top:4px;float:right}.provider-detail__no-key{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.provider-detail__hint{font-size:var(--font-size-sm);color:#546173;margin-bottom:12px;line-height:1.5}.provider-detail__disconnect{color:hsl(var(--destructive));border-color:hsl(var(--destructive) / .3)}.provider-detail__disconnect:hover{background:hsl(var(--destructive) / .08)}.provider-detail__disconnect-icon{width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;background:none;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer;flex-shrink:0;transition:background var(--transition-fast),color var(--transition-fast)}.provider-detail__disconnect-icon:hover{background:hsl(var(--muted) / .5);color:hsl(var(--foreground))}.provider-detail__disconnect-icon:disabled{opacity:.5;cursor:not-allowed}.provider-detail__disconnect-icon:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.provider-modal__view{animation:modalSlideIn .22s cubic-bezier(.22,1,.36,1) both}.provider-modal__view--from-left{animation-name:modalSlideFromLeft}.provider-modal__view--from-right{animation-name:modalSlideFromRight}@keyframes modalSlideFromRight{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes modalSlideFromLeft{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}@keyframes modalSlideIn{0%{opacity:0}to{opacity:1}}.custom-provider-models{display:flex;flex-direction:column;gap:6px}.custom-provider-model-row{display:flex;gap:6px;align-items:center}.custom-provider-model-row__name{flex:2;min-width:0}.custom-provider-model-row__price{flex:1;min-width:0}.custom-provider-model-row__price::-webkit-inner-spin-button,.custom-provider-model-row__price::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.custom-provider-model-row__price{-moz-appearance:textfield}.custom-provider-model-row__remove{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer;flex-shrink:0;transition:background var(--transition-fast),color var(--transition-fast);padding:6px;margin:-6px}.custom-provider-model-row__remove:hover{background:hsl(var(--muted) / .5);color:hsl(var(--foreground))}.custom-provider-model-row__remove:disabled{opacity:.3;cursor:not-allowed}.custom-provider-model-row__remove:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.provider-modal__request-sub{padding:8px 24px 4px;display:flex;justify-content:flex-end}.provider-modal__request-sub-btn{gap:6px;text-decoration:none}.provider-modal__add-custom{padding:4px 24px 8px}.provider-modal__add-custom-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;text-decoration:none;font-size:var(--font-size-sm);font-weight:500;font-family:var(--font-family);color:hsl(var(--foreground));background:none;border:1px solid hsl(var(--border));border-radius:9999px;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.provider-modal__add-custom-chip:hover{background:hsl(var(--muted) / .5);border-color:hsl(var(--foreground) / .3)}.provider-modal__add-custom-chip:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.provider-modal__add-custom-chip svg{flex-shrink:0;color:hsl(var(--muted-foreground))}.custom-provider-item{display:flex;align-items:center;gap:var(--gap-sm);width:100%;padding:10px 24px;background:none;border:none;cursor:default;font-family:var(--font-family);text-align:left}.custom-provider-item__icon{width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.custom-provider-item__info{flex:1;min-width:0}.custom-provider-item__name{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.custom-provider-item__meta{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.custom-provider-item__delete{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer;flex-shrink:0;transition:background var(--transition-fast),color var(--transition-fast);padding:6px;margin:-6px}.custom-provider-item__delete:hover{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.custom-provider-item__delete:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}@media(max-width:480px){.custom-provider-model-row{flex-wrap:wrap}.custom-provider-model-row__name{flex:1 1 100%}.custom-provider-model-row__price{flex:1 1 40%}}.provider-card__logo-letter{width:28px;height:28px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;letter-spacing:-.02em;line-height:0}.copilot-device-login__code-box{display:flex;flex-direction:column;align-items:center;padding:8px 0}.copilot-device-login__code-row{display:flex;align-items:center;gap:8px}.copilot-device-login__code{font-family:var(--font-mono, monospace);font-size:28px;font-weight:700;letter-spacing:.15em;color:hsl(var(--foreground));padding:12px 24px;background:hsl(var(--muted) / .5);border:1px solid hsl(var(--border));border-radius:var(--radius);user-select:all}.copilot-device-login__copy-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:44px;min-height:44px;padding:4px;margin:-4px;background:none;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer;flex-shrink:0;transition:background var(--transition-fast),color var(--transition-fast)}.copilot-device-login__copy-btn:hover{background:hsl(var(--muted) / .5);color:hsl(var(--foreground))}.copilot-device-login__copy-btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.copilot-device-login__open-btn{margin-top:16px;text-decoration:none}.copilot-device-login__waiting{display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-top:16px}.routing-modal__header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;flex-shrink:0}.routing-modal__title{font-size:var(--font-size-lg);font-weight:600;color:hsl(var(--foreground))}.routing-modal__subtitle{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-top:2px}.routing-modal__search-wrap{position:relative;padding:0 24px;flex-shrink:0}.routing-modal__search-icon{position:absolute;left:38px;top:50%;transform:translateY(-50%);color:hsl(var(--muted-foreground) / .6);pointer-events:none}.routing-modal__search{width:100%;height:2.75rem;padding:0 16px 0 38px;background:hsl(var(--muted) / .4);color:hsl(var(--foreground));border:none;border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none;transition:background var(--transition-fast),box-shadow var(--transition-fast);box-sizing:border-box}.routing-modal__search:focus{background:hsl(var(--muted) / .6);box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.routing-modal__search::placeholder{color:hsl(var(--muted-foreground) / .7)}.routing-modal__filter-bar{display:flex;padding:8px 24px 0;flex-shrink:0}.routing-modal__filter-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;font-size:var(--font-size-xs);font-family:var(--font-family);font-weight:500;color:hsl(var(--muted-foreground));background:transparent;border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.routing-modal__filter-pill:hover{background:hsl(var(--muted) / .5);color:hsl(var(--foreground))}.routing-modal__filter-pill--active{color:hsl(var(--foreground));border-color:hsl(var(--foreground) / .3)}.routing-modal__filter-pill--active:hover{background:hsl(var(--muted) / .5)}.routing-modal__filter-check{flex-shrink:0}.routing-modal__list{overflow-y:auto;flex:1;min-height:0;padding:0;margin-top:12px;border-top:1px solid hsl(var(--border))}.routing-modal__group{border-bottom:1px solid hsl(var(--border))}.routing-modal__group:last-child{border-bottom:none}.routing-modal__group-header{display:flex;align-items:center;gap:8px;padding:10px 24px 6px;position:sticky;top:0;background:hsl(var(--card));z-index:1}.routing-modal__group-icon{display:flex;align-items:center;flex-shrink:0}.routing-modal__group-name{font-size:var(--font-size-xs);font-weight:600;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.04em}.routing-modal__model{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-md);width:100%;padding:9px 24px 9px 48px;background:none;border:none;border-top:1px solid hsl(var(--border) / .5);cursor:pointer;font-family:var(--font-family);text-align:left;transition:background var(--transition-fast)}.routing-modal__model:first-child{border-top:none}.routing-modal__model:hover{background:hsl(var(--muted) / .5)}.routing-modal__model:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:-2px}.routing-modal__model-label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.routing-modal__model-id{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));font-family:var(--font-mono, monospace)}.routing-modal__inline-picker .routing-modal__model-id{text-align:left;width:50%}.routing-modal__model-id--subscription{color:#64748b;font-family:var(--font-family)}.routing-modal__recommended{font-size:var(--font-size-xs);color:hsl(var(--success));font-weight:500;margin-left:4px}.routing-modal__role-tag{display:inline-block;font-size:10px;font-weight:600;line-height:1;padding:2px 6px;margin-left:6px;border-radius:4px;background:hsl(var(--muted));color:hsl(var(--muted-foreground));vertical-align:middle;letter-spacing:.01em}.routing-modal__empty{padding:24px;text-align:center;font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.routing-modal__inline-picker{position:relative;margin-bottom:0}.routing-modal__inline-picker .routing-modal__list{max-height:240px;border:1px solid hsl(var(--border));border-radius:var(--radius);margin-top:8px}.routing-modal__inline-picker .routing-modal__group-header{background:hsl(var(--background))}.routing-modal__selected-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 16px;background:hsl(var(--muted) / .4);border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;font-family:var(--font-family);transition:background var(--transition-fast),border-color var(--transition-fast)}.routing-modal__selected-display:hover{background:hsl(var(--muted) / .6);border-color:hsl(var(--border) / .8)}.routing-modal__selected-label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground))}.routing-modal__selected-hint{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.routing-enable-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px 32px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius)}.routing-enable-card__icon{color:hsl(var(--muted-foreground));margin-bottom:var(--gap-lg)}.routing-enable-card__title{font-size:var(--font-size-lg);font-weight:600;color:hsl(var(--foreground));margin:0 0 var(--gap-sm)}.routing-enable-card__desc{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));max-width:400px;line-height:1.6;margin:0 0 var(--gap-xl)}.routing-page-header{display:flex;align-items:flex-start;justify-content:space-between}.routing-providers-info{display:inline-flex;align-items:center;gap:8px;margin-bottom:var(--gap-lg)}.routing-providers-info__icons{display:inline-flex;align-items:center;gap:4px}.routing-providers-info__icon{display:flex;align-items:center;position:relative;cursor:default}.routing-providers-info__label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--muted-foreground))}.provider-auth-badge{position:absolute;top:-4px;right:-4px;width:12px;height:12px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:0;border:1.5px solid hsl(var(--card))}.provider-auth-badge--sub{background:#1cc4bf;color:#020817}.provider-auth-badge--key{background:#f2c79c;color:#020817}.provider-auth-badge--overlay{width:8px;height:8px;top:-2px;right:-2px;border-width:1.5px}.routing-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.routing-card{display:flex;flex-direction:column;padding:16px 20px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);min-height:0}.routing-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.routing-card__tier{font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground))}.routing-card__reset-btn{font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));background:none;border:none;cursor:pointer;font-family:var(--font-family);padding:2px 0;border-radius:var(--radius);transition:color var(--transition-fast)}.routing-card__reset-btn:hover{color:hsl(var(--destructive))}.routing-card__reset-btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.routing-card__reset-btn:disabled{opacity:.6;cursor:not-allowed}.routing-card__desc{display:none}.routing-card__body{min-width:0;margin-bottom:12px}.routing-card__main{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--foreground));display:block}.routing-card__sub{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));display:block;margin-top:2px}.routing-card__sub--subscription{color:#64748b}.routing-card__override{display:inline-flex;align-items:flex-start;gap:8px}.routing-card__override-icon{display:flex;align-items:center;flex-shrink:0;position:relative;top:2.5px}.routing-card__auto-tag{font-size:var(--font-size-xs);font-weight:600;line-height:1;padding:3px 6px;border-radius:4px;background:hsl(var(--success) / .15);color:hsl(var(--success));text-transform:lowercase;letter-spacing:.02em}.routing-card__empty{display:flex;flex-direction:column;gap:2px}.routing-card__empty-text{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.routing-card__empty-link{font-size:var(--font-size-xs);color:hsl(var(--foreground));text-decoration:underline;background:none;border:none;cursor:pointer;font-family:var(--font-family);padding:0;text-align:left}.routing-card__model-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.routing-card__fallbacks{flex:1}.routing-card__fallbacks-label{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));margin-bottom:6px}.routing-card__right{display:flex;flex-direction:column;gap:8px}.routing-card__actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.routing-action{font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));background:hsl(var(--background));border:1px solid hsl(var(--input));border-radius:var(--radius);cursor:pointer;font-family:var(--font-family);height:2rem;padding:0 .75rem;transition:all var(--transition-fast)}.routing-action:hover{background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.routing-action:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.routing-action:disabled{opacity:.5;cursor:not-allowed}.routing-action--danger:hover{color:hsl(var(--destructive))}.routing-disable-btn{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));background:none;border:none;cursor:pointer;font-family:var(--font-family);padding:8px 12px;border-radius:var(--radius);transition:color var(--transition-fast),background var(--transition-fast)}.routing-disable-btn:hover{color:hsl(var(--destructive));background:hsl(var(--destructive) / .08)}.routing-disable-btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.routing-disable-btn:disabled{opacity:.6;cursor:not-allowed}.routing-footer__instructions{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));background:none;border:none;cursor:pointer;font-family:var(--font-family);padding:8px 12px;border-radius:var(--radius);transition:color var(--transition-fast);text-decoration:underline;text-underline-offset:2px}.routing-footer__instructions:hover{color:hsl(var(--foreground))}.routing-footer__instructions:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.routing-footer{display:flex;align-items:center;gap:var(--gap-md);margin-top:var(--gap-lg)}.fallback-list__items{display:flex;flex-direction:column;gap:0}.fallback-list__card{display:flex;align-items:center;gap:6px;font-size:var(--font-size-xs);color:hsl(var(--foreground));padding:6px 8px;border:none;border-radius:var(--radius);background:#f7f5ed;cursor:grab;transition:border-color var(--transition-fast),background var(--transition-fast),opacity var(--transition-fast),box-shadow var(--transition-fast);position:relative}.dark .fallback-list__card{background:#121212}.fallback-list__card:hover{background:hsl(var(--muted) / .3)}.fallback-list__card--dragging{opacity:.3}.fallback-list__drop-indicator{height:6px;transition:height .12s ease;position:relative}.fallback-list__drop-indicator--active{height:10px}.fallback-list__drop-indicator--active:after{content:"";position:absolute;left:4px;right:4px;top:50%;height:2px;border-radius:1px;background:hsl(var(--primary));transform:translateY(-50%)}.fallback-list__drag-handle{display:flex;align-items:center;color:hsl(var(--muted-foreground) / .5);flex-shrink:0;cursor:grab;transition:color var(--transition-fast)}.fallback-list__card:hover .fallback-list__drag-handle{color:hsl(var(--muted-foreground))}.fallback-list__rank{color:hsl(var(--muted-foreground));font-weight:600;font-size:10px;min-width:14px;flex-shrink:0}.fallback-list__icon{display:flex;align-items:center;flex-shrink:0;position:relative}.fallback-list__model{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fallback-list__remove{background:none;border:none;color:hsl(var(--muted-foreground) / .5);cursor:pointer;line-height:1;padding:2px;display:flex;align-items:center;flex-shrink:0;transition:color var(--transition-fast)}.fallback-list__remove:hover{color:hsl(var(--destructive))}.fallback-list__add{margin-top:6px;gap:6px}.fallback-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;height:224px;padding:20px 12px;border-radius:var(--radius);background:hsl(var(--muted) / .15);box-sizing:border-box}.fallback-list__empty-icon{color:hsl(var(--muted-foreground) / .5);margin-bottom:6px}.fallback-list__empty-title{font-size:var(--font-size-xs);font-weight:600;color:hsl(var(--muted-foreground));margin-bottom:2px}.fallback-list__empty-desc{font-size:12px;color:hsl(var(--muted-foreground) / .7);line-height:1.4;max-width:200px}.routing-card__change-btn{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.routing-card__change-icon{display:none}@media(max-width:1520px){.btn.routing-card__change-btn{width:2rem;height:2rem;padding:0;justify-content:center}.routing-card__change-icon{display:block}.routing-card__change-label{display:none}}@media(max-width:1024px){.routing-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.routing-cards{grid-template-columns:1fr}.provider-toggle__expand{padding-left:24px}}.info-tooltip{position:relative;display:inline-flex;align-items:center;margin-left:4px;cursor:help;vertical-align:middle}.info-tooltip__icon{color:hsl(var(--muted-foreground));opacity:.6;transition:opacity .15s}.info-tooltip:hover .info-tooltip__icon,.info-tooltip:focus .info-tooltip__icon{opacity:1}.info-tooltip__bubble{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:8px 12px;background:hsl(var(--popover));color:hsl(var(--popover-foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);font-size:var(--font-size-xs);font-weight:400;line-height:1.5;white-space:normal;width:max-content;max-width:260px;box-shadow:0 2px 8px hsl(var(--foreground) / .08);z-index:50;pointer-events:none}.info-tooltip:hover .info-tooltip__bubble,.info-tooltip:focus .info-tooltip__bubble,.info-tooltip--active .info-tooltip__bubble{display:block}.toast-container{position:fixed;bottom:var(--gap-lg);right:var(--gap-lg);z-index:200;display:flex;flex-direction:column;gap:var(--gap-sm);pointer-events:none;max-width:420px;width:100%}.toast{display:flex;align-items:flex-start;gap:var(--gap-sm);padding:12px var(--gap-md);border-radius:var(--radius);background:hsl(var(--card));border:1px solid hsl(var(--border));box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;pointer-events:auto;animation:toastSlideIn .2s ease-out}.toast--error .toast__icon{color:hsl(var(--destructive))}.toast--success .toast__icon{color:hsl(var(--success))}.toast--warning .toast__icon{color:hsl(var(--chart-5))}.toast__icon{flex-shrink:0;margin-top:1px}.toast__message{flex:1;font-size:var(--font-size-sm);color:hsl(var(--foreground));line-height:1.4;word-break:break-word}.toast__dismiss{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:hsl(var(--muted-foreground));border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:all var(--transition-fast);margin:-2px -4px -2px 0}.toast__dismiss:hover{background:hsl(var(--muted));color:hsl(var(--foreground))}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(8px) translate(8px)}to{opacity:1;transform:translateY(0) translate(0)}}@media(max-width:480px){.toast-container{left:var(--gap-sm);right:var(--gap-sm);bottom:var(--gap-sm);max-width:100%}}.model-filter{margin-bottom:var(--gap-lg)}.model-filter__row{display:flex;align-items:center;gap:var(--gap-md)}.model-filter__combobox{position:relative;flex:1;max-width:480px}.model-filter__input-wrapper{position:relative;display:flex;align-items:center}.model-filter__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:hsl(var(--muted-foreground));pointer-events:none}.model-filter__search{width:100%;height:2.5rem;padding:0 12px 0 2.25rem;background:hsl(var(--background));color:hsl(var(--foreground));border:none;border-radius:var(--radius);font-size:var(--font-size-base);font-family:var(--font-family);transition:box-shadow var(--transition-fast)}.model-filter__search::placeholder{color:hsl(var(--muted-foreground))}.model-filter__search:focus-visible{outline:none;box-shadow:0 0 0 2px hsl(var(--ring) / .25)}.model-filter__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--gap-sm)}.model-filter__tag{display:inline-flex;align-items:center;gap:6px;height:1.75rem;padding:0 6px 0 10px;background:hsl(var(--secondary));border:1px solid hsl(var(--border));border-radius:9999px;font-size:var(--font-size-xs);line-height:1;white-space:nowrap;animation:fadeInUp .1s ease-out}.model-filter__tag--provider{padding-left:6px}.model-filter__tag-type{font-weight:600;line-height:1;color:hsl(var(--muted-foreground))}.model-filter__tag-value{font-weight:500;line-height:1;color:hsl(var(--foreground))}.model-filter__tag-remove{display:flex;align-items:center;justify-content:center;width:1.125rem;height:1.125rem;border:none;border-radius:9999px;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:all var(--transition-fast)}.model-filter__tag-remove:hover{background:hsl(var(--muted));color:hsl(var(--foreground))}.model-filter__provider-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:hsl(var(--muted-foreground))}.dark .model-filter__provider-icon--mono{filter:invert(1)}.model-filter__dropdown{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 12px #00000014;padding:4px 0;z-index:50;animation:fadeInUp .1s ease-out}.model-filter__dropdown-group+.model-filter__dropdown-group{border-top:1px solid hsl(var(--border));margin-top:4px;padding-top:4px}.model-filter__dropdown-label{padding:4px 14px;font-size:var(--font-size-xs);font-weight:600;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.05em}.model-filter__dropdown-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:7px 14px;border:none;background:transparent;color:hsl(var(--popover-foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:background var(--transition-fast);text-align:left}.model-filter__dropdown-item:hover,.model-filter__dropdown-item--highlighted{background:hsl(var(--accent))}.model-filter__dropdown-item-name{display:flex;align-items:center;gap:8px}.model-filter__dropdown-item-type{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.model-filter__summary{display:flex;align-items:center;gap:var(--gap-sm);font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));white-space:nowrap;margin-left:auto}.model-filter__clear-all{background:none;border:none;font-size:var(--font-size-sm);font-family:var(--font-family);color:hsl(var(--ring));cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px;transition:color var(--transition-fast)}.model-filter__clear-all:hover{color:hsl(var(--foreground))}.model-filter__empty{text-align:center;padding:var(--gap-2xl) var(--gap-lg)}.model-filter__empty-title{font-size:var(--font-size-base);font-weight:500;color:hsl(var(--foreground));margin-bottom:var(--gap-xs)}.model-filter__empty-hint{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-bottom:var(--gap-md)}@media(max-width:640px){.model-filter__row{flex-direction:column;align-items:stretch}.model-filter__combobox{max-width:100%}.model-filter__summary{margin-left:0}}.version-indicator{position:fixed;bottom:var(--gap-md);right:var(--gap-md);z-index:40;font-size:var(--font-size-xs);font-family:var(--font-mono);color:hsl(var(--muted-foreground));opacity:.5;transition:opacity var(--transition-fast);cursor:default;user-select:none}.version-indicator:hover{opacity:1}.version-indicator--update{color:hsl(var(--success));opacity:.8;cursor:pointer}.version-indicator--update:hover{opacity:1}.version-indicator__tooltip-wrap{position:relative;display:inline-block}.version-indicator__bubble{display:none;position:absolute;bottom:calc(100% + 8px);right:0;padding:10px 12px;background:hsl(var(--popover));color:hsl(var(--popover-foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);font-size:var(--font-size-xs);font-weight:400;line-height:1.5;white-space:nowrap;width:max-content;max-width:300px;box-shadow:0 2px 8px hsl(var(--foreground) / .08);z-index:50}.version-indicator__bubble:before{content:"";position:absolute;bottom:-8px;left:0;right:0;height:8px}.version-indicator__tooltip-wrap:hover .version-indicator__bubble{display:block}.version-indicator__range{display:block;margin-bottom:6px;color:hsl(var(--muted-foreground))}.version-indicator__command-row{display:flex;align-items:center;gap:6px;background:hsl(var(--muted));border-radius:calc(var(--radius) - 2px);padding:4px 4px 4px 8px}.version-indicator__command{flex:1;font-family:var(--font-mono);font-size:var(--font-size-xs);color:hsl(var(--foreground))}.version-indicator__copy-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;font-size:13px;transition:all var(--transition-fast);flex-shrink:0}.version-indicator__copy-btn:hover{background:hsl(var(--accent));color:hsl(var(--foreground))}.skeleton{background:hsl(var(--muted));border-radius:calc(var(--radius) - 2px);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton--text{display:block;height:14px}.skeleton--rect{display:block}.spinner{display:inline-block;width:14px;height:14px;border:2px solid hsl(var(--muted));border-top-color:hsl(var(--foreground));border-radius:50%;animation:spinner-spin .6s linear infinite}.btn .spinner{margin:0 12px;border-color:hsl(var(--primary-foreground) / .3);border-top-color:hsl(var(--primary-foreground))}.btn--outline .spinner,.btn--ghost .spinner{border-color:hsl(var(--muted));border-top-color:hsl(var(--foreground))}.btn--danger .spinner{border-color:hsl(var(--destructive-foreground) / .3);border-top-color:hsl(var(--destructive-foreground))}@keyframes spinner-spin{to{transform:rotate(360deg)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@keyframes skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.provider-tokens__tabs{display:flex;flex-wrap:wrap;gap:var(--gap-xs);margin-bottom:var(--gap-md)}.provider-tokens__tab{display:inline-flex;align-items:center;gap:var(--gap-xs);padding:6px 12px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--card));color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.provider-tokens__tab:hover{background:hsl(var(--muted))}.provider-tokens__tab.active{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-color:hsl(var(--primary))}.provider-tokens__tab-count{font-size:var(--font-size-xs);opacity:.75}.provider-tokens__table-wrapper{margin-top:var(--gap-md)}@layer base{:root{--background: 45 49% 97%;--foreground: 222.2 84% 4.9%;--card: 44 60% 99%;--card-foreground: 222.2 84% 4.9%;--popover: 44 60% 99%;--popover-foreground: 222.2 84% 4.9%;--primary: 222.2 47.4% 11.2%;--primary-foreground: 45 30% 97%;--secondary: 40 33% 93%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 40 33% 93%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 40 33% 93%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 45 30% 97%;--border: 36 25% 88%;--input: 36 25% 88%;--ring: 222.2 84% 4.9%;--radius: .5rem;--chart-1: 178 75% 44%;--chart-2: 197 37% 24%;--chart-3: 167 70% 48%;--chart-4: 349 52% 61%;--chart-5: 43 96% 56%;--sidebar-background: 43 38% 95%;--sidebar-foreground: 240 5.3% 26.1%;--sidebar-primary: 240 5.9% 10%;--sidebar-primary-foreground: 45 30% 97%;--sidebar-accent: 40 28% 93%;--sidebar-accent-foreground: 240 5.9% 10%;--sidebar-border: 36 20% 89%;--sidebar-ring: 217.2 91.2% 59.8%;--success: 178 75% 44%;--success-foreground: 0 0% 100%}.dark{--background: 0 0% 9%;--foreground: 0 0% 93%;--card: 0 0% 11%;--card-foreground: 0 0% 93%;--popover: 0 0% 11%;--popover-foreground: 0 0% 93%;--primary: 0 0% 93%;--primary-foreground: 0 0% 9%;--secondary: 0 0% 15%;--secondary-foreground: 0 0% 93%;--muted: 0 0% 15%;--muted-foreground: 0 0% 55%;--accent: 0 0% 15%;--accent-foreground: 0 0% 93%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 93%;--border: 0 0% 18%;--input: 0 0% 18%;--ring: 0 0% 60%;--chart-1: 178 70% 50%;--chart-2: 197 50% 55%;--chart-3: 167 70% 55%;--chart-4: 349 52% 65%;--chart-5: 43 96% 65%;--sidebar-background: 0 0% 7%;--sidebar-foreground: 0 0% 93%;--sidebar-primary: 0 0% 93%;--sidebar-primary-foreground: 0 0% 9%;--sidebar-accent: 0 0% 14%;--sidebar-accent-foreground: 0 0% 93%;--sidebar-border: 0 0% 18%;--sidebar-ring: 0 0% 60%;--success: 178 70% 50%;--success-foreground: 0 0% 100%}}:root{--sidebar-width: 230px;--header-height: 48px;--gap-xs: 4px;--gap-sm: 8px;--gap-md: 16px;--gap-lg: 24px;--gap-xl: 32px;--gap-2xl: 48px;--font-family: "DM Sans", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-heading: "Bricolage Grotesque", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: .9375rem;--font-size-lg: 1.125rem;--font-size-xl: 1.5rem;--font-size-2xl: 1.875rem;--font-size-3xl: 2.25rem;--font-size-4xl: 3rem;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box;border-color:hsl(var(--border))}body{font-family:var(--font-family);font-feature-settings:"rlig" 1,"calt" 1;background:hsl(var(--background));color:hsl(var(--foreground));line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}.app-layout{display:flex;min-height:100vh}.main-content{flex:1;margin-left:var(--sidebar-width);padding:var(--gap-xl) var(--gap-xl) var(--gap-2xl);min-width:0}.main-content--full{margin-left:0}.container--sm{max-width:680px;margin-inline:auto}.container--md{max-width:1100px;margin-inline:auto}.container--full{max-width:100%}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--gap-xl);padding-bottom:var(--gap-lg);border-bottom:1px solid hsl(var(--border))}.page-header h1{font-size:var(--font-size-2xl);font-weight:700;letter-spacing:-.025em;line-height:1.2;color:hsl(var(--foreground))}.page-header .breadcrumb{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));margin-top:2px}.header-controls{display:flex;gap:var(--gap-sm);align-items:center}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--gap-md);margin-bottom:var(--gap-xl)}.summary-card{background:hsl(var(--card));border:none;border-radius:var(--radius);padding:var(--gap-lg);box-shadow:#00000014 0 0 0 1px;transition:box-shadow var(--transition-fast)}.summary-card__label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--muted-foreground));display:flex;align-items:center;gap:var(--gap-sm)}.summary-card__value{font-size:var(--font-size-3xl);font-weight:700;letter-spacing:-.025em;margin-top:var(--gap-xs);line-height:1.1;color:hsl(var(--foreground))}.summary-card__subtitle{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));margin-top:var(--gap-sm)}.trend{display:inline-flex;align-items:center;gap:2px;font-size:var(--font-size-xs);font-weight:500;padding:2px 6px;border-radius:calc(var(--radius) - 4px);line-height:1.4}.trend--up{color:hsl(var(--success));background:hsl(var(--success) / .1)}.trend--down,.trend--up-bad{color:hsl(var(--destructive));background:hsl(var(--destructive) / .1)}.trend--down-good{color:hsl(var(--success));background:hsl(var(--success) / .1)}.trend--neutral{color:hsl(var(--muted-foreground));background:hsl(var(--muted-foreground) / .1)}.panel{background:hsl(var(--card));border:none;border-radius:var(--radius);padding:var(--gap-lg);margin-bottom:var(--gap-lg);box-shadow:#00000014 0 0 0 1px}.panel__title{font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground));margin-bottom:var(--gap-lg)}.chart-card{background:hsl(var(--card));border:none;border-radius:var(--radius);margin-bottom:var(--gap-lg);box-shadow:#00000014 0 0 0 1px;animation:fadeInUp .3s ease-out both}.chart-card__header{display:flex;align-items:flex-end;border-bottom:1px solid hsl(var(--border))}.chart-card__stat{display:flex;flex-direction:column;gap:2px;padding-right:var(--gap-xl);border-right:1px solid hsl(var(--border))}.chart-card__stat:last-of-type{border-right:1px solid hsl(var(--border))}.chart-card__label{font-size:var(--font-size-sm);font-weight:500;color:hsl(var(--muted-foreground))}.chart-card__value{font-size:var(--font-size-2xl);font-weight:700;letter-spacing:-.025em;line-height:1.1;color:hsl(var(--foreground))}.chart-card__value-row{display:flex;align-items:baseline;gap:var(--gap-sm)}.chart-card__controls{margin-left:auto;display:flex;align-items:center}.chart-card__body{padding:var(--gap-md) var(--gap-lg) var(--gap-lg)}.panel__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--gap-lg)}.panel__tabs{display:inline-flex;height:2.25rem;align-items:center;border-radius:var(--radius);background:hsl(var(--muted));padding:3px;gap:1px}.panel__tab{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:0 14px;height:100%;font-size:var(--font-size-sm);font-family:var(--font-family);font-weight:500;color:hsl(var(--muted-foreground));background:transparent;border:none;border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:all var(--transition-fast)}.panel__tab:hover{color:hsl(var(--foreground))}.panel__tab--active{background:hsl(var(--background));color:hsl(var(--foreground));box-shadow:0 1px 2px #0000000f;font-weight:600}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-lg);margin-bottom:var(--gap-lg)}.data-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.data-table th{text-align:left;font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));padding:12px var(--gap-md);border-bottom:1px solid hsl(var(--border));height:40px}.data-table td{padding:12px var(--gap-md);border-bottom:1px solid hsl(var(--border));color:hsl(var(--foreground))}.data-table tbody tr{transition:background var(--transition-fast)}.data-table tbody tr:hover{background:hsl(var(--muted) / .5)}.data-table tr:last-child td{border-bottom:none}.status-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:var(--font-size-xs);font-weight:500}.status-badge--ok{background:hsl(var(--success) / .1);color:hsl(var(--success))}.status-badge--retry{background:hsl(var(--chart-5) / .15);color:hsl(var(--chart-5))}.status-badge--error{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.free-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:calc(var(--radius) - 4px);font-size:var(--font-size-xs);font-weight:500;background:hsl(var(--success));color:hsl(var(--background))}.security-event{display:flex;align-items:center;gap:var(--gap-md);padding:12px var(--gap-md);border-bottom:1px solid hsl(var(--border));transition:background var(--transition-fast);border-radius:calc(var(--radius) - 2px)}.security-event:last-child{border-bottom:none}.security-event:hover{background:hsl(var(--muted) / .5)}.security-event__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.security-event__dot--critical{background:hsl(var(--destructive))}.security-event__dot--warning{background:hsl(var(--chart-5))}.security-event__dot--info{background:hsl(var(--chart-2))}.security-event__desc{flex:1;font-size:var(--font-size-sm);color:hsl(var(--foreground))}.security-event__badge{font-size:var(--font-size-xs);padding:2px 8px;border-radius:9999px;background:hsl(var(--muted));color:hsl(var(--muted-foreground));text-transform:capitalize}.security-event__time{font-size:var(--font-size-xs);font-family:var(--font-mono);color:hsl(var(--muted-foreground));white-space:nowrap}.feed-item{display:flex;align-items:center;gap:var(--gap-md);padding:10px 0;border-bottom:1px solid hsl(var(--border));transition:background var(--transition-fast)}.feed-item:hover{background:hsl(var(--muted) / .5);margin:0 calc(var(--gap-md) * -1);padding-left:var(--gap-md);padding-right:var(--gap-md);border-radius:calc(var(--radius) - 2px)}.feed-item:last-child{border-bottom:none}.feed-item__time{font-size:var(--font-size-xs);font-family:var(--font-mono);color:hsl(var(--muted-foreground));white-space:nowrap}.feed-item__desc{flex:1;font-size:var(--font-size-sm);color:hsl(var(--foreground))}.feed-item__meta{font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))}.model-bar{display:flex;align-items:center;gap:var(--gap-md);margin-bottom:12px;padding:6px 0}.model-bar__name{width:160px;font-size:var(--font-size-sm);font-family:var(--font-mono);color:hsl(var(--foreground));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model-bar__track{flex:1;height:6px;background:hsl(var(--muted));border-radius:9999px;overflow:hidden}.model-bar__fill{height:100%;border-radius:9999px;transition:width .5s cubic-bezier(.4,0,.2,1);background:hsl(var(--chart-1))!important}.model-bar__pct{width:48px;text-align:right;font-size:var(--font-size-sm);font-weight:600;color:hsl(var(--foreground))!important}.empty-state{text-align:center;padding:var(--gap-2xl) var(--gap-lg);color:hsl(var(--muted-foreground))}.empty-state__title{font-size:var(--font-size-lg);font-weight:500;margin-bottom:var(--gap-sm);color:hsl(var(--foreground))}.select{display:inline-flex;align-items:center;height:2.25rem;background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input));border-radius:var(--radius);padding:0 2rem 0 .75rem;font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center}.select:focus-visible{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .2)}.select option{background:hsl(var(--popover));color:hsl(var(--popover-foreground))}.btn{display:inline-flex;align-items:center;justify-content:center;height:2.25rem;padding:0 1rem;border-radius:var(--radius);font-size:var(--font-size-sm);font-weight:500;font-family:var(--font-family);cursor:pointer;border:none;transition:all var(--transition-fast)}.btn--primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}.btn--primary:hover{background:hsl(var(--primary) / .9)}.btn--ghost{background:transparent;color:hsl(var(--foreground))}.btn--ghost:hover{background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.btn--outline{background:hsl(var(--background));color:hsl(var(--foreground));border:1px solid hsl(var(--input))}.btn--outline:hover{background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.btn--sm{height:2rem;line-height:2rem;padding:0 .75rem;font-size:var(--font-size-xs)}.btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.sidebar{width:var(--sidebar-width);height:calc(100vh - var(--header-height));position:fixed;top:var(--header-height);left:0;background:hsl(var(--sidebar-background));border-right:1px solid hsl(var(--sidebar-border));padding:var(--gap-lg) 0 0 0;display:flex;flex-direction:column;z-index:10;overflow-y:auto}.sidebar__logo{padding:0 var(--gap-lg);margin-bottom:var(--gap-xl);font-size:var(--font-size-lg);font-weight:700;letter-spacing:-.025em;display:flex;align-items:center;gap:var(--gap-sm);color:hsl(var(--sidebar-foreground))}.sidebar__logo-dot{width:8px;height:8px;border-radius:50%;background:hsl(var(--success))}.sidebar__section-label{padding:var(--gap-md) var(--gap-lg) var(--gap-xs);font-size:var(--font-size-xs);font-weight:500;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.05em}.sidebar__link{display:flex;align-items:center;gap:var(--gap-xs);padding:6px var(--gap-lg);margin:1px .5rem;font-size:var(--font-size-sm);color:hsl(var(--sidebar-foreground));text-decoration:none;border-radius:var(--radius);transition:all var(--transition-fast)}.sidebar__link:hover{background:hsl(var(--sidebar-accent));color:hsl(var(--sidebar-accent-foreground))}.sidebar__link.active{background:hsl(var(--sidebar-accent));color:hsl(var(--sidebar-primary));font-weight:500}.sidebar__spacer{flex:1}.sidebar__feedback{display:block;padding:var(--gap-md) var(--gap-lg);border-top:1px solid hsl(var(--sidebar-border));text-decoration:none;color:hsl(var(--sidebar-foreground));transition:background var(--transition-fast);cursor:pointer}.sidebar__feedback:hover{background:hsl(var(--sidebar-accent))}.sidebar__feedback-title{display:flex;align-items:center;gap:var(--gap-sm);font-size:var(--font-size-sm);font-weight:500}.sidebar__feedback-hint{margin-top:var(--gap-xs);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground));line-height:1.4}.sidebar__footer{margin-top:auto;padding:var(--gap-md) var(--gap-lg);border-top:1px solid hsl(var(--sidebar-border))}.theme-toggle{display:flex;align-items:center;gap:var(--gap-sm);padding:6px 12px;border-radius:var(--radius);background:transparent;border:1px solid hsl(var(--border));color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:all var(--transition-fast);width:100%}.theme-toggle:hover{background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.theme-toggle__icon{font-size:14px;line-height:1;width:18px;text-align:center}.u-wrap{font-family:var(--font-family)!important}.u-legend{font-size:var(--font-size-xs)!important;font-family:var(--font-family)!important;color:hsl(var(--muted-foreground))!important;display:grid!important;grid-template-columns:2fr 1fr 1fr!important;width:100%!important;padding:var(--gap-sm) 0 0!important}.u-legend>tbody,.u-legend>thead{display:contents!important}.u-legend .u-series{display:flex!important;align-items:center!important;gap:4px!important;white-space:nowrap!important;min-width:0!important;padding:2px 0!important}.u-legend .u-series th{flex-shrink:0!important}.u-legend .u-value{font-family:var(--font-mono)!important;font-variant-numeric:tabular-nums!important;min-width:60px!important;display:inline-block!important;text-align:right!important;flex-shrink:0!important}.u-legend .u-series:first-child{justify-content:flex-start!important}.u-legend .u-series:not(:first-child){justify-content:flex-start!important;padding-left:var(--gap-sm)!important}.u-legend .u-marker{border-radius:50%!important}.chart-tooltip{position:absolute;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:8px 12px;font-size:var(--font-size-xs);color:hsl(var(--popover-foreground));pointer-events:none;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:100;white-space:nowrap}.expandable-card{position:relative;margin-bottom:var(--gap-lg);cursor:pointer}.expandable-card .panel{max-height:320px;overflow:hidden}.expandable-card__content{overflow:hidden}.expandable-card__fade{position:absolute;bottom:0;left:0;right:0;height:64px;background:linear-gradient(transparent,hsl(var(--card)) 70%);border-radius:0 0 var(--radius) var(--radius);display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px;opacity:0;transition:opacity var(--transition-base)}.expandable-card:hover .expandable-card__fade{opacity:1}.expandable-card__btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font-size:var(--font-size-xs);font-family:var(--font-family);font-weight:500;color:hsl(var(--foreground));background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;box-shadow:0 1px 3px #0000001a;transition:all var(--transition-fast)}.expandable-card__btn:hover{background:hsl(var(--accent))}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#00000080;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}.modal{background:hsl(var(--background));border:none;border-radius:var(--radius);width:90%;max-width:680px;max-height:80vh;display:flex;flex-direction:column;box-shadow:#00000014 0 0 0 1px,0 25px 50px -12px #00000040;animation:fadeInUp .2s ease-out}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--gap-lg);border-bottom:1px solid hsl(var(--border));flex-shrink:0}.modal__title{font-size:var(--font-size-lg);font-weight:600;color:hsl(var(--foreground))}.modal__close{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius);border:none;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:all var(--transition-fast)}.modal__close:hover{background:hsl(var(--muted));color:hsl(var(--foreground))}.modal__body{padding:var(--gap-md) var(--gap-lg);overflow-y:auto;flex:1;min-height:0}.modal__footer{display:flex;justify-content:center;padding:var(--gap-md) var(--gap-lg);border-top:1px solid hsl(var(--border));flex-shrink:0}.modal__footer .btn{min-width:120px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.cards-grid>*{animation:fadeInUp .3s ease-out both}.cards-grid>*:nth-child(1){animation-delay:0ms}.cards-grid>*:nth-child(2){animation-delay:50ms}.cards-grid>*:nth-child(3){animation-delay:.1s}.cards-grid>*:nth-child(4){animation-delay:.15s}.panel{animation:fadeInUp .3s ease-out both}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsl(var(--border));border-radius:3px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .3)}@media(max-width:1024px){.main-content{padding:var(--gap-lg) var(--gap-md) var(--gap-xl)}.two-col{grid-template-columns:1fr}.cards-grid{grid-template-columns:repeat(2,1fr)}.summary-card__value{font-size:var(--font-size-2xl)}}@media(max-width:768px){.main-content{margin-left:0;padding:var(--gap-md)}.sidebar{display:none}.cards-grid{grid-template-columns:1fr 1fr}.summary-card__value{font-size:var(--font-size-xl)}.page-header{flex-direction:column;align-items:flex-start;gap:var(--gap-md)}.container--sm,.container--md{max-width:100%}}@media(max-width:480px){.cards-grid{grid-template-columns:1fr}}
@@ -1 +0,0 @@
1
- import{a as m,i as y,h as v,s as d,t as x,d as h}from"./vendor-C-Y5oNOq.js";import"./index-C4Qw7vZo.js";import{i as g,h as k,s as b,e as w}from"./routing-utils-CHapjwyd.js";var _=x('<span class=info-tooltip tabindex=0 role=button><svg class=info-tooltip__icon width=13 height=13 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><circle cx=12 cy=12 r=10></circle><line x1=12 y1=16 x2=12 y2=12></line><line x1=12 y1=8 x2=12.01 y2=8></line></svg><span class=info-tooltip__bubble role=tooltip>');const I=t=>{const[a,n]=m(!1),f=e=>{e.key==="Enter"||e.key===" "?(e.preventDefault(),n(!a())):e.key==="Escape"&&n(!1)};return(()=>{var e=_(),u=e.firstChild,p=u.nextSibling;return e.$$focusout=()=>n(!1),e.$$click=()=>n(!a()),e.$$keydown=f,y(p,()=>t.text),v(o=>{var l=!!a(),s=`Info: ${t.text}`,c=a();return l!==o.e&&e.classList.toggle("info-tooltip--active",o.e=l),s!==o.t&&d(e,"aria-label",o.t=s),c!==o.a&&d(e,"aria-expanded",o.a=c),o},{e:void 0,t:void 0,a:void 0}),e})()};h(["keydown","click","focusout"]);let i=null,r=null;function $(t){const a=new Map;for(const n of t)n.display_name&&a.set(n.model_name,n.display_name);return a}async function M(){if(!i)return r||(r=(async()=>{try{const t=await w();i=$(t.models)}catch{i=new Map}})(),r)}function P(){M()}function L(t){if(i){const n=i.get(t);if(n)return n}const a=g(t);return a?k(a,t):b(t)}export{I,L as g,P as p};
@@ -1 +0,0 @@
1
- import{k as j,i as l,g as u,S as b,m as g,h as k,q as y,F as C,t as c,z as B,s as p,j as J,A as X,d as T,a as U,o as Q,l as V}from"./vendor-C-Y5oNOq.js";import{e as H,a as S,g as D,h as q,j as E,k as A,c as Y,f as Z,l as ee,E as te}from"./index-C4Qw7vZo.js";import{a as I,i as M,c as le,s as F,p as re}from"./routing-utils-CHapjwyd.js";import{g as L,I as ae}from"./model-display-DHwvDtl4.js";import{a as ne,b as O}from"./AuthBadge-Dj2KkXRW.js";import{S as se}from"./SetupStepAddProvider-CSNkQmoC.js";function vt(e={}){return H("/messages",e)}function oe(e){return H(`/messages/${encodeURIComponent(e)}/details`)}var ie=c("<span class=msg-detail__severity-dot>"),de=c("<tr><td class=msg-detail__mono-xs></td><td class=msg-detail__mono-xs></td><td class=msg-detail__mono-xs></td><td class=msg-detail__mono></td><td class=msg-detail__mono></td><td class=msg-detail__mono-xs></td><td class=msg-detail__mono-xs>"),ue=c("<tr><td class=msg-detail__mono-xs></td><td class=msg-detail__mono-xs></td><td><span></span></td><td class=msg-detail__mono-xs style=max-width:300px;overflow:hidden;text-overflow:ellipsis>"),ce=c('<tr><td class=msg-detail__mono-xs style=white-space:nowrap></td><td><span class=msg-detail__mono-xs style=margin-left:6px></span></td><td class="msg-detail__mono-xs msg-detail__log-body">'),_e=c("<span class=msg-detail__meta-item><span class=msg-detail__meta-label>"),ge=c("<div class=msg-detail__loader><div class=msg-detail__spinner></div><span>Loading details..."),me=c("<div class=msg-detail__error>Failed to load details"),he=c("<div class=msg-detail>"),ve=c("<div class=msg-detail__section><div class=msg-detail__section-title>Error</div><div class=msg-detail__error-box>"),$e=c("<div class=msg-detail__fallback-banner>Fallback from <strong>"),fe=c("<div class=msg-detail__section><div class=msg-detail__section-title>Message</div><div class=msg-detail__meta><span class=msg-detail__meta-item><span class=msg-detail__meta-label>Status</span><span>"),be=c('<div class=msg-detail__section><div class=msg-detail__section-title>LLM Calls<span class=msg-detail__count></span></div><div class=data-table-scroll><table class="data-table msg-detail__table"><thead><tr><th>#</th><th>Request Model</th><th>Response Model</th><th>Input</th><th>Output</th><th>Duration</th><th>TTFT</th></tr></thead><tbody>'),pe=c('<div class=msg-detail__section><div class=msg-detail__section-title>Tool Executions<span class=msg-detail__count></span></div><div class=data-table-scroll><table class="data-table msg-detail__table"><thead><tr><th>Tool</th><th>Duration</th><th>Status</th><th>Error</th></tr></thead><tbody>'),ke=c('<div class=msg-detail__section><div class=msg-detail__section-title>Agent Logs<span class=msg-detail__count></span></div><div class=data-table-scroll><table class="data-table msg-detail__table"><thead><tr><th>Time</th><th>Severity</th><th>Message</th></tr></thead><tbody>');function xe(e){const t=()=>{switch(e.severity){case"error":return"hsl(var(--destructive))";case"warn":return"hsl(var(--chart-5))";default:return"hsl(var(--muted-foreground))"}};return(()=>{var s=ie();return k(o=>{var n=t(),r=e.severity;return n!==o.e&&B(s,"background",o.e=n),r!==o.t&&p(s,"title",o.t=r),o},{e:void 0,t:void 0}),s})()}function Ce(e){const t=e.call;return(()=>{var s=de(),o=s.firstChild,n=o.nextSibling,r=n.nextSibling,i=r.nextSibling,d=i.nextSibling,a=d.nextSibling,m=a.nextSibling;return l(o,()=>t.call_index??"—"),l(n,()=>t.request_model??"—"),l(r,()=>t.response_model??"—"),l(i,()=>S(t.input_tokens)),l(d,()=>S(t.output_tokens)),l(a,(()=>{var v=g(()=>t.duration_ms!=null);return()=>v()?D(t.duration_ms):"—"})()),l(m,(()=>{var v=g(()=>t.ttft_ms!=null);return()=>v()?`${t.ttft_ms}ms`:"—"})()),s})()}function we(e){const t=e.tool;return(()=>{var s=ue(),o=s.firstChild,n=o.nextSibling,r=n.nextSibling,i=r.firstChild,d=r.nextSibling;return l(o,()=>t.tool_name),l(n,(()=>{var a=g(()=>t.duration_ms!=null);return()=>a()?D(t.duration_ms):"—"})()),l(i,()=>t.status),l(d,()=>t.error_message??"—"),k(()=>y(i,`status-badge status-badge--${t.status}`)),s})()}function ye(e){const t=e.log;return(()=>{var s=ce(),o=s.firstChild,n=o.nextSibling,r=n.firstChild,i=n.nextSibling;return l(o,()=>q(t.timestamp)),l(n,u(xe,{get severity(){return t.severity}}),r),l(r,()=>t.severity),l(i,()=>t.body??"—"),s})()}function x(e){return u(b,{get when(){return e.value},get children(){var t=_e(),s=t.firstChild;return l(s,()=>e.label),l(t,()=>e.value,null),t}})}function Se(e){const[t]=j(()=>e.messageId,oe);return(()=>{var s=he();return l(s,u(b,{get when(){return g(()=>!!t.loading)()&&!t.error},get children(){return ge()}}),null),l(s,u(b,{get when(){return t.error},get children(){return me()}}),null),l(s,u(b,{get when(){return g(()=>!!(!t.error&&t()))()&&!t.loading},get children(){return(()=>{const o=t(),n=o.message,r=n.model?I(n.model):null;return[u(b,{get when(){return n.error_message},get children(){var i=ve(),d=i.firstChild,a=d.nextSibling;return l(a,()=>n.error_message),i}}),u(b,{get when(){return n.fallback_from_model},get children(){var i=$e(),d=i.firstChild,a=d.nextSibling;return l(a,()=>n.fallback_from_model),l(i,u(b,{get when(){return n.fallback_index!=null},get children(){return[" ","(attempt #",g(()=>(n.fallback_index??0)+1),")"]}}),null),i}}),(()=>{var i=fe(),d=i.firstChild,a=d.nextSibling,m=a.firstChild,v=m.firstChild,_=v.nextSibling;return l(_,()=>n.status),l(a,u(x,{label:"ID",get value(){return n.id}}),null),l(a,u(x,{label:"Model",get value(){return g(()=>!!n.model)()?L(n.model):null}}),null),l(a,u(x,{label:"Model ID",get value(){return n.model}}),null),l(a,u(x,{label:"Provider",value:r}),null),l(a,u(x,{label:"Trace",get value(){return n.trace_id?.slice(0,16)}}),null),l(a,u(x,{label:"Routing",get value(){return n.routing_tier}}),null),l(a,u(x,{label:"Reason",get value(){return n.routing_reason}}),null),l(a,u(x,{label:"Auth",get value(){return n.auth_type}}),null),l(a,u(x,{label:"Service",get value(){return n.service_type}}),null),l(a,u(x,{label:"Session",get value(){return n.session_key}}),null),l(a,u(x,{label:"Description",get value(){return n.description}}),null),l(a,u(x,{label:"Skill",get value(){return n.skill_name}}),null),k(()=>y(_,`status-badge status-badge--${n.status}`)),i})(),u(b,{get when(){return o.llm_calls.length>0},get children(){var i=be(),d=i.firstChild,a=d.firstChild,m=a.nextSibling,v=d.nextSibling,_=v.firstChild,f=_.firstChild,h=f.nextSibling;return l(m,()=>o.llm_calls.length),l(h,u(C,{get each(){return o.llm_calls},children:$=>u(Ce,{call:$})})),i}}),u(b,{get when(){return o.tool_executions.length>0},get children(){var i=pe(),d=i.firstChild,a=d.firstChild,m=a.nextSibling,v=d.nextSibling,_=v.firstChild,f=_.firstChild,h=f.nextSibling;return l(m,()=>o.tool_executions.length),l(h,u(C,{get each(){return o.tool_executions},children:$=>u(we,{tool:$})})),i}}),u(b,{get when(){return o.agent_logs.length>0},get children(){var i=ke(),d=i.firstChild,a=d.firstChild,m=a.nextSibling,v=d.nextSibling,_=v.firstChild,f=_.firstChild,h=f.nextSibling;return l(m,()=>o.agent_logs.length),l(h,u(C,{get each(){return o.agent_logs},children:$=>u(ye,{log:$})})),i}})]})()}}),null),s})()}var Te=c('<svg xmlns=http://www.w3.org/2000/svg width=12 height=12 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><polyline points="22 12 18 12 15 21 9 3 6 12 2 12">'),Pe=c('<svg xmlns=http://www.w3.org/2000/svg width=11 height=11 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2.5 stroke-linecap=round stroke-linejoin=round aria-hidden=true style=margin-right:3px;flex-shrink:0><polyline points="15 17 20 12 15 7"></polyline><path d="M4 18v-2a4 4 0 0 1 4-4h12">'),Ee=c("<td style=white-space:nowrap;font-family:var(--font-mono);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))>"),P=c("<td style=font-family:var(--font-mono);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))>"),Me=c("<span title=Heartbeat style=display:inline-flex;align-items:center;margin-left:4px;color:hsl(var(--muted-foreground));opacity:0.7>"),Ie=c('<span title="Included in subscription"style=color:hsl(var(--muted-foreground))>$0.00'),G=c("<td style=font-family:var(--font-mono)>"),N=c("<span>"),Le=c("<td style=font-family:var(--font-mono);font-size:var(--font-size-xs);color:hsl(var(--muted-foreground))><span style=display:inline-flex;align-items:center;gap:4px>"),De=c("<span class=provider-card__logo-letter style=width:16px;height:16px;font-size:9px;flex-shrink:0;border-radius:50%>"),Ne=c("<span role=img style=display:inline-flex;flex-shrink:0;position:relative>"),Re=c('<span class="tier-badge tier-badge--fallback">fallback'),Ae=c("<span class=status-badge-tooltip tabindex=0 role=note><span></span><span class=status-badge-tooltip__bubble>"),Fe=c("<td>");function Oe(){return Te()}function z(){return Pe()}const ze={date:"Date",message:"Message",cost:"Cost",totalTokens:"Tokens",input:"Input",output:"Output",model:"Model",cache:"Cache",duration:"Duration",status:"Status"},Ke={totalTokens:"Tokens are units of text that AI models process. More tokens = higher cost.",input:"Tokens sent to the model (your prompt). Also called 'input tokens'.",output:"Tokens returned by the model (its response). Also called 'output tokens'."};function je(e,t){const s=e==="totalTokens"&&t?"Total Tokens":ze[e],o=Ke[e];return o&&(t||e!=="totalTokens")?[s,u(ae,{text:o})]:s}function Be(e){return(()=>{var t=Ee();return l(t,()=>q(e.timestamp)),t})()}function Ue(e){return(()=>{var t=P();return l(t,()=>e.id.slice(0,8),null),l(t,(()=>{var s=g(()=>e.routing_reason==="heartbeat");return()=>s()&&(()=>{var o=Me();return l(o,u(Oe,{})),o})()})(),null),t})()}function He(e){return(()=>{var t=G();return l(t,u(b,{get when(){return e.auth_type==="subscription"},get fallback(){return(()=>{var s=N();return l(s,(()=>{var o=g(()=>e.cost!=null);return()=>o()?Z(e.cost)??"—":"—"})()),k(()=>p(s,"title",e.cost!=null&&e.cost>0&&e.cost<.01?`$${e.cost.toFixed(6)}`:void 0)),s})()},get children(){return Ie()}})),t})()}function qe(e,t){return(()=>{var s=Le(),o=s.firstChild;return l(o,(()=>{var n=g(()=>!!(e.model&&M(e.model)==="custom"));return()=>n()?(()=>{const r=t(e.model),i=le(r??"",16,void 0,e.model??void 0);if(i)return i;const d=(r??F(e.model)).charAt(0).toUpperCase();return(()=>{var a=De();return p(a,"title",r),l(a,d),k(m=>B(a,"background",Y(r??""))),a})()})():g(()=>!!(e.model&&M(e.model)))()?(()=>{var r=Ne();return l(r,()=>re(M(e.model),14),null),l(r,()=>ne(e.auth_type,8),null),k(i=>{var d=`${I(e.model)} (${O(e.auth_type)})`,a=`${I(e.model)} (${O(e.auth_type)})`;return d!==i.e&&p(r,"aria-label",i.e=d),a!==i.t&&p(r,"title",i.t=a),i},{e:void 0,t:void 0}),r})():null})(),null),l(o,(()=>{var n=g(()=>!!e.model);return()=>n()?g(()=>!!e.model.startsWith("custom:"))()?`custom:${t(e.model)??"Custom"}/${F(e.model)}`:L(e.model):"—"})(),null),l(o,(()=>{var n=g(()=>!!e.routing_tier);return()=>n()&&(()=>{var r=N();return l(r,()=>e.routing_tier),k(()=>y(r,`tier-badge tier-badge--${e.routing_tier}`)),r})()})(),null),l(o,(()=>{var n=g(()=>!!e.fallback_from_model);return()=>n()&&(()=>{var r=Re();return k(()=>p(r,"title",`Fallback from ${L(e.fallback_from_model)}`)),r})()})(),null),s})()}function Ge(e){return(()=>{var t=G();return l(t,()=>e!=null?S(e):"—"),t})()}function K(e){return(()=>{var t=P();return l(t,()=>e!=null?S(e):"—"),t})()}function We(e){const t=(e.cache_read_tokens??0)>0||(e.cache_creation_tokens??0)>0;return(()=>{var s=P();return l(s,()=>t?`Read: ${S(e.cache_read_tokens??0)} / Write: ${S(e.cache_creation_tokens??0)}`:"—"),s})()}function Je(e){return(()=>{var t=P();return l(t,(()=>{var s=g(()=>e.duration_ms!=null);return()=>s()?D(e.duration_ms):"—"})()),t})()}function Xe(e,t,s){return(()=>{var o=Fe();return l(o,u(b,{get when(){return e.error_message},get fallback(){return(()=>{var n=N();return l(n,(()=>{var r=g(()=>e.status==="fallback_error");return()=>r()&&u(z,{})})(),null),l(n,(()=>{var r=g(()=>e.status==="rate_limited");return()=>r()?u(X,{get href(){return`/agents/${encodeURIComponent(t)}/limits`},get children(){return E(e.status)}}):E(e.status)})(),null),k(()=>y(n,`status-badge status-badge--${e.status}`)),n})()},get children(){var n=Ae(),r=n.firstChild,i=r.nextSibling;return J(r,"click",e.status==="fallback_error"&&e.model&&s?()=>s(e.model):void 0,!0),l(r,(()=>{var d=g(()=>e.status==="fallback_error");return()=>d()&&u(z,{})})(),null),l(r,()=>E(e.status),null),l(i,()=>A(e.error_message)),k(d=>{var a=A(e.error_message),m=`status-badge status-badge--${e.status}`;return a!==d.e&&p(n,"aria-label",d.e=a),m!==d.t&&y(r,d.t=m),d},{e:void 0,t:void 0}),n}})),o})()}function W(e,t,s){switch(e){case"date":return Be(t);case"message":return Ue(t);case"cost":return He(t);case"totalTokens":return Ge(t.total_tokens);case"input":return K(t.input_tokens);case"output":return K(t.output_tokens);case"model":return qe(t,s.customProviderName);case"cache":return We(t);case"duration":return Je(t);case"status":return Xe(t,s.agentName,s.onFallbackErrorClick)}}T(["click"]);var Qe=c('<svg xmlns=http://www.w3.org/2000/svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><polyline points="6 9 12 15 18 9">'),Ve=c("<tr><td class=msg-detail__chevron-cell><button>"),Ye=c("<tr class=msg-detail__row><td class=msg-detail__cell>"),Ze=c("<tr>"),et=c("<th class=msg-detail__chevron-th>"),tt=c("<table class=data-table><thead><tr></tr></thead><tbody>"),lt=c("<th>");function rt(){return Qe()}function at(e){const[t,s]=U(!1),o=()=>e.columns.length+1,n={agentName:e.tableProps.agentName,customProviderName:e.tableProps.customProviderName,onFallbackErrorClick:e.tableProps.onFallbackErrorClick};return[(()=>{var r=Ve(),i=r.firstChild,d=i.firstChild;return l(r,u(C,{get each(){return e.columns},children:a=>W(a,e.item,n)}),i),d.$$click=()=>s(!t()),l(d,u(rt,{})),k(a=>{var m=e.rowId,v=t()?"msg-row--expanded":void 0,_=`msg-detail__chevron-btn${t()?" msg-detail__chevron-btn--open":""}`,f=t(),h=t()?"Collapse details":"Expand details",$=t()?"Collapse details":"Expand details";return m!==a.e&&p(r,"id",a.e=m),v!==a.t&&y(r,a.t=v),_!==a.a&&y(d,a.a=_),f!==a.o&&p(d,"aria-expanded",a.o=f),h!==a.i&&p(d,"aria-label",a.i=h),$!==a.n&&p(d,"title",a.n=$),a},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})(),u(b,{get when(){return t()},get children(){var r=Ye(),i=r.firstChild;return l(i,u(Se,{get messageId(){return e.item.id}})),k(()=>p(i,"colspan",o())),r}})]}function nt(e){const t={agentName:e.tableProps.agentName,customProviderName:e.tableProps.customProviderName,onFallbackErrorClick:e.tableProps.onFallbackErrorClick};return(()=>{var s=Ze();return l(s,u(C,{get each(){return e.columns},children:o=>W(o,e.item,t)})),k(()=>p(s,"id",e.rowId)),s})()}function $t(e){return(()=>{var t=tt(),s=t.firstChild,o=s.firstChild,n=s.nextSibling;return l(o,u(C,{get each(){return e.columns},children:r=>(()=>{var i=lt();return l(i,()=>je(r,e.showHeaderTooltips)),i})()}),null),l(o,u(b,{get when(){return e.expandable},get children(){return et()}}),null),l(n,u(C,{get each(){return e.items},children:r=>e.expandable?u(at,{item:r,get columns(){return e.columns},tableProps:e,get rowId(){return g(()=>!!e.rowIdPrefix)()?`${e.rowIdPrefix}${r.id}`:void 0}}):u(nt,{item:r,get columns(){return e.columns},tableProps:e,get rowId(){return g(()=>!!e.rowIdPrefix)()?`${e.rowIdPrefix}${r.id}`:void 0}})})),t})()}T(["click"]);var st=c("<div class=custom-select__dropdown role=listbox>"),ot=c('<div class=custom-select><button class=custom-select__trigger type=button aria-haspopup=listbox><span class=custom-select__value></span><svg class=custom-select__chevron width=12 height=12 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="m6 9 6 6 6-6">'),it=c("<button class=custom-select__option type=button role=option>");const ft=e=>{const[t,s]=U(!1);let o;const n=()=>e.options.find(a=>a.value===e.value)?.label??e.placeholder??"Select...",r=d=>{o&&!o.contains(d.target)&&s(!1)},i=d=>{d.key==="Escape"&&s(!1)};return typeof document<"u"&&(document.addEventListener("click",r),document.addEventListener("keydown",i),Q(()=>{document.removeEventListener("click",r),document.removeEventListener("keydown",i)})),(()=>{var d=ot(),a=d.firstChild,m=a.firstChild,v=o;return typeof v=="function"?V(v,d):o=d,a.$$click=()=>s(!t()),l(m,n),l(d,u(b,{get when(){return t()},get children(){var _=st();return l(_,u(C,{get each(){return e.options},children:f=>(()=>{var h=it();return h.$$click=()=>{e.onChange(f.value),s(!1)},l(h,()=>f.label),k($=>{var w=e.value===f.value,R=e.value===f.value;return w!==$.e&&h.classList.toggle("custom-select__option--selected",$.e=w),R!==$.t&&p(h,"aria-selected",$.t=R),$},{e:void 0,t:void 0}),h})()})),_}}),null),k(_=>{var f=!!t(),h=t(),$=e.label??n();return f!==_.e&&a.classList.toggle("custom-select__trigger--open",_.e=f),h!==_.t&&p(a,"aria-expanded",_.t=h),$!==_.a&&p(a,"aria-label",_.a=$),_},{e:void 0,t:void 0,a:void 0}),d})()};T(["click"]);var dt=c('<div class="modal-overlay setup-modal__overlay"><div class=modal-card role=dialog aria-modal=true aria-labelledby=setup-modal-title style=max-width:600px><div class=setup-modal__header><div class=modal-card__title id=setup-modal-title>Set up agent: <em></em></div><button class=modal__close aria-label=Close><svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><p class=modal-card__desc>Add Manifest as a model provider, then connect at least one LLM so routing works.</p><div class=setup-modal__nav><button class=setup-modal__next>Done');const bt=e=>{const[t,{refetch:s}]=j(()=>e.open?e.agentName:null,r=>r?ee(r):null),o=()=>{const r=t()?.pluginEndpoint;return r||(window.location.hostname==="app.manifest.build"?"https://app.manifest.build/v1":`${window.location.origin}/v1`)},n=()=>{e.onDone?.(),e.onClose(),e.onGoToRouting?.()};return u(b,{get when(){return e.open},get children(){var r=dt(),i=r.firstChild,d=i.firstChild,a=d.firstChild,m=a.firstChild,v=m.nextSibling,_=a.nextSibling,f=d.nextSibling,h=f.nextSibling,$=h.firstChild;return r.$$keydown=w=>{w.key==="Escape"&&e.onClose()},r.$$click=w=>{w.target===w.currentTarget&&e.onClose()},l(v,()=>e.agentName),_.$$click=()=>e.onClose(),l(i,u(b,{get when(){return!t.error||!!e.apiKey},get fallback(){return u(te,{get error(){return t.error},title:"Could not load API key",message:"Failed to fetch your agent's API key. Please try again.",onRetry:s})},get children(){return u(se,{get apiKey(){return e.apiKey??t()?.apiKey??null},get keyPrefix(){return t()?.keyPrefix??null},get baseUrl(){return o()}})}}),h),$.$$click=n,r}})};T(["click","keydown"]);const pt=["date","message","cost","model","totalTokens","status"],kt=["date","message","cost","totalTokens","input","output","model","cache","duration","status"];export{pt as C,kt as D,$t as M,ft as S,bt as a,vt as g};
@@ -1 +0,0 @@
1
- .setup-modal__overlay{background:#fbf9f3b3;backdrop-filter:blur(8px)}.dark .setup-modal__overlay{background:#000000b3}.setup-modal__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--gap-sm)}.setup-modal__nav{display:flex;align-items:center;justify-content:flex-end;margin-top:var(--gap-lg)}.setup-modal__nav .modal-card__back-link{justify-content:flex-start;width:auto}.setup-modal__next-hint{font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))}.setup-modal__next{display:inline-flex;align-items:center;justify-content:center;height:2.25rem;padding:0 1rem;border:none;border-radius:var(--radius);background:hsl(var(--foreground));color:hsl(var(--background));font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-family);cursor:pointer;transition:opacity var(--transition-fast)}.setup-modal__next:hover{opacity:.85}.setup-step-providers{margin:0 -32px;border-top:1px solid hsl(var(--border))}.setup-step-providers .provider-modal__view{max-height:380px;overflow-y:auto}.waiting-banner{display:flex;align-items:center;gap:var(--gap-sm);padding:12px 16px;margin-bottom:var(--gap-lg);background:hsl(var(--chart-1) / .08);border:1px solid hsl(var(--chart-1) / .2);border-radius:var(--radius);color:hsl(var(--muted-foreground));font-size:var(--font-size-sm);line-height:1.5}.waiting-banner i{flex-shrink:0;color:hsl(var(--chart-1));font-size:18px}.waiting-banner p{margin:0}.waiting-banner--success{border-color:hsl(var(--success) / .3);background:hsl(var(--success) / .06)}.waiting-banner--success i{color:hsl(var(--success))}.tier-badge--fallback{background:#f59f0a26;color:#c47f08}.demo-dashboard{opacity:.5;pointer-events:none;user-select:none}
@@ -1 +0,0 @@
1
- const t={anthropic:"https://console.anthropic.com/settings/keys",deepseek:"https://platform.deepseek.com/api_keys",gemini:"https://aistudio.google.com/apikey",minimax:"https://platform.minimax.io/docs/api-reference/api-overview",mistral:"https://console.mistral.ai/api-keys/",moonshot:"https://platform.moonshot.ai/",openai:"https://platform.openai.com/api-keys",openrouter:"https://openrouter.ai/keys",qwen:"https://www.alibabacloud.com/help/en/model-studio/developer-reference/get-api-key",xai:"https://docs.x.ai/docs/api-reference",zai:"https://z.ai/manage-apikey/apikey-list"},o=e=>t[e],i={resend:"https://resend.com/api-keys",mailgun:"https://app.mailgun.com/app/account/security/api_keys",sendgrid:"https://app.sendgrid.com/settings/api_keys"},s=e=>i[e];export{s as a,o as g};
@@ -1 +0,0 @@
1
- import{e as i,q as t,B as n}from"./index-C4Qw7vZo.js";function u(e){return i(`/routing/${encodeURIComponent(e)}/status`)}function a(e){return i(`/routing/${encodeURIComponent(e)}/providers`)}function p(e,o){return t(`${n}/routing/${encodeURIComponent(e)}/providers`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})}function m(e){return t(`${n}/routing/${encodeURIComponent(e)}/providers/deactivate-all`,{method:"POST"})}function l(e,o,r){const s=`${n}/routing/${encodeURIComponent(e)}/providers/${encodeURIComponent(o)}`,d=r?`${s}?authType=${r}`:s;return t(d,{method:"DELETE"})}function $(e){return t(`${n}/routing/${encodeURIComponent(e)}/copilot/device-code`,{method:"POST"})}async function C(e,o){const r=await fetch(`${n}/routing/${encodeURIComponent(e)}/copilot/poll-token`,{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:o})});if(!r.ok)throw new Error(`Poll failed: ${r.status}`);return r.json()}function f(e){return i(`/routing/${encodeURIComponent(e)}/tiers`)}function g(e,o,r,s,d){return t(`${n}/routing/${encodeURIComponent(e)}/tiers/${encodeURIComponent(o)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,provider:s,...d&&{authType:d}})})}function U(e,o){return t(`${n}/routing/${encodeURIComponent(e)}/tiers/${encodeURIComponent(o)}`,{method:"DELETE"})}function R(e){return t(`${n}/routing/${encodeURIComponent(e)}/tiers/reset-all`,{method:"POST"})}function h(e,o,r){return t(`${n}/routing/${encodeURIComponent(e)}/tiers/${encodeURIComponent(o)}/fallbacks`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:r})})}function I(e,o){return t(`${n}/routing/${encodeURIComponent(e)}/tiers/${encodeURIComponent(o)}/fallbacks`,{method:"DELETE"})}function T(e){return i(`/routing/${encodeURIComponent(e)}/available-models`)}function v(e){return t(`${n}/routing/${encodeURIComponent(e)}/refresh-models`,{method:"POST"})}function P(e){return i(`/routing/${encodeURIComponent(e)}/custom-providers`)}function y(e,o){return t(`${n}/routing/${encodeURIComponent(e)}/custom-providers`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})}function S(e,o,r){return t(`${n}/routing/${encodeURIComponent(e)}/custom-providers/${encodeURIComponent(o)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}function b(e,o){return t(`${n}/routing/${encodeURIComponent(e)}/custom-providers/${encodeURIComponent(o)}`,{method:"DELETE"})}export{u as a,l as b,y as c,b as d,$ as e,C as f,P as g,p as h,I as i,m as j,R as k,f as l,T as m,a as n,g as o,v as p,U as r,h as s,S as u};
@@ -1 +0,0 @@
1
- import{e as v}from"./index-C4Qw7vZo.js";import{h as r,B as n,s as p,t as l}from"./vendor-C-Y5oNOq.js";function D(t="24h",i){return v("/overview",{range:t,...i?{agent_name:i}:{}})}function W(){return v("/health")}function N(){return v("/model-prices")}var w=l('<svg viewBox="0 0 24 24"fill=currentColor xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z">'),k=l('<svg viewBox="0 0 24 24"fill=currentColor fill-rule=evenodd xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z">'),x=l('<svg viewBox="0 0 24 24"fill=#4285f4 xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z">'),P=l('<svg viewBox="0 0 24 24"fill=currentColor fill-rule=evenodd xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z">'),M=l('<svg viewBox="0 0 24 24"fill=#4D6BFE xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z">'),y=l('<svg viewBox="0 0 24 24"xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M3.428 3.4h3.429v3.428H3.428V3.4zm13.714 0h3.43v3.428h-3.43V3.4z"fill=#F7D046></path><path d="M3.428 6.828h6.857v3.429H3.429V6.828zm10.286 0h6.857v3.429h-6.857V6.828z"fill=#FFAF00></path><path d="M3.428 10.258h17.144v3.428H3.428v-3.428z"fill=#FF8205></path><path d="M3.428 13.686h3.429v3.428H3.428v-3.428zm6.858 0h3.429v3.428h-3.429v-3.428zm6.856 0h3.43v3.428h-3.43v-3.428z"fill=#FA500F></path><path d="M0 17.114h10.286v3.429H0v-3.429zm13.714 0H24v3.429H13.714v-3.429z"fill=#E10500>'),z=l('<svg viewBox="0 0 24 24"fill=currentColor fill-rule=evenodd xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815">'),L=l('<svg viewBox="0 0 24 24"fill=#FF6003 fill-rule=evenodd xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M24 14.014c-2.8 1.512-5.62 2.896-8.759 3.524-.7.139-1.476.139-2.187.043-.678-.085-1.017-.682-.776-1.31.23-.585.536-1.181.93-1.671.852-1.065 1.814-2.034 2.678-3.088a15.75 15.75 0 001.422-2.054c.306-.511.164-1.129-.372-1.384-.897-.437-1.859-.745-2.81-1.075-.11-.043-.274.074-.492.149.273.244.47.425.743.67-2.821.48-5.49 1.16-8.08 2.098-.012.053-.033.095-.023.117.383.585.208 1.032-.35 1.394a2.365 2.365 0 00-.568.522c1.706.5 3.226.213 4.68-.735-.087-.127-.175-.244-.262-.372.546.096.874.394.918.862.011.107-.054.213-.087.32-.077-.086-.175-.17-.24-.267-.045-.064-.056-.138-.088-.245-1.728 1.15-3.587 1.438-5.632.842 0 .404-.022.745.011 1.075.022.287-.098.415-.36.564-.591.362-1.204.735-1.696 1.214-.59.585-.371 1.299.427 1.597.907.34 1.859.35 2.81.234 1.126-.139 2.23-.32 3.456-.49-1.433.67-2.844 1.14-4.33 1.33-1.04.14-2.078.214-3.106-.084-1.476-.415-2.133-1.501-1.75-2.96.361-1.363 1.236-2.449 2.176-3.45 3.139-3.332 7.108-5.024 11.7-5.365 1.072-.074 2.155.064 3.16.511 1.411.639 2.002 1.99 1.313 3.354-.448.905-1.072 1.735-1.695 2.555-.612.809-1.301 1.554-1.946 2.331-.186.234-.361.48-.503.745-.274.5-.088.83.492.778 1.213-.118 2.45-.213 3.62-.511 1.716-.437 3.389-1.054 5.084-1.597.175-.043.339-.107.492-.17z">'),C=l('<svg viewBox="0 0 24 24"fill=currentColor fill-rule=evenodd xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M1.052 16.916l9.539 2.552a21.007 21.007 0 00.06 2.033l5.956 1.593a11.997 11.997 0 01-5.586.865l-.18-.016-.044-.004-.084-.009-.094-.01a11.605 11.605 0 01-.157-.02l-.107-.014-.11-.016a11.962 11.962 0 01-.32-.051l-.042-.008-.075-.013-.107-.02-.07-.015-.093-.019-.075-.016-.095-.02-.097-.023-.094-.022-.068-.017-.088-.022-.09-.024-.095-.025-.082-.023-.109-.03-.062-.02-.084-.025-.093-.028-.105-.034-.058-.019-.08-.026-.09-.031-.066-.024a6.293 6.293 0 01-.044-.015l-.068-.025-.101-.037-.057-.022-.08-.03-.087-.035-.088-.035-.079-.032-.095-.04-.063-.028-.063-.027a5.655 5.655 0 01-.041-.018l-.066-.03-.103-.047-.052-.024-.096-.046-.062-.03-.084-.04-.086-.044-.093-.047-.052-.027-.103-.055-.057-.03-.058-.032a6.49 6.49 0 01-.046-.026l-.094-.053-.06-.034-.051-.03-.072-.041-.082-.05-.093-.056-.052-.032-.084-.053-.061-.039-.079-.05-.07-.047-.053-.035a7.785 7.785 0 01-.054-.036l-.044-.03-.044-.03a6.066 6.066 0 01-.04-.028l-.057-.04-.076-.054-.069-.05-.074-.054-.056-.042-.076-.057-.076-.059-.086-.067-.045-.035-.064-.052-.074-.06-.089-.073-.046-.039-.046-.039a7.516 7.516 0 01-.043-.037l-.045-.04-.061-.053-.07-.062-.068-.06-.062-.058-.067-.062-.053-.05-.088-.084a13.28 13.28 0 01-.099-.097l-.029-.028-.041-.042-.069-.07-.05-.051-.05-.053a6.457 6.457 0 01-.168-.179l-.08-.088-.062-.07-.071-.08-.042-.049-.053-.062-.058-.068-.046-.056a7.175 7.175 0 01-.027-.033l-.045-.055-.066-.082-.041-.052-.05-.064-.02-.025a11.99 11.99 0 01-1.44-2.402zm-1.02-5.794l11.353 3.037a20.468 20.468 0 00-.469 2.011l10.817 2.894a12.076 12.076 0 01-1.845 2.005L.657 15.923l-.016-.046-.035-.104a11.965 11.965 0 01-.05-.153l-.007-.023a11.896 11.896 0 01-.207-.741l-.03-.126-.018-.08-.021-.097-.018-.081-.018-.09-.017-.084-.018-.094c-.026-.141-.05-.283-.071-.426l-.017-.118-.011-.083-.013-.102a12.01 12.01 0 01-.019-.161l-.005-.047a12.12 12.12 0 01-.034-2.145zm1.593-5.15l11.948 3.196c-.368.605-.705 1.231-1.01 1.875l11.295 3.022c-.142.82-.368 1.612-.668 2.365l-11.55-3.09L.124 10.26l.015-.1.008-.049.01-.067.015-.087.018-.098c.026-.148.056-.295.088-.442l.028-.124.02-.085.024-.097c.022-.09.045-.18.07-.268l.028-.102.023-.083.03-.1.025-.082.03-.096.026-.082.031-.095a11.896 11.896 0 011.01-2.232zm4.442-4.4L17.352 4.59a20.77 20.77 0 00-1.688 1.721l7.823 2.093c.267.852.442 1.744.513 2.665L2.106 5.213l.045-.065.027-.04.04-.055.046-.065.055-.076.054-.072.064-.086.05-.065.057-.073.055-.07.06-.074.055-.069.065-.077.054-.066.066-.077.053-.06.072-.082.053-.06.067-.074.054-.058.073-.078.058-.06.063-.067.168-.17.1-.098.059-.056.076-.071a12.084 12.084 0 012.272-1.677zM12.017 0h.097l.082.001.069.001.054.002.068.002.046.001.076.003.047.002.06.003.054.002.087.005.105.007.144.011.088.007.044.004.077.008.082.008.047.005.102.012.05.006.108.014.081.01.042.006.065.01.207.032.07.012.065.011.14.026.092.018.11.022.046.01.075.016.041.01L14.7.3l.042.01.065.015.049.012.071.017.096.024.112.03.113.03.113.032.05.015.07.02.078.024.073.023.05.016.05.016.076.025.099.033.102.036.048.017.064.023.093.034.11.041.116.045.1.04.047.02.06.024.041.018.063.026.04.018.057.025.11.048.1.046.074.035.075.036.06.028.092.046.091.045.102.052.053.028.049.026.046.024.06.033.041.022.052.029.088.05.106.06.087.051.057.034.053.032.096.059.088.055.098.062.036.024.064.041.084.056.04.027.062.042.062.043.023.017c.054.037.108.075.161.114l.083.06.065.048.056.043.086.065.082.064.04.03.05.041.086.069.079.065.085.071c.712.6 1.353 1.283 1.909 2.031L7.222.994l.062-.027.065-.028.081-.034.086-.035c.113-.045.227-.09.341-.131l.096-.035.093-.033.084-.03.096-.031c.087-.03.176-.058.264-.085l.091-.027.086-.025.102-.03.085-.023.1-.026L9.04.37l.09-.023.091-.022.095-.022.09-.02.098-.021.091-.02.095-.018.092-.018.1-.018.091-.016.098-.017.092-.014.097-.015.092-.013.102-.013.091-.012.105-.012.09-.01.105-.01c.093-.01.186-.018.28-.024l.106-.008.09-.005.11-.006.093-.004.1-.004.097-.002.099-.002.197-.002z">'),_=l('<svg viewBox="0 0 24 24"fill=#E73562 xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M11.43 3.92a.86.86 0 1 0-1.718 0v14.236a1.999 1.999 0 0 1-3.997 0V9.022a.86.86 0 1 0-1.718 0v3.87a1.999 1.999 0 0 1-3.997 0V11.49a.57.57 0 0 1 1.139 0v1.404a.86.86 0 0 0 1.719 0V9.022a1.999 1.999 0 0 1 3.997 0v9.134a.86.86 0 0 0 1.719 0V3.92a1.998 1.998 0 1 1 3.996 0v11.788a.57.57 0 1 1-1.139 0zm10.572 3.105a2 2 0 0 0-1.999 1.997v7.63a.86.86 0 0 1-1.718 0V3.923a1.999 1.999 0 0 0-3.997 0v16.16a.86.86 0 0 1-1.719 0V18.08a.57.57 0 1 0-1.138 0v2a1.998 1.998 0 0 0 3.996 0V3.92a.86.86 0 0 1 1.719 0v12.73a1.999 1.999 0 0 0 3.996 0V9.023a.86.86 0 1 1 1.72 0v6.686a.57.57 0 0 0 1.138 0V9.022a2 2 0 0 0-1.998-1.997">'),O=l('<svg viewBox="0 0 24 24"fill=currentColor xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M4.5 4.5h15v3.75H9.375L19.5 16.5v3H4.5v-3.75h10.125L4.5 7.5z">'),$=l('<svg viewBox="0 0 24 24"fill=#6366f1 xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M16.778 1.844v1.919q-.569-.026-1.138-.032-.708-.008-1.415.037c-1.93.126-4.023.728-6.149 2.237-2.911 2.066-2.731 1.95-4.14 2.75-.396.223-1.342.574-2.185.798-.841.225-1.753.333-1.751.333v4.229s.768.108 1.61.333c.842.224 1.789.575 2.185.799 1.41.798 1.228.683 4.14 2.75 2.126 1.509 4.22 2.11 6.148 2.236.88.058 1.716.041 2.555.005v1.918l7.222-4.168-7.222-4.17v2.176c-.86.038-1.611.065-2.278.021-1.364-.09-2.417-.357-3.979-1.465-2.244-1.593-2.866-2.027-3.68-2.508.889-.518 1.449-.906 3.822-2.59 1.56-1.109 2.614-1.377 3.978-1.466.667-.044 1.418-.017 2.278.02v2.176L24 6.014Z">'),G=l('<svg viewBox="0 0 24 24"fill=currentColor fill-rule=evenodd xmlns=http://www.w3.org/2000/svg aria-hidden=true><path d="M7.905 1.09c.216.085.411.225.588.41.295.306.544.744.734 1.263.191.522.315 1.1.362 1.68a5.054 5.054 0 012.049-.636l.051-.004c.87-.07 1.73.087 2.48.474.101.053.2.11.297.17.05-.569.172-1.134.36-1.644.19-.52.439-.957.733-1.264a1.67 1.67 0 01.589-.41c.257-.1.53-.118.796-.042.401.114.745.368 1.016.737.248.337.434.769.561 1.287.23.934.27 2.163.115 3.645l.053.04.026.019c.757.576 1.284 1.397 1.563 2.35.435 1.487.216 3.155-.534 4.088l-.018.021.002.003c.417.762.67 1.567.724 2.4l.002.03c.064 1.065-.2 2.137-.814 3.19l-.007.01.01.024c.472 1.157.62 2.322.438 3.486l-.006.039a.651.651 0 01-.747.536.648.648 0 01-.54-.742c.167-1.033.01-2.069-.48-3.123a.643.643 0 01.04-.617l.004-.006c.604-.924.854-1.83.8-2.72-.046-.779-.325-1.544-.8-2.273a.644.644 0 01.18-.886l.009-.006c.243-.159.467-.565.58-1.12a4.229 4.229 0 00-.095-1.974c-.205-.7-.58-1.284-1.105-1.683-.595-.454-1.383-.673-2.38-.61a.653.653 0 01-.632-.371c-.314-.665-.772-1.141-1.343-1.436a3.288 3.288 0 00-1.772-.332c-1.245.099-2.343.801-2.67 1.686a.652.652 0 01-.61.425c-1.067.002-1.893.252-2.497.703-.522.39-.878.935-1.066 1.588a4.07 4.07 0 00-.068 1.886c.112.558.331 1.02.582 1.269l.008.007c.212.207.257.53.109.785-.36.622-.629 1.549-.673 2.44-.05 1.018.186 1.902.719 2.536l.016.019a.643.643 0 01.095.69c-.576 1.236-.753 2.252-.562 3.052a.652.652 0 01-1.269.298c-.243-1.018-.078-2.184.473-3.498l.014-.035-.008-.012a4.339 4.339 0 01-.598-1.309l-.005-.019a5.764 5.764 0 01-.177-1.785c.044-.91.278-1.842.622-2.59l.012-.026-.002-.002c-.293-.418-.51-.953-.63-1.545l-.005-.024a5.352 5.352 0 01.093-2.49c.262-.915.777-1.701 1.536-2.269.06-.045.123-.09.186-.132-.159-1.493-.119-2.73.112-3.67.127-.518.314-.95.562-1.287.27-.368.614-.622 1.015-.737.266-.076.54-.059.797.042zm4.116 9.09c.936 0 1.8.313 2.446.855.63.527 1.005 1.235 1.005 1.94 0 .888-.406 1.58-1.133 2.022-.62.375-1.451.557-2.403.557-1.009 0-1.871-.259-2.493-.734-.617-.47-.963-1.13-.963-1.845 0-.707.398-1.417 1.056-1.946.668-.537 1.55-.849 2.485-.849zm0 .896a3.07 3.07 0 00-1.916.65c-.461.37-.722.835-.722 1.25 0 .428.21.829.61 1.134.455.347 1.124.548 1.943.548.799 0 1.473-.147 1.932-.426.463-.28.7-.686.7-1.257 0-.423-.246-.89-.683-1.256-.484-.405-1.14-.643-1.864-.643zm.662 1.21l.004.004c.12.151.095.37-.056.49l-.292.23v.446a.375.375 0 01-.376.373.375.375 0 01-.376-.373v-.46l-.271-.218a.347.347 0 01-.052-.49.353.353 0 01.494-.051l.215.172.22-.174a.353.353 0 01.49.051zm-5.04-1.919c.478 0 .867.39.867.871a.87.87 0 01-.868.871.87.87 0 01-.867-.87.87.87 0 01.867-.872zm8.706 0c.48 0 .868.39.868.871a.87.87 0 01-.868.871.87.87 0 01-.867-.87.87.87 0 01.867-.872zM7.44 2.3l-.003.002a.659.659 0 00-.285.238l-.005.006c-.138.189-.258.467-.348.832-.17.692-.216 1.631-.124 2.782.43-.128.899-.208 1.404-.237l.01-.001.019-.034c.046-.082.095-.161.148-.239.123-.771.022-1.692-.253-2.444-.134-.364-.297-.65-.453-.813a.628.628 0 00-.107-.09L7.44 2.3zm9.174.04l-.002.001a.628.628 0 00-.107.09c-.156.163-.32.45-.453.814-.29.794-.387 1.776-.23 2.572l.058.097.008.014h.03a5.184 5.184 0 011.466.212c.086-1.124.038-2.043-.128-2.722-.09-.365-.21-.643-.349-.832l-.004-.006a.659.659 0 00-.285-.239h-.004z">'),A=l("<img style=display:block;object-fit:contain>");function U(t,i=20){const o={width:`${i}px`,height:`${i}px`};switch(t){case"openai":return(()=>{var e=w();return r(a=>n(e,o,a)),e})();case"anthropic":return(()=>{var e=k();return r(a=>n(e,o,a)),e})();case"gemini":return(()=>{var e=x();return r(a=>n(e,o,a)),e})();case"copilot":return(()=>{var e=P();return r(a=>n(e,o,a)),e})();case"deepseek":return(()=>{var e=M();return r(a=>n(e,o,a)),e})();case"mistral":return(()=>{var e=y();return r(a=>n(e,o,a)),e})();case"xai":return(()=>{var e=z();return r(a=>n(e,o,a)),e})();case"qwen":return(()=>{var e=L();return r(a=>n(e,o,a)),e})();case"moonshot":return(()=>{var e=C();return r(a=>n(e,o,a)),e})();case"minimax":return(()=>{var e=_();return r(a=>n(e,o,a)),e})();case"zai":return(()=>{var e=O();return r(a=>n(e,o,a)),e})();case"openrouter":return(()=>{var e=$();return r(a=>n(e,o,a)),e})();case"ollama":return(()=>{var e=G();return r(a=>n(e,o,a)),e})();default:return null}}const h={cohere:"/icons/cohere.svg",gemini:"/icons/gemini.svg",nvidia:"/icons/nvidia.svg",qwen:"/icons/qwen.svg","kilo code":"/icons/kilocode.jpg",kilocode:"/icons/kilocode.jpg"},T=[[/cohere\.ai/i,"cohere"],[/generativelanguage\.googleapis\.com/i,"gemini"],[/kilo\.ai/i,"kilo code"]],S=[[/gemini/i,"gemini"],[/^qwen\//i,"qwen"],[/^nvidia\//i,"nvidia"],[/^stepfun\//i,"stepfun"],[/^corethink/i,"corethink"]];function I(t,i,o){if(o){for(const[a,s]of S)if(a.test(o)){const u=h[s];if(u)return u;break}}const e=h[t.toLowerCase()];if(e)return e;if(i){for(const[a,s]of T)if(a.test(i))return h[s]??null}return null}function Q(t,i=16,o,e){const a=I(t,o,e);return a?(()=>{var s=A();return p(s,"src",a),p(s,"alt",t),p(s,"width",i),p(s,"height",i),s})():null}const d=[{id:"qwen",name:"Alibaba",color:"#FF6003",initial:"Al",subtitle:"Qwen3, Qwen2.5, QwQ",keyPrefix:"sk-",minKeyLength:30,keyPlaceholder:"sk-...",models:[]},{id:"anthropic",name:"Anthropic",color:"#d97757",initial:"A",subtitle:"Claude Opus 4, Sonnet 4.5, Haiku",keyPrefix:"sk-ant-",minKeyLength:50,keyPlaceholder:"sk-ant-...",supportsSubscription:!0,subscriptionLabel:"Claude Max / Pro subscription",subscriptionAuthMode:"token",subscriptionKeyPlaceholder:"Paste your setup-token",subscriptionCommand:"claude setup-token",models:[]},{id:"deepseek",name:"DeepSeek",color:"#4d6bfe",initial:"D",subtitle:"DeepSeek V3, R1",keyPrefix:"sk-",minKeyLength:30,keyPlaceholder:"sk-...",models:[]},{id:"copilot",name:"GitHub Copilot",color:"#000000",initial:"GH",subtitle:"Claude, GPT, Gemini via Copilot",keyPrefix:"",minKeyLength:0,keyPlaceholder:"",supportsSubscription:!0,subscriptionLabel:"GitHub Copilot subscription",subscriptionAuthMode:"device_code",deviceLogin:!0,subscriptionOnly:!0,models:[{label:"Claude Opus 4.6",value:"copilot/claude-opus-4.6"},{label:"Claude Sonnet 4.6",value:"copilot/claude-sonnet-4.6"},{label:"Claude Haiku 4.5",value:"copilot/claude-haiku-4.5"},{label:"GPT-5.4",value:"copilot/gpt-5.4"},{label:"GPT-5.2 Codex",value:"copilot/gpt-5.2-codex"},{label:"GPT-5 Mini",value:"copilot/gpt-5-mini"},{label:"GPT-4.1",value:"copilot/gpt-4.1"},{label:"GPT-4o",value:"copilot/gpt-4o"},{label:"GPT-4o Mini",value:"copilot/gpt-4o-mini"},{label:"Gemini 3.1 Pro",value:"copilot/gemini-3.1-pro-preview"},{label:"Grok Code Fast 1",value:"copilot/grok-code-fast-1"}]},{id:"gemini",name:"Google",color:"#4285f4",initial:"G",subtitle:"Gemini 2.5, Gemini 2.0 Flash",keyPrefix:"AIza",minKeyLength:39,keyPlaceholder:"AIza...",models:[]},{id:"minimax",name:"MiniMax",color:"#E73562",initial:"Mm",subtitle:"MiniMax M2.5, M1, M2",keyPrefix:"sk-",minKeyLength:30,keyPlaceholder:"sk-...",supportsSubscription:!0,subscriptionLabel:"MiniMax Coding Plan",subscriptionAuthMode:"device_code",models:[]},{id:"mistral",name:"Mistral",color:"#f97316",initial:"M",subtitle:"Mistral Large, Codestral, Pixtral",keyPrefix:"",minKeyLength:32,keyPlaceholder:"API key",models:[]},{id:"moonshot",name:"Moonshot",color:"#1a1a2e",initial:"Mo",subtitle:"Kimi k2, Moonshot v1",keyPrefix:"sk-",minKeyLength:30,keyPlaceholder:"sk-...",models:[]},{id:"ollama",name:"Ollama",color:"#1a1a1a",initial:"Ol",subtitle:"Llama, Mistral, Gemma, and more",keyPrefix:"",minKeyLength:0,keyPlaceholder:"",noKeyRequired:!0,models:[],localOnly:!0},{id:"openai",name:"OpenAI",color:"#10a37f",initial:"O",subtitle:"GPT-4o, GPT-4.1, o3, o4",keyPrefix:"sk-",minKeyLength:50,keyPlaceholder:"sk-...",supportsSubscription:!0,subscriptionLabel:"ChatGPT Plus/Pro/Team",subscriptionAuthMode:"popup_oauth",models:[{label:"GPT-4o",value:"gpt-4o"},{label:"GPT-4o Mini",value:"gpt-4o-mini"},{label:"GPT-4o (2024-11-20)",value:"gpt-4o-2024-11-20"},{label:"GPT-4.1",value:"gpt-4.1"},{label:"GPT-4.1 Mini",value:"gpt-4.1-mini"},{label:"GPT-4.1 Nano",value:"gpt-4.1-nano"},{label:"GPT-4 Turbo",value:"gpt-4-turbo"},{label:"GPT-4 Turbo (2024-04-09)",value:"gpt-4-turbo-2024-04-09"},{label:"GPT-3.5 Turbo",value:"gpt-3.5-turbo"},{label:"o3",value:"o3"},{label:"o3 Mini",value:"o3-mini"},{label:"o4 Mini",value:"o4-mini"},{label:"o1",value:"o1"},{label:"o1 Mini",value:"o1-mini"},{label:"o1 Preview",value:"o1-preview"}]},{id:"openrouter",name:"OpenRouter",color:"#6366f1",initial:"OR",subtitle:"Auto-route to 300+ models",keyPrefix:"sk-or-",minKeyLength:60,keyPlaceholder:"sk-or-...",models:[]},{id:"xai",name:"xAI",color:"#555555",initial:"X",subtitle:"Grok 3, Grok 2",keyPrefix:"xai-",minKeyLength:50,keyPlaceholder:"xai-...",models:[]},{id:"zai",name:"Z.ai",color:"#2d2d2d",initial:"Z",subtitle:"GLM 5, GLM 4.7, GLM 4.5",keyPrefix:"",minKeyLength:30,keyPlaceholder:"API key",models:[]}],X=[{id:"simple",step:1,label:"Simple",desc:"Heartbeats, greetings, and low-cost tasks that any model can handle."},{id:"standard",step:2,label:"Standard",desc:"General-purpose requests that need a good balance of quality and cost."},{id:"complex",step:3,label:"Complex",desc:"Tasks requiring high quality, nuance, or multi-step reasoning."},{id:"reasoning",step:4,label:"Reasoning",desc:"Advanced reasoning, planning, and critical decision-making."}];function K(t){return d.find(i=>i.id===t)}function Z(t,i){if(t.noKeyRequired)return{valid:!0};const o=i.replace(/\s/g,"");return o?t.keyPrefix&&!o.startsWith(t.keyPrefix)?{valid:!1,error:`${t.name} keys start with "${t.keyPrefix}"`}:t.minKeyLength&&o.length<t.minKeyLength?{valid:!1,error:`Key is too short (minimum ${t.minKeyLength} characters)`}:{valid:!0}:{valid:!1,error:"API key is required"}}const R={anthropic:"sk-ant-oat"},E={openai:"sk-"};function J(t,i){const o=i.replace(/\s/g,"");if(!o)return{valid:!1,error:"Token is required"};if(o.length<10)return{valid:!1,error:"Token is too short (minimum 10 characters)"};const e=R[t.id];if(e&&!o.startsWith(e))return{valid:!1,error:`${t.name} subscription tokens start with "${e}"`};const a=E[t.id];return a&&o.startsWith(a)?{valid:!1,error:"This looks like an API key. Use the API Key tab instead."}:{valid:!0}}function g(t){return t.replace(/-/g," ").replace(/\b\w/g,i=>i.toUpperCase())}function Y(t,i){const o=K(t);if(!o)return i;const e=o.models.find(c=>c.value===i);if(e)return e.label;const a=i.replace(/-\d{8}$/,"");if(a!==i){const c=o.models.find(m=>m.value===a);if(c)return c.label}const s=o.models.find(c=>i.startsWith(c.value+"-"));if(s)return s.label;const u=i.indexOf("/");if(u!==-1){const c=i.substring(u+1);for(const m of d){const f=m.models.find(b=>b.value===c);if(f)return f.label}return g(c)}return g(i)}const F=[[/^openrouter\//,"openrouter"],[/^claude-/,"anthropic"],[/^gpt-|^o[134]-|^o[134] |^chatgpt-/,"openai"],[/^gemini-|^gemma-/,"gemini"],[/^deepseek-/,"deepseek"],[/^grok-/,"xai"],[/^mistral-|^codestral|^pixtral|^open-mistral/,"mistral"],[/^kimi-|^moonshot-/,"moonshot"],[/^minimax-/i,"minimax"],[/^glm-/,"zai"],[/^qwen[23]|^qwq-/,"qwen"],[/^copilot\//,"copilot"],[/^[a-z][\w-]*\//,"openrouter"]];function B(t){if(t.startsWith("custom:"))return"custom";if(!t.includes("/")&&/:/.test(t)&&!t.endsWith(":free"))return"ollama";const i=t.toLowerCase();for(const[o,e]of F)if(o.test(i))return e}const q=Object.freeze({anthropic:Object.freeze({supportsSubscription:!0,subscriptionLabel:"Claude Max / Pro subscription",subscriptionAuthMode:"token",subscriptionKeyPlaceholder:"Paste your setup-token",subscriptionCommand:"claude setup-token",subscriptionTokenPrefix:"sk-ant-oat",knownModels:Object.freeze(["claude-opus-4","claude-sonnet-4","claude-haiku-4"]),subscriptionCapabilities:Object.freeze({maxContextWindow:2e5,supportsPromptCaching:!1,supportsBatching:!1})}),openai:Object.freeze({supportsSubscription:!0,subscriptionLabel:"ChatGPT Plus/Pro/Team",subscriptionAuthMode:"popup_oauth",subscriptionOAuth:!0,knownModels:Object.freeze(["gpt-5.4","gpt-5.3-codex","gpt-5.2-codex","gpt-5.2","gpt-5.1-codex-max","gpt-5.1-codex"]),subscriptionCapabilities:Object.freeze({maxContextWindow:2e5,supportsPromptCaching:!1,supportsBatching:!1})}),minimax:Object.freeze({supportsSubscription:!0,subscriptionLabel:"MiniMax Coding Plan",subscriptionAuthMode:"device_code",knownModels:Object.freeze(["MiniMax-M2.5","MiniMax-M2.5-highspeed","MiniMax-M2.1","MiniMax-M2.1-highspeed","MiniMax-M2"]),subscriptionCapabilities:Object.freeze({maxContextWindow:2e5,supportsPromptCaching:!1,supportsBatching:!1})}),copilot:Object.freeze({supportsSubscription:!0,subscriptionLabel:"GitHub Copilot subscription",subscriptionAuthMode:"device_code",knownModels:Object.freeze(["copilot/claude-opus-4.6","copilot/claude-sonnet-4.6","copilot/claude-haiku-4.5","copilot/gpt-5.4","copilot/gpt-5.2-codex","copilot/gpt-5-mini","copilot/gpt-4.1","copilot/gpt-4o","copilot/gpt-4o-mini","copilot/gemini-3.1-pro-preview","copilot/grok-code-fast-1"]),subscriptionCapabilities:Object.freeze({maxContextWindow:2e5,supportsPromptCaching:!1,supportsBatching:!1})})});Object.freeze(Object.keys(q));function e0(t){if(t==null)return"—";const i=Number(t)*1e6;return i===0?"Free":i<.01?"< $0.01":i<1?`$${i.toFixed(3)}`:`$${i.toFixed(2)}`}const H={google:"gemini",alibaba:"qwen",copilot:"copilot",moonshot:"moonshot",kimi:"moonshot",meta:"meta",cohere:"cohere",ollama:"ollama",openrouter:"openrouter"};function t0(t){if(t.startsWith("custom:"))return t;const i=t.toLowerCase(),o=H[i];return d.find(e=>e.id===i||e.id===o||e.name.toLowerCase()===i)?.id}function i0(t){const i=B(t);if(i)return d.find(o=>o.id===i)?.name}function o0(t){return t.match(/^custom:[^/]+\/(.+)$/)?.[1]??t}export{d as P,X as S,i0 as a,e0 as b,Q as c,Z as d,N as e,W as f,D as g,Y as h,B as i,U as p,t0 as r,o0 as s,J as v};
@@ -1 +0,0 @@
1
- const y={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return st(this.context.count)},getNextContextId(){return st(this.context.count++)}};function st(e){const t=String(e),n=t.length-1;return y.context.id+(n?String.fromCharCode(96+n):"")+t}function ae(e){y.context=e}const gt=!1,Bt=(e,t)=>e===t,_=Symbol("solid-proxy"),mt=typeof Proxy=="function",Se=Symbol("solid-track"),Ee={equals:Bt};let fe=null,yt=St;const F=1,Oe=2,wt={owned:null,cleanups:null,context:null,owner:null},ke={};var p=null;let Me=null,Vt=null,S=null,I=null,D=null,Ne=0;function H(e,t){const n=S,r=p,s=e.length===0,o=t===void 0?r:t,i=s?wt:{owned:null,cleanups:null,context:o?o.context:null,owner:o},l=s?e:()=>e(()=>N(()=>de(i)));p=i,S=null;try{return U(l,!0)}finally{S=n,p=r}}function T(e,t){t=t?Object.assign({},Ee,t):Ee;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=s=>(typeof s=="function"&&(s=s(n.value)),Pt(n,s));return[At.bind(n),r]}function Kt(e,t,n){const r=me(e,t,!0,F);se(r)}function K(e,t,n){const r=me(e,t,!1,F);se(r)}function bt(e,t,n){yt=Yt;const r=me(e,t,!1,F);(!n||!n.render)&&(r.user=!0),D?D.push(r):se(r)}function E(e,t,n){n=n?Object.assign({},Ee,n):Ee;const r=me(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,se(r),At.bind(r)}function qt(e){return e&&typeof e=="object"&&"then"in e}function Ht(e,t,n){let r,s,o;typeof t=="function"?(r=e,s=t,o={}):(r=!0,s=e,o=t||{});let i=null,l=ke,c=null,u=!1,a="initialValue"in o,f=typeof r=="function"&&E(r);const d=new Set,[h,w]=(o.storage||T)(o.initialValue),[g,m]=T(void 0),[A,b]=T(void 0,{equals:!1}),[R,x]=T(a?"ready":"unresolved");y.context&&(c=y.getNextContextId(),o.ssrLoadFrom==="initial"?l=o.initialValue:y.load&&y.has(c)&&(l=y.load(c)));function C(L,v,k,$){return i===L&&(i=null,$!==void 0&&(a=!0),(L===l||v===l)&&o.onHydrated&&queueMicrotask(()=>o.onHydrated($,{value:v})),l=ke,B(v,k)),v}function B(L,v){U(()=>{v===void 0&&w(()=>L),x(v!==void 0?"errored":a?"ready":"unresolved"),m(v);for(const k of d.keys())k.decrement();d.clear()},!1)}function J(){const L=zt,v=h(),k=g();if(k!==void 0&&!i)throw k;return S&&S.user,v}function ie(L=!0){if(L!==!1&&u)return;u=!1;const v=f?f():r;if(v==null||v===!1){C(i,N(h));return}let k;const $=l!==ke?l:N(()=>{try{return s(v,{value:h(),refetching:L})}catch(P){k=P}});if(k!==void 0){C(i,void 0,Ae(k),v);return}else if(!qt($))return C(i,$,void 0,v),$;return i=$,"v"in $?($.s===1?C(i,$.v,void 0,v):C(i,void 0,Ae($.v),v),$):(u=!0,queueMicrotask(()=>u=!1),U(()=>{x(a?"refreshing":"pending"),b()},!1),$.then(P=>C($,P,void 0,v),P=>C($,void 0,Ae(P),v)))}Object.defineProperties(J,{state:{get:()=>R()},error:{get:()=>g()},loading:{get(){const L=R();return L==="pending"||L==="refreshing"}},latest:{get(){if(!a)return J();const L=g();if(L&&!i)throw L;return h()}}});let le=p;return f?Kt(()=>(le=p,ie(!1))):ie(!1),[J,{refetch:L=>$e(le,()=>ie(L)),mutate:w}]}function pt(e){return U(e,!1)}function N(e){if(S===null)return e();const t=S;S=null;try{return e()}finally{S=t}}function Qe(e,t,n){const r=Array.isArray(e);let s,o=n&&n.defer;return i=>{let l;if(r){l=Array(e.length);for(let u=0;u<e.length;u++)l[u]=e[u]()}else l=e();if(o)return o=!1,i;const c=N(()=>t(l,s,i));return s=l,c}}function mr(e){bt(()=>N(e))}function W(e){return p===null||(p.cleanups===null?p.cleanups=[e]:p.cleanups.push(e)),e}function Wt(e,t){fe||(fe=Symbol("error")),p=me(void 0,void 0,!0),p.context={...p.context,[fe]:[t]};try{return e()}catch(n){ye(n)}finally{p=p.owner}}function Fe(){return S}function xe(){return p}function $e(e,t){const n=p,r=S;p=e,S=null;try{return U(t,!0)}catch(s){ye(s)}finally{p=n,S=r}}function Gt(e){const t=S,n=p;return Promise.resolve().then(()=>{S=t,p=n;let r;return U(e,!1),S=p=null,r?r.done:void 0})}const[yr,wr]=T(!1);function Ze(e,t){const n=Symbol("context");return{id:n,Provider:Qt(n),defaultValue:e}}function Te(e){let t;return p&&p.context&&(t=p.context[e.id])!==void 0?t:e.defaultValue}function et(e){const t=E(e),n=E(()=>Be(t()));return n.toArray=()=>{const r=n();return Array.isArray(r)?r:r!=null?[r]:[]},n}let zt;function At(){if(this.sources&&this.state)if(this.state===F)se(this);else{const e=I;I=null,U(()=>ve(this),!1),I=e}if(S){const e=this.observers?this.observers.length:0;S.sources?(S.sources.push(this),S.sourceSlots.push(e)):(S.sources=[this],S.sourceSlots=[e]),this.observers?(this.observers.push(S),this.observerSlots.push(S.sources.length-1)):(this.observers=[S],this.observerSlots=[S.sources.length-1])}return this.value}function Pt(e,t,n){let r=e.value;return(!e.comparator||!e.comparator(r,t))&&(e.value=t,e.observers&&e.observers.length&&U(()=>{for(let s=0;s<e.observers.length;s+=1){const o=e.observers[s],i=Me&&Me.running;i&&Me.disposed.has(o),(i?!o.tState:!o.state)&&(o.pure?I.push(o):D.push(o),o.observers&&Et(o)),i||(o.state=F)}if(I.length>1e6)throw I=[],new Error},!1)),t}function se(e){if(!e.fn)return;de(e);const t=Ne;Xt(e,e.value,t)}function Xt(e,t,n){let r;const s=p,o=S;S=p=e;try{r=e.fn(t)}catch(i){return e.pure&&(e.state=F,e.owned&&e.owned.forEach(de),e.owned=null),e.updatedAt=n+1,ye(i)}finally{S=o,p=s}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?Pt(e,r):e.value=r,e.updatedAt=n)}function me(e,t,n,r=F,s){const o={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:p,context:p?p.context:null,pure:n};return p===null||p!==wt&&(p.owned?p.owned.push(o):p.owned=[o]),o}function Ce(e){if(e.state===0)return;if(e.state===Oe)return ve(e);if(e.suspense&&N(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<Ne);)e.state&&t.push(e);for(let n=t.length-1;n>=0;n--)if(e=t[n],e.state===F)se(e);else if(e.state===Oe){const r=I;I=null,U(()=>ve(e,t[0]),!1),I=r}}function U(e,t){if(I)return e();let n=!1;t||(I=[]),D?n=!0:D=[],Ne++;try{const r=e();return Jt(n),r}catch(r){n||(D=null),I=null,ye(r)}}function Jt(e){if(I&&(St(I),I=null),e)return;const t=D;D=null,t.length&&U(()=>yt(t),!1)}function St(e){for(let t=0;t<e.length;t++)Ce(e[t])}function Yt(e){let t,n=0;for(t=0;t<e.length;t++){const r=e[t];r.user?e[n++]=r:Ce(r)}if(y.context){if(y.count){y.effects||(y.effects=[]),y.effects.push(...e.slice(0,n));return}ae()}for(y.effects&&(y.done||!y.count)&&(e=[...y.effects,...e],n+=y.effects.length,delete y.effects),t=0;t<n;t++)Ce(e[t])}function ve(e,t){e.state=0;for(let n=0;n<e.sources.length;n+=1){const r=e.sources[n];if(r.sources){const s=r.state;s===F?r!==t&&(!r.updatedAt||r.updatedAt<Ne)&&Ce(r):s===Oe&&ve(r,t)}}}function Et(e){for(let t=0;t<e.observers.length;t+=1){const n=e.observers[t];n.state||(n.state=Oe,n.pure?I.push(n):D.push(n),n.observers&&Et(n))}}function de(e){let t;if(e.sources)for(;e.sources.length;){const n=e.sources.pop(),r=e.sourceSlots.pop(),s=n.observers;if(s&&s.length){const o=s.pop(),i=n.observerSlots.pop();r<s.length&&(o.sourceSlots[i]=r,s[r]=o,n.observerSlots[r]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)de(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)de(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function Ae(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function ot(e,t,n){try{for(const r of t)r(e)}catch(r){ye(r,n&&n.owner||null)}}function ye(e,t=p){const n=fe&&t&&t.context&&t.context[fe],r=Ae(e);if(!n)throw r;D?D.push({fn(){ot(r,n,t)},state:F}):ot(r,n,t)}function Be(e){if(typeof e=="function"&&!e.length)return Be(e());if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++){const r=Be(e[n]);Array.isArray(r)?t.push.apply(t,r):t.push(r)}return t}return e}function Qt(e,t){return function(r){let s;return K(()=>s=N(()=>(p.context={...p.context,[e]:r.value},et(()=>r.children))),void 0),s}}const Ve=Symbol("fallback");function Re(e){for(let t=0;t<e.length;t++)e[t]()}function Zt(e,t,n={}){let r=[],s=[],o=[],i=0,l=t.length>1?[]:null;return W(()=>Re(o)),()=>{let c=e()||[],u=c.length,a,f;return c[Se],N(()=>{let h,w,g,m,A,b,R,x,C;if(u===0)i!==0&&(Re(o),o=[],r=[],s=[],i=0,l&&(l=[])),n.fallback&&(r=[Ve],s[0]=H(B=>(o[0]=B,n.fallback())),i=1);else if(i===0){for(s=new Array(u),f=0;f<u;f++)r[f]=c[f],s[f]=H(d);i=u}else{for(g=new Array(u),m=new Array(u),l&&(A=new Array(u)),b=0,R=Math.min(i,u);b<R&&r[b]===c[b];b++);for(R=i-1,x=u-1;R>=b&&x>=b&&r[R]===c[x];R--,x--)g[x]=s[R],m[x]=o[R],l&&(A[x]=l[R]);for(h=new Map,w=new Array(x+1),f=x;f>=b;f--)C=c[f],a=h.get(C),w[f]=a===void 0?-1:a,h.set(C,f);for(a=b;a<=R;a++)C=r[a],f=h.get(C),f!==void 0&&f!==-1?(g[f]=s[a],m[f]=o[a],l&&(A[f]=l[a]),f=w[f],h.set(C,f)):o[a]();for(f=b;f<u;f++)f in g?(s[f]=g[f],o[f]=m[f],l&&(l[f]=A[f],l[f](f))):s[f]=H(d);s=s.slice(0,i=u),r=c.slice(0)}return s});function d(h){if(o[f]=h,l){const[w,g]=T(f);return l[f]=g,t(c[f],w)}return t(c[f])}}}function en(e,t,n={}){let r=[],s=[],o=[],i=[],l=0,c;return W(()=>Re(o)),()=>{const u=e()||[],a=u.length;return u[Se],N(()=>{if(a===0)return l!==0&&(Re(o),o=[],r=[],s=[],l=0,i=[]),n.fallback&&(r=[Ve],s[0]=H(d=>(o[0]=d,n.fallback())),l=1),s;for(r[0]===Ve&&(o[0](),o=[],r=[],s=[],l=0),c=0;c<a;c++)c<r.length&&r[c]!==u[c]?i[c](()=>u[c]):c>=r.length&&(s[c]=H(f));for(;c<r.length;c++)o[c]();return l=i.length=o.length=a,r=u.slice(0),s=s.slice(0,l)});function f(d){o[c]=d;const[h,w]=T(u[c]);return i[c]=w,t(h,c)}}}function q(e,t){return N(()=>e(t||{}))}function pe(){return!0}const Ke={get(e,t,n){return t===_?n:e.get(t)},has(e,t){return t===_?!0:e.has(t)},set:pe,deleteProperty:pe,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:pe,deleteProperty:pe}},ownKeys(e){return e.keys()}};function De(e){return(e=typeof e=="function"?e():e)?e:{}}function tn(){for(let e=0,t=this.length;e<t;++e){const n=this[e]();if(n!==void 0)return n}}function qe(...e){let t=!1;for(let i=0;i<e.length;i++){const l=e[i];t=t||!!l&&_ in l,e[i]=typeof l=="function"?(t=!0,E(l)):l}if(mt&&t)return new Proxy({get(i){for(let l=e.length-1;l>=0;l--){const c=De(e[l])[i];if(c!==void 0)return c}},has(i){for(let l=e.length-1;l>=0;l--)if(i in De(e[l]))return!0;return!1},keys(){const i=[];for(let l=0;l<e.length;l++)i.push(...Object.keys(De(e[l])));return[...new Set(i)]}},Ke);const n={},r=Object.create(null);for(let i=e.length-1;i>=0;i--){const l=e[i];if(!l)continue;const c=Object.getOwnPropertyNames(l);for(let u=c.length-1;u>=0;u--){const a=c[u];if(a==="__proto__"||a==="constructor")continue;const f=Object.getOwnPropertyDescriptor(l,a);if(!r[a])r[a]=f.get?{enumerable:!0,configurable:!0,get:tn.bind(n[a]=[f.get.bind(l)])}:f.value!==void 0?f:void 0;else{const d=n[a];d&&(f.get?d.push(f.get.bind(l)):f.value!==void 0&&d.push(()=>f.value))}}}const s={},o=Object.keys(r);for(let i=o.length-1;i>=0;i--){const l=o[i],c=r[l];c&&c.get?Object.defineProperty(s,l,c):s[l]=c?c.value:void 0}return s}function nn(e,...t){const n=t.length;if(mt&&_ in e){const s=n>1?t.flat():t[0],o=t.map(i=>new Proxy({get(l){return i.includes(l)?e[l]:void 0},has(l){return i.includes(l)&&l in e},keys(){return i.filter(l=>l in e)}},Ke));return o.push(new Proxy({get(i){return s.includes(i)?void 0:e[i]},has(i){return s.includes(i)?!1:i in e},keys(){return Object.keys(e).filter(i=>!s.includes(i))}},Ke)),o}const r=[];for(let s=0;s<=n;s++)r[s]={};for(const s of Object.getOwnPropertyNames(e)){let o=n;for(let c=0;c<t.length;c++)if(t[c].includes(s)){o=c;break}const i=Object.getOwnPropertyDescriptor(e,s);!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable?r[o][s]=i.value:Object.defineProperty(r[o],s,i)}return r}function br(e){let t,n;const r=s=>{const o=y.context;if(o){const[l,c]=T();y.count||(y.count=0),y.count++,(n||(n=e())).then(u=>{!y.done&&ae(o),y.count--,c(()=>u.default),ae()}),t=l}else if(!t){const[l]=Ht(()=>(n||(n=e())).then(c=>c.default));t=l}let i;return E(()=>(i=t())?N(()=>{if(!o||y.done)return i(s);const l=y.context;ae(o);const c=i(s);return ae(l),c}):"")};return r.preload=()=>n||((n=e()).then(s=>t=()=>s.default),n),r}let rn=0;function sn(){return y.context?y.getNextContextId():`cl-${rn++}`}const on=e=>`Stale read from <${e}>.`;function pr(e){const t="fallback"in e&&{fallback:()=>e.fallback};return E(Zt(()=>e.each,e.children,t||void 0))}function Ar(e){const t="fallback"in e&&{fallback:()=>e.fallback};return E(en(()=>e.each,e.children,t||void 0))}function Ot(e){const t=e.keyed,n=E(()=>e.when,void 0,void 0),r=t?n:E(n,void 0,{equals:(s,o)=>!s==!o});return E(()=>{const s=r();if(s){const o=e.children;return typeof o=="function"&&o.length>0?N(()=>o(t?s:()=>{if(!N(r))throw on("Show");return n()})):o}return e.fallback},void 0,void 0)}let te;function ln(){te&&[...te].forEach(e=>e())}function Pr(e){let t;y.context&&y.load&&(t=y.load(y.getContextId()));const[n,r]=T(t,void 0);return te||(te=new Set),te.add(r),W(()=>te.delete(r)),E(()=>{let s;if(s=n()){const o=e.fallback;return typeof o=="function"&&o.length?N(()=>o(s,()=>r())):o}return Wt(()=>e.children,r)},void 0,void 0)}const cn=["allowfullscreen","async","alpha","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","adauctionheaders","browsingtopics","credentialless","defaultchecked","defaultmuted","defaultselected","defer","disablepictureinpicture","disableremoteplayback","preservespitch","shadowrootclonable","shadowrootcustomelementregistry","shadowrootdelegatesfocus","shadowrootserializable","sharedstoragewritable"],an=new Set(["className","value","readOnly","noValidate","formNoValidate","isMap","noModule","playsInline","adAuctionHeaders","allowFullscreen","browsingTopics","defaultChecked","defaultMuted","defaultSelected","disablePictureInPicture","disableRemotePlayback","preservesPitch","shadowRootClonable","shadowRootCustomElementRegistry","shadowRootDelegatesFocus","shadowRootSerializable","sharedStorageWritable",...cn]),un=new Set(["innerHTML","textContent","innerText","children"]),fn=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),dn=Object.assign(Object.create(null),{class:"className",novalidate:{$:"noValidate",FORM:1},formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1},adauctionheaders:{$:"adAuctionHeaders",IFRAME:1},allowfullscreen:{$:"allowFullscreen",IFRAME:1},browsingtopics:{$:"browsingTopics",IMG:1},defaultchecked:{$:"defaultChecked",INPUT:1},defaultmuted:{$:"defaultMuted",AUDIO:1,VIDEO:1},defaultselected:{$:"defaultSelected",OPTION:1},disablepictureinpicture:{$:"disablePictureInPicture",VIDEO:1},disableremoteplayback:{$:"disableRemotePlayback",AUDIO:1,VIDEO:1},preservespitch:{$:"preservesPitch",AUDIO:1,VIDEO:1},shadowrootclonable:{$:"shadowRootClonable",TEMPLATE:1},shadowrootdelegatesfocus:{$:"shadowRootDelegatesFocus",TEMPLATE:1},shadowrootserializable:{$:"shadowRootSerializable",TEMPLATE:1},sharedstoragewritable:{$:"sharedStorageWritable",IFRAME:1,IMG:1}});function hn(e,t){const n=dn[e];return typeof n=="object"?n[t]?n.$:void 0:n}const gn=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),mn={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},yn=e=>E(()=>e());function wn(e,t,n){let r=n.length,s=t.length,o=r,i=0,l=0,c=t[s-1].nextSibling,u=null;for(;i<s||l<o;){if(t[i]===n[l]){i++,l++;continue}for(;t[s-1]===n[o-1];)s--,o--;if(s===i){const a=o<r?l?n[l-1].nextSibling:n[o-l]:c;for(;l<o;)e.insertBefore(n[l++],a)}else if(o===l)for(;i<s;)(!u||!u.has(t[i]))&&t[i].remove(),i++;else if(t[i]===n[o-1]&&n[l]===t[s-1]){const a=t[--s].nextSibling;e.insertBefore(n[l++],t[i++].nextSibling),e.insertBefore(n[--o],a),t[s]=n[o]}else{if(!u){u=new Map;let f=l;for(;f<o;)u.set(n[f],f++)}const a=u.get(t[i]);if(a!=null)if(l<a&&a<o){let f=i,d=1,h;for(;++f<s&&f<o&&!((h=u.get(t[f]))==null||h!==a+d);)d++;if(d>a-l){const w=t[i];for(;l<a;)e.insertBefore(n[l++],w)}else e.replaceChild(n[l++],t[i++])}else i++;else t[i++].remove()}}}const it="_$DX_DELEGATE";function Sr(e,t,n,r={}){let s;return H(o=>{s=o,t===document?e():Ge(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{s(),t.textContent=""}}function bn(e,t,n,r){let s;const o=()=>{const l=r?document.createElementNS("http://www.w3.org/1998/Math/MathML","template"):document.createElement("template");return l.innerHTML=e,n?l.content.firstChild.firstChild:r?l.firstChild:l.content.firstChild},i=t?()=>N(()=>document.importNode(s||(s=o()),!0)):()=>(s||(s=o())).cloneNode(!0);return i.cloneNode=i,i}function xt(e,t=window.document){const n=t[it]||(t[it]=new Set);for(let r=0,s=e.length;r<s;r++){const o=e[r];n.has(o)||(n.add(o),t.addEventListener(o,Rn))}}function He(e,t,n){oe(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function pn(e,t,n,r){oe(e)||(r==null?e.removeAttributeNS(t,n):e.setAttributeNS(t,n,r))}function An(e,t,n){oe(e)||(n?e.setAttribute(t,""):e.removeAttribute(t))}function Pn(e,t){oe(e)||(t==null?e.removeAttribute("class"):e.className=t)}function Sn(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){const s=n[0];e.addEventListener(t,n[0]=o=>s.call(e,n[1],o))}else e.addEventListener(t,n,typeof n!="function"&&n)}function En(e,t,n={}){const r=Object.keys(t||{}),s=Object.keys(n);let o,i;for(o=0,i=s.length;o<i;o++){const l=s[o];!l||l==="undefined"||t[l]||(lt(e,l,!1),delete n[l])}for(o=0,i=r.length;o<i;o++){const l=r[o],c=!!t[l];!l||l==="undefined"||n[l]===c||!c||(lt(e,l,!0),n[l]=c)}return n}function On(e,t,n){if(!t)return n?He(e,"style"):t;const r=e.style;if(typeof t=="string")return r.cssText=t;typeof n=="string"&&(r.cssText=n=void 0),n||(n={}),t||(t={});let s,o;for(o in n)t[o]==null&&r.removeProperty(o),delete n[o];for(o in t)s=t[o],s!==n[o]&&(r.setProperty(o,s),n[o]=s);return n}function Er(e,t,n){n!=null?e.style.setProperty(t,n):e.style.removeProperty(t)}function We(e,t={},n,r){const s={};return r||K(()=>s.children=he(e,t.children,s.children)),K(()=>typeof t.ref=="function"&&xn(t.ref,e)),K(()=>Cn(e,t,n,!0,s,!0)),s}function xn(e,t,n){return N(()=>e(t,n))}function Ge(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return he(e,t,r,n);K(s=>he(e,t(),s,n),r)}function Cn(e,t,n,r,s={},o=!1){t||(t={});for(const i in s)if(!(i in t)){if(i==="children")continue;s[i]=ct(e,i,null,s[i],n,o,t)}for(const i in t){if(i==="children")continue;const l=t[i];s[i]=ct(e,i,l,s[i],n,o,t)}}function oe(e){return!!y.context&&!y.done&&(!e||e.isConnected)}function vn(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function lt(e,t,n){const r=t.trim().split(/\s+/);for(let s=0,o=r.length;s<o;s++)e.classList.toggle(r[s],n)}function ct(e,t,n,r,s,o,i){let l,c,u,a,f;if(t==="style")return On(e,n,r);if(t==="classList")return En(e,n,r);if(n===r)return r;if(t==="ref")o||n(e);else if(t.slice(0,3)==="on:"){const d=t.slice(3);r&&e.removeEventListener(d,r,typeof r!="function"&&r),n&&e.addEventListener(d,n,typeof n!="function"&&n)}else if(t.slice(0,10)==="oncapture:"){const d=t.slice(10);r&&e.removeEventListener(d,r,!0),n&&e.addEventListener(d,n,!0)}else if(t.slice(0,2)==="on"){const d=t.slice(2).toLowerCase(),h=gn.has(d);if(!h&&r){const w=Array.isArray(r)?r[0]:r;e.removeEventListener(d,w)}(h||n)&&(Sn(e,d,n,h),h&&xt([d]))}else if(t.slice(0,5)==="attr:")He(e,t.slice(5),n);else if(t.slice(0,5)==="bool:")An(e,t.slice(5),n);else if((f=t.slice(0,5)==="prop:")||(u=un.has(t))||!s&&((a=hn(t,e.tagName))||(c=an.has(t)))||(l=e.nodeName.includes("-")||"is"in i)){if(f)t=t.slice(5),c=!0;else if(oe(e))return n;t==="class"||t==="className"?Pn(e,n):l&&!c&&!u?e[vn(t)]=n:e[a||t]=n}else{const d=s&&t.indexOf(":")>-1&&mn[t.split(":")[0]];d?pn(e,d,t,n):He(e,fn[t]||t,n)}return n}function Rn(e){if(y.registry&&y.events&&y.events.find(([c,u])=>u===e))return;let t=e.target;const n=`$$${e.type}`,r=e.target,s=e.currentTarget,o=c=>Object.defineProperty(e,"target",{configurable:!0,value:c}),i=()=>{const c=t[n];if(c&&!t.disabled){const u=t[`${n}Data`];if(u!==void 0?c.call(t,u,e):c.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&o(t.host),!0},l=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),y.registry&&!y.done&&(y.done=_$HY.done=!0),e.composedPath){const c=e.composedPath();o(c[0]);for(let u=0;u<c.length-2&&(t=c[u],!!i());u++){if(t._$host){t=t._$host,l();break}if(t.parentNode===s)break}}else l();o(r)}function he(e,t,n,r,s){const o=oe(e);if(o){!n&&(n=[...e.childNodes]);let c=[];for(let u=0;u<n.length;u++){const a=n[u];a.nodeType===8&&a.data.slice(0,2)==="!$"?a.remove():c.push(a)}n=c}for(;typeof n=="function";)n=n();if(t===n)return n;const i=typeof t,l=r!==void 0;if(e=l&&n[0]&&n[0].parentNode||e,i==="string"||i==="number"){if(o||i==="number"&&(t=t.toString(),t===n))return n;if(l){let c=n[0];c&&c.nodeType===3?c.data!==t&&(c.data=t):c=document.createTextNode(t),n=Z(e,n,r,c)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||i==="boolean"){if(o)return n;n=Z(e,n,r)}else{if(i==="function")return K(()=>{let c=t();for(;typeof c=="function";)c=c();n=he(e,c,n,r)}),()=>n;if(Array.isArray(t)){const c=[],u=n&&Array.isArray(n);if(ze(c,t,n,s))return K(()=>n=he(e,c,n,r,!0)),()=>n;if(o){if(!c.length)return n;if(r===void 0)return n=[...e.childNodes];let a=c[0];if(a.parentNode!==e)return n;const f=[a];for(;(a=a.nextSibling)!==r;)f.push(a);return n=f}if(c.length===0){if(n=Z(e,n,r),l)return n}else u?n.length===0?at(e,c,r):wn(e,n,c):(n&&Z(e),at(e,c));n=c}else if(t.nodeType){if(o&&t.parentNode)return n=l?[t]:t;if(Array.isArray(n)){if(l)return n=Z(e,n,r,t);Z(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function ze(e,t,n,r){let s=!1;for(let o=0,i=t.length;o<i;o++){let l=t[o],c=n&&n[e.length],u;if(!(l==null||l===!0||l===!1))if((u=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))s=ze(e,l,c)||s;else if(u==="function")if(r){for(;typeof l=="function";)l=l();s=ze(e,Array.isArray(l)?l:[l],Array.isArray(c)?c:[c])||s}else e.push(l),s=!0;else{const a=String(l);c&&c.nodeType===3&&c.data===a?e.push(c):e.push(document.createTextNode(a))}}return s}function at(e,t,n=null){for(let r=0,s=t.length;r<s;r++)e.insertBefore(t[r],n)}function Z(e,t,n,r){if(n===void 0)return e.textContent="";const s=r||document.createTextNode("");if(t.length){let o=!1;for(let i=t.length-1;i>=0;i--){const l=t[i];if(s!==l){const c=l.parentNode===e;!o&&!i?c?e.replaceChild(s,l):e.insertBefore(s,n):c&&l.remove()}else o=!0}}else e.insertBefore(s,n);return[s]}const Ln=!1,Nn="http://www.w3.org/2000/svg";function $n(e,t=!1,n=void 0){return t?document.createElementNS(Nn,e):document.createElement(e,{is:n})}function Or(e){const{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,s=xe();let o,i=!!y.context;return bt(()=>{i&&(xe().user=i=!1),o||(o=$e(s,()=>E(()=>e.children)));const l=r();if(l instanceof HTMLHeadElement){const[c,u]=T(!1),a=()=>u(!0);H(f=>Ge(l,()=>c()?f():o(),null)),W(a)}else{const c=$n(e.isSVG?"g":"div",e.isSVG),u=t&&c.attachShadow?c.attachShadow({mode:"open"}):c;Object.defineProperty(c,"_$host",{get(){return n.parentNode},configurable:!0}),Ge(u,o),l.appendChild(c),e.ref&&e.ref(c),W(()=>l.removeChild(c))}},void 0,{render:!i}),n}function Ct(){let e=new Set;function t(s){return e.add(s),()=>e.delete(s)}let n=!1;function r(s,o){if(n)return!(n=!1);const i={to:s,options:o,defaultPrevented:!1,preventDefault:()=>i.defaultPrevented=!0};for(const l of e)l.listener({...i,from:l.location,retry:c=>{c&&(n=!0),l.navigate(s,{...o,resolve:!1})}});return!i.defaultPrevented}return{subscribe:t,confirm:r}}let Xe;function tt(){(!window.history.state||window.history.state._depth==null)&&window.history.replaceState({...window.history.state,_depth:window.history.length-1},""),Xe=window.history.state._depth}tt();function Tn(e){return{...e,_depth:window.history.state&&window.history.state._depth}}function In(e,t){let n=!1;return()=>{const r=Xe;tt();const s=r==null?null:Xe-r;if(n){n=!1;return}s&&t(s)?(n=!0,window.history.go(-s)):e()}}const jn=/^(?:[a-z0-9]+:)?\/\//i,kn=/^\/+|(\/)\/+$/g,vt="http://sr";function X(e,t=!1){const n=e.replace(kn,"$1");return n?t||/^[?#]/.test(n)?n:"/"+n:""}function Pe(e,t,n){if(jn.test(t))return;const r=X(e),s=n&&X(n);let o="";return!s||t.startsWith("/")?o=r:s.toLowerCase().indexOf(r.toLowerCase())!==0?o=r+s:o=s,(o||"/")+X(t,!o)}function Mn(e,t){if(e==null)throw new Error(t);return e}function Dn(e,t){return X(e).replace(/\/*(\*.*)?$/g,"")+X(t)}function Rt(e){const t={};return e.searchParams.forEach((n,r)=>{r in t?Array.isArray(t[r])?t[r].push(n):t[r]=[t[r],n]:t[r]=n}),t}function _n(e,t,n){const[r,s]=e.split("/*",2),o=r.split("/").filter(Boolean),i=o.length;return l=>{const c=l.split("/").filter(Boolean),u=c.length-i;if(u<0||u>0&&s===void 0&&!t)return null;const a={path:i?"":"/",params:{}},f=d=>n===void 0?void 0:n[d];for(let d=0;d<i;d++){const h=o[d],w=h[0]===":",g=w?c[d]:c[d].toLowerCase(),m=w?h.slice(1):h.toLowerCase();if(w&&_e(g,f(m)))a.params[m]=g;else if(w||!_e(g,m))return null;a.path+=`/${g}`}if(s){const d=u?c.slice(-u).join("/"):"";if(_e(d,f(s)))a.params[s]=d;else return null}return a}}function _e(e,t){const n=r=>r===e;return t===void 0?!0:typeof t=="string"?n(t):typeof t=="function"?t(e):Array.isArray(t)?t.some(n):t instanceof RegExp?t.test(e):!1}function Un(e){const[t,n]=e.pattern.split("/*",2),r=t.split("/").filter(Boolean);return r.reduce((s,o)=>s+(o.startsWith(":")?2:3),r.length-(n===void 0?0:1))}function Lt(e){const t=new Map,n=xe();return new Proxy({},{get(r,s){return t.has(s)||$e(n,()=>t.set(s,E(()=>e()[s]))),t.get(s)()},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}},ownKeys(){return Reflect.ownKeys(e())},has(r,s){return s in e()}})}function Fn(e,t){const n=new URLSearchParams(e);Object.entries(t).forEach(([s,o])=>{o==null||o===""||o instanceof Array&&!o.length?n.delete(s):o instanceof Array?(n.delete(s),o.forEach(i=>{n.append(s,String(i))})):n.set(s,String(o))});const r=n.toString();return r?`?${r}`:""}function Nt(e){let t=/(\/?\:[^\/]+)\?/.exec(e);if(!t)return[e];let n=e.slice(0,t.index),r=e.slice(t.index+t[0].length);const s=[n,n+=t[1]];for(;t=/^(\/\:[^\/]+)\?/.exec(r);)s.push(n+=t[1]),r=r.slice(t[0].length);return Nt(r).reduce((o,i)=>[...o,...s.map(l=>l+i)],[])}const Bn=100,$t=Ze(),nt=Ze(),we=()=>Mn(Te($t),"<A> and 'use' router primitives can be only used inside a Route."),Vn=()=>Te(nt)||we().base,Kn=e=>{const t=Vn();return E(()=>t.resolvePath(e()))},qn=e=>{const t=we();return E(()=>{const n=e();return n!==void 0?t.renderPath(n):n})},Hn=()=>we().navigatorFactory(),Tt=()=>we().location,xr=()=>we().params,Cr=()=>{const e=Tt(),t=Hn(),n=(r,s)=>{const o=N(()=>Fn(e.search,r)+e.hash);t(o,{scroll:!1,resolve:!1,...s})};return[e.query,n]};function Wn(e,t=""){const{component:n,preload:r,load:s,children:o,info:i}=e,l=!o||Array.isArray(o)&&!o.length,c={key:e,component:n,preload:r||s,info:i};return It(e.path).reduce((u,a)=>{for(const f of Nt(a)){const d=Dn(t,f);let h=l?d:d.split("/*",1)[0];h=h.split("/").map(w=>w.startsWith(":")||w.startsWith("*")?w:encodeURIComponent(w)).join("/"),u.push({...c,originalPath:a,pattern:h,matcher:_n(h,!l,e.matchFilters)})}return u},[])}function Gn(e,t=0){return{routes:e,score:Un(e[e.length-1])*1e4-t,matcher(n){const r=[];for(let s=e.length-1;s>=0;s--){const o=e[s],i=o.matcher(n);if(!i)return null;r.unshift({...i,route:o})}return r}}}function It(e){return Array.isArray(e)?e:[e]}function jt(e,t="",n=[],r=[]){const s=It(e);for(let o=0,i=s.length;o<i;o++){const l=s[o];if(l&&typeof l=="object"){l.hasOwnProperty("path")||(l.path="");const c=Wn(l,t);for(const u of c){n.push(u);const a=Array.isArray(l.children)&&l.children.length===0;if(l.children&&!a)jt(l.children,u.pattern,n,r);else{const f=Gn([...n],r.length);r.push(f)}n.pop()}}}return n.length?r:r.sort((o,i)=>i.score-o.score)}function Ue(e,t){for(let n=0,r=e.length;n<r;n++){const s=e[n].matcher(t);if(s)return s}return[]}function zn(e,t,n){const r=new URL(vt),s=E(a=>{const f=e();try{return new URL(f,r)}catch{return console.error(`Invalid path ${f}`),a}},r,{equals:(a,f)=>a.href===f.href}),o=E(()=>s().pathname),i=E(()=>s().search,!0),l=E(()=>s().hash),c=()=>"",u=Qe(i,()=>Rt(s()));return{get pathname(){return o()},get search(){return i()},get hash(){return l()},get state(){return t()},get key(){return c()},query:n?n(u):Lt(u)}}let z;function Xn(){return z}function Jn(e,t,n,r={}){const{signal:[s,o],utils:i={}}=e,l=i.parsePath||(P=>P),c=i.renderPath||(P=>P),u=i.beforeLeave||Ct(),a=Pe("",r.base||"");if(a===void 0)throw new Error(`${a} is not a valid base path`);a&&!s().value&&o({value:a,replace:!0,scroll:!1});const[f,d]=T(!1);let h;const w=(P,O)=>{O.value===g()&&O.state===A()||(h===void 0&&d(!0),z=P,h=O,Gt(()=>{h===O&&(m(h.value),b(h.state),ln(),C[1](j=>j.filter(Y=>Y.pending)))}).finally(()=>{h===O&&pt(()=>{z=void 0,P==="navigate"&&k(h),d(!1),h=void 0})}))},[g,m]=T(s().value),[A,b]=T(s().state),R=zn(g,A,i.queryWrapper),x=[],C=T([]),B=E(()=>typeof r.transformUrl=="function"?Ue(t(),r.transformUrl(R.pathname)):Ue(t(),R.pathname)),J=()=>{const P=B(),O={};for(let j=0;j<P.length;j++)Object.assign(O,P[j].params);return O},ie=i.paramsWrapper?i.paramsWrapper(J,t):Lt(J),le={pattern:a,path:()=>a,outlet:()=>null,resolvePath(P){return Pe(a,P)}};return K(Qe(s,P=>w("native",P),{defer:!0})),{base:le,location:R,params:ie,isRouting:f,renderPath:c,parsePath:l,navigatorFactory:v,matches:B,beforeLeave:u,preloadRoute:$,singleFlight:r.singleFlight===void 0?!0:r.singleFlight,submissions:C};function L(P,O,j){N(()=>{if(typeof O=="number"){O&&(i.go?i.go(O):console.warn("Router integration does not support relative routing"));return}const Y=!O||O[0]==="?",{replace:Ie,resolve:Q,scroll:je,state:ce}={replace:!1,resolve:!Y,scroll:!0,...j},be=Q?P.resolvePath(O):Pe(Y&&R.pathname||"",O);if(be===void 0)throw new Error(`Path '${O}' is not a routable path`);if(x.length>=Bn)throw new Error("Too many redirects");const rt=g();(be!==rt||ce!==A())&&(Ln||u.confirm(be,j)&&(x.push({value:rt,replace:Ie,scroll:je,state:A()}),w("navigate",{value:be,state:ce})))})}function v(P){return P=P||Te(nt)||le,(O,j)=>L(P,O,j)}function k(P){const O=x[0];O&&(o({...P,replace:O.replace,scroll:O.scroll}),x.length=0)}function $(P,O){const j=Ue(t(),P.pathname),Y=z;z="preload";for(let Ie in j){const{route:Q,params:je}=j[Ie];Q.component&&Q.component.preload&&Q.component.preload();const{preload:ce}=Q;O&&ce&&$e(n(),()=>ce({params:je,location:{pathname:P.pathname,search:P.search,hash:P.hash,query:Rt(P),state:null,key:""},intent:"preload"}))}z=Y}}function Yn(e,t,n,r){const{base:s,location:o,params:i}=e,{pattern:l,component:c,preload:u}=r().route,a=E(()=>r().path);c&&c.preload&&c.preload();const f=u?u({params:i,location:o,intent:z||"initial"}):void 0;return{parent:t,pattern:l,path:a,outlet:()=>c?q(c,{params:i,location:o,data:f,get children(){return n()}}):n(),resolvePath(h){return Pe(s.path(),h,a())}}}const Qn=e=>t=>{const{base:n}=t,r=et(()=>t.children),s=E(()=>jt(r(),t.base||""));let o;const i=Jn(e,s,()=>o,{base:n,singleFlight:t.singleFlight,transformUrl:t.transformUrl});return e.create&&e.create(i),q($t.Provider,{value:i,get children(){return q(Zn,{routerState:i,get root(){return t.root},get preload(){return t.rootPreload||t.rootLoad},get children(){return[yn(()=>(o=xe())&&null),q(er,{routerState:i,get branches(){return s()}})]}})}})};function Zn(e){const t=e.routerState.location,n=e.routerState.params,r=E(()=>e.preload&&N(()=>{e.preload({params:n,location:t,intent:Xn()||"initial"})}));return q(Ot,{get when(){return e.root},keyed:!0,get fallback(){return e.children},children:s=>q(s,{params:n,location:t,get data(){return r()},get children(){return e.children}})})}function er(e){const t=[];let n;const r=E(Qe(e.routerState.matches,(s,o,i)=>{let l=o&&s.length===o.length;const c=[];for(let u=0,a=s.length;u<a;u++){const f=o&&o[u],d=s[u];i&&f&&d.route.key===f.route.key?c[u]=i[u]:(l=!1,t[u]&&t[u](),H(h=>{t[u]=h,c[u]=Yn(e.routerState,c[u-1]||e.routerState.base,ut(()=>r()[u+1]),()=>{const w=e.routerState.matches();return w[u]??w[0]})}))}return t.splice(s.length).forEach(u=>u()),i&&l?i:(n=c[0],c)}));return ut(()=>r()&&n)()}const ut=e=>()=>q(Ot,{get when(){return e()},keyed:!0,children:t=>q(nt.Provider,{value:t,get children(){return t.outlet()}})}),vr=e=>{const t=et(()=>e.children);return qe(e,{get children(){return t()}})};function tr([e,t],n,r){return[e,r?s=>t(r(s)):t]}function nr(e){let t=!1;const n=s=>typeof s=="string"?{value:s}:s,r=tr(T(n(e.get()),{equals:(s,o)=>s.value===o.value&&s.state===o.state}),void 0,s=>(!t&&e.set(s),y.registry&&!y.done&&(y.done=!0),s));return e.init&&W(e.init((s=e.get())=>{t=!0,r[1](n(s)),t=!1})),Qn({signal:r,create:e.create,utils:e.utils})}function rr(e,t,n){return e.addEventListener(t,n),()=>e.removeEventListener(t,n)}function sr(e,t){const n=e&&document.getElementById(e);n?n.scrollIntoView():t&&window.scrollTo(0,0)}const or=new Map;function ir(e=!0,t=!1,n="/_server",r){return s=>{const o=s.base.path(),i=s.navigatorFactory(s.base);let l,c;function u(g){return g.namespaceURI==="http://www.w3.org/2000/svg"}function a(g){if(g.defaultPrevented||g.button!==0||g.metaKey||g.altKey||g.ctrlKey||g.shiftKey)return;const m=g.composedPath().find(B=>B instanceof Node&&B.nodeName.toUpperCase()==="A");if(!m||t&&!m.hasAttribute("link"))return;const A=u(m),b=A?m.href.baseVal:m.href;if((A?m.target.baseVal:m.target)||!b&&!m.hasAttribute("state"))return;const x=(m.getAttribute("rel")||"").split(/\s+/);if(m.hasAttribute("download")||x&&x.includes("external"))return;const C=A?new URL(b,document.baseURI):new URL(b);if(!(C.origin!==window.location.origin||o&&C.pathname&&!C.pathname.toLowerCase().startsWith(o.toLowerCase())))return[m,C]}function f(g){const m=a(g);if(!m)return;const[A,b]=m,R=s.parsePath(b.pathname+b.search+b.hash),x=A.getAttribute("state");g.preventDefault(),i(R,{resolve:!1,replace:A.hasAttribute("replace"),scroll:!A.hasAttribute("noscroll"),state:x?JSON.parse(x):void 0})}function d(g){const m=a(g);if(!m)return;const[A,b]=m;r&&(b.pathname=r(b.pathname)),s.preloadRoute(b,A.getAttribute("preload")!=="false")}function h(g){clearTimeout(l);const m=a(g);if(!m)return c=null;const[A,b]=m;c!==A&&(r&&(b.pathname=r(b.pathname)),l=setTimeout(()=>{s.preloadRoute(b,A.getAttribute("preload")!=="false"),c=A},20))}function w(g){if(g.defaultPrevented)return;let m=g.submitter&&g.submitter.hasAttribute("formaction")?g.submitter.getAttribute("formaction"):g.target.getAttribute("action");if(!m)return;if(!m.startsWith("https://action/")){const b=new URL(m,vt);if(m=s.parsePath(b.pathname+b.search),!m.startsWith(n))return}if(g.target.method.toUpperCase()!=="POST")throw new Error("Only POST forms are supported for Actions");const A=or.get(m);if(A){g.preventDefault();const b=new FormData(g.target,g.submitter);A.call({r:s,f:g.target},g.target.enctype==="multipart/form-data"?b:new URLSearchParams(b))}}xt(["click","submit"]),document.addEventListener("click",f),e&&(document.addEventListener("mousemove",h,{passive:!0}),document.addEventListener("focusin",d,{passive:!0}),document.addEventListener("touchstart",d,{passive:!0})),document.addEventListener("submit",w),W(()=>{document.removeEventListener("click",f),e&&(document.removeEventListener("mousemove",h),document.removeEventListener("focusin",d),document.removeEventListener("touchstart",d)),document.removeEventListener("submit",w)})}}function Rr(e){const t=()=>{const r=window.location.pathname.replace(/^\/+/,"/")+window.location.search,s=window.history.state&&window.history.state._depth&&Object.keys(window.history.state).length===1?void 0:window.history.state;return{value:r+window.location.hash,state:s}},n=Ct();return nr({get:t,set({value:r,replace:s,scroll:o,state:i}){s?window.history.replaceState(Tn(i),"",r):window.history.pushState(i,"",r),sr(decodeURIComponent(window.location.hash.slice(1)),o),tt()},init:r=>rr(window,"popstate",In(r,s=>{if(s)return!n.confirm(s);{const o=t();return!n.confirm(o.value,{state:o.state})}})),create:ir(e.preload,e.explicitLinks,e.actionBase,e.transformUrl),utils:{go:r=>window.history.go(r),beforeLeave:n}})(e)}var lr=bn("<a>");function Lr(e){e=qe({inactiveClass:"inactive",activeClass:"active"},e);const[,t]=nn(e,["href","state","class","activeClass","inactiveClass","end"]),n=Kn(()=>e.href),r=qn(n),s=Tt(),o=E(()=>{const i=n();if(i===void 0)return[!1,!1];const l=X(i.split(/[?#]/,1)[0]).toLowerCase(),c=decodeURI(X(s.pathname).toLowerCase());return[e.end?l===c:c.startsWith(l+"/")||c===l,l===c]});return(()=>{var i=lr();return We(i,qe(t,{get href(){return r()||e.href},get state(){return JSON.stringify(e.state)},get classList(){return{...e.class&&{[e.class]:!0},[e.inactiveClass]:!o()[0],[e.activeClass]:o()[0],...t.classList}},link:"",get"aria-current"(){return o()[1]?"page":void 0}}),!1,!1),i})()}const Je=Symbol("store-raw"),ne=Symbol("store-node"),V=Symbol("store-has"),kt=Symbol("store-self");function Mt(e){let t=e[_];if(!t&&(Object.defineProperty(e,_,{value:t=new Proxy(e,ur)}),!Array.isArray(e))){const n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let s=0,o=n.length;s<o;s++){const i=n[s];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(t)})}}return t}function G(e){let t;return e!=null&&typeof e=="object"&&(e[_]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function re(e,t=new Set){let n,r,s,o;if(n=e!=null&&e[Je])return n;if(!G(e)||t.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):t.add(e);for(let i=0,l=e.length;i<l;i++)s=e[i],(r=re(s,t))!==s&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):t.add(e);const i=Object.keys(e),l=Object.getOwnPropertyDescriptors(e);for(let c=0,u=i.length;c<u;c++)o=i[c],!l[o].get&&(s=e[o],(r=re(s,t))!==s&&(e[o]=r))}return e}function Le(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function ge(e,t,n){if(e[t])return e[t];const[r,s]=T(n,{equals:!1,internal:!0});return r.$=s,e[t]=r}function cr(e,t){const n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===_||t===ne||(delete n.value,delete n.writable,n.get=()=>e[_][t]),n}function Dt(e){Fe()&&ge(Le(e,ne),kt)()}function ar(e){return Dt(e),Reflect.ownKeys(e)}const ur={get(e,t,n){if(t===Je)return e;if(t===_)return n;if(t===Se)return Dt(e),n;const r=Le(e,ne),s=r[t];let o=s?s():e[t];if(t===ne||t===V||t==="__proto__")return o;if(!s){const i=Object.getOwnPropertyDescriptor(e,t);Fe()&&(typeof o!="function"||e.hasOwnProperty(t))&&!(i&&i.get)&&(o=ge(r,t,o)())}return G(o)?Mt(o):o},has(e,t){return t===Je||t===_||t===Se||t===ne||t===V||t==="__proto__"?!0:(Fe()&&ge(Le(e,V),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:ar,getOwnPropertyDescriptor:cr};function M(e,t,n,r=!1){if(!r&&e[t]===n)return;const s=e[t],o=e.length;n===void 0?(delete e[t],e[V]&&e[V][t]&&s!==void 0&&e[V][t].$()):(e[t]=n,e[V]&&e[V][t]&&s===void 0&&e[V][t].$());let i=Le(e,ne),l;if((l=ge(i,t,s))&&l.$(()=>n),Array.isArray(e)&&e.length!==o){for(let c=e.length;c<o;c++)(l=i[c])&&l.$();(l=ge(i,"length",o))&&l.$(e.length)}(l=i[kt])&&l.$()}function _t(e,t){const n=Object.keys(t);for(let r=0;r<n.length;r+=1){const s=n[r];M(e,s,t[s])}}function fr(e,t){if(typeof t=="function"&&(t=t(e)),t=re(t),Array.isArray(t)){if(e===t)return;let n=0,r=t.length;for(;n<r;n++){const s=t[n];e[n]!==s&&M(e,n,s)}M(e,"length",r)}else _t(e,t)}function ue(e,t,n=[]){let r,s=e;if(t.length>1){r=t.shift();const i=typeof r,l=Array.isArray(e);if(Array.isArray(r)){for(let c=0;c<r.length;c++)ue(e,[r[c]].concat(t),n);return}else if(l&&i==="function"){for(let c=0;c<e.length;c++)r(e[c],c)&&ue(e,[c].concat(t),n);return}else if(l&&i==="object"){const{from:c=0,to:u=e.length-1,by:a=1}=r;for(let f=c;f<=u;f+=a)ue(e,[f].concat(t),n);return}else if(t.length>1){ue(e[r],t,[r].concat(n));return}s=e[r],n=[r].concat(n)}let o=t[0];typeof o=="function"&&(o=o(s,n),o===s)||r===void 0&&o==null||(o=re(o),r===void 0||G(s)&&G(o)&&!Array.isArray(o)?_t(s,o):M(e,r,o))}function Nr(...[e,t]){const n=re(e||{}),r=Array.isArray(n),s=Mt(n);function o(...i){pt(()=>{r&&i.length===1?fr(n,i[0]):ue(n,i)})}return[s,o]}const Ye=Symbol("store-root");function ee(e,t,n,r,s){const o=t[n];if(e===o)return;const i=Array.isArray(e);if(n!==Ye&&(!G(e)||!G(o)||i!==Array.isArray(o)||s&&e[s]!==o[s])){M(t,n,e);return}if(i){if(e.length&&o.length&&(!r||s&&e[0]&&e[0][s]!=null)){let u,a,f,d,h,w,g,m;for(f=0,d=Math.min(o.length,e.length);f<d&&(o[f]===e[f]||s&&o[f]&&e[f]&&o[f][s]&&o[f][s]===e[f][s]);f++)ee(e[f],o,f,r,s);const A=new Array(e.length),b=new Map;for(d=o.length-1,h=e.length-1;d>=f&&h>=f&&(o[d]===e[h]||s&&o[d]&&e[h]&&o[d][s]&&o[d][s]===e[h][s]);d--,h--)A[h]=o[d];if(f>h||f>d){for(a=f;a<=h;a++)M(o,a,e[a]);for(;a<e.length;a++)M(o,a,A[a]),ee(e[a],o,a,r,s);o.length>e.length&&M(o,"length",e.length);return}for(g=new Array(h+1),a=h;a>=f;a--)w=e[a],m=s&&w?w[s]:w,u=b.get(m),g[a]=u===void 0?-1:u,b.set(m,a);for(u=f;u<=d;u++)w=o[u],m=s&&w?w[s]:w,a=b.get(m),a!==void 0&&a!==-1&&(A[a]=o[u],a=g[a],b.set(m,a));for(a=f;a<e.length;a++)a in A?(M(o,a,A[a]),ee(e[a],o,a,r,s)):M(o,a,e[a])}else for(let u=0,a=e.length;u<a;u++)ee(e[u],o,u,r,s);o.length>e.length&&M(o,"length",e.length);return}const l=Object.keys(e);for(let u=0,a=l.length;u<a;u++)ee(e[l[u]],o,l[u],r,s);const c=Object.keys(o);for(let u=0,a=c.length;u<a;u++)e[c[u]]===void 0&&M(o,c[u],void 0)}function $r(e,t={}){const{merge:n,key:r="id"}=t,s=re(e);return o=>{if(!G(o)||!G(s))return s;const i=ee(s,{[Ye]:o},Ye,n,r);return i===void 0?o:i}}const Ut=Ze(),dr=["title","meta"],ft=[],dt=["name","http-equiv","content","charset","media"].concat(["property"]),ht=(e,t)=>{const n=Object.fromEntries(Object.entries(e.props).filter(([r])=>t.includes(r)).sort());return(Object.hasOwn(n,"name")||Object.hasOwn(n,"property"))&&(n.name=n.name||n.property,delete n.property),e.tag+JSON.stringify(n)};function hr(){if(!y.context){const n=document.head.querySelectorAll("[data-sm]");Array.prototype.forEach.call(n,r=>r.parentNode.removeChild(r))}const e=new Map;function t(n){if(n.ref)return n.ref;let r=document.querySelector(`[data-sm="${n.id}"]`);return r?(r.tagName.toLowerCase()!==n.tag&&(r.parentNode&&r.parentNode.removeChild(r),r=document.createElement(n.tag)),r.removeAttribute("data-sm")):r=document.createElement(n.tag),r}return{addTag(n){if(dr.indexOf(n.tag)!==-1){const o=n.tag==="title"?ft:dt,i=ht(n,o);e.has(i)||e.set(i,[]);let l=e.get(i),c=l.length;l=[...l,n],e.set(i,l);let u=t(n);n.ref=u,We(u,n.props);let a=null;for(var r=c-1;r>=0;r--)if(l[r]!=null){a=l[r];break}return u.parentNode!=document.head&&document.head.appendChild(u),a&&a.ref&&a.ref.parentNode&&document.head.removeChild(a.ref),c}let s=t(n);return n.ref=s,We(s,n.props),s.parentNode!=document.head&&document.head.appendChild(s),-1},removeTag(n,r){const s=n.tag==="title"?ft:dt,o=ht(n,s);if(n.ref){const i=e.get(o);if(i){if(n.ref.parentNode){n.ref.parentNode.removeChild(n.ref);for(let l=r-1;l>=0;l--)i[l]!=null&&document.head.appendChild(i[l].ref)}i[r]=null,e.set(o,i)}else n.ref.parentNode&&n.ref.parentNode.removeChild(n.ref)}}}}const Tr=e=>{const t=hr();return q(Ut.Provider,{value:t,get children(){return e.children}})},Ft=(e,t,n)=>(gr({tag:e,props:t,setting:n,id:sn(),get name(){return t.name||t.property}}),null);function gr(e){const t=Te(Ut);if(!t)throw new Error("<MetaProvider /> should be in the tree");K(()=>{const n=t.addTag(e);W(()=>t.removeTag(e,n))})}const Ir=e=>Ft("title",e,{escape:!0,close:!0}),jr=e=>Ft("meta",e);export{Lr as A,On as B,Qe as C,Cr as D,Pr as E,pr as F,Ar as I,jr as M,Or as P,Rr as R,Ot as S,Ir as T,T as a,Hn as b,Nr as c,xt as d,mr as e,bt as f,q as g,K as h,Ge as i,Sn as j,Ht as k,xn as l,yn as m,xr as n,W as o,E as p,Pn as q,$r as r,He as s,bn as t,Tt as u,Sr as v,vr as w,Tr as x,br as y,Er as z};