@midscene/harmony 1.5.7 → 1.5.8-beta-20260324073120.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/es/bin.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import node_path from "node:path";
2
+ import { createScreenshotPreviewDescriptor, definePlaygroundPlatform, launchPreparedPlaygroundPlatform } from "@midscene/playground";
2
3
  import { select as prompts_select } from "@inquirer/prompts";
3
- import { playgroundForAgentFactory } from "@midscene/playground";
4
4
  import { PLAYGROUND_SERVER_PORT } from "@midscene/shared/constants";
5
5
  import { findAvailablePort } from "@midscene/shared/node";
6
6
  import { Agent } from "@midscene/core/agent";
@@ -902,34 +902,58 @@ async function selectDevice() {
902
902
  console.log(`📱 Found device: ${devices[0].deviceId}`);
903
903
  return devices[0].deviceId;
904
904
  }
905
- const choices = devices.map((d)=>({
906
- name: d.deviceId,
907
- value: d.deviceId
908
- }));
909
905
  return prompts_select({
910
906
  message: '📱 Multiple devices found. Please select one:',
911
- choices
907
+ choices: devices.map((device)=>({
908
+ name: device.deviceId,
909
+ value: device.deviceId
910
+ }))
912
911
  });
913
912
  }
914
- const staticDir = node_path.join(__dirname, '../../static');
913
+ const harmonyPlaygroundPlatform = definePlaygroundPlatform({
914
+ id: 'harmony',
915
+ title: 'Midscene HarmonyOS Playground',
916
+ description: "HarmonyOS playground platform descriptor",
917
+ async prepare (options) {
918
+ const selectedDeviceId = options?.deviceId || await selectDevice();
919
+ const staticDir = options?.staticDir || node_path.join(__dirname, '../../static');
920
+ const availablePort = await findAvailablePort(PLAYGROUND_SERVER_PORT);
921
+ if (availablePort !== PLAYGROUND_SERVER_PORT) console.log(`⚠️ Port ${PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
922
+ return {
923
+ platformId: 'harmony',
924
+ title: 'Midscene HarmonyOS Playground',
925
+ agentFactory: async ()=>{
926
+ const device = new device_HarmonyDevice(selectedDeviceId);
927
+ await device.connect();
928
+ return new HarmonyAgent(device);
929
+ },
930
+ launchOptions: {
931
+ port: availablePort,
932
+ openBrowser: false,
933
+ verbose: false,
934
+ staticPath: staticDir
935
+ },
936
+ preview: createScreenshotPreviewDescriptor({
937
+ title: 'HarmonyOS device preview'
938
+ }),
939
+ metadata: {
940
+ deviceId: selectedDeviceId
941
+ }
942
+ };
943
+ }
944
+ });
945
+ const bin_staticDir = node_path.join(__dirname, '../../static');
915
946
  const main = async ()=>{
916
947
  const { default: open } = await import("open");
917
948
  try {
918
- const selectedDeviceId = await selectDevice();
949
+ const prepared = await harmonyPlaygroundPlatform.prepare({
950
+ staticDir: bin_staticDir
951
+ });
952
+ const selectedDeviceId = prepared.metadata?.deviceId;
953
+ if ('string' != typeof selectedDeviceId || !selectedDeviceId) throw new Error('Harmony playground prepared metadata is missing a deviceId');
919
954
  console.log(`✅ Selected device: ${selectedDeviceId}`);
920
955
  console.log('🚀 Starting server...');
921
- const availablePort = await findAvailablePort(PLAYGROUND_SERVER_PORT);
922
- if (availablePort !== PLAYGROUND_SERVER_PORT) console.log(`⚠️ Port ${PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
923
- const { server: playgroundServer } = await playgroundForAgentFactory(async ()=>{
924
- const device = new device_HarmonyDevice(selectedDeviceId);
925
- await device.connect();
926
- return new HarmonyAgent(device);
927
- }).launch({
928
- port: availablePort,
929
- openBrowser: false,
930
- verbose: false,
931
- staticPath: staticDir
932
- });
956
+ const { server: playgroundServer } = await launchPreparedPlaygroundPlatform(prepared);
933
957
  console.log('');
934
958
  console.log('✨ Midscene HarmonyOS Playground is ready!');
935
959
  console.log(`🎮 Playground: http://localhost:${playgroundServer.port}`);
package/dist/es/cli.mjs CHANGED
@@ -952,7 +952,7 @@ class HarmonyMidsceneTools extends BaseMidsceneTools {
952
952
  const tools = new HarmonyMidsceneTools();
953
953
  runToolsCLI(tools, 'midscene-harmony', {
954
954
  stripPrefix: 'harmony_',
955
- version: "1.5.7"
955
+ version: "1.5.8-beta-20260324073120.0"
956
956
  }).catch((e)=>{
957
957
  if (!(e instanceof CLIError)) console.error(e);
958
958
  process.exit(e instanceof CLIError ? e.exitCode : 1);
package/dist/es/index.mjs CHANGED
@@ -11,6 +11,11 @@ import { promisify } from "node:util";
11
11
  import { Agent } from "@midscene/core/agent";
12
12
  import { BaseMidsceneTools } from "@midscene/shared/mcp";
13
13
  import { overrideAIConfig } from "@midscene/shared/env";
14
+ import node_path from "node:path";
15
+ import { select as prompts_select } from "@inquirer/prompts";
16
+ import { createScreenshotPreviewDescriptor, definePlaygroundPlatform } from "@midscene/playground";
17
+ import { PLAYGROUND_SERVER_PORT } from "@midscene/shared/constants";
18
+ import { findAvailablePort } from "@midscene/shared/node";
14
19
  function _define_property(obj, key, value) {
15
20
  if (key in obj) Object.defineProperty(obj, key, {
16
21
  value: value,
@@ -949,4 +954,59 @@ class HarmonyMidsceneTools extends BaseMidsceneTools {
949
954
  ];
950
955
  }
951
956
  }
952
- export { HarmonyAgent, HarmonyDevice, HarmonyMidsceneTools, agentFromHdcDevice, getConnectedDevices, overrideAIConfig };
957
+ async function selectDevice() {
958
+ console.log('🔍 Scanning for HarmonyOS devices...');
959
+ const devices = await getConnectedDevices();
960
+ if (0 === devices.length) {
961
+ console.error('❌ No HarmonyOS devices found!');
962
+ console.log('📱 Please ensure:');
963
+ console.log(' • Your device is connected via USB');
964
+ console.log(' • HDC is properly configured');
965
+ console.log(' • Run `hdc list targets` to verify');
966
+ process.exit(1);
967
+ }
968
+ if (1 === devices.length) {
969
+ console.log(`📱 Found device: ${devices[0].deviceId}`);
970
+ return devices[0].deviceId;
971
+ }
972
+ return prompts_select({
973
+ message: '📱 Multiple devices found. Please select one:',
974
+ choices: devices.map((device)=>({
975
+ name: device.deviceId,
976
+ value: device.deviceId
977
+ }))
978
+ });
979
+ }
980
+ const harmonyPlaygroundPlatform = definePlaygroundPlatform({
981
+ id: 'harmony',
982
+ title: 'Midscene HarmonyOS Playground',
983
+ description: "HarmonyOS playground platform descriptor",
984
+ async prepare (options) {
985
+ const selectedDeviceId = options?.deviceId || await selectDevice();
986
+ const staticDir = options?.staticDir || node_path.join(__dirname, '../../static');
987
+ const availablePort = await findAvailablePort(PLAYGROUND_SERVER_PORT);
988
+ if (availablePort !== PLAYGROUND_SERVER_PORT) console.log(`⚠️ Port ${PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
989
+ return {
990
+ platformId: 'harmony',
991
+ title: 'Midscene HarmonyOS Playground',
992
+ agentFactory: async ()=>{
993
+ const device = new HarmonyDevice(selectedDeviceId);
994
+ await device.connect();
995
+ return new HarmonyAgent(device);
996
+ },
997
+ launchOptions: {
998
+ port: availablePort,
999
+ openBrowser: false,
1000
+ verbose: false,
1001
+ staticPath: staticDir
1002
+ },
1003
+ preview: createScreenshotPreviewDescriptor({
1004
+ title: 'HarmonyOS device preview'
1005
+ }),
1006
+ metadata: {
1007
+ deviceId: selectedDeviceId
1008
+ }
1009
+ };
1010
+ }
1011
+ });
1012
+ export { HarmonyAgent, HarmonyDevice, HarmonyMidsceneTools, agentFromHdcDevice, getConnectedDevices, harmonyPlaygroundPlatform, overrideAIConfig };
@@ -955,7 +955,7 @@ class HarmonyMCPServer extends BaseMCPServer {
955
955
  constructor(toolsManager){
956
956
  super({
957
957
  name: '@midscene/harmony-mcp',
958
- version: "1.5.7",
958
+ version: "1.5.8-beta-20260324073120.0",
959
959
  description: 'Control the HarmonyOS device using natural language commands'
960
960
  }, toolsManager);
961
961
  }
package/dist/lib/bin.js CHANGED
@@ -23,8 +23,8 @@ var __webpack_require__ = {};
23
23
  var __webpack_exports__ = {};
24
24
  const external_node_path_namespaceObject = require("node:path");
25
25
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
26
- const prompts_namespaceObject = require("@inquirer/prompts");
27
26
  const playground_namespaceObject = require("@midscene/playground");
27
+ const prompts_namespaceObject = require("@inquirer/prompts");
28
28
  const constants_namespaceObject = require("@midscene/shared/constants");
29
29
  const node_namespaceObject = require("@midscene/shared/node");
30
30
  const agent_namespaceObject = require("@midscene/core/agent");
@@ -928,34 +928,58 @@ async function selectDevice() {
928
928
  console.log(`📱 Found device: ${devices[0].deviceId}`);
929
929
  return devices[0].deviceId;
930
930
  }
931
- const choices = devices.map((d)=>({
932
- name: d.deviceId,
933
- value: d.deviceId
934
- }));
935
931
  return (0, prompts_namespaceObject.select)({
936
932
  message: '📱 Multiple devices found. Please select one:',
937
- choices
933
+ choices: devices.map((device)=>({
934
+ name: device.deviceId,
935
+ value: device.deviceId
936
+ }))
938
937
  });
939
938
  }
940
- const staticDir = external_node_path_default().join(__dirname, '../../static');
939
+ const harmonyPlaygroundPlatform = (0, playground_namespaceObject.definePlaygroundPlatform)({
940
+ id: 'harmony',
941
+ title: 'Midscene HarmonyOS Playground',
942
+ description: "HarmonyOS playground platform descriptor",
943
+ async prepare (options) {
944
+ const selectedDeviceId = options?.deviceId || await selectDevice();
945
+ const staticDir = options?.staticDir || external_node_path_default().join(__dirname, '../../static');
946
+ const availablePort = await (0, node_namespaceObject.findAvailablePort)(constants_namespaceObject.PLAYGROUND_SERVER_PORT);
947
+ if (availablePort !== constants_namespaceObject.PLAYGROUND_SERVER_PORT) console.log(`⚠️ Port ${constants_namespaceObject.PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
948
+ return {
949
+ platformId: 'harmony',
950
+ title: 'Midscene HarmonyOS Playground',
951
+ agentFactory: async ()=>{
952
+ const device = new device_HarmonyDevice(selectedDeviceId);
953
+ await device.connect();
954
+ return new HarmonyAgent(device);
955
+ },
956
+ launchOptions: {
957
+ port: availablePort,
958
+ openBrowser: false,
959
+ verbose: false,
960
+ staticPath: staticDir
961
+ },
962
+ preview: (0, playground_namespaceObject.createScreenshotPreviewDescriptor)({
963
+ title: 'HarmonyOS device preview'
964
+ }),
965
+ metadata: {
966
+ deviceId: selectedDeviceId
967
+ }
968
+ };
969
+ }
970
+ });
971
+ const bin_staticDir = external_node_path_default().join(__dirname, '../../static');
941
972
  const main = async ()=>{
942
973
  const { default: open } = await import("open");
943
974
  try {
944
- const selectedDeviceId = await selectDevice();
975
+ const prepared = await harmonyPlaygroundPlatform.prepare({
976
+ staticDir: bin_staticDir
977
+ });
978
+ const selectedDeviceId = prepared.metadata?.deviceId;
979
+ if ('string' != typeof selectedDeviceId || !selectedDeviceId) throw new Error('Harmony playground prepared metadata is missing a deviceId');
945
980
  console.log(`✅ Selected device: ${selectedDeviceId}`);
946
981
  console.log('🚀 Starting server...');
947
- const availablePort = await (0, node_namespaceObject.findAvailablePort)(constants_namespaceObject.PLAYGROUND_SERVER_PORT);
948
- if (availablePort !== constants_namespaceObject.PLAYGROUND_SERVER_PORT) console.log(`⚠️ Port ${constants_namespaceObject.PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
949
- const { server: playgroundServer } = await (0, playground_namespaceObject.playgroundForAgentFactory)(async ()=>{
950
- const device = new device_HarmonyDevice(selectedDeviceId);
951
- await device.connect();
952
- return new HarmonyAgent(device);
953
- }).launch({
954
- port: availablePort,
955
- openBrowser: false,
956
- verbose: false,
957
- staticPath: staticDir
958
- });
982
+ const { server: playgroundServer } = await (0, playground_namespaceObject.launchPreparedPlaygroundPlatform)(prepared);
959
983
  console.log('');
960
984
  console.log('✨ Midscene HarmonyOS Playground is ready!');
961
985
  console.log(`🎮 Playground: http://localhost:${playgroundServer.port}`);
package/dist/lib/cli.js CHANGED
@@ -977,7 +977,7 @@ class HarmonyMidsceneTools extends mcp_namespaceObject.BaseMidsceneTools {
977
977
  const tools = new HarmonyMidsceneTools();
978
978
  (0, cli_namespaceObject.runToolsCLI)(tools, 'midscene-harmony', {
979
979
  stripPrefix: 'harmony_',
980
- version: "1.5.7"
980
+ version: "1.5.8-beta-20260324073120.0"
981
981
  }).catch((e)=>{
982
982
  if (!(e instanceof cli_namespaceObject.CLIError)) console.error(e);
983
983
  process.exit(e instanceof cli_namespaceObject.CLIError ? e.exitCode : 1);
package/dist/lib/index.js CHANGED
@@ -33,6 +33,7 @@ var __webpack_require__ = {};
33
33
  var __webpack_exports__ = {};
34
34
  __webpack_require__.r(__webpack_exports__);
35
35
  __webpack_require__.d(__webpack_exports__, {
36
+ harmonyPlaygroundPlatform: ()=>harmonyPlaygroundPlatform,
36
37
  overrideAIConfig: ()=>env_namespaceObject.overrideAIConfig,
37
38
  HarmonyMidsceneTools: ()=>HarmonyMidsceneTools,
38
39
  agentFromHdcDevice: ()=>agentFromHdcDevice,
@@ -993,11 +994,73 @@ class HarmonyMidsceneTools extends mcp_namespaceObject.BaseMidsceneTools {
993
994
  }
994
995
  }
995
996
  const env_namespaceObject = require("@midscene/shared/env");
997
+ const external_node_path_namespaceObject = require("node:path");
998
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
999
+ const prompts_namespaceObject = require("@inquirer/prompts");
1000
+ const playground_namespaceObject = require("@midscene/playground");
1001
+ const constants_namespaceObject = require("@midscene/shared/constants");
1002
+ const node_namespaceObject = require("@midscene/shared/node");
1003
+ async function selectDevice() {
1004
+ console.log('🔍 Scanning for HarmonyOS devices...');
1005
+ const devices = await getConnectedDevices();
1006
+ if (0 === devices.length) {
1007
+ console.error('❌ No HarmonyOS devices found!');
1008
+ console.log('📱 Please ensure:');
1009
+ console.log(' • Your device is connected via USB');
1010
+ console.log(' • HDC is properly configured');
1011
+ console.log(' • Run `hdc list targets` to verify');
1012
+ process.exit(1);
1013
+ }
1014
+ if (1 === devices.length) {
1015
+ console.log(`📱 Found device: ${devices[0].deviceId}`);
1016
+ return devices[0].deviceId;
1017
+ }
1018
+ return (0, prompts_namespaceObject.select)({
1019
+ message: '📱 Multiple devices found. Please select one:',
1020
+ choices: devices.map((device)=>({
1021
+ name: device.deviceId,
1022
+ value: device.deviceId
1023
+ }))
1024
+ });
1025
+ }
1026
+ const harmonyPlaygroundPlatform = (0, playground_namespaceObject.definePlaygroundPlatform)({
1027
+ id: 'harmony',
1028
+ title: 'Midscene HarmonyOS Playground',
1029
+ description: "HarmonyOS playground platform descriptor",
1030
+ async prepare (options) {
1031
+ const selectedDeviceId = options?.deviceId || await selectDevice();
1032
+ const staticDir = options?.staticDir || external_node_path_default().join(__dirname, '../../static');
1033
+ const availablePort = await (0, node_namespaceObject.findAvailablePort)(constants_namespaceObject.PLAYGROUND_SERVER_PORT);
1034
+ if (availablePort !== constants_namespaceObject.PLAYGROUND_SERVER_PORT) console.log(`⚠️ Port ${constants_namespaceObject.PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
1035
+ return {
1036
+ platformId: 'harmony',
1037
+ title: 'Midscene HarmonyOS Playground',
1038
+ agentFactory: async ()=>{
1039
+ const device = new HarmonyDevice(selectedDeviceId);
1040
+ await device.connect();
1041
+ return new HarmonyAgent(device);
1042
+ },
1043
+ launchOptions: {
1044
+ port: availablePort,
1045
+ openBrowser: false,
1046
+ verbose: false,
1047
+ staticPath: staticDir
1048
+ },
1049
+ preview: (0, playground_namespaceObject.createScreenshotPreviewDescriptor)({
1050
+ title: 'HarmonyOS device preview'
1051
+ }),
1052
+ metadata: {
1053
+ deviceId: selectedDeviceId
1054
+ }
1055
+ };
1056
+ }
1057
+ });
996
1058
  exports.HarmonyAgent = __webpack_exports__.HarmonyAgent;
997
1059
  exports.HarmonyDevice = __webpack_exports__.HarmonyDevice;
998
1060
  exports.HarmonyMidsceneTools = __webpack_exports__.HarmonyMidsceneTools;
999
1061
  exports.agentFromHdcDevice = __webpack_exports__.agentFromHdcDevice;
1000
1062
  exports.getConnectedDevices = __webpack_exports__.getConnectedDevices;
1063
+ exports.harmonyPlaygroundPlatform = __webpack_exports__.harmonyPlaygroundPlatform;
1001
1064
  exports.overrideAIConfig = __webpack_exports__.overrideAIConfig;
1002
1065
  for(var __rspack_i in __webpack_exports__)if (-1 === [
1003
1066
  "HarmonyAgent",
@@ -1005,6 +1068,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
1005
1068
  "HarmonyMidsceneTools",
1006
1069
  "agentFromHdcDevice",
1007
1070
  "getConnectedDevices",
1071
+ "harmonyPlaygroundPlatform",
1008
1072
  "overrideAIConfig"
1009
1073
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
1010
1074
  Object.defineProperty(exports, '__esModule', {
@@ -996,7 +996,7 @@ class HarmonyMCPServer extends mcp_namespaceObject.BaseMCPServer {
996
996
  constructor(toolsManager){
997
997
  super({
998
998
  name: '@midscene/harmony-mcp',
999
- version: "1.5.7",
999
+ version: "1.5.8-beta-20260324073120.0",
1000
1000
  description: 'Control the HarmonyOS device using natural language commands'
1001
1001
  }, toolsManager);
1002
1002
  }
@@ -10,6 +10,7 @@ import { HarmonyDeviceOpt } from '@midscene/core/device';
10
10
  import { InterfaceType } from '@midscene/core';
11
11
  import { LocateResultElement } from '@midscene/core';
12
12
  import { overrideAIConfig } from '@midscene/shared/env';
13
+ import { PlaygroundPlatformDescriptor } from '@midscene/playground';
13
14
  import { Point } from '@midscene/core';
14
15
  import { Size } from '@midscene/core';
15
16
  import { ToolDefinition } from '@midscene/shared/mcp';
@@ -109,6 +110,13 @@ export declare class HarmonyMidsceneTools extends BaseMidsceneTools<HarmonyAgent
109
110
  protected preparePlatformTools(): ToolDefinition[];
110
111
  }
111
112
 
113
+ declare interface HarmonyPlatformOptions {
114
+ deviceId?: string;
115
+ staticDir?: string;
116
+ }
117
+
118
+ export declare const harmonyPlaygroundPlatform: PlaygroundPlatformDescriptor<HarmonyPlatformOptions | undefined>;
119
+
112
120
  declare class HdcClient {
113
121
  private hdcPath;
114
122
  private deviceId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midscene/harmony",
3
- "version": "1.5.7",
3
+ "version": "1.5.8-beta-20260324073120.0",
4
4
  "description": "HarmonyOS automation library for Midscene",
5
5
  "keywords": [
6
6
  "HarmonyOS UI automation",
@@ -41,9 +41,9 @@
41
41
  "dependencies": {
42
42
  "@inquirer/prompts": "^7.8.6",
43
43
  "open": "10.1.0",
44
- "@midscene/core": "1.5.7",
45
- "@midscene/playground": "1.5.7",
46
- "@midscene/shared": "1.5.7"
44
+ "@midscene/core": "1.5.8-beta-20260324073120.0",
45
+ "@midscene/playground": "1.5.8-beta-20260324073120.0",
46
+ "@midscene/shared": "1.5.8-beta-20260324073120.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@rslib/core": "^0.18.3",
package/static/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html><head><link rel="icon" href="/favicon.ico"><title>Midscene Playground</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script defer src="/static/js/lib-react.7b1abe58.js"></script><script defer src="/static/js/148.23cd9828.js"></script><script defer src="/static/js/index.b2ea9324.js"></script><link href="/static/css/index.30e8a752.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
1
+ <!doctype html><html><head><link rel="icon" href="/favicon.ico"><title>Midscene Playground</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script defer src="/static/js/lib-react.7b1abe58.js"></script><script defer src="/static/js/259.5d781a39.js"></script><script defer src="/static/js/index.9f28ff75.js"></script><link href="/static/css/index.3b624810.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
@@ -0,0 +1,2 @@
1
+ .logo img{vertical-align:baseline;height:30px;vertical-align:-webkit-baseline-middle;line-height:30px}.logo-with-star-wrapper{flex-direction:row;justify-content:space-between;display:flex}.nav-actions{align-items:center;gap:8px;display:flex}.nav-actions .nav-icon{color:#000000a6;cursor:pointer;font-size:16px;transition:color .3s}.nav-actions .nav-icon:hover{color:#2b83ff}.nav-actions a{align-items:center;text-decoration:none;display:flex}.nav-actions a:hover .nav-icon{color:#2b83ff}[data-theme=dark] .nav-actions .nav-icon{color:#f8fafd}[data-theme=dark] .nav-actions .nav-icon:hover{color:#2b83ff}.blackboard .footer{color:#aaa}.blackboard ul{padding-left:0}.blackboard li{list-style:none}.blackboard .bottom-tip{height:30px}.blackboard .bottom-tip-item{color:#aaa;text-overflow:ellipsis;word-wrap:break-word;max-width:500px}.blackboard-main-content{position:relative;overflow:hidden}.blackboard-screenshot{box-sizing:border-box;border:1px solid #888;width:100%;display:block}.blackboard-overlay{pointer-events:none;width:100%;position:absolute;top:0;left:0}.blackboard-rect{box-sizing:content-box;pointer-events:none;position:absolute}.blackboard-rect-label{white-space:nowrap;padding:1px 4px;font-size:14px;font-weight:600;line-height:1.4;position:absolute;bottom:100%;left:0}.blackboard-rect-search{border:calc(1px*var(--ui-scale,1))solid #028391;background:#02839126}.blackboard-rect-search .blackboard-rect-label{color:#028391}.blackboard-rect-highlight{border:calc(1px*var(--ui-scale,1))solid #fd5907;background:#fd590726;animation:1.2s ease-in-out infinite blackboard-pulse}.blackboard-rect-highlight .blackboard-rect-label{color:#000}.blackboard-point{width:calc(20px*var(--ui-scale,1));height:calc(20px*var(--ui-scale,1));margin-left:calc(-10px*var(--ui-scale,1));margin-top:calc(-10px*var(--ui-scale,1));border:calc(2px*var(--ui-scale,1))solid #fd5907;box-shadow:0 0 calc(6px*var(--ui-scale,1))#fd590780;pointer-events:none;background:#fd590766;border-radius:50%;animation:1.2s ease-in-out infinite blackboard-pulse;position:absolute}@keyframes blackboard-pulse{0%,to{opacity:.4}50%{opacity:1;box-shadow:0 0 12px #fd590780}}[data-theme=dark] .blackboard .footer,[data-theme=dark] .blackboard .bottom-tip-item{color:#ffffff73}[data-theme=dark] .blackboard-screenshot{border-color:#ffffff1f}[data-theme=dark] .blackboard-rect-highlight .blackboard-rect-label{color:#fff}.shiny-text{color:#0000;letter-spacing:.5px;text-shadow:0 1px 2px #0000000d;background-image:linear-gradient(45deg,#2b83ff,#6a11cb,#2575fc,#4481eb);background-size:300%;-webkit-background-clip:text;background-clip:text;font-weight:600;animation:8s infinite textGradient;display:inline-block;position:relative;overflow:hidden}.shiny-text.theme-blue{background-image:linear-gradient(45deg,#2b83ff,#6a11cb,#2575fc,#4481eb)}.shiny-text.theme-purple{background-image:linear-gradient(45deg,#667eea,#764ba2,#b06ab3,#9d50bb)}.shiny-text.theme-green{background-image:linear-gradient(45deg,#11998e,#38ef7d,#2dd4bf,#10b981)}.shiny-text.theme-rainbow{background-image:linear-gradient(45deg,#ff0080,#ff8c00,#40e0d0,#9d50bb,#ff0080);background-size:400%}.shiny-text:after{content:"";width:120%;height:120%;animation:shine var(--animation-duration,5s)cubic-bezier(.25,.1,.25,1)infinite;z-index:1;pointer-events:none;background:linear-gradient(90deg,#fff0 0%,#ffffff1a 10%,#fff9 50%,#ffffff1a 90%,#fff0 100%);position:absolute;top:-10%;left:-150%;transform:skew(-20deg)translateY(0)}.shiny-text.disabled{color:#000;background:0 0;font-weight:400;animation:none}.shiny-text.disabled:after{animation:none;display:none}[data-theme=dark] .shiny-text{color:#0000;-webkit-text-fill-color:transparent;text-shadow:none;background-image:linear-gradient(45deg,#a78bfa,#c084fc,#e879f9,#c084fc);background-size:300%;-webkit-background-clip:text;background-clip:text;animation:8s infinite textGradient}[data-theme=dark] .shiny-text:after{background:linear-gradient(90deg,#c5b8ff00 0%,#c5b8ff0d 10%,#c5b8ff26 50%,#c5b8ff0d 90%,#c5b8ff00 100%)}@keyframes shine{0%{opacity:.7;left:-150%}20%{opacity:1}80%{opacity:1}to{opacity:.7;left:250%}}@keyframes textGradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.env-config-reminder{background:#fff2e8;border-radius:12px;align-items:center;gap:12px;margin-bottom:12px;padding:12px 16px;display:flex}.env-config-reminder .reminder-icon{color:#fa541c;width:16px;height:16px}.env-config-reminder .reminder-text{color:#000;flex:1;font-size:14px}[data-theme=dark] .env-config-reminder{background:#5226074d}[data-theme=dark] .env-config-reminder .reminder-text{color:#f8fafd}.player-container{box-sizing:border-box;border:1px solid #f2f4f7;border-radius:8px;flex-direction:column;width:100%;max-width:100%;height:100%;min-height:300px;max-height:100%;margin:0 auto;padding:12px;line-height:normal;display:flex;position:relative;overflow:visible}.player-container[data-fit-mode=height]{background:#fff}.player-container[data-fit-mode=height] .canvas-container{background-color:#000}.player-container .canvas-container{background-color:#000;border-radius:4px;outline:none;flex:auto;justify-content:center;align-items:center;width:100%;min-height:200px;display:flex;position:relative;overflow:hidden}.player-container .canvas-container .player-wrapper{width:100%;max-width:100%;max-height:100%;position:relative}.player-container .canvas-container .player-wrapper[data-portrait]{width:auto;height:100%}.player-container .player-subtitle{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:3;pointer-events:none;background:#505050bf;border-radius:8px;align-items:center;gap:8px;max-width:calc(100% - 24px);height:32px;padding:0 14px;display:inline-flex;position:absolute;bottom:52px;left:50%;transform:translate(-50%)}.player-container .player-subtitle .player-subtitle-badge{color:#fff;background:#a34dff;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;height:22px;padding:0 6px;font-size:13px;font-weight:700;display:inline-flex}.player-container .player-subtitle .player-subtitle-text{color:#fff;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:14px;font-weight:500;overflow:hidden}.player-container .control-bar{z-index:2;background:linear-gradient(#0000,#0009);align-items:center;gap:8px;padding:8px 12px;transition:opacity .3s;display:flex;position:absolute;bottom:0;left:0;right:0}.player-container .control-bar.hidden{opacity:0;pointer-events:none}.player-container .time-display{color:#fffc;font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:14px}.player-container .seek-bar-track{cursor:pointer;touch-action:none;background:#ffffff4d;border-radius:2.5px;flex:1;height:5px;position:relative}.player-container .seek-bar-track .seek-bar-fill{pointer-events:none;background:#2b83ff;border-radius:2.5px;height:100%;position:absolute;top:0;left:0}.player-container .seek-bar-track .seek-bar-knob{pointer-events:none;background:#fff;border-radius:10px;width:8px;height:16px;position:absolute;top:50%;transform:translate(-50%,-50%)}.player-container .seek-bar-track .chapter-marker{pointer-events:auto;cursor:pointer;z-index:1;background:#fff;width:2px;height:100%;position:absolute;top:0;transform:translate(-50%)}.player-container .seek-bar-track .chapter-marker:before{content:"";position:absolute;top:-8px;bottom:-8px;left:-8px;right:-8px}.player-container .status-icon{color:#fff;cursor:pointer;opacity:.7;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;transition:all .2s;display:flex}.player-container .status-icon svg{color:#fff;font-size:16px}.player-container .status-icon:hover{opacity:1;background:#ffffff26}.player-container .player-custom-controls{flex-direction:row;align-items:center;gap:8px;margin-right:8px;display:flex}.player-container .player-custom-controls .ant-spin{color:#fff}.chapter-tooltip .ant-tooltip-inner{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#505050d9;border-radius:16px;max-width:360px;padding:6px 12px;font-size:12px}.chapter-tooltip .ant-tooltip-arrow:before{background:#505050d9}[data-theme=dark] .player-container{border-color:#292929}[data-theme=dark] .player-container[data-fit-mode=height]{background:#292929;border-color:#292929}[data-theme=dark] .player-container[data-fit-mode=height] .canvas-container,[data-theme=dark] .player-container .canvas-container{background-color:#000}.player-settings-dropdown{background-color:#fff;border:1px solid #00000014;border-radius:8px;padding:4px;overflow:hidden;box-shadow:0 2px 8px #00000014}.player-settings-divider{background:#0000000f;height:1px;margin:4px 0}.player-speed-option:hover,.player-settings-item:hover{background:#0000000a}.player-speed-option.active{color:#1677ff}[data-theme=dark] .player-settings-dropdown{color:#f8fafd;background-color:#1f1f1f;border-color:#ffffff14;box-shadow:0 2px 8px #0000004d}[data-theme=dark] .player-settings-divider,[data-theme=dark] .player-speed-option:hover,[data-theme=dark] .player-settings-item:hover{background:#ffffff14}.result-wrapper{justify-content:center;align-items:flex-start;height:100%;margin:4px 0;display:flex}.result-wrapper .player-container{width:100%;max-width:500px;height:auto;min-height:0;max-height:none}.result-wrapper .player-container .canvas-container{height:60vh;min-height:0;max-height:60vh}.result-wrapper .player-container .player-wrapper{max-width:100%;max-height:100%}.result-wrapper .loading-container{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.result-wrapper .loading-container .loading-progress-text{color:#888;margin-top:8px;font-size:12px}.result-wrapper pre{white-space:pre-wrap;text-wrap:unset;word-wrap:break-word;overflow-wrap:break-word;background:#f2f4f7;border-radius:8px;margin:0;padding:14px;overflow:scroll}[data-theme=dark] .result-wrapper .loading-container .loading-progress-text{color:#ffffff73}[data-theme=dark] .result-wrapper pre{color:#f8fafd;background:#ffffff14;border:1px solid #ffffff1f}.playground-container{background:#fff;flex-direction:column;width:100%;height:100vh;display:flex;position:relative}.playground-container .command-form{flex-direction:column;width:100%;height:100%;display:flex}.playground-container .context-preview-section{border-bottom:1px solid #f0f0f0;flex-shrink:0;padding:16px}.playground-container .middle-dialog-area{flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.playground-container .middle-dialog-area .clear-button-container{z-index:10;position:absolute;top:16px;right:0}.playground-container .middle-dialog-area .clear-button-container .clear-button{opacity:.7;transition:opacity .2s}.playground-container .middle-dialog-area .clear-button-container .clear-button:hover{opacity:1}.playground-container .middle-dialog-area .info-list-container{scrollbar-width:none;flex:1;padding-top:16px;padding-bottom:16px;overflow:hidden auto}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item{border-bottom:none;padding:0}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card{border:1px solid #f0f0f0;border-radius:8px;box-shadow:0 1px 3px #0000001a}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card:hover{box-shadow:0 2px 6px #00000026}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card .ant-card-body{padding:12px}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-empty-text{color:#999;font-style:italic}.playground-container .middle-dialog-area .info-list-container::-webkit-scrollbar{display:none}.playground-container .middle-dialog-area .info-list-container .list-item{background:0 0;border:none;padding:0}.playground-container .middle-dialog-area .scroll-to-bottom-button{z-index:10;background:#fff;border:1px solid #00000014;position:absolute;bottom:10px;right:0}.playground-container .middle-dialog-area .scroll-to-bottom-button:hover{background:#1890ff}.playground-container .middle-dialog-area .scroll-to-bottom-button:hover .anticon{color:#fff}.playground-container .middle-dialog-area .scroll-to-bottom-button .anticon{color:#333;font-size:16px}.playground-container .user-message-container{justify-content:flex-end;width:100%;margin:20px 0 30px;display:flex}.playground-container .user-message-container .user-message-bubble{color:#000000d9;text-align:left;background:#f2f4f7;border-radius:12px;max-width:80%;padding:12px 16px;font-size:14px;font-weight:400;display:inline-block}.playground-container .progress-action-item{color:#000;background:#f2f4f7;border-radius:8px;justify-content:space-between;height:36px;margin:4px 0;padding:0 12px;font-size:14px;line-height:36px;display:flex}.playground-container .progress-action-item .progress-status-icon{margin-left:4px}.playground-container .progress-action-item .progress-status-icon.loading{color:#1890ff}.playground-container .progress-action-item .progress-status-icon.completed{color:#52c41a}.playground-container .progress-action-item .progress-status-icon.error{color:#ff4d4f;font-weight:700}.playground-container .progress-description{padding:8px 0;font-size:14px;line-height:22px;display:inline-block}.playground-container .system-message-container{flex-direction:column;display:flex}.playground-container .system-message-container .system-message-header{align-items:center;gap:8px;margin:12px 0;display:flex}.playground-container .system-message-container .system-message-header .system-message-title{font-size:12px;font-weight:400;line-height:100%}.playground-container .system-message-container .system-message-content{color:#000000d9;font-size:14px}.playground-container .system-message-container .system-message-content .system-message-text{color:#000000d9;font-size:14px;line-height:25px}.playground-container .system-message-container .system-message-content .error-message{color:#e51723;word-break:break-word;background-color:#fff;border:none;border-radius:0;align-items:flex-start;margin-bottom:16px;padding:0;font-size:14px;display:flex}.playground-container .system-message-container .system-message-content .error-message .divider{background-color:#e6e8eb;flex-shrink:0;align-self:stretch;width:1px;min-height:20px;margin:0 8px 0 0}.playground-container .system-message-container .system-message-content .loading-progress-text{color:#666;background:#f6f8fa;border-left:3px solid #1890ff;border-radius:4px;margin-top:8px;padding:8px 12px;font-size:13px}.playground-container .new-conversation-separator{flex-shrink:0;justify-content:center;align-items:center;padding:20px 0;display:flex;position:relative}.playground-container .new-conversation-separator .separator-line{background-color:#e8e8e8;height:1px;position:absolute;top:50%;left:0;right:0}.playground-container .new-conversation-separator .separator-text-container{z-index:1;background-color:#fff;padding:0 16px;position:relative}.playground-container .new-conversation-separator .separator-text-container .separator-text{color:#999;background-color:#fff;font-size:12px}.playground-container .bottom-input-section{background-color:#fff;flex-shrink:0;padding:16px 0 0}.playground-container .version-info-section{flex-shrink:0;justify-content:center;align-items:center;height:38px;display:flex}.playground-container .version-text{color:#999;text-align:center;font-size:12px}.playground-container .hidden-result-ref{display:none}.playground-container .playground-description{margin-bottom:32px}.playground-container .playground-description .description-zh{color:#333;margin:0 0 8px;font-size:16px;line-height:1.5}.playground-container .playground-description .description-en{color:#666;margin:0;font-size:14px;line-height:1.5}.playground-container .config-section{margin-bottom:24px}.playground-container .config-section .config-title{color:#333;margin:0 0 16px;font-size:18px;font-weight:600}.playground-container .config-section .config-item{align-items:center;gap:8px;margin-bottom:12px;display:flex}.playground-container .config-section .config-item .config-check{color:#52c41a;font-size:16px}.playground-container .config-section .config-item .config-label{color:#333;font-size:14px}.playground-container .config-section .config-link{color:#1890ff;font-size:14px;text-decoration:none}.playground-container .config-section .config-link:hover{text-decoration:underline}[data-theme=dark] .universal-playground .error-hint{color:#ffffff73}[data-theme=dark] .universal-playground .status-indicator{color:#f8fafd}[data-theme=dark] .universal-playground .status-indicator.error{color:#ff4d4f}[data-theme=dark] .universal-playground .status-indicator.success{color:#52c41a}[data-theme=dark] .universal-playground .operation-label{color:#f8fafd}[data-theme=dark] .universal-playground .alert-message{color:#f8fafd;background-color:#5226074d}[data-theme=dark] .universal-playground .operation-item .operation-icon-wrapper{background-color:#ffffff14}[data-theme=dark] .universal-playground .operation-item .operation-content{background-color:#0000}[data-theme=dark] .universal-playground .operation-item .operation-content .operation-title{color:#ffffff73}[data-theme=dark] .universal-playground .playground-footer{background-color:#ffffff0a}[data-theme=dark] .universal-playground .playground-footer .status-text{color:#f8fafd}[data-theme=dark] .universal-playground .results-info{color:#ffffff73}[data-theme=dark] .universal-playground .result-section .result-title,[data-theme=dark] .universal-playground .result-section .result-details,[data-theme=dark] .universal-playground .result-section .result-value{color:#f8fafd}[data-theme=dark] .universal-playground .result-section .result-value.success{color:#52c41a}[data-theme=dark] .universal-playground .result-section .result-value.error{color:#ff4d4f}.prompt-input-wrapper{box-sizing:border-box;width:100%;padding:0 4px}.prompt-input-wrapper .mode-radio-group-wrapper{align-items:center;gap:8px;display:flex;position:relative}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group{scrollbar-width:thin;flex:1;align-items:center;gap:8px;min-width:0;height:100%;margin-right:60px;display:flex;overflow:auto hidden}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar{height:6px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-form-item{flex-shrink:0;margin:0!important}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-form-item .ant-radio-group{flex-wrap:nowrap;gap:8px;display:flex}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper{height:24px;box-shadow:none;white-space:nowrap;background-color:#f7f7f7;border:none;border-radius:11px;flex-shrink:0;margin-right:0;padding:0 8px;font-size:12px;line-height:24px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper:before{display:none}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper:focus-within{outline:none}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff;background-color:#2b83ff;border-color:#2b83ff}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked:hover{color:#fff}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-dropdown-trigger{flex-shrink:0}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button{height:24px;box-shadow:none;white-space:nowrap;background-color:#f7f7f7;border:none;border-radius:11px;flex-shrink:0;align-items:center;gap:2px;max-width:160px;padding:0 8px;font-size:12px;display:inline-flex}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button .ant-btn-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover{background-color:#e6e6e6}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown{color:#fff;background-color:#2b83ff;font-weight:500}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown:hover{background-color:#2b83ff}.prompt-input-wrapper .mode-radio-group-wrapper .action-icons{z-index:10;pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff80 20%,#fffc 40%,#fffffff2 60%,#fff 70%);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;width:80px;padding-left:20px;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.prompt-input-wrapper .mode-radio-group-wrapper .action-icons>*{pointer-events:auto}.prompt-input-wrapper .main-side-console-input{z-index:1;background:linear-gradient(#fff,#fff) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box;border:1px solid #0000;border-radius:12px;margin-top:10px;padding-bottom:48px;position:relative}@keyframes hue-shift{0%{filter:hue-rotate()}to{filter:hue-rotate(360deg)}}.prompt-input-wrapper .main-side-console-input:focus-within{z-index:10;box-shadow:0 0 0 3px #2b83ff29}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea{resize:none;white-space:pre-wrap;scrollbar-width:thin;background:0 0;border:none;border-radius:0;outline:none;min-height:120px;padding:12px 16px;line-height:21px;transition:background-color .2s;position:relative;overflow-y:auto}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus{box-shadow:none;border:none;outline:none}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus-visible{box-shadow:none;border:none;outline:none}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:after{display:none}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar{width:6px}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar-thumb{background-color:#0003;border-radius:3px}.prompt-input-wrapper .main-side-console-input.loading{background:linear-gradient(#fff,#fff) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box;border:1px solid #0000}.prompt-input-wrapper .main-side-console-input.loading:before{content:"";-webkit-mask-composite:xor;pointer-events:none;z-index:-1;-webkit-mask-composite:xor;-webkit-mask-source-type:auto,auto;-webkit-mask-composite:xor;-webkit-mask-source-type:auto,auto;background:linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%);border-radius:12px;padding:1px;animation:5s linear infinite hue-shift;position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.prompt-input-wrapper .main-side-console-input.disabled .form-controller-wrapper{background-color:#0000}.prompt-input-wrapper .ant-form-item-with-help+.form-controller-wrapper{bottom:14px}.prompt-input-wrapper .ant-input{padding-bottom:40px}.prompt-input-wrapper .form-controller-wrapper{box-sizing:border-box;z-index:1000;pointer-events:none;background-color:#0000;flex-direction:row;justify-content:flex-end;align-items:flex-end;gap:8px;width:calc(100% - 32px);height:56px;padding:12px 0;line-height:32px;transition:background-color .2s;display:flex;position:absolute;bottom:0;left:16px}.prompt-input-wrapper .form-controller-wrapper>*{pointer-events:auto}.prompt-input-wrapper .settings-wrapper{color:#777;flex-flow:wrap;gap:2px;display:flex}.prompt-input-wrapper .settings-wrapper.settings-wrapper-hover{color:#3b3b3b}.prompt-input-wrapper .structured-params-container{box-sizing:border-box;padding:16px 16px 56px;overflow:hidden}.prompt-input-wrapper .structured-params-container .structured-params{width:100%;min-width:0}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item{flex-direction:column;display:flex}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label{text-align:left;flex-basis:auto;padding-bottom:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label{color:#000000d9;height:auto;font-size:12px;font-weight:500;line-height:1.5}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:after{color:#ff4d4f;font-family:SimSun,sans-serif;font-size:12px;line-height:1;display:inline-block}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{margin-right:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{margin-right:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{margin-right:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-control{flex:1;margin-top:0}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-row{flex-direction:column}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-control-input{min-height:auto}.prompt-input-wrapper .structured-params-container .structured-params .ant-input,.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number,.prompt-input-wrapper .structured-params-container .structured-params .ant-select{border:1px solid #e1e5e9;border-radius:6px;width:100%}.prompt-input-wrapper .structured-params-container .structured-params .ant-input:hover,.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:hover,.prompt-input-wrapper .structured-params-container .structured-params .ant-select:hover{border-color:#40a9ff}.prompt-input-wrapper .structured-params-container .structured-params textarea.ant-input{padding-bottom:5px}.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number .ant-input-number-input{box-shadow:none;border:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:hover .ant-input-number-input{box-shadow:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-select{min-width:120px}.prompt-input-wrapper .structured-params-container .structured-params .ant-select .ant-select-selector{box-shadow:none;border:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-select:hover .ant-select-selector,.prompt-input-wrapper .structured-params-container .structured-params .ant-select.ant-select-focused .ant-select-selector{box-shadow:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group{width:100%}.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper{border:1px solid #e1e5e9;border-radius:6px;height:32px;margin-right:4px;font-size:12px;line-height:30px}.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff;background-color:#2b83ff;border-color:#2b83ff}.selector-trigger{cursor:pointer;width:24px;height:24px;transition:all .2s}.selector-trigger .action-icon{color:#000000d9;font-size:14px;transition:all .2s}.selector-trigger .action-icon:hover{color:#2b83ff}.more-apis-dropdown .ant-dropdown-menu{scrollbar-width:thin;max-height:400px;overflow-y:auto}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar{width:6px}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover{background:#a8a8a8}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper{color:#f8fafd!important;background-color:#ffffff14!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff!important;background-color:#2b83ff!important;border-color:#2b83ff!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button{color:#f8fafd!important;background-color:#ffffff14!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover{background-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown{color:#fff!important;background-color:#2b83ff!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .action-icons{background:linear-gradient(90deg,#0000 0%,#1f1f1f80 20%,#1f1f1fcc 40%,#1f1f1ff2 60%,#1f1f1f 70%)!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input{background:#1f1f1f!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input:focus-within{background:linear-gradient(#1f1f1f,#1f1f1f) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box!important;border:1px solid #0000!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea{color:#f8fafd!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input.loading{background:linear-gradient(#1f1f1f,#1f1f1f) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box!important;border:1px solid #0000!important}[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content .ant-input,[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content textarea.ant-input{color:#f8fafd!important;background:#ffffff0a!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn{color:#f8fafd!important;background-color:#ffffff14!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn.ant-btn-primary{color:#fff!important;background-color:#2b83ff!important;border-color:#2b83ff!important}[data-theme=dark] .prompt-input-wrapper .form-controller-wrapper{background-color:#0000!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container{background:linear-gradient(#1f1f1f,#1f1f1f) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-form-item-label>label{color:#f8fafd!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-input,[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number,[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-select,[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper{color:#f8fafd!important;background-color:#ffffff0a!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff!important;background-color:#2b83ff!important;border-color:#2b83ff!important}[data-theme=dark] .prompt-input .tip-button{background-color:#ffffff14}[data-theme=dark] .prompt-input .tip-button.active{color:#fff;background-color:#2b83ff}[data-theme=dark] .prompt-input .prompt-textarea-wrapper{background-color:#ffffff0a}[data-theme=dark] .prompt-input .prompt-textarea-wrapper:hover,[data-theme=dark] .prompt-input .prompt-textarea-wrapper.focused{background-color:#ffffff14}[data-theme=dark] .prompt-input .btn-wrapper .btn-item{color:#fff;background-color:#2b83ff}[data-theme=dark] .prompt-input .btn-wrapper .btn-item:hover{background-color:#2b83ff}[data-theme=dark] .prompt-input .dropdown-content{background-color:#1f1f1f;border-color:#ffffff1f}[data-theme=dark] .prompt-input .param-label{color:#f8fafd}[data-theme=dark] .prompt-input .error-message{color:#ff4d4f}[data-theme=dark] .prompt-input .send-button-text{color:#2b83ff}[data-theme=dark] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track{background:#ffffff14}[data-theme=dark] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb{background:#fff3}[data-theme=dark] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.history-selector-wrapper{position:relative}.history-modal-overlay{z-index:9999;background:#fff;border:1px solid #00000014;border-radius:12px;width:320px;height:400px;position:fixed;top:auto;bottom:20px;right:20px;box-shadow:0 8px 24px #0000001f}.history-modal-container{border-radius:12px;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.history-modal-container .history-modal-header{justify-content:space-between;align-items:center;height:48px;padding:0 25px;line-height:48px;display:flex}.history-modal-container .history-modal-header .close-button{justify-content:center;align-items:center;margin-right:-4px;padding:4px;display:flex}.history-modal-container .history-modal-header .close-button .anticon{color:#999;font-size:18px}.history-modal-container .history-modal-header .close-button:hover .anticon{color:#666}.history-modal-container .history-search-section{background:#fff;padding:16px 20px}.history-modal-container .history-search-section .search-input-wrapper{color:#00000040;align-items:center;gap:12px;display:flex}.history-modal-container .history-search-section .search-input-wrapper .search-input{background:#f1f2f3;border:none;border-radius:16px;flex:1;height:36px}.history-modal-container .history-search-section .search-input-wrapper .search-input .ant-input{box-shadow:none;background:0 0;border:none}.history-modal-container .history-search-section .search-input-wrapper .search-input:hover,.history-modal-container .history-search-section .search-input-wrapper .search-input:focus-within{background:#fff;border-color:#d9d9d9}.history-modal-container .history-search-section .search-input-wrapper .clear-button{color:#1890ff;height:auto;padding:0}.history-modal-container .history-search-section .search-input-wrapper .clear-button:hover{color:#40a9ff}.history-modal-container .history-content{flex:1;padding:0 25px 25px;overflow-y:auto}.history-modal-container .history-content .history-group{margin-bottom:10px}.history-modal-container .history-content .history-group .history-group-title{color:#00000073;height:40px;font-size:12px;font-weight:400;line-height:40px}.history-modal-container .history-content .history-group .history-item{cursor:pointer;color:#000000d9;white-space:nowrap;text-overflow:ellipsis;height:40px;font-size:14px;line-height:40px;overflow:hidden}.history-modal-container .history-content .history-group .history-item:hover{background:#f2f4f7;margin:0 -8px;padding:0 8px}.history-modal-container .history-content .no-results{text-align:center;color:#999;padding:40px 20px}[data-theme=dark] .history-selector .history-timestamp,[data-theme=dark] .history-selector .history-path{color:#ffffff73}[data-theme=dark] .history-selector .history-description{color:#f8fafd}[data-theme=dark] .history-selector .history-no-items{color:#ffffff73}[data-theme=dark] .history-selector .history-item:hover{background:#ffffff14}[data-theme=dark] .history-selector .history-item .history-clear-icon{border-color:#ffffff1f}[data-theme=dark] .history-selector .history-item .history-clear-icon:hover{border-color:#40a9ff}[data-theme=dark] .history-selector .history-load-more{color:#1890ff}[data-theme=dark] .history-selector .history-load-more:hover{color:#40a9ff}.screenshot-viewer{flex-direction:column;height:100%;display:flex}.screenshot-viewer.offline,.screenshot-viewer.loading,.screenshot-viewer.error{text-align:center;color:#666;justify-content:center;align-items:center}.screenshot-viewer.offline .screenshot-placeholder h3,.screenshot-viewer.loading .screenshot-placeholder h3,.screenshot-viewer.error .screenshot-placeholder h3{color:#1890ff;text-transform:capitalize;margin-bottom:12px;font-size:18px}.screenshot-viewer.offline .screenshot-placeholder p,.screenshot-viewer.loading .screenshot-placeholder p,.screenshot-viewer.error .screenshot-placeholder p{color:#666;margin:0}.screenshot-viewer.offline .screenshot-placeholder p.error-message,.screenshot-viewer.loading .screenshot-placeholder p.error-message,.screenshot-viewer.error .screenshot-placeholder p.error-message{color:#ff4d4f}.screenshot-viewer .screenshot-header{justify-content:space-between;align-items:center;height:56px;display:flex}.screenshot-viewer .screenshot-header .screenshot-title{flex-direction:column;gap:4px;display:flex}.screenshot-viewer .screenshot-header .screenshot-title h3{color:#000;text-transform:capitalize;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:600;display:flex}.screenshot-viewer .screenshot-header .screenshot-title .screenshot-subtitle{color:#999;margin:0;font-size:12px}.screenshot-viewer .screenshot-container{background:#f2f4f7;border-radius:16px;flex-direction:column;flex:1;padding:0 15px;display:flex;overflow:hidden}.screenshot-viewer .screenshot-container .screenshot-overlay{z-index:10;justify-content:space-between;align-items:flex-start;padding:12px 5px 8px;display:flex}.screenshot-viewer .screenshot-container .screenshot-overlay .device-name-overlay{color:#000000d9;text-transform:capitalize;align-items:center;gap:8px;font-size:12px;font-weight:500;display:flex}.screenshot-viewer .screenshot-container .screenshot-overlay .device-name-overlay .info-icon{opacity:.8;cursor:pointer;font-size:12px}.screenshot-viewer .screenshot-container .screenshot-overlay .device-name-overlay .info-icon:hover{opacity:1}.screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls{opacity:1;box-sizing:border-box;border-radius:4px;align-items:center;gap:10px;height:18px;padding:4px 8px;display:flex}.screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .last-update-time{color:#666;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .operation-indicator{align-items:center;gap:4px;font-size:12px;display:flex}.screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn{box-shadow:none;background:0 0;border:none;justify-content:center;align-items:center;width:16px;min-width:16px;height:16px;padding:0;display:flex}.screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn:hover{background-color:#0000000f;border-radius:2px;transition:all .2s;transform:scale(1.1)}.screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn .anticon{color:#666;font-size:12px;transition:color .2s}.screenshot-viewer .screenshot-container .screenshot-content{flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.screenshot-viewer .screenshot-container .screenshot-content .screenshot-image{object-fit:contain;border-radius:12px;max-width:100%;height:auto;max-height:100%}.screenshot-viewer .screenshot-container .screenshot-content .screenshot-placeholder{text-align:center;color:#999}[data-theme=dark] .screenshot-viewer.offline,[data-theme=dark] .screenshot-viewer.loading,[data-theme=dark] .screenshot-viewer.error{color:#f8fafd}[data-theme=dark] .screenshot-viewer.offline .screenshot-placeholder h3,[data-theme=dark] .screenshot-viewer.loading .screenshot-placeholder h3,[data-theme=dark] .screenshot-viewer.error .screenshot-placeholder h3{color:#1890ff}[data-theme=dark] .screenshot-viewer.offline .screenshot-placeholder p,[data-theme=dark] .screenshot-viewer.loading .screenshot-placeholder p,[data-theme=dark] .screenshot-viewer.error .screenshot-placeholder p{color:#f8fafd}[data-theme=dark] .screenshot-viewer.offline .screenshot-placeholder p.error-message,[data-theme=dark] .screenshot-viewer.loading .screenshot-placeholder p.error-message,[data-theme=dark] .screenshot-viewer.error .screenshot-placeholder p.error-message{color:#ff4d4f}[data-theme=dark] .screenshot-viewer .screenshot-header .screenshot-title h3{color:#f8fafd}[data-theme=dark] .screenshot-viewer .screenshot-header .screenshot-title .screenshot-subtitle{color:#ffffff73}[data-theme=dark] .screenshot-viewer .screenshot-container{background:#141414}[data-theme=dark] .screenshot-viewer .screenshot-container .screenshot-overlay .device-name-overlay,[data-theme=dark] .screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .last-update-time{color:#f8fafd}[data-theme=dark] .screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn:hover{background-color:#ffffff14}[data-theme=dark] .screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn .anticon{color:#f8fafd}[data-theme=dark] .screenshot-viewer .screenshot-container .screenshot-content .screenshot-placeholder{color:#ffffff73}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:14px}h3{text-transform:capitalize}.app-container{background-color:#f5f5f5;flex-direction:column;width:100%;height:100vh;display:flex}.app-content{height:100vh;overflow:hidden}.app-panel{background-color:#fff;border-radius:0;height:100%;transition:box-shadow .3s;overflow:hidden;box-shadow:0 1px 2px #0000000d}.app-panel:hover{box-shadow:0 2px 8px #00000017}.app-panel.left-panel{flex-direction:column;height:100%;display:flex;overflow:hidden}.app-panel.right-panel{border-radius:0;flex:1;overflow:hidden;box-shadow:-4px 0 20px #0000000a}.panel-content{flex-direction:column;height:100%;display:flex;overflow:auto}.panel-content.left-panel-content{flex-direction:column;height:100%;display:flex;overflow:hidden}.panel-content.left-panel-content .playground-panel-header{border-bottom:1px solid #0000000f;flex-shrink:0;align-items:center;height:60px;padding:0 24px;display:flex}.panel-content.left-panel-content .playground-panel-header .header-row{justify-content:space-between;align-items:center;gap:10px;width:100%;display:flex}.panel-content.left-panel-content .playground-panel-playground{flex-direction:column;flex:1;min-height:0;padding:0 24px;display:flex}.panel-content.left-panel-content .playground-panel-playground .playground-container{background:#fff;border:none;border-radius:8px;flex:1;overflow:hidden}.panel-content.right-panel-content{border-radius:0;padding:0 24px 24px;overflow:hidden}.server-offline-container{background:#f5f5f5;justify-content:center;align-items:center;height:100vh;display:flex}.server-offline-container .server-offline-message{background:#f2f4f7;border-radius:8px;flex-direction:column;width:100%;height:100%;padding:14px 24px 0;display:flex;box-shadow:0 2px 8px #0000000f}.server-offline-container .server-offline-message .server-offline-content{text-align:center;flex-direction:column;flex:1;justify-content:flex-start;align-items:center;padding-top:20vh;display:flex}.server-offline-container .server-offline-message .server-offline-icon{width:300px;height:212px;display:inline-block;position:relative}.server-offline-container .server-offline-message .server-offline-icon .icon-background,.server-offline-container .server-offline-message .server-offline-icon .icon-foreground{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.server-offline-container .server-offline-message .server-offline-icon .icon-background{z-index:1;width:300px;height:212px}.server-offline-container .server-offline-message .server-offline-icon .icon-foreground{z-index:2;width:134px;height:101px}.server-offline-container .server-offline-message h1{color:#000;margin:0;font-size:18px;font-weight:600}.server-offline-container .server-offline-message .connection-status{text-align:center;margin-top:8px;font-size:12px}.panel-resize-handle{background-color:#f0f0f0;transition:background-color .2s;position:relative}.panel-resize-handle.horizontal{cursor:col-resize;width:1px}.panel-resize-handle.vertical{cursor:row-resize;height:1px}.panel-resize-handle:hover,.panel-resize-handle:active,.panel-resize-handle[data-resize-handle-active]{background-color:#1677ff}.clear-button-container{top:20px!important;right:-4px!important}
2
+ /*# sourceMappingURL=index.3b624810.css.map*/