@waiaas/daemon 2.11.0-rc → 2.11.0-rc.13

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 (224) hide show
  1. package/dist/api/middleware/resolve-asset.d.ts +26 -0
  2. package/dist/api/middleware/resolve-asset.d.ts.map +1 -0
  3. package/dist/api/middleware/resolve-asset.js +81 -0
  4. package/dist/api/middleware/resolve-asset.js.map +1 -0
  5. package/dist/api/routes/actions.d.ts +4 -0
  6. package/dist/api/routes/actions.d.ts.map +1 -1
  7. package/dist/api/routes/actions.js +120 -0
  8. package/dist/api/routes/actions.js.map +1 -1
  9. package/dist/api/routes/admin-auth.d.ts.map +1 -1
  10. package/dist/api/routes/admin-auth.js +4 -1
  11. package/dist/api/routes/admin-auth.js.map +1 -1
  12. package/dist/api/routes/admin-credentials.d.ts +20 -0
  13. package/dist/api/routes/admin-credentials.d.ts.map +1 -0
  14. package/dist/api/routes/admin-credentials.js +115 -0
  15. package/dist/api/routes/admin-credentials.js.map +1 -0
  16. package/dist/api/routes/admin-settings.d.ts.map +1 -1
  17. package/dist/api/routes/admin-settings.js +70 -1
  18. package/dist/api/routes/admin-settings.js.map +1 -1
  19. package/dist/api/routes/admin-wallets.d.ts.map +1 -1
  20. package/dist/api/routes/admin-wallets.js +27 -14
  21. package/dist/api/routes/admin-wallets.js.map +1 -1
  22. package/dist/api/routes/connect-info.d.ts +2 -0
  23. package/dist/api/routes/connect-info.d.ts.map +1 -1
  24. package/dist/api/routes/connect-info.js +32 -1
  25. package/dist/api/routes/connect-info.js.map +1 -1
  26. package/dist/api/routes/credentials.d.ts +20 -0
  27. package/dist/api/routes/credentials.d.ts.map +1 -0
  28. package/dist/api/routes/credentials.js +120 -0
  29. package/dist/api/routes/credentials.js.map +1 -0
  30. package/dist/api/routes/defi-positions.d.ts.map +1 -1
  31. package/dist/api/routes/defi-positions.js +10 -0
  32. package/dist/api/routes/defi-positions.js.map +1 -1
  33. package/dist/api/routes/external-actions.d.ts +19 -0
  34. package/dist/api/routes/external-actions.d.ts.map +1 -0
  35. package/dist/api/routes/external-actions.js +199 -0
  36. package/dist/api/routes/external-actions.js.map +1 -0
  37. package/dist/api/routes/incoming.d.ts.map +1 -1
  38. package/dist/api/routes/incoming.js +2 -1
  39. package/dist/api/routes/incoming.js.map +1 -1
  40. package/dist/api/routes/index.d.ts +3 -0
  41. package/dist/api/routes/index.d.ts.map +1 -1
  42. package/dist/api/routes/index.js +3 -0
  43. package/dist/api/routes/index.js.map +1 -1
  44. package/dist/api/routes/nfts.js +24 -4
  45. package/dist/api/routes/nfts.js.map +1 -1
  46. package/dist/api/routes/openapi-schemas.d.ts +321 -139
  47. package/dist/api/routes/openapi-schemas.d.ts.map +1 -1
  48. package/dist/api/routes/openapi-schemas.js +24 -0
  49. package/dist/api/routes/openapi-schemas.js.map +1 -1
  50. package/dist/api/routes/rpc-proxy.d.ts +55 -0
  51. package/dist/api/routes/rpc-proxy.d.ts.map +1 -0
  52. package/dist/api/routes/rpc-proxy.js +285 -0
  53. package/dist/api/routes/rpc-proxy.js.map +1 -0
  54. package/dist/api/routes/staking.d.ts.map +1 -1
  55. package/dist/api/routes/staking.js +15 -0
  56. package/dist/api/routes/staking.js.map +1 -1
  57. package/dist/api/routes/tokens.d.ts.map +1 -1
  58. package/dist/api/routes/tokens.js +8 -1
  59. package/dist/api/routes/tokens.js.map +1 -1
  60. package/dist/api/routes/transactions.d.ts +35 -0
  61. package/dist/api/routes/transactions.d.ts.map +1 -1
  62. package/dist/api/routes/transactions.js +220 -20
  63. package/dist/api/routes/transactions.js.map +1 -1
  64. package/dist/api/routes/wallet.d.ts.map +1 -1
  65. package/dist/api/routes/wallet.js +18 -4
  66. package/dist/api/routes/wallet.js.map +1 -1
  67. package/dist/api/server.d.ts +2 -0
  68. package/dist/api/server.d.ts.map +1 -1
  69. package/dist/api/server.js +52 -1
  70. package/dist/api/server.js.map +1 -1
  71. package/dist/infrastructure/action/action-provider-registry.d.ts.map +1 -1
  72. package/dist/infrastructure/action/action-provider-registry.js +12 -0
  73. package/dist/infrastructure/action/action-provider-registry.js.map +1 -1
  74. package/dist/infrastructure/credential/credential-crypto.d.ts +43 -0
  75. package/dist/infrastructure/credential/credential-crypto.d.ts.map +1 -0
  76. package/dist/infrastructure/credential/credential-crypto.js +64 -0
  77. package/dist/infrastructure/credential/credential-crypto.js.map +1 -0
  78. package/dist/infrastructure/credential/credential-vault.d.ts +42 -0
  79. package/dist/infrastructure/credential/credential-vault.d.ts.map +1 -0
  80. package/dist/infrastructure/credential/credential-vault.js +235 -0
  81. package/dist/infrastructure/credential/credential-vault.js.map +1 -0
  82. package/dist/infrastructure/credential/index.d.ts +6 -0
  83. package/dist/infrastructure/credential/index.d.ts.map +1 -0
  84. package/dist/infrastructure/credential/index.js +6 -0
  85. package/dist/infrastructure/credential/index.js.map +1 -0
  86. package/dist/infrastructure/database/migrate.d.ts +1 -1
  87. package/dist/infrastructure/database/migrate.d.ts.map +1 -1
  88. package/dist/infrastructure/database/migrate.js +191 -6
  89. package/dist/infrastructure/database/migrate.js.map +1 -1
  90. package/dist/infrastructure/database/schema.d.ts +281 -1
  91. package/dist/infrastructure/database/schema.d.ts.map +1 -1
  92. package/dist/infrastructure/database/schema.js +34 -3
  93. package/dist/infrastructure/database/schema.js.map +1 -1
  94. package/dist/infrastructure/keystore/re-encrypt.d.ts +9 -0
  95. package/dist/infrastructure/keystore/re-encrypt.d.ts.map +1 -1
  96. package/dist/infrastructure/keystore/re-encrypt.js +47 -1
  97. package/dist/infrastructure/keystore/re-encrypt.js.map +1 -1
  98. package/dist/infrastructure/settings/index.d.ts +2 -2
  99. package/dist/infrastructure/settings/index.d.ts.map +1 -1
  100. package/dist/infrastructure/settings/index.js +1 -1
  101. package/dist/infrastructure/settings/index.js.map +1 -1
  102. package/dist/infrastructure/settings/setting-keys.d.ts +16 -2
  103. package/dist/infrastructure/settings/setting-keys.d.ts.map +1 -1
  104. package/dist/infrastructure/settings/setting-keys.js +296 -206
  105. package/dist/infrastructure/settings/setting-keys.js.map +1 -1
  106. package/dist/lifecycle/daemon.d.ts.map +1 -1
  107. package/dist/lifecycle/daemon.js +31 -0
  108. package/dist/lifecycle/daemon.js.map +1 -1
  109. package/dist/notifications/templates/message-templates.d.ts.map +1 -1
  110. package/dist/notifications/templates/message-templates.js +5 -6
  111. package/dist/notifications/templates/message-templates.js.map +1 -1
  112. package/dist/pipeline/database-policy-engine.d.ts +36 -0
  113. package/dist/pipeline/database-policy-engine.d.ts.map +1 -1
  114. package/dist/pipeline/database-policy-engine.js +185 -0
  115. package/dist/pipeline/database-policy-engine.js.map +1 -1
  116. package/dist/pipeline/external-action-pipeline.d.ts +64 -0
  117. package/dist/pipeline/external-action-pipeline.d.ts.map +1 -0
  118. package/dist/pipeline/external-action-pipeline.js +427 -0
  119. package/dist/pipeline/external-action-pipeline.js.map +1 -0
  120. package/dist/pipeline/pipeline.d.ts +4 -0
  121. package/dist/pipeline/pipeline.d.ts.map +1 -1
  122. package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -1
  123. package/dist/pipeline/resolve-effective-amount-usd.js +2 -1
  124. package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -1
  125. package/dist/pipeline/stages.d.ts.map +1 -1
  126. package/dist/pipeline/stages.js +59 -10
  127. package/dist/pipeline/stages.js.map +1 -1
  128. package/dist/rpc-proxy/completion-waiter.d.ts +35 -0
  129. package/dist/rpc-proxy/completion-waiter.d.ts.map +1 -0
  130. package/dist/rpc-proxy/completion-waiter.js +72 -0
  131. package/dist/rpc-proxy/completion-waiter.js.map +1 -0
  132. package/dist/rpc-proxy/dispatcher.d.ts +37 -0
  133. package/dist/rpc-proxy/dispatcher.d.ts.map +1 -0
  134. package/dist/rpc-proxy/dispatcher.js +54 -0
  135. package/dist/rpc-proxy/dispatcher.js.map +1 -0
  136. package/dist/rpc-proxy/index.d.ts +15 -0
  137. package/dist/rpc-proxy/index.d.ts.map +1 -0
  138. package/dist/rpc-proxy/index.js +15 -0
  139. package/dist/rpc-proxy/index.js.map +1 -0
  140. package/dist/rpc-proxy/json-rpc.d.ts +78 -0
  141. package/dist/rpc-proxy/json-rpc.d.ts.map +1 -0
  142. package/dist/rpc-proxy/json-rpc.js +123 -0
  143. package/dist/rpc-proxy/json-rpc.js.map +1 -0
  144. package/dist/rpc-proxy/method-handlers.d.ts +54 -0
  145. package/dist/rpc-proxy/method-handlers.d.ts.map +1 -0
  146. package/dist/rpc-proxy/method-handlers.js +171 -0
  147. package/dist/rpc-proxy/method-handlers.js.map +1 -0
  148. package/dist/rpc-proxy/nonce-tracker.d.ts +39 -0
  149. package/dist/rpc-proxy/nonce-tracker.d.ts.map +1 -0
  150. package/dist/rpc-proxy/nonce-tracker.js +80 -0
  151. package/dist/rpc-proxy/nonce-tracker.js.map +1 -0
  152. package/dist/rpc-proxy/passthrough.d.ts +37 -0
  153. package/dist/rpc-proxy/passthrough.d.ts.map +1 -0
  154. package/dist/rpc-proxy/passthrough.js +86 -0
  155. package/dist/rpc-proxy/passthrough.js.map +1 -0
  156. package/dist/rpc-proxy/sync-pipeline.d.ts +40 -0
  157. package/dist/rpc-proxy/sync-pipeline.d.ts.map +1 -0
  158. package/dist/rpc-proxy/sync-pipeline.js +74 -0
  159. package/dist/rpc-proxy/sync-pipeline.js.map +1 -0
  160. package/dist/rpc-proxy/tx-adapter.d.ts +79 -0
  161. package/dist/rpc-proxy/tx-adapter.d.ts.map +1 -0
  162. package/dist/rpc-proxy/tx-adapter.js +117 -0
  163. package/dist/rpc-proxy/tx-adapter.js.map +1 -0
  164. package/dist/services/async-polling-service.d.ts.map +1 -1
  165. package/dist/services/async-polling-service.js +95 -2
  166. package/dist/services/async-polling-service.js.map +1 -1
  167. package/dist/signing/bootstrap.d.ts +12 -0
  168. package/dist/signing/bootstrap.d.ts.map +1 -0
  169. package/dist/signing/bootstrap.js +15 -0
  170. package/dist/signing/bootstrap.js.map +1 -0
  171. package/dist/signing/capabilities/ecdsa-signer.d.ts +7 -0
  172. package/dist/signing/capabilities/ecdsa-signer.d.ts.map +1 -0
  173. package/dist/signing/capabilities/ecdsa-signer.js +42 -0
  174. package/dist/signing/capabilities/ecdsa-signer.js.map +1 -0
  175. package/dist/signing/capabilities/ed25519-signer.d.ts +7 -0
  176. package/dist/signing/capabilities/ed25519-signer.d.ts.map +1 -0
  177. package/dist/signing/capabilities/ed25519-signer.js +39 -0
  178. package/dist/signing/capabilities/ed25519-signer.js.map +1 -0
  179. package/dist/signing/capabilities/eip712-signer.d.ts +7 -0
  180. package/dist/signing/capabilities/eip712-signer.d.ts.map +1 -0
  181. package/dist/signing/capabilities/eip712-signer.js +35 -0
  182. package/dist/signing/capabilities/eip712-signer.js.map +1 -0
  183. package/dist/signing/capabilities/erc8128-signer.d.ts +7 -0
  184. package/dist/signing/capabilities/erc8128-signer.d.ts.map +1 -0
  185. package/dist/signing/capabilities/erc8128-signer.js +55 -0
  186. package/dist/signing/capabilities/erc8128-signer.js.map +1 -0
  187. package/dist/signing/capabilities/hmac-signer.d.ts +7 -0
  188. package/dist/signing/capabilities/hmac-signer.d.ts.map +1 -0
  189. package/dist/signing/capabilities/hmac-signer.js +32 -0
  190. package/dist/signing/capabilities/hmac-signer.js.map +1 -0
  191. package/dist/signing/capabilities/index.d.ts +13 -0
  192. package/dist/signing/capabilities/index.d.ts.map +1 -0
  193. package/dist/signing/capabilities/index.js +13 -0
  194. package/dist/signing/capabilities/index.js.map +1 -0
  195. package/dist/signing/capabilities/personal-signer.d.ts +7 -0
  196. package/dist/signing/capabilities/personal-signer.d.ts.map +1 -0
  197. package/dist/signing/capabilities/personal-signer.js +35 -0
  198. package/dist/signing/capabilities/personal-signer.js.map +1 -0
  199. package/dist/signing/capabilities/rsa-pss-signer.d.ts +7 -0
  200. package/dist/signing/capabilities/rsa-pss-signer.d.ts.map +1 -0
  201. package/dist/signing/capabilities/rsa-pss-signer.js +35 -0
  202. package/dist/signing/capabilities/rsa-pss-signer.js.map +1 -0
  203. package/dist/signing/index.d.ts +13 -0
  204. package/dist/signing/index.d.ts.map +1 -0
  205. package/dist/signing/index.js +5 -0
  206. package/dist/signing/index.js.map +1 -0
  207. package/dist/signing/registry.d.ts +36 -0
  208. package/dist/signing/registry.d.ts.map +1 -0
  209. package/dist/signing/registry.js +27 -0
  210. package/dist/signing/registry.js.map +1 -0
  211. package/dist/signing/signing-error.d.ts +22 -0
  212. package/dist/signing/signing-error.d.ts.map +1 -0
  213. package/dist/signing/signing-error.js +17 -0
  214. package/dist/signing/signing-error.js.map +1 -0
  215. package/dist/signing/types.d.ts +91 -0
  216. package/dist/signing/types.d.ts.map +1 -0
  217. package/dist/signing/types.js +2 -0
  218. package/dist/signing/types.js.map +1 -0
  219. package/package.json +6 -5
  220. package/public/admin/assets/index-COymjGTe.js +3 -0
  221. package/public/admin/assets/index-CTHU1J8K.css +1 -0
  222. package/public/admin/index.html +4 -2
  223. package/public/admin/assets/index-BpDnuS0k.css +0 -1
  224. package/public/admin/assets/index-By5VUJ-B.js +0 -3
@@ -0,0 +1 @@
1
+ *,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #00ff41;--color-primary-hover: #00cc33;--color-primary-light: rgba(0, 255, 65, .1);--color-bg: #0c0c0c;--color-bg-secondary: #111111;--color-bg-tertiary: #1a1a1a;--color-border: #2a2a2a;--color-border-light: rgba(255, 255, 255, .05);--color-text: #d4d4d4;--color-text-secondary: #888888;--color-text-muted: #555555;--color-success: #00ff41;--color-success-bg: rgba(0, 255, 65, .1);--color-warning: #ff9500;--color-warning-bg: rgba(255, 149, 0, .1);--color-danger: #ff4444;--color-danger-bg: rgba(255, 68, 68, .15);--color-info: #00d4ff;--color-info-bg: rgba(0, 212, 255, .1);--color-tier-instant: #00ff41;--color-tier-delay: #ff9500;--color-tier-blocked: #ff4444;--color-cyan: #00d4ff;--color-yellow: #ffcc00;--color-magenta: #ff44cc;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--font-family: "SF Mono", "Fira Code", "Cascadia Code", "JetBrains Mono", monospace;--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height: 1.5;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .5), 0 4px 6px -4px rgb(0 0 0 / .4);--sidebar-width: 220px;--header-height: 56px;--content-max-width: 1200px}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height);background:var(--color-bg);color:var(--color-text);color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3a3a3a}a{color:var(--color-cyan);text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-bg);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10}.sidebar-brand{padding:var(--space-4) var(--space-4);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary);border-bottom:1px solid var(--color-border);text-shadow:0 0 8px rgba(0,255,65,.4)}.sidebar-nav{display:flex;flex-direction:column;padding:var(--space-2);gap:var(--space-1)}.sidebar-link{display:block;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:background .15s,color .15s;text-decoration:none}.sidebar-link:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.sidebar-link.active{background:var(--color-primary-light);color:var(--color-primary)}.main{margin-left:var(--sidebar-width);flex:1;display:flex;flex-direction:column}.header{min-height:var(--header-height);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-6);background:var(--color-bg);position:sticky;top:0;z-index:5}.header-left{display:flex;flex-direction:column;justify-content:center;gap:0}.header-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.header-subtitle{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-normal);margin:0}.btn-logout{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-secondary);background:none;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:background .15s,color .15s}.btn-logout:hover{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger)}.content{padding:var(--space-6);max-width:var(--content-max-width);width:100%}.page h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-4)}.table-container{overflow-x:auto}table{width:100%;border-collapse:collapse}table th{text-align:left;padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-border);background:var(--color-bg-secondary)}table td{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border)}table tbody tr:hover{background:var(--color-bg-secondary)}table tbody tr.clickable{cursor:pointer}table .table-empty,table .table-loading{text-align:center;color:var(--color-text-muted);padding:var(--space-8) var(--space-4)}.form-field{margin-bottom:var(--space-4)}.form-field label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.form-field input,.form-field select,.form-field textarea{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #00ff4133}.form-field textarea{min-height:80px;resize:vertical}.form-field .form-error{display:block;font-size:var(--font-size-xs);color:var(--color-danger);margin-top:var(--space-1)}.form-field input[type=checkbox]{width:auto;margin-right:var(--space-2)}.form-field .form-description{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--space-1)}.field-group{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);margin-bottom:var(--space-4)}.field-group-legend{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);padding:0 var(--space-2)}.field-group-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3)}.field-group-body{display:flex;flex-direction:column;gap:var(--space-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.btn-primary{background:var(--color-primary);color:#0c0c0c}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-secondary)}.btn-danger{background:transparent;color:var(--color-danger);border:1px solid var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-bg)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-bg-tertiary);color:var(--color-text)}.badge{display:inline-flex;align-items:center;padding:.125rem var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:9999px}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-info{background:var(--color-info-bg);color:var(--color-info)}.badge-neutral{background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100}.modal-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.modal-body{padding:var(--space-4) var(--space-6)}.modal-footer{padding:var(--space-3) var(--space-6);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:var(--space-2)}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:200;display:flex;flex-direction:column;gap:var(--space-2);max-width:360px}.toast{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);box-shadow:var(--shadow-md);cursor:pointer;animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success)}.toast-error{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger)}.toast-info{background:var(--color-info-bg);color:var(--color-info);border:1px solid var(--color-info)}.toast-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning)}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-text-muted)}.empty-state h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.empty-state p{font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.stat-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);box-shadow:var(--shadow-sm)}.stat-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text)}.stat-skeleton{height:2rem;background:var(--color-bg-tertiary);border-radius:var(--radius-md);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.dashboard-error{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.update-banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.update-banner-icon{font-size:1.1em}.update-banner code{background:#ffffff1a;padding:.1em .4em;border-radius:var(--radius-sm);font-size:.9em}.auto-provision-banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.auto-provision-banner-icon{font-size:1.1em}.auto-provision-link{color:var(--color-warning);text-decoration:underline;font-weight:600}.auto-provision-link:hover{opacity:.8}.prompt-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6)}.prompt-card-desc{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-3)}.prompt-preview{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--font-size-xs);line-height:1.6;white-space:pre-wrap;word-break:break-all;max-height:300px;overflow:auto}.page-actions{display:flex;justify-content:flex-end;margin-bottom:var(--space-4)}.inline-form{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);margin-bottom:var(--space-4)}.inline-form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.back-link{display:inline-block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4)}.back-link:hover{color:var(--color-primary)}.wallet-detail{margin-top:var(--space-4)}.detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.detail-name{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.detail-grid{display:grid;gap:0}.detail-row{display:flex;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.detail-row-label{width:160px;flex-shrink:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.detail-row-value{font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--space-2);word-break:break-all}.inline-edit{display:flex;align-items:center;gap:var(--space-2)}.inline-edit-input{padding:var(--space-1) var(--space-2);border:1px solid var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-size-base);outline:none}.session-controls{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-4)}.session-wallet-select{flex:1;max-width:400px}.session-wallet-select label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.session-wallet-select select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none}.session-wallet-select select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #00ff4133}.token-warning{color:var(--color-warning);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin-bottom:var(--space-3)}.token-display{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.token-value{flex:1;font-size:var(--font-size-xs);word-break:break-all;font-family:SF Mono,Fira Code,monospace}.policy-controls{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-4)}.policy-filter-select{flex:1;max-width:400px}.policy-filter-select label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.policy-filter-select select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none}.policy-filter-select select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #00ff4133}.tier-bars{display:flex;flex-direction:column;gap:3px;min-width:180px}.tier-bar{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs)}.tier-bar-label{width:52px;flex-shrink:0;font-weight:var(--font-weight-medium)}.tier-bar-track{flex:1;height:6px;background:var(--color-bg-tertiary);border-radius:3px;overflow:hidden}.tier-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.tier-bar-value{font-size:var(--font-size-xs);color:var(--color-text-secondary);min-width:60px;text-align:right}.tier-bar-fill--instant{background:var(--color-tier-instant)}.tier-bar-fill--notify{background:var(--color-info)}.tier-bar-fill--delay{background:var(--color-tier-delay)}.tier-bar-fill--approval{background:var(--color-tier-blocked)}.spending-limit-summary{display:flex;flex-direction:column;gap:.5rem}.cumulative-limits{display:flex;flex-direction:column;gap:.125rem;padding-top:.25rem;border-top:1px solid var(--color-border)}.cumulative-limits-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:500}.cumulative-limit-row{display:flex;align-items:center;gap:.5rem;font-size:var(--font-size-xs)}.cumulative-limit-type{color:var(--color-text-secondary);min-width:72px}.cumulative-limit-value{color:var(--color-warning);font-weight:600}.rules-vis-text{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.rules-vis-badges{display:flex;flex-wrap:wrap;gap:4px}.rules-summary{font-size:var(--font-size-xs);color:var(--color-text-secondary);max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:SF Mono,Fira Code,monospace}.edit-rules-textarea textarea{min-height:120px;font-family:SF Mono,Fira Code,monospace;font-size:var(--font-size-xs)}.policy-type-readonly{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);padding:var(--space-2) 0;margin-bottom:var(--space-2)}.settings-section{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-4)}.settings-section--danger{border-color:var(--color-danger)}.settings-section-header{margin-bottom:var(--space-4)}.settings-section-header h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.settings-description{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.settings-section-body{display:flex;align-items:center;gap:var(--space-4)}.ks-state-card{display:flex;align-items:center;gap:var(--space-4);flex:1}.ks-state-info{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.shutdown-overlay{position:fixed;inset:0;background:#000c;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:300;color:#fff}.shutdown-overlay h2{font-size:var(--font-size-2xl);margin-bottom:var(--space-4);color:#fff}.shutdown-overlay p{font-size:var(--font-size-base);color:var(--color-text-muted)}.shutdown-confirm-input{margin-top:var(--space-3)}.shutdown-confirm-input label{display:block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.shutdown-confirm-input input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none}.shutdown-confirm-input input:focus{border-color:var(--color-danger);box-shadow:0 0 0 2px var(--color-danger-bg)}.channel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-bottom:var(--space-6)}.channel-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg)}.channel-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.channel-card-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);text-transform:capitalize}.test-results{margin-top:var(--space-4)}.test-result-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}.test-result-success{color:var(--color-success)}.test-result-failure{color:var(--color-danger)}.config-guidance{margin-top:var(--space-6);padding:var(--space-4);background:var(--color-info-bg);border:1px solid var(--color-info);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.config-guidance pre{margin-top:var(--space-2);padding:var(--space-3);background:var(--color-bg-tertiary);border-radius:var(--radius-sm);font-family:monospace;font-size:var(--font-size-xs);overflow-x:auto;white-space:pre}.config-guidance p{color:var(--color-text-secondary);margin-bottom:var(--space-2)}.breadcrumb{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.breadcrumb-page{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:inherit;padding:0;font-family:inherit}.breadcrumb-page:hover{text-decoration:underline}.breadcrumb-separator{color:var(--color-text-muted)}.breadcrumb-current{color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.tab-nav{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border)}.tab-btn{padding:var(--space-2) var(--space-4);background:none;border:none;border-bottom:2px solid transparent;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-4)}.pagination-info{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pagination-buttons{display:flex;gap:var(--space-2)}.notif-disabled-banner{padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm);color:var(--color-text)}.settings-save-bar{position:sticky;top:var(--header-height);z-index:4;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm);color:var(--color-text)}.settings-save-bar-actions{display:flex;gap:var(--space-2)}.settings-category{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--space-4);overflow:hidden}.settings-category-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border)}.settings-category-header h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.settings-category-body{padding:var(--space-4) var(--space-6)}.settings-fields-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.settings-fields-grid .form-field{margin-bottom:0}.settings-field-full{grid-column:1 / -1}.settings-subgroup{margin-bottom:var(--space-4)}.settings-subgroup-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.rpc-field-row{display:flex;gap:var(--space-2);align-items:flex-end}.rpc-field-row .form-field{flex:1;margin-bottom:0}.rpc-test-result{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);margin-top:var(--space-1)}.rpc-test-result--success{color:var(--color-success)}.rpc-test-result--failure{color:var(--color-danger)}.rpc-pool-network{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-2);overflow:hidden}.rpc-pool-network-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);cursor:pointer;background:var(--color-bg-secondary);font-weight:500;font-size:var(--font-size-sm);user-select:none;list-style:none}.rpc-pool-network-header::-webkit-details-marker{display:none}.rpc-pool-network-header:before{content:"▶";margin-right:var(--space-2);font-size:.65em;transition:transform .15s}.rpc-pool-network[open]>.rpc-pool-network-header:before{transform:rotate(90deg)}.rpc-pool-url-count{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:400}.rpc-url-list{padding:var(--space-2) 0}.rpc-url-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border-light)}.rpc-url-item:last-of-type{border-bottom:none}.rpc-url-item--builtin{color:var(--color-text-secondary)}.rpc-url-disabled{opacity:.5}.rpc-url-priority{font-size:var(--font-size-xs);color:var(--color-text-secondary);min-width:2em;text-align:right;font-weight:500}.rpc-url-item-url{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono, monospace);font-size:var(--font-size-xs)}.rpc-url-actions{display:flex;gap:2px;align-items:center;flex-shrink:0}.rpc-action-btn{padding:2px 6px!important;min-width:0!important;font-size:var(--font-size-xs)!important;line-height:1.2!important}.rpc-delete-btn{color:var(--color-danger)!important}.rpc-toggle-off{color:var(--color-text-secondary)!important;opacity:.6}.badge-builtin{font-size:.65rem;background:var(--color-info-bg);color:var(--color-info);padding:1px 6px;border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0}.rpc-add-url{display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-3);align-items:center}.rpc-add-url-input{flex:1;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:var(--font-mono, monospace);background:var(--color-bg);color:var(--color-text)}.rpc-add-url-input::placeholder{color:var(--color-text-secondary);opacity:.6}.rpc-url-status{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);white-space:nowrap}.rpc-url-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.rpc-url-status-dot--available{background-color:var(--color-success)}.rpc-url-status-dot--cooldown{background-color:var(--color-warning)}.rpc-url-status-dot--unknown{background-color:var(--color-text-muted)}.rpc-url-cooldown-info{color:var(--color-warning);font-size:var(--font-size-xs)}.rpc-url-test-inline{display:inline-flex;align-items:center;gap:var(--space-1)}.settings-info-box{padding:var(--space-3) var(--space-4);background:var(--color-info-bg);border:1px solid var(--color-info);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--space-3)}.settings-info-box a{color:var(--color-primary);text-decoration:underline}.notif-test-section{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.event-filter-groups{display:flex;flex-direction:column;gap:var(--space-2)}.event-filter-group{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.event-filter-group[open]>summary{border-bottom:1px solid var(--color-border)}.event-filter-group-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);cursor:pointer;background:var(--color-bg-secondary);font-weight:500;font-size:var(--font-size-sm);user-select:none;list-style:none}.event-filter-group-header::-webkit-details-marker{display:none}.event-filter-group-header:before{content:"▶";margin-right:var(--space-2);font-size:.65em;transition:transform .15s}.event-filter-group[open]>.event-filter-group-header:before{transform:rotate(90deg)}.event-filter-group-all{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);font-weight:400;cursor:pointer}.event-filter-events{display:flex;flex-direction:column}.event-filter-event{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-1) var(--space-5);font-size:var(--font-size-sm);cursor:pointer;border-bottom:1px solid var(--color-border-light)}.event-filter-event:last-child{border-bottom:none}.event-filter-event:hover{background:var(--color-bg-secondary)}.event-filter-event code{font-size:var(--font-size-xs);min-width:180px;color:var(--color-text)}.event-desc{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.event-broadcast{opacity:.7}.event-broadcast-badge{font-size:.65rem;background:var(--color-warning-bg);color:var(--color-warning);padding:1px 6px;border-radius:var(--radius-sm);margin-left:auto;white-space:nowrap}.settings-category-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.dynamic-row-list{display:flex;flex-direction:column;gap:var(--space-2)}.dynamic-row{display:flex;align-items:flex-start;gap:var(--space-2)}.dynamic-row-fields{flex:1;display:flex;gap:var(--space-2);align-items:flex-start}.dynamic-row-fields .form-field{flex:1;margin-bottom:0}.dynamic-row-remove{flex-shrink:0;margin-top:var(--space-6);color:var(--color-danger)}.policy-form-section{margin-bottom:var(--space-4)}.policy-form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.policy-form-header label{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.json-toggle{font-size:var(--font-size-xs)}.policy-form-placeholder{color:var(--color-text-secondary);font-size:var(--font-size-sm);padding:var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-md);text-align:center}.policy-form-fields{display:flex;flex-direction:column;gap:var(--space-3)}.policy-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.policy-form-grid .form-field{margin-bottom:0}.currency-select{position:relative}.currency-select-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--color-text)}.currency-select-trigger:hover{border-color:var(--color-primary)}.currency-select-chevron{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.currency-rate-preview{margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.currency-select-dropdown{position:absolute;top:100%;left:0;right:0;z-index:50;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);box-shadow:0 4px 12px #00000080;margin-top:var(--space-1)}.currency-select-search{width:100%;padding:var(--space-2) var(--space-3);border:none;border-bottom:1px solid var(--color-border);outline:none;font-size:var(--font-size-sm);font-family:var(--font-family)}.currency-select-list{max-height:300px;overflow-y:auto}.currency-select-option{width:100%;display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:none;cursor:pointer;text-align:left;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--color-text)}.currency-select-option:hover{background:var(--color-bg-secondary)}.currency-select-option--active{background:var(--color-primary-light);font-weight:var(--font-weight-semibold)}.currency-option-code{font-weight:var(--font-weight-semibold);min-width:3rem}.currency-option-name{flex:1}.currency-option-symbol{color:var(--color-text-secondary)}.currency-select-empty{padding:var(--space-3);text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.search-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh;z-index:100}.search-popover{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:60vh;overflow:hidden;display:flex;flex-direction:column}.search-input-wrapper{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.search-input-wrapper input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);outline:none;background:var(--color-bg);color:var(--color-text)}.search-input-wrapper input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #00ff4133}.search-results{overflow-y:auto;flex:1}.search-result-item{display:block;width:100%;padding:var(--space-3) var(--space-4);border:none;border-bottom:1px solid var(--color-border);background:none;text-align:left;cursor:pointer;font-family:inherit;color:var(--color-text)}.search-result-item:hover,.search-result-item.selected{background:var(--color-bg-secondary)}.search-result-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);margin-bottom:2px}.search-result-desc{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-path{font-size:var(--font-size-xs);color:var(--color-text-muted)}.search-empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.search-hint{padding:var(--space-2) var(--space-4);font-size:var(--font-size-xs);color:var(--color-text-muted);border-top:1px solid var(--color-border);display:flex;gap:var(--space-4)}.search-hint kbd{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--space-1);font-size:var(--font-size-xs);font-family:inherit}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.btn-search{padding:var(--space-1) var(--space-2);font-size:var(--font-size-base);background:none;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text-secondary);transition:background .15s,color .15s;line-height:1}.btn-search:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.form-field--highlight{animation:field-highlight 2s ease-out;border-radius:var(--radius-md)}@keyframes field-highlight{0%{background:var(--color-primary-light);box-shadow:0 0 0 2px #00ff414d}to{background:transparent;box-shadow:none}}.unsaved-dialog-footer{justify-content:flex-end;gap:var(--space-2)}.filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);margin-bottom:var(--space-4)}.filter-field{display:flex;flex-direction:column;gap:var(--space-1)}.filter-field label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.filter-field select,.filter-field input[type=date]{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s;min-width:140px}.filter-field select:focus,.filter-field input[type=date]:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #00ff4133}.filter-clear{align-self:flex-end}.search-input{position:relative;display:inline-flex;align-items:center;max-width:400px;width:100%;margin-bottom:var(--space-4)}.search-input input[type=text]{width:100%;padding:var(--space-2) var(--space-3);padding-right:var(--space-8);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s}.search-input input[type=text]:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #00ff4133}.search-clear{position:absolute;right:var(--space-2);background:none;border:none;font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.search-clear:hover{color:var(--color-text);background:var(--color-bg-tertiary)}.defi-filter-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap}.defi-category-tabs{display:flex;gap:var(--space-1)}.defi-category-tabs button{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg);color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-size-sm);transition:all .15s}.defi-category-tabs button.active{background:var(--color-primary);color:#0c0c0c;border-color:var(--color-primary)}.defi-category-tabs button:hover:not(.active){background:var(--color-bg-secondary)}.defi-wallet-select{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg);font-size:var(--font-size-sm);min-width:200px}.hf-warning-banner{padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);background:var(--color-danger-bg);border:1px solid var(--color-danger);border-left:4px solid var(--color-danger);border-radius:6px;display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-danger)}.hf-warning-icon{font-size:var(--font-size-lg)}.defi-provider-group{margin-bottom:var(--space-4)}.defi-provider-header{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);margin-bottom:var(--space-2)}.pnl-positive{color:var(--color-success);font-weight:600}.pnl-negative{color:var(--color-danger);font-weight:600}@media(max-width:768px){.channel-grid,.settings-fields-grid{grid-template-columns:1fr}.filter-bar{flex-direction:column;align-items:stretch}.filter-field select,.filter-field input[type=date]{min-width:0;width:100%}.search-input{max-width:100%}.defi-filter-row{flex-direction:column;align-items:stretch}.defi-wallet-select{min-width:0;width:100%}}
@@ -3,9 +3,11 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="theme-color" content="#0c0c0c" />
7
+ <meta name="color-scheme" content="dark" />
6
8
  <title>WAIaaS Admin</title>
7
- <script type="module" crossorigin src="/admin/assets/index-By5VUJ-B.js"></script>
8
- <link rel="stylesheet" crossorigin href="/admin/assets/index-BpDnuS0k.css">
9
+ <script type="module" crossorigin src="/admin/assets/index-COymjGTe.js"></script>
10
+ <link rel="stylesheet" crossorigin href="/admin/assets/index-CTHU1J8K.css">
9
11
  </head>
10
12
  <body>
11
13
  <div id="app"></div>
@@ -1 +0,0 @@
1
- *,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #eff6ff;--color-bg: #ffffff;--color-bg-secondary: #f8fafc;--color-bg-tertiary: #f1f5f9;--color-border: #e2e8f0;--color-text: #0f172a;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-success: #16a34a;--color-success-bg: #f0fdf4;--color-warning: #d97706;--color-warning-bg: #fffbeb;--color-danger: #dc2626;--color-danger-bg: #fef2f2;--color-info: #2563eb;--color-info-bg: #eff6ff;--color-tier-instant: #16a34a;--color-tier-delay: #d97706;--color-tier-blocked: #dc2626;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height: 1.5;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--sidebar-width: 220px;--header-height: 56px;--content-max-width: 1200px}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-primary);text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-bg);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10}.sidebar-brand{padding:var(--space-4) var(--space-4);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary);border-bottom:1px solid var(--color-border)}.sidebar-nav{display:flex;flex-direction:column;padding:var(--space-2);gap:var(--space-1)}.sidebar-link{display:block;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:background .15s,color .15s;text-decoration:none}.sidebar-link:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.sidebar-link.active{background:var(--color-primary-light);color:var(--color-primary)}.main{margin-left:var(--sidebar-width);flex:1;display:flex;flex-direction:column}.header{min-height:var(--header-height);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-6);background:var(--color-bg);position:sticky;top:0;z-index:5}.header-left{display:flex;flex-direction:column;justify-content:center;gap:0}.header-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.header-subtitle{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-normal);margin:0}.btn-logout{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-secondary);background:none;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:background .15s,color .15s}.btn-logout:hover{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger)}.content{padding:var(--space-6);max-width:var(--content-max-width);width:100%}.page h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-4)}.table-container{overflow-x:auto}table{width:100%;border-collapse:collapse}table th{text-align:left;padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-border);background:var(--color-bg-secondary)}table td{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border)}table tbody tr:hover{background:var(--color-bg-secondary)}table tbody tr.clickable{cursor:pointer}table .table-empty,table .table-loading{text-align:center;color:var(--color-text-muted);padding:var(--space-8) var(--space-4)}.form-field{margin-bottom:var(--space-4)}.form-field label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.form-field input,.form-field select,.form-field textarea{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.form-field textarea{min-height:80px;resize:vertical}.form-field .form-error{display:block;font-size:var(--font-size-xs);color:var(--color-danger);margin-top:var(--space-1)}.form-field input[type=checkbox]{width:auto;margin-right:var(--space-2)}.form-field .form-description{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--space-1)}.field-group{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);margin-bottom:var(--space-4)}.field-group-legend{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);padding:0 var(--space-2)}.field-group-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3)}.field-group-body{display:flex;flex-direction:column;gap:var(--space-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-secondary)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-bg-tertiary);color:var(--color-text)}.badge{display:inline-flex;align-items:center;padding:.125rem var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:9999px}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-info{background:var(--color-info-bg);color:var(--color-info)}.badge-neutral{background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal-card{background:var(--color-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.modal-body{padding:var(--space-4) var(--space-6)}.modal-footer{padding:var(--space-3) var(--space-6);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:var(--space-2)}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:200;display:flex;flex-direction:column;gap:var(--space-2);max-width:360px}.toast{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);box-shadow:var(--shadow-md);cursor:pointer;animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success)}.toast-error{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger)}.toast-info{background:var(--color-info-bg);color:var(--color-info);border:1px solid var(--color-info)}.toast-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning)}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-text-muted)}.empty-state h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.empty-state p{font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.stat-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);box-shadow:var(--shadow-sm)}.stat-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text)}.stat-skeleton{height:2rem;background:var(--color-bg-tertiary);border-radius:var(--radius-md);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.dashboard-error{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.update-banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.update-banner-icon{font-size:1.1em}.update-banner code{background:#0000001a;padding:.1em .4em;border-radius:var(--radius-sm);font-size:.9em}.auto-provision-banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.auto-provision-banner-icon{font-size:1.1em}.auto-provision-link{color:var(--color-warning);text-decoration:underline;font-weight:600}.auto-provision-link:hover{opacity:.8}.prompt-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6)}.prompt-card-desc{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-3)}.prompt-preview{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--font-size-xs);line-height:1.6;white-space:pre-wrap;word-break:break-all;max-height:300px;overflow:auto}.page-actions{display:flex;justify-content:flex-end;margin-bottom:var(--space-4)}.inline-form{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);margin-bottom:var(--space-4)}.inline-form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.back-link{display:inline-block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4)}.back-link:hover{color:var(--color-primary)}.wallet-detail{margin-top:var(--space-4)}.detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.detail-name{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.detail-grid{display:grid;gap:0}.detail-row{display:flex;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.detail-row-label{width:160px;flex-shrink:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.detail-row-value{font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--space-2);word-break:break-all}.inline-edit{display:flex;align-items:center;gap:var(--space-2)}.inline-edit-input{padding:var(--space-1) var(--space-2);border:1px solid var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-size-base);outline:none}.session-controls{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-4)}.session-wallet-select{flex:1;max-width:400px}.session-wallet-select label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.session-wallet-select select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none}.session-wallet-select select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.token-warning{color:var(--color-warning);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin-bottom:var(--space-3)}.token-display{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.token-value{flex:1;font-size:var(--font-size-xs);word-break:break-all;font-family:SF Mono,Fira Code,monospace}.policy-controls{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-4)}.policy-filter-select{flex:1;max-width:400px}.policy-filter-select label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:var(--space-1)}.policy-filter-select select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none}.policy-filter-select select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.tier-bars{display:flex;flex-direction:column;gap:3px;min-width:180px}.tier-bar{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs)}.tier-bar-label{width:52px;flex-shrink:0;font-weight:var(--font-weight-medium)}.tier-bar-track{flex:1;height:6px;background:var(--color-bg-tertiary);border-radius:3px;overflow:hidden}.tier-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.tier-bar-value{font-size:var(--font-size-xs);color:var(--color-text-secondary);min-width:60px;text-align:right}.tier-bar-fill--instant{background:var(--color-tier-instant)}.tier-bar-fill--notify{background:var(--color-info)}.tier-bar-fill--delay{background:var(--color-tier-delay)}.tier-bar-fill--approval{background:var(--color-tier-blocked)}.spending-limit-summary{display:flex;flex-direction:column;gap:.5rem}.cumulative-limits{display:flex;flex-direction:column;gap:.125rem;padding-top:.25rem;border-top:1px solid var(--color-border)}.cumulative-limits-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:500}.cumulative-limit-row{display:flex;align-items:center;gap:.5rem;font-size:var(--font-size-xs)}.cumulative-limit-type{color:var(--color-text-secondary);min-width:72px}.cumulative-limit-value{color:var(--color-warning);font-weight:600}.rules-vis-text{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.rules-vis-badges{display:flex;flex-wrap:wrap;gap:4px}.rules-summary{font-size:var(--font-size-xs);color:var(--color-text-secondary);max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:SF Mono,Fira Code,monospace}.edit-rules-textarea textarea{min-height:120px;font-family:SF Mono,Fira Code,monospace;font-size:var(--font-size-xs)}.policy-type-readonly{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);padding:var(--space-2) 0;margin-bottom:var(--space-2)}.settings-section{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-4)}.settings-section--danger{border-color:var(--color-danger)}.settings-section-header{margin-bottom:var(--space-4)}.settings-section-header h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.settings-description{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.settings-section-body{display:flex;align-items:center;gap:var(--space-4)}.ks-state-card{display:flex;align-items:center;gap:var(--space-4);flex:1}.ks-state-info{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.shutdown-overlay{position:fixed;inset:0;background:#000c;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:300;color:#fff}.shutdown-overlay h2{font-size:var(--font-size-2xl);margin-bottom:var(--space-4);color:#fff}.shutdown-overlay p{font-size:var(--font-size-base);color:var(--color-text-muted)}.shutdown-confirm-input{margin-top:var(--space-3)}.shutdown-confirm-input label{display:block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.shutdown-confirm-input input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none}.shutdown-confirm-input input:focus{border-color:var(--color-danger);box-shadow:0 0 0 2px var(--color-danger-bg)}.channel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-bottom:var(--space-6)}.channel-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg)}.channel-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.channel-card-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);text-transform:capitalize}.test-results{margin-top:var(--space-4)}.test-result-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}.test-result-success{color:var(--color-success)}.test-result-failure{color:var(--color-danger)}.config-guidance{margin-top:var(--space-6);padding:var(--space-4);background:var(--color-info-bg);border:1px solid var(--color-info);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.config-guidance pre{margin-top:var(--space-2);padding:var(--space-3);background:var(--color-bg-tertiary);border-radius:var(--radius-sm);font-family:monospace;font-size:var(--font-size-xs);overflow-x:auto;white-space:pre}.config-guidance p{color:var(--color-text-secondary);margin-bottom:var(--space-2)}.breadcrumb{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.breadcrumb-page{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:inherit;padding:0;font-family:inherit}.breadcrumb-page:hover{text-decoration:underline}.breadcrumb-separator{color:var(--color-text-muted)}.breadcrumb-current{color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.tab-nav{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border)}.tab-btn{padding:var(--space-2) var(--space-4);background:none;border:none;border-bottom:2px solid transparent;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-4)}.pagination-info{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pagination-buttons{display:flex;gap:var(--space-2)}.notif-disabled-banner{padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm);color:var(--color-text)}.settings-save-bar{position:sticky;top:var(--header-height);z-index:4;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm);color:var(--color-text)}.settings-save-bar-actions{display:flex;gap:var(--space-2)}.settings-category{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--space-4);overflow:hidden}.settings-category-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border)}.settings-category-header h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.settings-category-body{padding:var(--space-4) var(--space-6)}.settings-fields-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.settings-fields-grid .form-field{margin-bottom:0}.settings-field-full{grid-column:1 / -1}.settings-subgroup{margin-bottom:var(--space-4)}.settings-subgroup-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.rpc-field-row{display:flex;gap:var(--space-2);align-items:flex-end}.rpc-field-row .form-field{flex:1;margin-bottom:0}.rpc-test-result{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);margin-top:var(--space-1)}.rpc-test-result--success{color:var(--color-success)}.rpc-test-result--failure{color:var(--color-danger)}.rpc-pool-network{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-2);overflow:hidden}.rpc-pool-network-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);cursor:pointer;background:var(--color-bg-secondary);font-weight:500;font-size:var(--font-size-sm);user-select:none;list-style:none}.rpc-pool-network-header::-webkit-details-marker{display:none}.rpc-pool-network-header:before{content:"▶";margin-right:var(--space-2);font-size:.65em;transition:transform .15s}.rpc-pool-network[open]>.rpc-pool-network-header:before{transform:rotate(90deg)}.rpc-pool-url-count{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:400}.rpc-url-list{padding:var(--space-2) 0}.rpc-url-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border-light, rgba(0,0,0,.05))}.rpc-url-item:last-of-type{border-bottom:none}.rpc-url-item--builtin{color:var(--color-text-secondary)}.rpc-url-disabled{opacity:.5}.rpc-url-priority{font-size:var(--font-size-xs);color:var(--color-text-secondary);min-width:2em;text-align:right;font-weight:500}.rpc-url-item-url{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono, monospace);font-size:var(--font-size-xs)}.rpc-url-actions{display:flex;gap:2px;align-items:center;flex-shrink:0}.rpc-action-btn{padding:2px 6px!important;min-width:0!important;font-size:var(--font-size-xs)!important;line-height:1.2!important}.rpc-delete-btn{color:var(--color-danger)!important}.rpc-toggle-off{color:var(--color-text-secondary)!important;opacity:.6}.badge-builtin{font-size:.65rem;background:var(--color-info-bg, #e0f2fe);color:var(--color-info, #0369a1);padding:1px 6px;border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0}.rpc-add-url{display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-3);align-items:center}.rpc-add-url-input{flex:1;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:var(--font-mono, monospace);background:var(--color-bg);color:var(--color-text)}.rpc-add-url-input::placeholder{color:var(--color-text-secondary);opacity:.6}.rpc-url-status{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);white-space:nowrap}.rpc-url-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.rpc-url-status-dot--available{background-color:var(--color-success)}.rpc-url-status-dot--cooldown{background-color:var(--color-warning)}.rpc-url-status-dot--unknown{background-color:var(--color-text-muted)}.rpc-url-cooldown-info{color:var(--color-warning);font-size:var(--font-size-xs)}.rpc-url-test-inline{display:inline-flex;align-items:center;gap:var(--space-1)}.settings-info-box{padding:var(--space-3) var(--space-4);background:var(--color-info-bg);border:1px solid var(--color-info);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--space-3)}.settings-info-box a{color:var(--color-primary);text-decoration:underline}.notif-test-section{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.event-filter-groups{display:flex;flex-direction:column;gap:var(--space-2)}.event-filter-group{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.event-filter-group[open]>summary{border-bottom:1px solid var(--color-border)}.event-filter-group-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);cursor:pointer;background:var(--color-bg-secondary);font-weight:500;font-size:var(--font-size-sm);user-select:none;list-style:none}.event-filter-group-header::-webkit-details-marker{display:none}.event-filter-group-header:before{content:"▶";margin-right:var(--space-2);font-size:.65em;transition:transform .15s}.event-filter-group[open]>.event-filter-group-header:before{transform:rotate(90deg)}.event-filter-group-all{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);font-weight:400;cursor:pointer}.event-filter-events{display:flex;flex-direction:column}.event-filter-event{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-1) var(--space-5);font-size:var(--font-size-sm);cursor:pointer;border-bottom:1px solid var(--color-border-light, rgba(0,0,0,.05))}.event-filter-event:last-child{border-bottom:none}.event-filter-event:hover{background:var(--color-bg-secondary)}.event-filter-event code{font-size:var(--font-size-xs);min-width:180px;color:var(--color-text)}.event-desc{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.event-broadcast{opacity:.7}.event-broadcast-badge{font-size:.65rem;background:var(--color-warning-bg, #fef3c7);color:var(--color-warning, #92400e);padding:1px 6px;border-radius:var(--radius-sm);margin-left:auto;white-space:nowrap}.settings-category-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.dynamic-row-list{display:flex;flex-direction:column;gap:var(--space-2)}.dynamic-row{display:flex;align-items:flex-start;gap:var(--space-2)}.dynamic-row-fields{flex:1;display:flex;gap:var(--space-2);align-items:flex-start}.dynamic-row-fields .form-field{flex:1;margin-bottom:0}.dynamic-row-remove{flex-shrink:0;margin-top:var(--space-6);color:var(--color-danger)}.policy-form-section{margin-bottom:var(--space-4)}.policy-form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.policy-form-header label{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.json-toggle{font-size:var(--font-size-xs)}.policy-form-placeholder{color:var(--color-text-secondary);font-size:var(--font-size-sm);padding:var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-md);text-align:center}.policy-form-fields{display:flex;flex-direction:column;gap:var(--space-3)}.policy-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.policy-form-grid .form-field{margin-bottom:0}.currency-select{position:relative}.currency-select-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--color-text)}.currency-select-trigger:hover{border-color:var(--color-primary)}.currency-select-chevron{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.currency-rate-preview{margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.currency-select-dropdown{position:absolute;top:100%;left:0;right:0;z-index:50;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);box-shadow:0 4px 12px #0000001a;margin-top:var(--space-1)}.currency-select-search{width:100%;padding:var(--space-2) var(--space-3);border:none;border-bottom:1px solid var(--color-border);outline:none;font-size:var(--font-size-sm);font-family:var(--font-family)}.currency-select-list{max-height:300px;overflow-y:auto}.currency-select-option{width:100%;display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:none;cursor:pointer;text-align:left;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--color-text)}.currency-select-option:hover{background:var(--color-bg-secondary)}.currency-select-option--active{background:var(--color-primary-light);font-weight:var(--font-weight-semibold)}.currency-option-code{font-weight:var(--font-weight-semibold);min-width:3rem}.currency-option-name{flex:1}.currency-option-symbol{color:var(--color-text-secondary)}.currency-select-empty{padding:var(--space-3);text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.search-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh;z-index:100}.search-popover{background:var(--color-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:60vh;overflow:hidden;display:flex;flex-direction:column}.search-input-wrapper{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.search-input-wrapper input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);outline:none;background:var(--color-bg);color:var(--color-text)}.search-input-wrapper input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.search-results{overflow-y:auto;flex:1}.search-result-item{display:block;width:100%;padding:var(--space-3) var(--space-4);border:none;border-bottom:1px solid var(--color-border);background:none;text-align:left;cursor:pointer;font-family:inherit;color:var(--color-text)}.search-result-item:hover,.search-result-item.selected{background:var(--color-bg-secondary)}.search-result-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);margin-bottom:2px}.search-result-desc{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-path{font-size:var(--font-size-xs);color:var(--color-text-muted)}.search-empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.search-hint{padding:var(--space-2) var(--space-4);font-size:var(--font-size-xs);color:var(--color-text-muted);border-top:1px solid var(--color-border);display:flex;gap:var(--space-4)}.search-hint kbd{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--space-1);font-size:var(--font-size-xs);font-family:inherit}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.btn-search{padding:var(--space-1) var(--space-2);font-size:var(--font-size-base);background:none;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text-secondary);transition:background .15s,color .15s;line-height:1}.btn-search:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.form-field--highlight{animation:field-highlight 2s ease-out;border-radius:var(--radius-md)}@keyframes field-highlight{0%{background:var(--color-primary-light);box-shadow:0 0 0 2px var(--color-primary)}to{background:transparent;box-shadow:none}}.unsaved-dialog-footer{justify-content:flex-end;gap:var(--space-2)}.filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);margin-bottom:var(--space-4)}.filter-field{display:flex;flex-direction:column;gap:var(--space-1)}.filter-field label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.filter-field select,.filter-field input[type=date]{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s;min-width:140px}.filter-field select:focus,.filter-field input[type=date]:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.filter-clear{align-self:flex-end}.search-input{position:relative;display:inline-flex;align-items:center;max-width:400px;width:100%;margin-bottom:var(--space-4)}.search-input input[type=text]{width:100%;padding:var(--space-2) var(--space-3);padding-right:var(--space-8);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg);color:var(--color-text);outline:none;transition:border-color .15s}.search-input input[type=text]:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.search-clear{position:absolute;right:var(--space-2);background:none;border:none;font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.search-clear:hover{color:var(--color-text);background:var(--color-bg-tertiary)}@media(max-width:768px){.channel-grid,.settings-fields-grid{grid-template-columns:1fr}.filter-bar{flex-direction:column;align-items:stretch}.filter-field select,.filter-field input[type=date]{min-width:0;width:100%}.search-input{max-width:100%}}