@wu529778790/open-im 1.11.1-beta.11 → 1.11.1-beta.12
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.
- package/dist/config-web-page-i18n.d.ts +62 -0
- package/dist/config-web-page-i18n.js +64 -0
- package/package.json +1 -1
- package/web/dist/assets/{index-7fl61tV1.css → index-BmPrR_n2.css} +1 -1
- package/web/dist/assets/index-D9wB9QhK.js +57 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-BaLTMeeF.js +0 -57
|
@@ -163,6 +163,37 @@ export declare const PAGE_TEXTS: {
|
|
|
163
163
|
readonly tipDingtalkClient: "<a href=\"https://open-dev.dingtalk.com\" target=\"_blank\" rel=\"noopener\">DingTalk Open Platform</a> → internal app → App Key & App Secret.";
|
|
164
164
|
readonly tipWorkbuddyToken: "Use terminal <code>open-im init</code> for WorkBuddy OAuth, or paste tokens from CodeBuddy login.";
|
|
165
165
|
readonly tipClawbotApiToken: "Run <code>open-im init</code> and select ClawBot to scan QR code, or paste token from ClawBot iLink login.";
|
|
166
|
+
readonly navSetupWizard: "Setup Wizard";
|
|
167
|
+
readonly wizardStepLabel_welcome: "Welcome";
|
|
168
|
+
readonly wizardStepLabel_ai: "AI Backend";
|
|
169
|
+
readonly wizardStepLabel_platforms: "Platforms";
|
|
170
|
+
readonly wizardStepLabel_credentials: "Credentials";
|
|
171
|
+
readonly wizardStepLabel_review: "Review";
|
|
172
|
+
readonly wizardWelcomeTitle: "Welcome to open-im";
|
|
173
|
+
readonly wizardWelcomeDesc: "This wizard will guide you through configuring your AI coding assistant bridge. It takes about 2 minutes.";
|
|
174
|
+
readonly wizardStepAi: "Choose your AI backend and working directory";
|
|
175
|
+
readonly wizardStepPlatforms: "Pick which chat platforms to connect";
|
|
176
|
+
readonly wizardStepCredentials: "Enter API keys and tokens";
|
|
177
|
+
readonly wizardStepReview: "Review your choices, then save and start";
|
|
178
|
+
readonly wizardAiTitle: "AI Backend";
|
|
179
|
+
readonly wizardAiDesc: "open-im bridges chat apps to AI coding tools. Set up the paths below — the platform-level AI selection comes in the next step.";
|
|
180
|
+
readonly wizardWorkDirHint: "The directory where the AI tool will work. Leave empty to use the bridge's process directory.";
|
|
181
|
+
readonly wizardPlatformsTitle: "Choose Platforms";
|
|
182
|
+
readonly wizardPlatformsDesc: "Select at least one chat platform to connect. You can enable more later from the Dashboard.";
|
|
183
|
+
readonly wizardPickAtLeastOne: "Please select at least one platform.";
|
|
184
|
+
readonly wizardCredentialsTitle: "Enter Credentials";
|
|
185
|
+
readonly wizardCredentialsDesc: "Fill in the required credentials for each enabled platform.";
|
|
186
|
+
readonly wizardReviewTitle: "Review & Start";
|
|
187
|
+
readonly wizardReviewDesc: "Check your configuration below. When you're ready, click Save & Start to apply everything and launch the bridge.";
|
|
188
|
+
readonly wizardDoneTitle: "You're all set!";
|
|
189
|
+
readonly wizardDoneDesc: "The bridge is running. You can now message your bot on any enabled platform.";
|
|
190
|
+
readonly wizardGoToDashboard: "Go to Dashboard";
|
|
191
|
+
readonly wizardBack: "Back";
|
|
192
|
+
readonly wizardNext: "Next";
|
|
193
|
+
readonly wizardFinish: "Save & Start";
|
|
194
|
+
readonly wizardWorking: "Working...";
|
|
195
|
+
readonly wizardSaving: "Saving configuration...";
|
|
196
|
+
readonly wizardStarting: "Starting bridge...";
|
|
166
197
|
};
|
|
167
198
|
readonly zh: {
|
|
168
199
|
readonly pageTitle: "open-im 本地控制台";
|
|
@@ -325,5 +356,36 @@ export declare const PAGE_TEXTS: {
|
|
|
325
356
|
readonly tipDingtalkClient: "<a href=\"https://open-dev.dingtalk.com\" target=\"_blank\" rel=\"noopener\">钉钉开放平台</a> → 企业内部应用 → AppKey / AppSecret。";
|
|
326
357
|
readonly tipWorkbuddyToken: "建议在终端运行 <code>open-im init</code> 完成 WorkBuddy 授权;或粘贴 CodeBuddy 登录后的 Token。";
|
|
327
358
|
readonly tipClawbotApiToken: "在终端运行 <code>open-im init</code> 选择 ClawBot 扫码登录,或从 ClawBot iLink 登录后复制 Token。";
|
|
359
|
+
readonly navSetupWizard: "设置向导";
|
|
360
|
+
readonly wizardStepLabel_welcome: "欢迎";
|
|
361
|
+
readonly wizardStepLabel_ai: "AI 后端";
|
|
362
|
+
readonly wizardStepLabel_platforms: "平台";
|
|
363
|
+
readonly wizardStepLabel_credentials: "凭证";
|
|
364
|
+
readonly wizardStepLabel_review: "确认";
|
|
365
|
+
readonly wizardWelcomeTitle: "欢迎使用 open-im";
|
|
366
|
+
readonly wizardWelcomeDesc: "这个向导将引导你配置 AI 编程助手桥接。大约需要 2 分钟。";
|
|
367
|
+
readonly wizardStepAi: "选择 AI 后端和工作目录";
|
|
368
|
+
readonly wizardStepPlatforms: "选择要连接的聊天平台";
|
|
369
|
+
readonly wizardStepCredentials: "输入 API Key 和 Token";
|
|
370
|
+
readonly wizardStepReview: "检查配置,然后保存启动";
|
|
371
|
+
readonly wizardAiTitle: "AI 后端";
|
|
372
|
+
readonly wizardAiDesc: "open-im 将聊天 App 桥接到 AI 编程工具。在下方设置路径,平台级的 AI 选择在下一步。";
|
|
373
|
+
readonly wizardWorkDirHint: "AI 工具的工作目录。留空则使用桥接进程的工作目录。";
|
|
374
|
+
readonly wizardPlatformsTitle: "选择平台";
|
|
375
|
+
readonly wizardPlatformsDesc: "至少选择一个聊天平台。后续可在概览页启用更多。";
|
|
376
|
+
readonly wizardPickAtLeastOne: "请至少选择一个平台。";
|
|
377
|
+
readonly wizardCredentialsTitle: "输入凭证";
|
|
378
|
+
readonly wizardCredentialsDesc: "为每个已启用的平台填写必要的凭证信息。";
|
|
379
|
+
readonly wizardReviewTitle: "确认并启动";
|
|
380
|
+
readonly wizardReviewDesc: "检查下方配置。准备好后点击“保存并启动”应用配置并启动桥接。";
|
|
381
|
+
readonly wizardDoneTitle: "配置完成!";
|
|
382
|
+
readonly wizardDoneDesc: "桥接已运行。你现在可以在任何已启用的平台上向机器人发消息了。";
|
|
383
|
+
readonly wizardGoToDashboard: "进入概览";
|
|
384
|
+
readonly wizardBack: "上一步";
|
|
385
|
+
readonly wizardNext: "下一步";
|
|
386
|
+
readonly wizardFinish: "保存并启动";
|
|
387
|
+
readonly wizardWorking: "处理中...";
|
|
388
|
+
readonly wizardSaving: "正在保存配置...";
|
|
389
|
+
readonly wizardStarting: "正在启动桥接...";
|
|
328
390
|
};
|
|
329
391
|
};
|
|
@@ -163,6 +163,38 @@ export const PAGE_TEXTS = {
|
|
|
163
163
|
tipDingtalkClient: '<a href="https://open-dev.dingtalk.com" target="_blank" rel="noopener">DingTalk Open Platform</a> → internal app → App Key & App Secret.',
|
|
164
164
|
tipWorkbuddyToken: 'Use terminal <code>open-im init</code> for WorkBuddy OAuth, or paste tokens from CodeBuddy login.',
|
|
165
165
|
tipClawbotApiToken: 'Run <code>open-im init</code> and select ClawBot to scan QR code, or paste token from ClawBot iLink login.',
|
|
166
|
+
/* ---- Setup Wizard ---- */
|
|
167
|
+
navSetupWizard: "Setup Wizard",
|
|
168
|
+
wizardStepLabel_welcome: "Welcome",
|
|
169
|
+
wizardStepLabel_ai: "AI Backend",
|
|
170
|
+
wizardStepLabel_platforms: "Platforms",
|
|
171
|
+
wizardStepLabel_credentials: "Credentials",
|
|
172
|
+
wizardStepLabel_review: "Review",
|
|
173
|
+
wizardWelcomeTitle: "Welcome to open-im",
|
|
174
|
+
wizardWelcomeDesc: "This wizard will guide you through configuring your AI coding assistant bridge. It takes about 2 minutes.",
|
|
175
|
+
wizardStepAi: "Choose your AI backend and working directory",
|
|
176
|
+
wizardStepPlatforms: "Pick which chat platforms to connect",
|
|
177
|
+
wizardStepCredentials: "Enter API keys and tokens",
|
|
178
|
+
wizardStepReview: "Review your choices, then save and start",
|
|
179
|
+
wizardAiTitle: "AI Backend",
|
|
180
|
+
wizardAiDesc: "open-im bridges chat apps to AI coding tools. Set up the paths below — the platform-level AI selection comes in the next step.",
|
|
181
|
+
wizardWorkDirHint: "The directory where the AI tool will work. Leave empty to use the bridge's process directory.",
|
|
182
|
+
wizardPlatformsTitle: "Choose Platforms",
|
|
183
|
+
wizardPlatformsDesc: "Select at least one chat platform to connect. You can enable more later from the Dashboard.",
|
|
184
|
+
wizardPickAtLeastOne: "Please select at least one platform.",
|
|
185
|
+
wizardCredentialsTitle: "Enter Credentials",
|
|
186
|
+
wizardCredentialsDesc: "Fill in the required credentials for each enabled platform.",
|
|
187
|
+
wizardReviewTitle: "Review & Start",
|
|
188
|
+
wizardReviewDesc: "Check your configuration below. When you're ready, click Save & Start to apply everything and launch the bridge.",
|
|
189
|
+
wizardDoneTitle: "You're all set!",
|
|
190
|
+
wizardDoneDesc: "The bridge is running. You can now message your bot on any enabled platform.",
|
|
191
|
+
wizardGoToDashboard: "Go to Dashboard",
|
|
192
|
+
wizardBack: "Back",
|
|
193
|
+
wizardNext: "Next",
|
|
194
|
+
wizardFinish: "Save & Start",
|
|
195
|
+
wizardWorking: "Working...",
|
|
196
|
+
wizardSaving: "Saving configuration...",
|
|
197
|
+
wizardStarting: "Starting bridge...",
|
|
166
198
|
},
|
|
167
199
|
zh: {
|
|
168
200
|
pageTitle: "open-im \u672c\u5730\u63a7\u5236\u53f0",
|
|
@@ -325,5 +357,37 @@ export const PAGE_TEXTS = {
|
|
|
325
357
|
tipDingtalkClient: '<a href="https://open-dev.dingtalk.com" target="_blank" rel="noopener">\u9489\u9489\u5f00\u653e\u5e73\u53f0</a> \u2192 \u4f01\u4e1a\u5185\u90e8\u5e94\u7528 \u2192 AppKey / AppSecret\u3002',
|
|
326
358
|
tipWorkbuddyToken: "\u5efa\u8bae\u5728\u7ec8\u7aef\u8fd0\u884c <code>open-im init</code> \u5b8c\u6210 WorkBuddy \u6388\u6743\uff1b\u6216\u7c98\u8d34 CodeBuddy \u767b\u5f55\u540e\u7684 Token\u3002",
|
|
327
359
|
tipClawbotApiToken: '\u5728\u7ec8\u7aef\u8fd0\u884c <code>open-im init</code> \u9009\u62e9 ClawBot \u626b\u7801\u767b\u5f55\uff0c\u6216\u4ece ClawBot iLink \u767b\u5f55\u540e\u590d\u5236 Token\u3002',
|
|
360
|
+
/* ---- Setup Wizard ---- */
|
|
361
|
+
navSetupWizard: "\u8bbe\u7f6e\u5411\u5bfc",
|
|
362
|
+
wizardStepLabel_welcome: "\u6b22\u8fce",
|
|
363
|
+
wizardStepLabel_ai: "AI \u540e\u7aef",
|
|
364
|
+
wizardStepLabel_platforms: "\u5e73\u53f0",
|
|
365
|
+
wizardStepLabel_credentials: "\u51ed\u8bc1",
|
|
366
|
+
wizardStepLabel_review: "\u786e\u8ba4",
|
|
367
|
+
wizardWelcomeTitle: "\u6b22\u8fce\u4f7f\u7528 open-im",
|
|
368
|
+
wizardWelcomeDesc: "\u8fd9\u4e2a\u5411\u5bfc\u5c06\u5f15\u5bfc\u4f60\u914d\u7f6e AI \u7f16\u7a0b\u52a9\u624b\u6865\u63a5\u3002\u5927\u7ea6\u9700\u8981 2 \u5206\u949f\u3002",
|
|
369
|
+
wizardStepAi: "\u9009\u62e9 AI \u540e\u7aef\u548c\u5de5\u4f5c\u76ee\u5f55",
|
|
370
|
+
wizardStepPlatforms: "\u9009\u62e9\u8981\u8fde\u63a5\u7684\u804a\u5929\u5e73\u53f0",
|
|
371
|
+
wizardStepCredentials: "\u8f93\u5165 API Key \u548c Token",
|
|
372
|
+
wizardStepReview: "\u68c0\u67e5\u914d\u7f6e\uff0c\u7136\u540e\u4fdd\u5b58\u542f\u52a8",
|
|
373
|
+
wizardAiTitle: "AI \u540e\u7aef",
|
|
374
|
+
wizardAiDesc: "open-im \u5c06\u804a\u5929 App \u6865\u63a5\u5230 AI \u7f16\u7a0b\u5de5\u5177\u3002\u5728\u4e0b\u65b9\u8bbe\u7f6e\u8def\u5f84\uff0c\u5e73\u53f0\u7ea7\u7684 AI \u9009\u62e9\u5728\u4e0b\u4e00\u6b65\u3002",
|
|
375
|
+
wizardWorkDirHint: "AI \u5de5\u5177\u7684\u5de5\u4f5c\u76ee\u5f55\u3002\u7559\u7a7a\u5219\u4f7f\u7528\u6865\u63a5\u8fdb\u7a0b\u7684\u5de5\u4f5c\u76ee\u5f55\u3002",
|
|
376
|
+
wizardPlatformsTitle: "\u9009\u62e9\u5e73\u53f0",
|
|
377
|
+
wizardPlatformsDesc: "\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u804a\u5929\u5e73\u53f0\u3002\u540e\u7eed\u53ef\u5728\u6982\u89c8\u9875\u542f\u7528\u66f4\u591a\u3002",
|
|
378
|
+
wizardPickAtLeastOne: "\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u5e73\u53f0\u3002",
|
|
379
|
+
wizardCredentialsTitle: "\u8f93\u5165\u51ed\u8bc1",
|
|
380
|
+
wizardCredentialsDesc: "\u4e3a\u6bcf\u4e2a\u5df2\u542f\u7528\u7684\u5e73\u53f0\u586b\u5199\u5fc5\u8981\u7684\u51ed\u8bc1\u4fe1\u606f\u3002",
|
|
381
|
+
wizardReviewTitle: "\u786e\u8ba4\u5e76\u542f\u52a8",
|
|
382
|
+
wizardReviewDesc: "\u68c0\u67e5\u4e0b\u65b9\u914d\u7f6e\u3002\u51c6\u5907\u597d\u540e\u70b9\u51fb\u201c\u4fdd\u5b58\u5e76\u542f\u52a8\u201d\u5e94\u7528\u914d\u7f6e\u5e76\u542f\u52a8\u6865\u63a5\u3002",
|
|
383
|
+
wizardDoneTitle: "\u914d\u7f6e\u5b8c\u6210\uff01",
|
|
384
|
+
wizardDoneDesc: "\u6865\u63a5\u5df2\u8fd0\u884c\u3002\u4f60\u73b0\u5728\u53ef\u4ee5\u5728\u4efb\u4f55\u5df2\u542f\u7528\u7684\u5e73\u53f0\u4e0a\u5411\u673a\u5668\u4eba\u53d1\u6d88\u606f\u4e86\u3002",
|
|
385
|
+
wizardGoToDashboard: "\u8fdb\u5165\u6982\u89c8",
|
|
386
|
+
wizardBack: "\u4e0a\u4e00\u6b65",
|
|
387
|
+
wizardNext: "\u4e0b\u4e00\u6b65",
|
|
388
|
+
wizardFinish: "\u4fdd\u5b58\u5e76\u542f\u52a8",
|
|
389
|
+
wizardWorking: "\u5904\u7406\u4e2d...",
|
|
390
|
+
wizardSaving: "\u6b63\u5728\u4fdd\u5b58\u914d\u7f6e...",
|
|
391
|
+
wizardStarting: "\u6b63\u5728\u542f\u52a8\u6865\u63a5...",
|
|
328
392
|
}
|
|
329
393
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wu529778790/open-im",
|
|
3
|
-
"version": "1.11.1-beta.
|
|
3
|
+
"version": "1.11.1-beta.12",
|
|
4
4
|
"description": "Your AI coding assistant, in every chat app. Multi-platform IM bridge for Claude Code, Codex, and CodeBuddy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bg-primary: #ffffff;--bg-secondary: #f9fafb;--bg-tertiary: #f3f4f6;--bg-card: #ffffff;--bg-hover: #f9fafb;--bg-active: #f3f4f6;--border-subtle: #e5e7eb;--border-default: #d1d5db;--border-strong: #9ca3af;--text-primary: #111827;--text-secondary: #4b5563;--text-tertiary: #6b7280;--text-quaternary: #9ca3af;--accent-primary: #2563eb;--accent-primary-hover: #1d4ed8;--accent-primary-light: #dbeafe;--success-bg: #dcfce7;--success-text: #166534;--success-border: #86efac;--warning-bg: #fef3c7;--warning-text: #92400e;--warning-border: #fcd34d;--error-bg: #fee2e2;--error-text: #991b1b;--error-border: #fca5a5;--info-bg: #dbeafe;--info-text: #1e40af;--info-border: #93c5fd;--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--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);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--transition-fast: .15s ease;--transition-normal: .2s ease}:root.dark{--bg-primary: #0f0f0f;--bg-secondary: #18181b;--bg-tertiary: #27272a;--bg-card: #18181b;--bg-hover: #27272a;--bg-active: #3f3f46;--border-subtle: #27272a;--border-default: #3f3f46;--border-strong: #52525b;--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-tertiary: #71717a;--text-quaternary: #52525b;--accent-primary: #3b82f6;--accent-primary-hover: #60a5fa;--accent-primary-light: #1e3a5f;--success-bg: #14532d;--success-text: #86efac;--success-border: #166534;--warning-bg: #713f12;--warning-text: #fcd34d;--warning-border: #92400e;--error-bg: #7f1d1d;--error-text: #fca5a5;--error-border: #991b1b;--info-bg: #1e3a5f;--info-text: #93c5fd;--info-border: #1e40af}*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-secondary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;min-height:100vh}.sidebar{width:260px;background:#111827;color:#f3f4f6;display:flex;flex-direction:column;position:fixed;height:100vh;left:0;top:0;z-index:10}.sidebar-header{padding:24px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand{font-size:18px;font-weight:600;color:#fff;display:flex;align-items:center;gap:8px}.sidebar-brand svg{width:24px;height:24px;color:var(--accent-primary)}.sidebar-nav{flex:1;padding:16px 12px;display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);color:#ffffffb3;text-decoration:none;font-size:13px;font-weight:500;transition:all var(--transition-fast);cursor:pointer;border:none;background:transparent;width:100%;text-align:left}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#ffffff1f;color:#fff}.nav-item svg{width:18px;height:18px;flex-shrink:0}.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.1)}.main{flex:1;margin-left:260px;display:flex;flex-direction:column}.main-header{position:sticky;top:0;z-index:30;background:var(--bg-primary);border-bottom:1px solid var(--border-subtle);padding:16px 32px 14px;display:flex;flex-direction:column;align-items:stretch;gap:12px;box-shadow:0 1px #0000000a}:root.dark .main-header{box-shadow:0 1px #ffffff0f}.main-header-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.main-header-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:12px;margin:0 -2px;border-top:1px solid var(--border-subtle)}.main-header-toolbar .btn{flex:0 1 auto}.main-title{font-size:20px;font-weight:600;color:var(--text-primary)}.header-actions{display:flex;gap:12px;align-items:center}.lang-button{padding:8px 14px;font-size:13px;font-weight:500;border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.lang-button:hover{background:var(--bg-hover);border-color:var(--border-strong)}.dark-mode-toggle{padding:8px;border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.dark-mode-toggle:hover{background:var(--bg-hover);border-color:var(--border-strong)}.content{padding:32px}.section{margin-bottom:48px}.section-header{margin-bottom:24px}.section-title{font-size:18px;font-weight:600;color:var(--text-primary);margin:0 0 8px}.section-description{font-size:14px;color:var(--text-secondary);margin:0}.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{padding:20px 24px;border-bottom:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center}.card-title{font-size:15px;font-weight:600;color:var(--text-primary);margin:0}.card-body{padding:24px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px}.stat-label{font-size:12px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:28px;font-weight:700;color:var(--text-primary);margin-top:8px;line-height:1}.field-inline-tip{font-size:12px;color:var(--text-tertiary);line-height:1.45;margin-top:6px}.field-inline-tip a{color:var(--accent-primary)}.field-inline-tip code{font-size:11px;background:var(--bg-tertiary);padding:1px 5px;border-radius:var(--radius-xs)}.config-files-stack{display:flex;flex-direction:column;gap:20px}.config-file-card .card-title.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;font-weight:600}.config-file-card textarea{width:100%}.platform-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.platform-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition-fast)}.platform-card:hover{box-shadow:var(--shadow-md)}.platform-card.disabled{opacity:.6}.platform-header{padding:20px 24px;border-bottom:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center}.platform-title{font-size:16px;font-weight:600;color:var(--text-primary)}.platform-body{padding:24px}.badge{display:inline-flex;align-items:center;padding:4px 10px;font-size:12px;font-weight:500;border-radius:999px}.badge-success{background:var(--success-bg);color:var(--success-text)}.badge-error{background:var(--error-bg);color:var(--error-text)}.badge-warning{background:var(--warning-bg);color:var(--warning-text)}.badge-default{background:var(--bg-tertiary);color:var(--text-secondary)}.badge-info{background:var(--info-bg);color:var(--info-text)}.form-group{margin-bottom:16px}.form-group:last-child{margin-bottom:0}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-primary);margin-bottom:6px}.form-hint{font-size:12px;color:var(--text-tertiary);margin-top:4px}.form-input,.form-select,.form-textarea{width:100%;padding:10px 12px;font-family:inherit;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:all var(--transition-fast)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-light)}.form-input.mono,.form-textarea.mono{font-family:SF Mono,Consolas,Monaco,monospace;font-size:13px}.form-textarea{min-height:80px;resize:vertical}.toggle{display:flex;align-items:center;gap:12px;cursor:pointer}.toggle-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;background:var(--border-default);border-radius:999px;transition:background var(--transition-fast);flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform var(--transition-fast);box-shadow:var(--shadow-xs)}.toggle-input:checked+.toggle-switch{background:var(--accent-primary)}.toggle-input:checked+.toggle-switch:after{transform:translate(20px)}.toggle-label{font-size:14px;font-weight:500;color:var(--text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:500;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:all var(--transition-fast);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--bg-primary);color:var(--text-primary);border-color:var(--border-default)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn-danger{background:var(--error-bg);color:var(--error-text)}.btn-danger:hover:not(:disabled){background:var(--error-border)}.btn-warning{background:var(--warning-bg);color:var(--warning-text)}.btn-warning:hover:not(:disabled){background:var(--warning-border)}.btn-sm{padding:8px 12px;font-size:13px}.btn-lg{padding:12px 20px;font-size:15px}.tabs{display:flex;gap:4px;padding:4px;background:var(--bg-tertiary);border-radius:var(--radius-lg)}.tab{padding:8px 14px;font-size:13px;font-weight:500;color:var(--text-secondary);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.tab:hover{color:var(--text-primary)}.tab.active{background:var(--bg-primary);color:var(--text-primary);box-shadow:var(--shadow-xs)}.message{padding:12px 16px;border-radius:var(--radius-md);font-size:14px}.message-success{background:var(--success-bg);color:var(--success-text)}.message-error{background:var(--error-bg);color:var(--error-text)}.hidden{display:none!important}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.text-center{text-align:center}.ai-grid{display:grid;grid-template-columns:300px 1fr;gap:20px}.ai-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}.ai-card-body{padding:20px}.ai-tool-panel{display:none}.ai-tool-panel.active{display:block}.form-help{margin-top:16px;padding:12px 16px;background:var(--bg-secondary);border-radius:var(--radius-md);font-size:13px;color:var(--text-secondary);line-height:1.6}@media(max-width:1024px){.sidebar{width:200px}.main{margin-left:200px}.stats-grid,.ai-grid{grid-template-columns:1fr}}@media(max-width:768px){.app{flex-direction:column}.sidebar{position:relative;width:100%;height:auto}.main{margin-left:0}.platform-grid{grid-template-columns:1fr}.content{padding:20px}}.connection-setup{display:flex;flex-direction:column;gap:16px;max-width:720px;margin:48px auto;padding:0 24px}.connection-setup-hint{margin:0;color:var(--text-secondary);font-size:15px;line-height:1.5}.connection-setup-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.connection-label{font-size:13px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.connection-input{flex:1;min-width:200px;max-width:480px;padding:8px 12px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);font-family:ui-monospace,monospace;font-size:13px}.connection-status{font-size:13px;color:var(--text-tertiary)}.connection-status.ok{color:var(--success-text)}.connection-status.err{color:var(--error-text)}
|
|
1
|
+
:root{--bg-primary: #ffffff;--bg-secondary: #f9fafb;--bg-tertiary: #f3f4f6;--bg-card: #ffffff;--bg-hover: #f9fafb;--bg-active: #f3f4f6;--border-subtle: #e5e7eb;--border-default: #d1d5db;--border-strong: #9ca3af;--text-primary: #111827;--text-secondary: #4b5563;--text-tertiary: #6b7280;--text-quaternary: #9ca3af;--accent-primary: #2563eb;--accent-primary-hover: #1d4ed8;--accent-primary-light: #dbeafe;--success-bg: #dcfce7;--success-text: #166534;--success-border: #86efac;--warning-bg: #fef3c7;--warning-text: #92400e;--warning-border: #fcd34d;--error-bg: #fee2e2;--error-text: #991b1b;--error-border: #fca5a5;--info-bg: #dbeafe;--info-text: #1e40af;--info-border: #93c5fd;--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--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);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--transition-fast: .15s ease;--transition-normal: .2s ease}:root.dark{--bg-primary: #0f0f0f;--bg-secondary: #18181b;--bg-tertiary: #27272a;--bg-card: #18181b;--bg-hover: #27272a;--bg-active: #3f3f46;--border-subtle: #27272a;--border-default: #3f3f46;--border-strong: #52525b;--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-tertiary: #71717a;--text-quaternary: #52525b;--accent-primary: #3b82f6;--accent-primary-hover: #60a5fa;--accent-primary-light: #1e3a5f;--success-bg: #14532d;--success-text: #86efac;--success-border: #166534;--warning-bg: #713f12;--warning-text: #fcd34d;--warning-border: #92400e;--error-bg: #7f1d1d;--error-text: #fca5a5;--error-border: #991b1b;--info-bg: #1e3a5f;--info-text: #93c5fd;--info-border: #1e40af}*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-secondary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;min-height:100vh}.sidebar{width:260px;background:#111827;color:#f3f4f6;display:flex;flex-direction:column;position:fixed;height:100vh;left:0;top:0;z-index:10}.sidebar-header{padding:24px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand{font-size:18px;font-weight:600;color:#fff;display:flex;align-items:center;gap:8px}.sidebar-brand svg{width:24px;height:24px;color:var(--accent-primary)}.sidebar-nav{flex:1;padding:16px 12px;display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);color:#ffffffb3;text-decoration:none;font-size:13px;font-weight:500;transition:all var(--transition-fast);cursor:pointer;border:none;background:transparent;width:100%;text-align:left}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#ffffff1f;color:#fff}.nav-item svg{width:18px;height:18px;flex-shrink:0}.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.1)}.main{flex:1;margin-left:260px;display:flex;flex-direction:column}.main-header{position:sticky;top:0;z-index:30;background:var(--bg-primary);border-bottom:1px solid var(--border-subtle);padding:16px 32px 14px;display:flex;flex-direction:column;align-items:stretch;gap:12px;box-shadow:0 1px #0000000a}:root.dark .main-header{box-shadow:0 1px #ffffff0f}.main-header-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.main-header-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:12px;margin:0 -2px;border-top:1px solid var(--border-subtle)}.main-header-toolbar .btn{flex:0 1 auto}.main-title{font-size:20px;font-weight:600;color:var(--text-primary)}.header-actions{display:flex;gap:12px;align-items:center}.lang-button{padding:8px 14px;font-size:13px;font-weight:500;border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.lang-button:hover{background:var(--bg-hover);border-color:var(--border-strong)}.dark-mode-toggle{padding:8px;border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.dark-mode-toggle:hover{background:var(--bg-hover);border-color:var(--border-strong)}.content{padding:32px}.section{margin-bottom:48px}.section-header{margin-bottom:24px}.section-title{font-size:18px;font-weight:600;color:var(--text-primary);margin:0 0 8px}.section-description{font-size:14px;color:var(--text-secondary);margin:0}.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{padding:20px 24px;border-bottom:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center}.card-title{font-size:15px;font-weight:600;color:var(--text-primary);margin:0}.card-body{padding:24px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px}.stat-label{font-size:12px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:28px;font-weight:700;color:var(--text-primary);margin-top:8px;line-height:1}.field-inline-tip{font-size:12px;color:var(--text-tertiary);line-height:1.45;margin-top:6px}.field-inline-tip a{color:var(--accent-primary)}.field-inline-tip code{font-size:11px;background:var(--bg-tertiary);padding:1px 5px;border-radius:var(--radius-xs)}.config-files-stack{display:flex;flex-direction:column;gap:20px}.config-file-card .card-title.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;font-weight:600}.config-file-card textarea{width:100%}.platform-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.platform-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition-fast)}.platform-card:hover{box-shadow:var(--shadow-md)}.platform-card.disabled{opacity:.6}.platform-header{padding:20px 24px;border-bottom:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center}.platform-title{font-size:16px;font-weight:600;color:var(--text-primary)}.platform-body{padding:24px}.badge{display:inline-flex;align-items:center;padding:4px 10px;font-size:12px;font-weight:500;border-radius:999px}.badge-success{background:var(--success-bg);color:var(--success-text)}.badge-error{background:var(--error-bg);color:var(--error-text)}.badge-warning{background:var(--warning-bg);color:var(--warning-text)}.badge-default{background:var(--bg-tertiary);color:var(--text-secondary)}.badge-info{background:var(--info-bg);color:var(--info-text)}.form-group{margin-bottom:16px}.form-group:last-child{margin-bottom:0}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-primary);margin-bottom:6px}.form-hint{font-size:12px;color:var(--text-tertiary);margin-top:4px}.form-input,.form-select,.form-textarea{width:100%;padding:10px 12px;font-family:inherit;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:all var(--transition-fast)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-light)}.form-input.mono,.form-textarea.mono{font-family:SF Mono,Consolas,Monaco,monospace;font-size:13px}.form-textarea{min-height:80px;resize:vertical}.toggle{display:flex;align-items:center;gap:12px;cursor:pointer}.toggle-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;background:var(--border-default);border-radius:999px;transition:background var(--transition-fast);flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform var(--transition-fast);box-shadow:var(--shadow-xs)}.toggle-input:checked+.toggle-switch{background:var(--accent-primary)}.toggle-input:checked+.toggle-switch:after{transform:translate(20px)}.toggle-label{font-size:14px;font-weight:500;color:var(--text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:500;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:all var(--transition-fast);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--bg-primary);color:var(--text-primary);border-color:var(--border-default)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn-danger{background:var(--error-bg);color:var(--error-text)}.btn-danger:hover:not(:disabled){background:var(--error-border)}.btn-warning{background:var(--warning-bg);color:var(--warning-text)}.btn-warning:hover:not(:disabled){background:var(--warning-border)}.btn-sm{padding:8px 12px;font-size:13px}.btn-lg{padding:12px 20px;font-size:15px}.tabs{display:flex;gap:4px;padding:4px;background:var(--bg-tertiary);border-radius:var(--radius-lg)}.tab{padding:8px 14px;font-size:13px;font-weight:500;color:var(--text-secondary);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.tab:hover{color:var(--text-primary)}.tab.active{background:var(--bg-primary);color:var(--text-primary);box-shadow:var(--shadow-xs)}.message{padding:12px 16px;border-radius:var(--radius-md);font-size:14px}.message-success{background:var(--success-bg);color:var(--success-text)}.message-error{background:var(--error-bg);color:var(--error-text)}.hidden{display:none!important}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.text-center{text-align:center}.ai-grid{display:grid;grid-template-columns:300px 1fr;gap:20px}.ai-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}.ai-card-body{padding:20px}.ai-tool-panel{display:none}.ai-tool-panel.active{display:block}.form-help{margin-top:16px;padding:12px 16px;background:var(--bg-secondary);border-radius:var(--radius-md);font-size:13px;color:var(--text-secondary);line-height:1.6}@media(max-width:1024px){.sidebar{width:200px}.main{margin-left:200px}.stats-grid,.ai-grid{grid-template-columns:1fr}}@media(max-width:768px){.app{flex-direction:column}.sidebar{position:relative;width:100%;height:auto}.main{margin-left:0}.platform-grid{grid-template-columns:1fr}.content{padding:20px}}.connection-setup{display:flex;flex-direction:column;gap:16px;max-width:720px;margin:48px auto;padding:0 24px}.connection-setup-hint{margin:0;color:var(--text-secondary);font-size:15px;line-height:1.5}.connection-setup-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.connection-label{font-size:13px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.connection-input{flex:1;min-width:200px;max-width:480px;padding:8px 12px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);font-family:ui-monospace,monospace;font-size:13px}.connection-status{font-size:13px;color:var(--text-tertiary)}.connection-status.ok{color:var(--success-text)}.connection-status.err{color:var(--error-text)}.wizard{max-width:680px;margin:0 auto;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);overflow:hidden}.wizard-progress-bar{height:4px;background:var(--bg-tertiary)}.wizard-progress-fill{height:100%;background:var(--accent-primary);transition:width .35s ease;border-radius:0 2px 2px 0}.wizard-step-labels{display:flex;border-bottom:1px solid var(--border-subtle);background:var(--bg-secondary)}.wizard-step-label{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 8px 12px;font-size:12px;font-weight:500;color:var(--text-quaternary);background:transparent;border:none;cursor:default;transition:color var(--transition-fast)}.wizard-step-label.done{color:var(--text-secondary);cursor:pointer}.wizard-step-label.active{color:var(--accent-primary);font-weight:600;box-shadow:inset 0 -2px 0 var(--accent-primary)}.wizard-step-label-num{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;background:var(--bg-tertiary);color:var(--text-tertiary)}.wizard-step-label.active .wizard-step-label-num{background:var(--accent-primary);color:#fff}.wizard-step-label.done .wizard-step-label-num{background:var(--success-bg);color:var(--success-text)}.wizard-step-label-text{white-space:nowrap}.wizard-content{padding:32px;min-height:280px}.wizard-step-icon{font-size:40px;margin-bottom:16px}.wizard-step-title{font-size:20px;font-weight:600;color:var(--text-primary);margin:0 0 8px}.wizard-step-desc{font-size:14px;color:var(--text-secondary);margin:0 0 24px;line-height:1.6}.wizard-steps-list{display:flex;flex-direction:column;gap:12px;padding:0;margin:0}.wizard-steps-item{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--text-primary)}.wizard-steps-num{width:28px;height:28px;border-radius:50%;background:var(--accent-primary-light);color:var(--accent-primary);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.wizard-platform-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.wizard-platform-chip{display:flex;flex-direction:column;gap:4px;padding:16px;background:var(--bg-primary);border:2px solid var(--border-subtle);border-radius:var(--radius-lg);cursor:pointer;text-align:left;transition:all var(--transition-fast);color:var(--text-primary);font-family:inherit;font-size:inherit}.wizard-platform-chip:hover{border-color:var(--accent-primary);box-shadow:var(--shadow-sm)}.wizard-platform-chip.selected{border-color:var(--accent-primary);background:var(--accent-primary-light);box-shadow:0 0 0 1px var(--accent-primary)}.wizard-platform-chip-name{font-weight:600;font-size:15px}.wizard-platform-chip-hint{font-size:12px;color:var(--text-tertiary);line-height:1.4}.wizard-credential-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px;margin-bottom:16px}.wizard-credential-card:last-child{margin-bottom:0}.wizard-credential-name{font-size:16px;font-weight:600;margin:0 0 16px;color:var(--text-primary)}.wizard-review-section{margin-bottom:24px}.wizard-review-heading{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 12px;text-transform:uppercase;letter-spacing:.04em}.wizard-review-kv{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-subtle);font-size:13px}.wizard-review-kv span{color:var(--text-secondary)}.wizard-review-kv code{font-family:SF Mono,Consolas,monospace;font-size:12px;color:var(--text-primary);background:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-xs)}.wizard-review-platforms{display:flex;flex-wrap:wrap;gap:8px}.wizard-review-platform-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:var(--bg-tertiary);border-radius:var(--radius-md);font-size:13px}.wizard-review-platform-badge strong{color:var(--text-primary)}.wizard-review-platform-cmd{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--accent-primary-light);color:var(--accent-primary);font-weight:500}.wizard-done{text-align:center;padding:24px 0}.wizard-nav{display:flex;align-items:center;padding:16px 32px 24px;gap:12px}.wizard-progress-indicator{margin-top:16px;font-size:13px;color:var(--accent-primary);text-align:center;animation:wizard-pulse 1.2s ease-in-out infinite}@keyframes wizard-pulse{0%,to{opacity:1}50%{opacity:.5}}@media(max-width:640px){.wizard{margin:0 -16px;border-radius:0;border-left:none;border-right:none}.wizard-step-label-text{display:none}.wizard-content{padding:24px 20px}.wizard-nav{padding:16px 20px 20px}.wizard-platform-grid{grid-template-columns:1fr}}
|