wjx há 2 semanas atrás
pai
commit
759f6c013f
100 ficheiros alterados com 37327 adições e 0 exclusões
  1. 11 0
      .eslintrc.js
  2. 27 0
      .gitignore
  3. 19 0
      build/index.html
  4. 105 0
      config/env.js
  5. 66 0
      config/getHttpsConfig.js
  6. 29 0
      config/jest/babelTransform.js
  7. 14 0
      config/jest/cssTransform.js
  8. 40 0
      config/jest/fileTransform.js
  9. 134 0
      config/modules.js
  10. 81 0
      config/oss.js
  11. 89 0
      config/paths.js
  12. 868 0
      config/webpack.config.js
  13. 9 0
      config/webpack/persistentCache/createEnvironmentHash.js
  14. 153 0
      config/webpackDevServer.config.js
  15. 180 0
      package.json
  16. 28532 0
      public/antd.dark.css
  17. 37 0
      public/nginx_dev_server.conf
  18. 7 0
      public/nginx_pro_server.conf
  19. BIN
      public/qclogo.png
  20. 227 0
      scripts/build.js
  21. 98 0
      scripts/extend.js
  22. 159 0
      scripts/start.js
  23. 52 0
      scripts/test.js
  24. 50 0
      scripts/tools.js
  25. 108 0
      src/API/global.ts
  26. 31 0
      src/API/index.ts
  27. 31 0
      src/Hoc/HocError.tsx
  28. 172 0
      src/Hoc/HocWaterFallBox.tsx
  29. 118 0
      src/Hoc/WebSocket.ts
  30. 62 0
      src/Hook/useAjax.tsx
  31. 30 0
      src/Hook/useBase64.tsx
  32. 17 0
      src/Hook/useCopy.tsx
  33. 184 0
      src/Hook/useDB.tsx
  34. 30 0
      src/Hook/useDate.tsx
  35. 869 0
      src/Hook/useEcharts.tsx
  36. 45 0
      src/Hook/useFileDrop.tsx
  37. 178 0
      src/Hook/useIndexDB.tsx
  38. 186 0
      src/Hook/useNewToken.tsx
  39. 60 0
      src/Hook/useNumber.tsx
  40. 73 0
      src/Hook/useOss.tsx
  41. 71 0
      src/Hook/useOssMsg.tsx
  42. 160 0
      src/Hook/useWebSocket.tsx
  43. 0 0
      src/assets/adLaunch.svg
  44. 1 0
      src/assets/drawStem.svg
  45. 1 0
      src/assets/edit.svg
  46. 1 0
      src/assets/extension.svg
  47. 1 0
      src/assets/extensionList.svg
  48. 1 0
      src/assets/floatbuttonSvg.svg
  49. 1 0
      src/assets/followAcc.svg
  50. 0 0
      src/assets/gameList.svg
  51. 1 0
      src/assets/ghIcon.svg
  52. 1 0
      src/assets/img.svg
  53. 1 0
      src/assets/imgText.svg
  54. 1 0
      src/assets/jumpLink.svg
  55. 1 0
      src/assets/launch.svg
  56. 0 0
      src/assets/logo.svg
  57. 1 0
      src/assets/material.svg
  58. 1 0
      src/assets/media.svg
  59. 1 0
      src/assets/msg.svg
  60. 0 0
      src/assets/position.svg
  61. 1 0
      src/assets/rocket.svg
  62. 1 0
      src/assets/sliderImgSvg.svg
  63. 1 0
      src/assets/text.svg
  64. 0 0
      src/assets/topNullBack.svg
  65. 1 0
      src/assets/topimg.svg
  66. 1 0
      src/assets/topslider.svg
  67. 1 0
      src/assets/topvideo.svg
  68. 1 0
      src/assets/wxAutoSvg.svg
  69. 36 0
      src/components/ColorPicker/index.less
  70. 62 0
      src/components/ColorPicker/index.tsx
  71. 22 0
      src/components/ColorPicker1/index.less
  72. 34 0
      src/components/ColorPicker1/index.tsx
  73. 274 0
      src/components/Cropper/index.tsx
  74. 190 0
      src/components/CropperImg/index.tsx
  75. 260 0
      src/components/CustomList/index.less
  76. 359 0
      src/components/CustomList/index.tsx
  77. 43 0
      src/components/DatePicker/index.tsx
  78. 38 0
      src/components/Expression/index.less
  79. 79 0
      src/components/Expression/index.tsx
  80. 16 0
      src/components/HeaderDropdown/index.less
  81. 20 0
      src/components/HeaderDropdown/index.tsx
  82. 31 0
      src/components/LazyImage/index.tsx
  83. 21 0
      src/components/MD5/index.tsx
  84. 444 0
      src/components/MaterialModal/qwTextModal.tsx
  85. 334 0
      src/components/MaterialModal/text.less
  86. 158 0
      src/components/TablePro/color.less
  87. 19 0
      src/components/TablePro/global.less
  88. 104 0
      src/components/TablePro/index.less
  89. 252 0
      src/components/TablePro/index.tsx
  90. 79 0
      src/components/TablePro/newTable.tsx
  91. 43 0
      src/components/TablePro/settings.tsx
  92. 55 0
      src/components/TablePro/typings.d.ts
  93. 95 0
      src/components/Tables/index.less
  94. 173 0
      src/components/Tables/index.tsx
  95. 129 0
      src/components/Team/index.less
  96. 92 0
      src/components/Team/index.tsx
  97. 102 0
      src/components/Team/teamMembers.tsx
  98. 27 0
      src/components/TimeSlot/Header.tsx
  99. 196 0
      src/components/TimeSlot/Thead.tsx
  100. 107 0
      src/components/TimeSlot/const.ts

+ 11 - 0
.eslintrc.js

@@ -0,0 +1,11 @@
+module.exports = {
+    globals: {
+      ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true,
+      page: true,
+      REACT_APP_ENV: true,
+    },
+    rules:{
+        'eqeqeq':'off'
+    }
+  };
+  

+ 27 - 0
.gitignore

@@ -0,0 +1,27 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/dist
+/devDist
+/proDist
+devDist
+proDist
+dist
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*

+ 19 - 0
build/index.html

@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+  <head>
+    <meta charset="utf-8" />
+    <link rel="icon" href="%PUBLIC_URL%/qclogo.png" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <meta name="theme-color" content="#000000" />
+    <meta
+      name="description"
+      content="Web site created using create-react-app"
+    />
+    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
+    <!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> -->
+    <title>趣程企微运营系统</title>
+  </head>
+  <body>
+    <div id="root"></div>
+  </body>
+</html>

+ 105 - 0
config/env.js

@@ -0,0 +1,105 @@
+'use strict';
+
+const fs = require('fs');
+const path = require('path');
+const paths = require('./paths');
+
+// Make sure that including paths.js after env.js will read .env variables.
+delete require.cache[require.resolve('./paths')];
+
+const NODE_ENV = process.env.NODE_ENV;
+if (!NODE_ENV) {
+  throw new Error(
+    'The NODE_ENV environment variable is required but was not specified.'
+  );
+}
+
+// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
+const dotenvFiles = [
+  `${paths.dotenv}.${NODE_ENV}.local`,
+  // Don't include `.env.local` for `test` environment
+  // since normally you expect tests to produce the same
+  // results for everyone
+  NODE_ENV !== 'test' && `${paths.dotenv}.local`,
+  `${paths.dotenv}.${NODE_ENV}`,
+  paths.dotenv,
+].filter(Boolean);
+
+// Load environment variables from .env* files. Suppress warnings using silent
+// if this file is missing. dotenv will never modify any environment variables
+// that have already been set.  Variable expansion is supported in .env files.
+// https://github.com/motdotla/dotenv
+// https://github.com/motdotla/dotenv-expand
+dotenvFiles.forEach(dotenvFile => {
+  if (fs.existsSync(dotenvFile)) {
+    require('dotenv-expand')(
+      require('dotenv').config({
+        path: dotenvFile,
+      })
+    );
+  }
+});
+
+// We support resolving modules according to `NODE_PATH`.
+// This lets you use absolute paths in imports inside large monorepos:
+// https://github.com/facebook/create-react-app/issues/253.
+// It works similar to `NODE_PATH` in Node itself:
+// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
+// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
+// Otherwise, we risk importing Node.js core modules into an app instead of webpack shims.
+// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
+// We also resolve them to make sure all tools using them work consistently.
+const appDirectory = fs.realpathSync(process.cwd());
+process.env.NODE_PATH = (process.env.NODE_PATH || '')
+  .split(path.delimiter)
+  .filter(folder => folder && !path.isAbsolute(folder))
+  .map(folder => path.resolve(appDirectory, folder))
+  .join(path.delimiter);
+
+// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be
+// injected into the application via DefinePlugin in webpack configuration.
+const REACT_APP = /^REACT_APP_/i;
+
+function getClientEnvironment(publicUrl,CONFIG) {
+  const raw = Object.keys(process.env)
+    .filter(key => REACT_APP.test(key))
+    .reduce(
+      (env, key) => {
+        env[key] = process.env[key];
+        return env;
+      },
+      {
+        // Useful for determining whether we’re running in production mode.
+        // Most importantly, it switches React into the correct mode.
+        NODE_ENV: process.env.NODE_ENV || 'development',
+        // Useful for resolving the correct path to static assets in `public`.
+        // For example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />.
+        // This should only be used as an escape hatch. Normally you would put
+        // images into the `src` and `import` them in code to get their paths.
+        PUBLIC_URL: publicUrl,
+        // We support configuring the sockjs pathname during development.
+        // These settings let a developer run multiple simultaneous projects.
+        // They are used as the connection `hostname`, `pathname` and `port`
+        // in webpackHotDevClient. They are used as the `sockHost`, `sockPath`
+        // and `sockPort` options in webpack-dev-server.
+        WDS_SOCKET_HOST: process.env.WDS_SOCKET_HOST,
+        WDS_SOCKET_PATH: process.env.WDS_SOCKET_PATH,
+        WDS_SOCKET_PORT: process.env.WDS_SOCKET_PORT,
+        // Whether or not react-refresh is enabled.
+        // It is defined here so it is available in the webpackHotDevClient.
+        FAST_REFRESH: process.env.FAST_REFRESH !== 'false',
+        CONFIG
+      }
+    );
+  // Stringify all values so we can feed into webpack DefinePlugin
+  const stringified = {
+    'process.env': Object.keys(raw).reduce((env, key) => {
+      env[key] = JSON.stringify(raw[key]);
+      return env;
+    }, {}),
+  };
+
+  return { raw, stringified };
+}
+
+module.exports = getClientEnvironment;

+ 66 - 0
config/getHttpsConfig.js

@@ -0,0 +1,66 @@
+'use strict';
+
+const fs = require('fs');
+const path = require('path');
+const crypto = require('crypto');
+const chalk = require('react-dev-utils/chalk');
+const paths = require('./paths');
+
+// Ensure the certificate and key provided are valid and if not
+// throw an easy to debug error
+function validateKeyAndCerts({ cert, key, keyFile, crtFile }) {
+  let encrypted;
+  try {
+    // publicEncrypt will throw an error with an invalid cert
+    encrypted = crypto.publicEncrypt(cert, Buffer.from('test'));
+  } catch (err) {
+    throw new Error(
+      `The certificate "${chalk.yellow(crtFile)}" is invalid.\n${err.message}`
+    );
+  }
+
+  try {
+    // privateDecrypt will throw an error with an invalid key
+    crypto.privateDecrypt(key, encrypted);
+  } catch (err) {
+    throw new Error(
+      `The certificate key "${chalk.yellow(keyFile)}" is invalid.\n${
+        err.message
+      }`
+    );
+  }
+}
+
+// Read file and throw an error if it doesn't exist
+function readEnvFile(file, type) {
+  if (!fs.existsSync(file)) {
+    throw new Error(
+      `You specified ${chalk.cyan(
+        type
+      )} in your env, but the file "${chalk.yellow(file)}" can't be found.`
+    );
+  }
+  return fs.readFileSync(file);
+}
+
+// Get the https config
+// Return cert files if provided in env, otherwise just true or false
+function getHttpsConfig() {
+  const { SSL_CRT_FILE, SSL_KEY_FILE, HTTPS } = process.env;
+  const isHttps = HTTPS === 'true';
+
+  if (isHttps && SSL_CRT_FILE && SSL_KEY_FILE) {
+    const crtFile = path.resolve(paths.appPath, SSL_CRT_FILE);
+    const keyFile = path.resolve(paths.appPath, SSL_KEY_FILE);
+    const config = {
+      cert: readEnvFile(crtFile, 'SSL_CRT_FILE'),
+      key: readEnvFile(keyFile, 'SSL_KEY_FILE'),
+    };
+
+    validateKeyAndCerts({ ...config, keyFile, crtFile });
+    return config;
+  }
+  return isHttps;
+}
+
+module.exports = getHttpsConfig;

+ 29 - 0
config/jest/babelTransform.js

@@ -0,0 +1,29 @@
+'use strict';
+
+const babelJest = require('babel-jest').default;
+
+const hasJsxRuntime = (() => {
+  if (process.env.DISABLE_NEW_JSX_TRANSFORM === 'true') {
+    return false;
+  }
+
+  try {
+    require.resolve('react/jsx-runtime');
+    return true;
+  } catch (e) {
+    return false;
+  }
+})();
+
+module.exports = babelJest.createTransformer({
+  presets: [
+    [
+      require.resolve('babel-preset-react-app'),
+      {
+        runtime: hasJsxRuntime ? 'automatic' : 'classic',
+      },
+    ],
+  ],
+  babelrc: false,
+  configFile: false,
+});

+ 14 - 0
config/jest/cssTransform.js

@@ -0,0 +1,14 @@
+'use strict';
+
+// This is a custom Jest transformer turning style imports into empty objects.
+// http://facebook.github.io/jest/docs/en/webpack.html
+
+module.exports = {
+  process() {
+    return 'module.exports = {};';
+  },
+  getCacheKey() {
+    // The output is always the same.
+    return 'cssTransform';
+  },
+};

+ 40 - 0
config/jest/fileTransform.js

@@ -0,0 +1,40 @@
+'use strict';
+
+const path = require('path');
+const camelcase = require('camelcase');
+
+// This is a custom Jest transformer turning file imports into filenames.
+// http://facebook.github.io/jest/docs/en/webpack.html
+
+module.exports = {
+  process(src, filename) {
+    const assetFilename = JSON.stringify(path.basename(filename));
+
+    if (filename.match(/\.svg$/)) {
+      // Based on how SVGR generates a component name:
+      // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6
+      const pascalCaseFilename = camelcase(path.parse(filename).name, {
+        pascalCase: true,
+      });
+      const componentName = `Svg${pascalCaseFilename}`;
+      return `const React = require('react');
+      module.exports = {
+        __esModule: true,
+        default: ${assetFilename},
+        ReactComponent: React.forwardRef(function ${componentName}(props, ref) {
+          return {
+            $$typeof: Symbol.for('react.element'),
+            type: 'svg',
+            ref: ref,
+            key: null,
+            props: Object.assign({}, props, {
+              children: ${assetFilename}
+            })
+          };
+        }),
+      };`;
+    }
+
+    return `module.exports = ${assetFilename};`;
+  },
+};

+ 134 - 0
config/modules.js

@@ -0,0 +1,134 @@
+'use strict';
+
+const fs = require('fs');
+const path = require('path');
+const paths = require('./paths');
+const chalk = require('react-dev-utils/chalk');
+const resolve = require('resolve');
+
+/**
+ * Get additional module paths based on the baseUrl of a compilerOptions object.
+ *
+ * @param {Object} options
+ */
+function getAdditionalModulePaths(options = {}) {
+  const baseUrl = options.baseUrl;
+
+  if (!baseUrl) {
+    return '';
+  }
+
+  const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
+
+  // We don't need to do anything if `baseUrl` is set to `node_modules`. This is
+  // the default behavior.
+  if (path.relative(paths.appNodeModules, baseUrlResolved) === '') {
+    return null;
+  }
+
+  // Allow the user set the `baseUrl` to `appSrc`.
+  if (path.relative(paths.appSrc, baseUrlResolved) === '') {
+    return [paths.appSrc];
+  }
+
+  // If the path is equal to the root directory we ignore it here.
+  // We don't want to allow importing from the root directly as source files are
+  // not transpiled outside of `src`. We do allow importing them with the
+  // absolute path (e.g. `src/Components/Button.js`) but we set that up with
+  // an alias.
+  if (path.relative(paths.appPath, baseUrlResolved) === '') {
+    return null;
+  }
+
+  // Otherwise, throw an error.
+  throw new Error(
+    chalk.red.bold(
+      "Your project's `baseUrl` can only be set to `src` or `node_modules`." +
+        ' Create React App does not support other values at this time.'
+    )
+  );
+}
+
+/**
+ * Get webpack aliases based on the baseUrl of a compilerOptions object.
+ *
+ * @param {*} options
+ */
+function getWebpackAliases(options = {}) {
+  const baseUrl = options.baseUrl;
+
+  if (!baseUrl) {
+    return {};
+  }
+
+  const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
+
+  if (path.relative(paths.appPath, baseUrlResolved) === '') {
+    return {
+      src: paths.appSrc,
+    };
+  }
+}
+
+/**
+ * Get jest aliases based on the baseUrl of a compilerOptions object.
+ *
+ * @param {*} options
+ */
+function getJestAliases(options = {}) {
+  const baseUrl = options.baseUrl;
+
+  if (!baseUrl) {
+    return {};
+  }
+
+  const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
+
+  if (path.relative(paths.appPath, baseUrlResolved) === '') {
+    return {
+      '^src/(.*)$': '<rootDir>/src/$1',
+    };
+  }
+}
+
+function getModules() {
+  // Check if TypeScript is setup
+  const hasTsConfig = fs.existsSync(paths.appTsConfig);
+  const hasJsConfig = fs.existsSync(paths.appJsConfig);
+
+  if (hasTsConfig && hasJsConfig) {
+    throw new Error(
+      'You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file.'
+    );
+  }
+
+  let config;
+
+  // If there's a tsconfig.json we assume it's a
+  // TypeScript project and set up the config
+  // based on tsconfig.json
+  if (hasTsConfig) {
+    const ts = require(resolve.sync('typescript', {
+      basedir: paths.appNodeModules,
+    }));
+    config = ts.readConfigFile(paths.appTsConfig, ts.sys.readFile).config;
+    // Otherwise we'll check if there is jsconfig.json
+    // for non TS projects.
+  } else if (hasJsConfig) {
+    config = require(paths.appJsConfig);
+  }
+
+  config = config || {};
+  const options = config.compilerOptions || {};
+
+  const additionalModulePaths = getAdditionalModulePaths(options);
+
+  return {
+    additionalModulePaths: additionalModulePaths,
+    webpackAliases: getWebpackAliases(options),
+    jestAliases: getJestAliases(options),
+    hasTsConfig,
+  };
+}
+
+module.exports = getModules();

+ 81 - 0
config/oss.js

@@ -0,0 +1,81 @@
+const OSS = require("ali-oss");
+const fs = require("fs");
+const path = require("path");
+const { REACT_APP_ENV = "dev" } = process.env;
+
+/**
+ * 打包结束后将打包内容上传至对应oss下的bucket
+ * 主要逻辑在package.json 在build命令执行后执行自义定的ossUploading 命令
+ * 1.步骤为删除当前bucket的全部文件
+ * 2.然后再上传
+ */
+
+/**重要bucket*/
+// let bucket = "zx-web-enterprisewechat-pro";
+// 创建 OSS 客户端实例
+var client,bucket,fileName
+
+// 删除已有文件
+async function deleteAllFiles() {
+  try {
+    let result;
+    // 分页获取所有文件
+    do {
+      result = await client.list({
+        "max-keys": 1000, // 一次最多获取 1000 个文件
+      });
+
+      if (result.objects && result.objects.length) {
+        const keys = result.objects.map((item) => item.name);
+        console.log("Deleting files:", keys);
+
+        // 删除文件
+        await client.deleteMulti(keys);
+      }
+    } while (result.isTruncated); // 如果还有更多文件,继续循环
+    console.log(`已删除bucket:${bucket}内的全部文件`);
+  } catch (error) {
+    console.error(`删除bucket:${bucket}内的全部文件错误:`, error);
+  }
+}
+
+// 递归上传文件和目录
+async function uploadFilesFromDist(dirPath, ossPath) {
+  const files = fs.readdirSync(dirPath);
+
+  for (const file of files) {
+    const localFilePath = path.join(dirPath, file);
+    const ossFilePath = path.join(ossPath, file).replace(/\\/g, "/"); // 替换反斜杠为斜杠以兼容 OSS
+
+    const stats = fs.statSync(localFilePath);
+
+    if (stats.isDirectory()) {
+      // 如果是目录,递归上传
+      await uploadFilesFromDist(localFilePath, ossFilePath);
+    } else {
+      // 如果是文件,上传
+      console.log(`正在上传: ${localFilePath} 到 ${ossFilePath}`);
+      await client.put(ossFilePath, localFilePath);
+    }
+  }
+}
+
+// 主程序
+async function postOss(bucket,fileName) {
+  if (!bucket) {
+    console.log("bucket不存在")
+    return;
+  }
+  bucket = bucket
+  fileName =fileName
+  client = new OSS({
+    region: "oss-cn-hangzhou",
+    accessKeyId: "LTAI5tNCVYS4XZmfUmtAZKK9",
+    accessKeySecret: "K1gIGmgf4QLY0arIGWxxV9cuchAyOQ",
+    bucket,
+  });
+  await deleteAllFiles();
+  const distPath = path.join(__dirname, fileName);
+  await uploadFilesFromDist(distPath, ""); // OSS根目录
+}
+module.exports = { postOss };

+ 89 - 0
config/paths.js

@@ -0,0 +1,89 @@
+'use strict';
+const program = require("commander");
+const path = require('path');
+const fs = require('fs');
+const getPublicUrlOrPath = require('react-dev-utils/getPublicUrlOrPath');
+const os = require('os')
+
+// Make sure any symlinks in the project folder are resolved:
+// https://github.com/facebook/create-react-app/issues/637
+const appDirectory = fs.realpathSync(process.cwd());
+const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
+
+// We use `PUBLIC_URL` environment variable or "homepage" field to infer
+// "public path" at which the app is served.
+// webpack needs to know it to put the right <script> hrefs into HTML even in
+// single-page apps that may serve index.html for nested URLs like /todos/42.
+// We can't use a relative path in HTML because we don't want to load something
+// like /todos/42/static/js/bundle.7289d.js. We have to know the root.
+const publicUrlOrPath = getPublicUrlOrPath(
+  process.env.NODE_ENV === 'development',
+  require(resolveApp('package.json')).homepage,
+  process.env.PUBLIC_URL
+);
+
+const buildPath = process.env.BUILD_PATH || process.argv.indexOf('-d') !== -1 ? 'devDist' : 'proDist';
+
+const moduleFileExtensions = [
+  'web.mjs',
+  'mjs',
+  'web.js',
+  'js',
+  'web.ts',
+  'ts',
+  'web.tsx',
+  'tsx',
+  'json',
+  'web.jsx',
+  'jsx',
+];
+
+// Resolve file paths in the same order as webpack
+const resolveModule = (resolveFn, filePath) => {
+  const extension = moduleFileExtensions.find(extension =>
+    fs.existsSync(resolveFn(`${filePath}.${extension}`))
+  );
+
+  if (extension) {
+    return resolveFn(`${filePath}.${extension}`);
+  }
+
+  return resolveFn(`${filePath}.js`);
+};
+
+program
+  .version("0.1.0")
+  .usage("[options] <file ...>")
+  .option("-b, --build", "是否是打包输出到dist")
+  .option("-a, --all", "是否操作全部")
+  .option("-d, --dev", "开发")
+  .option("-p, --pro", "生成")
+  .option("-n, --nginx", "打包到nginx")
+  .option("-m, --map", "线上环境是否生成map文件")
+  .parse(process.argv);
+let nginxPath = os.platform() === 'darwin' ? '/opt/homebrew/Cellar/nginx/1.21.6_1/html/dist' : ''
+console.log('buildPath===>', buildPath)
+module.exports = {
+  dotenv: resolveApp('.env'),
+  appPath: resolveApp('.'),
+  appBuild: program?.nginx ? nginxPath : resolveApp(buildPath),
+  appPublic: resolveApp('public'),
+  appHtml: resolveApp('public/index.html'),
+  // appIndexJs: resolveModule(resolveApp, 'src/index'),
+  appPackageJson: resolveApp('package.json'),
+  appSrc: resolveApp('src'),
+  appTsConfig: resolveApp('tsconfig.json'),
+  appJsConfig: resolveApp('jsconfig.json'),
+  yarnLockFile: resolveApp('yarn.lock'),
+  testsSetup: resolveModule(resolveApp, 'src/setupTests'),
+  proxySetup: resolveApp('src/setupProxy.js'),
+  appNodeModules: resolveApp('node_modules'),
+  appWebpackCache: resolveApp('node_modules/.cache'),
+  appTsBuildInfoFile: resolveApp('node_modules/.cache/tsconfig.tsbuildinfo'),
+  swSrc: resolveModule(resolveApp, 'src/service-worker'),
+  publicUrlOrPath,
+};
+
+
+
+module.exports.moduleFileExtensions = moduleFileExtensions;

+ 868 - 0
config/webpack.config.js

@@ -0,0 +1,868 @@
+"use strict";
+
+const fs = require("fs");
+const path = require("path");
+const webpack = require("webpack");
+const resolve = require("resolve");
+const HtmlWebpackPlugin = require("html-webpack-plugin");
+const CaseSensitivePathsPlugin = require("case-sensitive-paths-webpack-plugin");
+const InlineChunkHtmlPlugin = require("react-dev-utils/InlineChunkHtmlPlugin");
+const TerserPlugin = require("terser-webpack-plugin");
+const MiniCssExtractPlugin = require("mini-css-extract-plugin");
+const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
+const { WebpackManifestPlugin } = require("webpack-manifest-plugin");
+const InterpolateHtmlPlugin = require("react-dev-utils/InterpolateHtmlPlugin");
+const WorkboxWebpackPlugin = require("workbox-webpack-plugin");
+const ModuleScopePlugin = require("react-dev-utils/ModuleScopePlugin");
+const getCSSModuleLocalIdent = require("react-dev-utils/getCSSModuleLocalIdent");
+const ESLintPlugin = require("eslint-webpack-plugin");
+const paths = require("./paths");
+const modules = require("./modules");
+const getClientEnvironment = require("./env");
+const ModuleNotFoundPlugin = require("react-dev-utils/ModuleNotFoundPlugin");
+const WebpackBar = require("webpackbar");
+const ForkTsCheckerWebpackPlugin =
+  process.env.TSC_COMPILE_ON_ERROR === "true"
+    ? require("react-dev-utils/ForkTsCheckerWarningWebpackPlugin")
+    : require("react-dev-utils/ForkTsCheckerWebpackPlugin");
+const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
+
+const createEnvironmentHash = require("./webpack/persistentCache/createEnvironmentHash");
+
+// Source maps are resource heavy and can cause out of memory issue for large source files.
+let shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== "false";
+
+const reactRefreshRuntimeEntry = require.resolve("react-refresh/runtime");
+const reactRefreshWebpackPluginRuntimeEntry = require.resolve(
+  "@pmmmwh/react-refresh-webpack-plugin"
+);
+const babelRuntimeEntry = require.resolve("babel-preset-react-app");
+const babelRuntimeEntryHelpers = require.resolve(
+  "@babel/runtime/helpers/esm/assertThisInitialized",
+  { paths: [babelRuntimeEntry] }
+);
+const babelRuntimeRegenerator = require.resolve("@babel/runtime/regenerator", {
+  paths: [babelRuntimeEntry],
+});
+// Some apps do not need the benefits of saving a web request, so not inlining the chunk
+// makes for a smoother build process.
+const shouldInlineRuntimeChunk = process.env.INLINE_RUNTIME_CHUNK !== "false";
+
+const emitErrorsAsWarnings = process.env.ESLINT_NO_DEV_ERRORS === "true";
+const disableESLintPlugin = process.env.DISABLE_ESLINT_PLUGIN === "true";
+
+const imageInlineSizeLimit = parseInt(
+  process.env.IMAGE_INLINE_SIZE_LIMIT || "10000"
+);
+
+// Check if TypeScript is setup
+const useTypeScript = fs.existsSync(paths.appTsConfig);
+
+// Check if Tailwind config exists
+const useTailwind = fs.existsSync(
+  path.join(paths.appPath, "tailwind.config.js")
+);
+
+// Get the path to the uncompiled service worker (if it exists).
+const swSrc = paths.swSrc;
+
+// style files regexes
+const cssRegex = /\.css$/;
+const cssModuleRegex = /\.module\.css$/;
+const sassRegex = /\.(scss|sass)$/;
+const lessRegex = /\.(less|less)$/;
+const sassModuleRegex = /\.module\.(scss|sass)$/;
+const lessModuleRegex = /\.module\.(less|less)$/;
+
+const hasJsxRuntime = (() => {
+  if (process.env.DISABLE_NEW_JSX_TRANSFORM === "true") {
+    return false;
+  }
+
+  try {
+    require.resolve("react/jsx-runtime");
+    return true;
+  } catch (e) {
+    return false;
+  }
+})();
+// console.log(path.join(__dirname, "../src"))
+  // console.log(ks)
+// This is the production and development configuration.
+// It is focused on developer experience, fast rebuilds, and a minimal bundle.
+module.exports = function (webpackEnv, params) {
+  shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== "false";
+  let { configEntry, htmls, CONFIG, isNginx } = params;
+  const isEnvDevelopment = webpackEnv === "development";
+  const isEnvProduction = webpackEnv === "production";
+  // Variable used for enabling profiling in Production
+  // passed into alias object. Uses a flag if passed into the build command
+  const isEnvProductionProfile =
+    isEnvProduction && process.argv.includes("--profile");
+
+  // We will provide `paths.publicUrlOrPath` to our app
+  // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.
+  // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.
+  // Get environment variables to inject into our app.
+  const env = getClientEnvironment(paths.publicUrlOrPath.slice(0, -1), CONFIG);
+
+  const shouldUseReactRefresh = env.raw.FAST_REFRESH;
+
+  // common function to get style loaders
+  const getStyleLoaders = (cssOptions, preProcessor) => {
+    const loaders = [
+      isEnvDevelopment && require.resolve("style-loader"),
+      isEnvProduction && {
+        loader: MiniCssExtractPlugin.loader,
+        // css is located in `static/css`, use '../../' to locate index.html folder
+        // in production `paths.publicUrlOrPath` can be a relative path
+        options: paths.publicUrlOrPath.startsWith(".")
+          ? { publicPath: "../../" }
+          : {},
+      },
+      {
+        loader: require.resolve("css-loader"),
+        options: cssOptions,
+      },
+      {
+        // Options for PostCSS as we reference these options twice
+        // Adds vendor prefixing based on your specified browser support in
+        // package.json
+        loader: require.resolve("postcss-loader"),
+        options: {
+          postcssOptions: {
+            // Necessary for external CSS imports to work
+            // https://github.com/facebook/create-react-app/issues/2677
+            ident: "postcss",
+            config: false,
+            plugins: !useTailwind
+              ? [
+                  "postcss-flexbugs-fixes",
+                  [
+                    "postcss-preset-env",
+                    {
+                      autoprefixer: {
+                        flexbox: "no-2009",
+                      },
+                      stage: 3,
+                    },
+                  ],
+                  // Adds PostCSS Normalize as the reset css with default options,
+                  // so that it honors browserslist config in package.json
+                  // which in turn let's users customize the target behavior as per their needs.
+                  "postcss-normalize",
+                ]
+              : [
+                  "tailwindcss",
+                  "postcss-flexbugs-fixes",
+                  [
+                    "postcss-preset-env",
+                    {
+                      autoprefixer: {
+                        flexbox: "no-2009",
+                      },
+                      stage: 3,
+                    },
+                  ],
+                ],
+          },
+          sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
+        },
+      },
+    ].filter(Boolean);
+    if (preProcessor) {
+      loaders.push(
+        {
+          loader: require.resolve("resolve-url-loader"),
+          options: {
+            sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
+            root: paths.appSrc,
+          },
+        },
+        {
+          loader: require.resolve(preProcessor),
+          options: {
+            sourceMap: true,
+          },
+        }
+      );
+    }
+    return loaders;
+  };
+  return {
+    target: ["browserslist"],
+    mode: isEnvProduction ? "production" : isEnvDevelopment && "development",
+    // Stop compilation early in production
+    bail: isEnvProduction,
+    devtool: isEnvProduction
+      ? shouldUseSourceMap
+        ? "source-map"
+        // ?false
+        : false
+      : isEnvDevelopment && "cheap-module-source-map",
+    // These are the "entry points" to our application.
+    // This means they will be the "root" imports that are included in JS bundle.
+    // entry: paths.appIndexJs,
+    entry: configEntry,
+    output: {
+      // The build folder.
+      path: paths.appBuild,
+      // Add /* filename */ comments to generated require()s in the output.
+      pathinfo: isEnvDevelopment,
+      // There will be one main bundle, and one file per asynchronous chunk.
+      // In development, it does not produce real files.
+      filename: isEnvProduction
+        ? "app/[name]/static/js/[name].[contenthash:8].js"
+        : isEnvDevelopment && "app/[name]/static/js/[name].bundle.js",
+      // There are also additional JS chunk files if you use code splitting.
+      chunkFilename: isEnvProduction
+        ? "app/[name]/static/js/[name].[contenthash:8].chunk.js"
+        : isEnvDevelopment && "app/[name]/static/js/[name].chunk.js",
+      assetModuleFilename: "static/media/[name].[hash][ext]",
+      // webpack uses `publicPath` to determine where the app is being served from.
+      // It requires a trailing slash, or the file assets will get an incorrect path.
+      // We inferred the "public path" (such as / or /my-project) from homepage.
+      publicPath: paths.publicUrlOrPath,
+      // Point sourcemap entries to original disk location (format as URL on Windows)
+      devtoolModuleFilenameTemplate: isEnvProduction
+        ? (info) =>
+            path
+              .relative(paths.appSrc, info.absoluteResourcePath)
+              .replace(/\\/g, "/")
+        : isEnvDevelopment &&
+          ((info) =>
+            path.resolve(info.absoluteResourcePath).replace(/\\/g, "/")),
+    },
+    cache: {
+      type: "filesystem",
+      version: createEnvironmentHash(env.raw),
+      cacheDirectory: paths.appWebpackCache,
+      store: "pack",
+      buildDependencies: {
+        defaultWebpack: ["webpack/lib/"],
+        config: [__filename],
+        tsconfig: [paths.appTsConfig, paths.appJsConfig].filter((f) =>
+          fs.existsSync(f)
+        ),
+      },
+    },
+    infrastructureLogging: {
+      level: "none",
+    },
+    optimization: {
+      minimize: isEnvProduction,
+      minimizer: [
+        // This is only used in production mode
+        new TerserPlugin({
+          terserOptions: {
+            parse: {
+              // We want terser to parse ecma 8 code. However, we don't want it
+              // to apply any minification steps that turns valid ecma 5 code
+              // into invalid ecma 5 code. This is why the 'compress' and 'output'
+              // sections only apply transformations that are ecma 5 safe
+              // https://github.com/facebook/create-react-app/pull/4234
+              ecma: 8,
+            },
+            compress: {
+              ecma: 5,
+              warnings: false,
+              // Disabled because of an issue with Uglify breaking seemingly valid code:
+              // https://github.com/facebook/create-react-app/issues/2376
+              // Pending further investigation:
+              // https://github.com/mishoo/UglifyJS2/issues/2011
+              comparisons: false,
+              // Disabled because of an issue with Terser breaking valid code:
+              // https://github.com/facebook/create-react-app/issues/5250
+              // Pending further investigation:
+              // https://github.com/terser-js/terser/issues/120
+              inline: 2,
+            },
+            mangle: {
+              safari10: true,
+            },
+            // Added for profiling in devtools
+            keep_classnames: isEnvProductionProfile,
+            keep_fnames: isEnvProductionProfile,
+            output: {
+              ecma: 5,
+              comments: false,
+              // Turned on because emoji and regex is not minified properly using default
+              // https://github.com/facebook/create-react-app/issues/2488
+              ascii_only: true,
+            },
+          },
+        }),
+        // This is only used in production mode
+        new CssMinimizerPlugin(),
+      ],
+      splitChunks: {
+        chunks: "async", //这表明将选择哪些 chunk 进行优化。当提供一个字符串,有效值为 all,async 和 initial
+        minSize: 20000, //生成 chunk 的最小体积(以 bytes 为单位)
+        minRemainingSize: 0,
+        minChunks: 1, //拆分前必须共享模块的最小 chunks 数
+        maxAsyncRequests: 30, //按需加载时的最大并行请求数
+        maxInitialRequests: 30, //入口点的最大并行请求数
+        enforceSizeThreshold: 50000, //强制执行拆分的体积阈值和其他限制
+        cacheGroups: {
+          defaultVendors: {
+            test: /[\\/]node_modules[\\/]/,
+            priority: -10,
+            reuseExistingChunk: true,
+          },
+          default: {
+            minChunks: 2,
+            priority: -20,
+            reuseExistingChunk: true,
+          },
+          commons: {
+            name: "commons",
+            chunks: "initial",
+            minChunks: 2,
+          },
+        },
+      },
+    },
+    resolve: {
+      // This allows you to set a fallback for where webpack should look for modules.
+      // We placed these paths second because we want `node_modules` to "win"
+      // if there are any conflicts. This matches Node resolution mechanism.
+      // https://github.com/facebook/create-react-app/issues/253
+      modules: ["node_modules", paths.appNodeModules].concat(
+        modules.additionalModulePaths || []
+      ),
+      // These are the reasonable defaults supported by the Node ecosystem.
+      // We also include JSX as a common component filename extension to support
+      // some tools, although we do not recommend using it, see:
+      // https://github.com/facebook/create-react-app/issues/290
+      // `web` extension prefixes have been added for better support
+      // for React Native Web.
+      extensions: paths.moduleFileExtensions
+        .map((ext) => `.${ext}`)
+        .filter((ext) => useTypeScript || !ext.includes("ts")),
+      alias: {
+        // Support React Native Web
+        // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
+        "react-native": "react-native-web",
+        // Allows for better profiling with ReactDevTools
+        ...(isEnvProductionProfile && {
+          "react-dom$": "react-dom/profiling",
+          "scheduler/tracing": "scheduler/tracing-profiling",
+        }),
+        ...(modules.webpackAliases || {}),
+        "@": path.resolve(__dirname,'../src'),
+        "@@":path.resolve(__dirname,'./'),
+      },
+      plugins: [
+        // Prevents users from importing files from outside of src/ (or node_modules/).
+        // This often causes confusion because we only process files within src/ with babel.
+        // To fix this, we prevent you from importing files out of src/ -- if you'd like to,
+        // please link the files into your node_modules/ and let module-resolution kick in.
+        // Make sure your source files are compiled, as they will not be processed in any way.
+        new ModuleScopePlugin(paths.appSrc, [
+          paths.appPackageJson,
+          reactRefreshRuntimeEntry,
+          reactRefreshWebpackPluginRuntimeEntry,
+          babelRuntimeEntry,
+          babelRuntimeEntryHelpers,
+          babelRuntimeRegenerator,
+        ]),
+      ],
+    },
+
+    module: {
+      strictExportPresence: true,
+      rules: [
+        // Handle node_modules packages that contain sourcemaps
+        shouldUseSourceMap && {
+          enforce: "pre",
+          exclude: /@babel(?:\/|\\{1,2})runtime/,
+          test: /\.(js|mjs|jsx|ts|tsx|css)$/,
+          loader: require.resolve("source-map-loader"),
+        },
+        {
+          // "oneOf" will traverse all following loaders until one will
+          // match the requirements. When no loader matches it will fall
+          // back to the "file" loader at the end of the loader list.
+          oneOf: [
+            // TODO: Merge this config once `image/avif` is in the mime-db
+            // https://github.com/jshttp/mime-db
+            {
+              test: [/\.avif$/],
+              type: "asset",
+              mimetype: "image/avif",
+              parser: {
+                dataUrlCondition: {
+                  maxSize: imageInlineSizeLimit,
+                },
+              },
+            },
+            // "url" loader works like "file" loader except that it embeds assets
+            // smaller than specified limit in bytes as data URLs to avoid requests.
+            // A missing `test` is equivalent to a match.
+            {
+              test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
+              type: "asset",
+              parser: {
+                dataUrlCondition: {
+                  maxSize: imageInlineSizeLimit,
+                },
+              },
+            },
+            {
+              test: /\.svg$/,
+              use: [
+                {
+                  loader: require.resolve("@svgr/webpack"),
+                  options: {
+                    prettier: false,
+                    svgo: false,
+                    svgoConfig: {
+                      plugins: [{ removeViewBox: false }],
+                    },
+                    titleProp: true,
+                    ref: true,
+                  },
+                },
+                {
+                  loader: require.resolve("file-loader"),
+                  options: {
+                    name: "static/media/[name].[hash].[ext]",
+                  },
+                },
+              ],
+              issuer: {
+                and: [/\.(ts|tsx|js|jsx|md|mdx)$/],
+              },
+            },
+            // Process application JS with Babel.
+            // The preset includes JSX, Flow, TypeScript, and some ESnext features.
+            {
+              test: /\.(js|mjs|jsx|ts|tsx)$/,
+              include: paths.appSrc,
+              loader: require.resolve("babel-loader"),
+              options: {
+                customize: require.resolve(
+                  "babel-preset-react-app/webpack-overrides"
+                ),
+                presets: [
+                  [
+                    require.resolve("babel-preset-react-app"),
+                    {
+                      runtime: hasJsxRuntime ? "automatic" : "classic",
+                    },
+                  ],
+                ],
+
+                plugins: [
+                  isEnvDevelopment &&
+                    shouldUseReactRefresh &&
+                    require.resolve("react-refresh/babel"),
+                  // ['import',{libraryName: "antd", style: 'css'}]
+                ].filter(Boolean),
+                // This is a feature of `babel-loader` for webpack (not Babel itself).
+                // It enables caching results in ./node_modules/.cache/babel-loader/
+                // directory for faster rebuilds.
+                cacheDirectory: true,
+                // See #6846 for context on why cacheCompression is disabled
+                cacheCompression: false,
+                compact: isEnvProduction,
+              },
+            },
+            // Process any JS outside of the app with Babel.
+            // Unlike the application JS, we only compile the standard ES features.
+            {
+              test: /\.(js|mjs)$/,
+              exclude: /@babel(?:\/|\\{1,2})runtime/,
+              loader: require.resolve("babel-loader"),
+              options: {
+                babelrc: false,
+                configFile: false,
+                compact: false,
+                presets: [
+                  [
+                    require.resolve("babel-preset-react-app/dependencies"),
+                    { helpers: true },
+                  ],
+                ],
+                cacheDirectory: true,
+                // See #6846 for context on why cacheCompression is disabled
+                cacheCompression: false,
+
+                // Babel sourcemaps are needed for debugging into node_modules
+                // code.  Without the options below, debuggers like VSCode
+                // show incorrect code and set breakpoints on the wrong lines.
+                sourceMaps: shouldUseSourceMap,
+                inputSourceMap: shouldUseSourceMap,
+              },
+            },
+            // "postcss" loader applies autoprefixer to our CSS.
+            // "css" loader resolves paths in CSS and adds assets as dependencies.
+            // "style" loader turns CSS into JS modules that inject <style> tags.
+            // In production, we use MiniCSSExtractPlugin to extract that CSS
+            // to a file, but in development "style" loader enables hot editing
+            // of CSS.
+            // By default we support CSS Modules with the extension .module.css
+            {
+              test: cssRegex,
+              exclude: cssModuleRegex,
+              use: getStyleLoaders({
+                importLoaders: 1,
+                sourceMap: isEnvProduction
+                  ? shouldUseSourceMap
+                  : isEnvDevelopment,
+                modules: {
+                  mode: "icss",
+                },
+              }),
+              // Don't consider CSS imports dead code even if the
+              // containing package claims to have no side effects.
+              // Remove this when webpack adds a warning or an error for this.
+              // See https://github.com/webpack/webpack/issues/6571
+              sideEffects: true,
+            },
+            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
+            // using the extension .module.css
+            {
+              test: cssModuleRegex,
+              use: getStyleLoaders({
+                importLoaders: 1,
+                sourceMap: isEnvProduction
+                  ? shouldUseSourceMap
+                  : isEnvDevelopment,
+                modules: {
+                  mode: "local",
+                  getLocalIdent: getCSSModuleLocalIdent,
+                },
+              }),
+            },
+            // Opt-in support for SASS (using .scss or .sass extensions).
+            // By default we support SASS Modules with the
+            // extensions .module.scss or .module.sass
+            // {
+            //   test: sassRegex,
+            //   exclude: sassModuleRegex,
+            //   use: getStyleLoaders(
+            //     {
+            //       importLoaders: 3,
+            //       sourceMap: isEnvProduction
+            //         ? shouldUseSourceMap
+            //         : isEnvDevelopment,
+            //       modules: {
+            //         mode: 'icss',
+            //       },
+            //     },
+            //     'sass-loader'
+            //   ),
+            //   // Don't consider CSS imports dead code even if the
+            //   // containing package claims to have no side effects.
+            //   // Remove this when webpack adds a warning or an error for this.
+            //   // See https://github.com/webpack/webpack/issues/6571
+            //   sideEffects: true,
+            // },
+            // // Adds support for CSS Modules, but using SASS
+            // // using the extension .module.scss or .module.sass
+            // {
+            //   test: sassModuleRegex,
+            //   use: getStyleLoaders(
+            //     {
+            //       importLoaders: 3,
+            //       sourceMap: isEnvProduction
+            //         ? shouldUseSourceMap
+            //         : isEnvDevelopment,
+            //       modules: {
+            //         mode: 'local',
+            //         getLocalIdent: getCSSModuleLocalIdent,
+            //       },
+            //     },
+            //     'sass-loader'
+            //   ),
+            // },
+            // Opt-in support for SASS (using .scss or .sass extensions).
+            // By default we support SASS Modules with the
+            // extensions .module.scss or .module.sass
+            {
+              test: lessRegex,
+              exclude: lessModuleRegex,
+              use: [
+                ...getStyleLoaders({
+                  importLoaders: 3,
+                  sourceMap: isEnvProduction
+                    ? shouldUseSourceMap
+                    : isEnvDevelopment,
+                  modules: {
+                    mode: (resourcePath)=>{
+                      if(resourcePath.includes('global.less')){
+                        return 'icss'
+                      }else{
+                        return 'local'
+                      }
+                    },
+                    getLocalIdent: getCSSModuleLocalIdent,
+                  },
+                }),
+                {
+                  loader: "less-loader", // compiles Less to CSS
+                  options: {
+                    lessOptions: {
+                      // 如果使用less-loader@5,请移除 lessOptions 这一级直接配置选项。
+                      modifyVars: {
+                        "primary-color": "#1DA57A",
+                        "link-color": "#1DA57A",
+                        "border-radius-base": "2px",
+                      },
+                      javascriptEnabled: true,
+                    },
+                  },
+                },
+              ],
+              // Don't consider CSS imports dead code even if the
+              // containing package claims to have no side effects.
+              // Remove this when webpack adds a warning or an error for this.
+              // See https://github.com/webpack/webpack/issues/6571
+              sideEffects: true,
+            },
+            // Adds support for CSS Modules, but using SASS
+            // using the extension .module.scss or .module.sass
+            {
+              test: lessModuleRegex,
+              use: [
+                ...getStyleLoaders({
+                  importLoaders: 3,
+                  sourceMap: isEnvProduction
+                    ? shouldUseSourceMap
+                    : isEnvDevelopment,
+                  modules: {
+                    mode: "local",
+                    getLocalIdent: getCSSModuleLocalIdent,
+                  },
+                }),
+                {
+                  loader: "less-loader", // compiles Less to CSS
+                  options: {
+                    lessOptions: {
+                      // 如果使用less-loader@5,请移除 lessOptions 这一级直接配置选项。
+                      modifyVars: {
+                        "primary-color": "#1DA57A",
+                        "link-color": "#1DA57A",
+                        "border-radius-base": "2px",
+                      },
+                      javascriptEnabled: true,
+                    },
+                  },
+                },
+              ],
+            },
+            // "file" loader makes sure those assets get served by WebpackDevServer.
+            // When you `import` an asset, you get its (virtual) filename.
+            // In production, they would get copied to the `build` folder.
+            // This loader doesn't use a "test" so it will catch all modules
+            // that fall through the other loaders.
+            {
+              // Exclude `js` files to keep "css" loader working as it injects
+              // its runtime that would otherwise be processed through "file" loader.
+              // Also exclude `html` and `json` extensions so they get processed
+              // by webpacks internal loaders.
+              exclude: [/^$/, /\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
+              type: "asset/resource",
+            },
+            // ** STOP ** Are you adding a new loader?
+            // Make sure to add the new loader(s) before the "file" loader.
+          ],
+        },
+      ].filter(Boolean),
+    },
+    plugins: [
+      // Generates an `index.html` file with the <script> injected.
+      // new HtmlWebpackPlugin(
+      //   Object.assign(
+      //     {},
+      //     {
+      //       inject: true,
+      //       template: paths.appHtml,
+      //     },
+      //     isEnvProduction
+      //       ? {
+      //           minify: {
+      //             removeComments: true,
+      //             collapseWhitespace: true,
+      //             removeRedundantAttributes: true,
+      //             useShortDoctype: true,
+      //             removeEmptyAttributes: true,
+      //             removeStyleLinkTypeAttributes: true,
+      //             keepClosingSlash: true,
+      //             minifyJS: true,
+      //             minifyCSS: true,
+      //             minifyURLs: true,
+      //           },
+      //         }
+      //       : undefined
+      //   )
+      // ),
+      ...htmls,
+      // Inlines the webpack runtime script. This script is too small to warrant
+      // a network request.
+      // https://github.com/facebook/create-react-app/issues/5358
+      isEnvProduction &&
+        shouldInlineRuntimeChunk &&
+        new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/]),
+      // Makes some environment variables available in index.html.
+      // The public URL is available as %PUBLIC_URL% in index.html, e.g.:
+      // <link rel="icon" href="%PUBLIC_URL%/favicon.ico">
+      // It will be an empty string unless you specify "homepage"
+      // in `package.json`, in which case it will be the pathname of that URL.
+      new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),
+      // This gives some necessary context to module not found errors, such as
+      // the requesting resource.
+      new ModuleNotFoundPlugin(paths.appPath),
+      // Makes some environment variables available to the JS code, for example:
+      // if (process.env.NODE_ENV === 'production') { ... }. See `./env.js`.
+      // It is absolutely essential that NODE_ENV is set to production
+      // during a production build.
+      // Otherwise React will be compiled in the very slow development mode.
+      new webpack.DefinePlugin(env.stringified),
+      // Experimental hot reloading for React .
+      // https://github.com/facebook/react/tree/main/packages/react-refresh
+      isEnvDevelopment &&
+        shouldUseReactRefresh &&
+        new ReactRefreshWebpackPlugin({
+          overlay: false,
+        }),
+      // Watcher doesn't work well if you mistype casing in a path so we use
+      // a plugin that prints an error when you attempt to do this.
+      // See https://github.com/facebook/create-react-app/issues/240
+      isEnvDevelopment && new CaseSensitivePathsPlugin(),
+      isEnvProduction &&
+        new MiniCssExtractPlugin({
+          // Options similar to the same options in webpackOptions.output
+          // both options are optional
+          filename: "app/[name]/static/css/[name].[contenthash:8].css",
+          chunkFilename: "app/[name]/static/css/[name].[contenthash:8].chunk.css",
+          ignoreOrder: true,
+        }),
+      // Generate an asset manifest file with the following content:
+      // - "files" key: Mapping of all asset filenames to their corresponding
+      //   output file so that tools can pick it up without having to parse
+      //   `index.html`
+      // - "entrypoints" key: Array of files which are included in `index.html`,
+      //   can be used to reconstruct the HTML if necessary
+      new WebpackManifestPlugin({
+        fileName: "asset-manifest.json",
+        publicPath: paths.publicUrlOrPath,
+        generate: (seed, files, entrypoints) => {
+          console.log(entrypoints);
+          const manifestFiles = files.reduce((manifest, file) => {
+            manifest[file.name] = file.path;
+            return manifest;
+          }, seed);
+          const entrypointFiles = entrypoints["login"]?.filter(
+            (fileName) => !fileName.endsWith(".map")
+          );
+
+          return {
+            files: manifestFiles,
+            entrypoints: entrypointFiles,
+          };
+        },
+      }),
+      // Moment.js is an extremely popular library that bundles large locale files
+      // by default due to how webpack interprets its code. This is a practical
+      // solution that requires the user to opt into importing specific locales.
+      // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
+      // You can remove this if you don't use Moment.js:
+      new webpack.IgnorePlugin({
+        resourceRegExp: /^\.\/locale$/,
+        contextRegExp: /moment$/,
+      }),
+      // Generate a service worker script that will precache, and keep up to date,
+      // the HTML & assets that are part of the webpack build.
+      isEnvProduction &&
+        fs.existsSync(swSrc) &&
+        new WorkboxWebpackPlugin.InjectManifest({
+          swSrc,
+          dontCacheBustURLsMatching: /\.[0-9a-f]{8}\./,
+          exclude: [/\.map$/, /asset-manifest\.json$/, /LICENSE/],
+          // Bump up the default maximum size (2mb) that's precached,
+          // to make lazy-loading failure scenarios less likely.
+          // See https://github.com/cra-template/pwa/issues/13#issuecomment-722667270
+          maximumFileSizeToCacheInBytes: 5 * 1024 * 1024,
+        }),
+      // TypeScript type checking
+      useTypeScript &&
+        new ForkTsCheckerWebpackPlugin({
+          async: isEnvDevelopment,
+          typescript: {
+            typescriptPath: resolve.sync("typescript", {
+              basedir: paths.appNodeModules,
+            }),
+            configOverwrite: {
+              compilerOptions: {
+                sourceMap: isEnvProduction
+                  ? shouldUseSourceMap
+                  : isEnvDevelopment,
+                skipLibCheck: true,
+                inlineSourceMap: false,
+                declarationMap: false,
+                noEmit: true,
+                incremental: true,
+                tsBuildInfoFile: paths.appTsBuildInfoFile,
+              },
+            },
+            context: paths.appPath,
+            diagnosticOptions: {
+              syntactic: true,
+            },
+            mode: "write-references",
+            // profile: true,
+          },
+          issue: {
+            // This one is specifically to match during CI tests,
+            // as micromatch doesn't match
+            // '../cra-template-typescript/template/src/App.tsx'
+            // otherwise.
+            include: [
+              { file: "../**/src/**/*.{ts,tsx}" },
+              { file: "**/src/**/*.{ts,tsx}" },
+            ],
+            exclude: [
+              { file: "**/src/**/__tests__/**" },
+              { file: "**/src/**/?(*.){spec|test}.*" },
+              { file: "**/src/setupProxy.*" },
+              { file: "**/src/setupTests.*" },
+            ],
+          },
+          logger: {
+            infrastructure: "silent",
+          },
+        }),
+      !disableESLintPlugin &&
+        new ESLintPlugin({
+          // Plugin options
+          extensions: ["js", "mjs", "jsx", "ts", "tsx"],
+          formatter: require.resolve("react-dev-utils/eslintFormatter"),
+          eslintPath: require.resolve("eslint"),
+          failOnError: !(isEnvDevelopment && emitErrorsAsWarnings),
+          context: paths.appSrc,
+          cache: true,
+          cacheLocation: path.resolve(
+            paths.appNodeModules,
+            ".cache/.eslintcache"
+          ),
+          // ESLint class options
+          cwd: paths.appPath,
+          resolvePluginsRelativeTo: __dirname,
+          baseConfig: {
+            extends: [require.resolve("eslint-config-react-app/base")],
+            rules: {
+              ...(!hasJsxRuntime && {
+                "react/react-in-jsx-scope": "error",
+              }),
+            },
+          },
+        }),
+      new WebpackBar(),
+    ].filter(Boolean),
+    // Turn off performance processing because we utilize
+    // our own hints via the FileSizeReporter
+    performance: false,
+  };
+};

+ 9 - 0
config/webpack/persistentCache/createEnvironmentHash.js

@@ -0,0 +1,9 @@
+'use strict';
+const { createHash } = require('crypto');
+
+module.exports = env => {
+  const hash = createHash('md5');
+  hash.update(JSON.stringify(env));
+
+  return hash.digest('hex');
+};

+ 153 - 0
config/webpackDevServer.config.js

@@ -0,0 +1,153 @@
+'use strict';
+
+const fs = require('fs');
+const path = require('path')
+const evalSourceMapMiddleware = require('react-dev-utils/evalSourceMapMiddleware');
+const noopServiceWorkerMiddleware = require('react-dev-utils/noopServiceWorkerMiddleware');
+const ignoredFiles = require('react-dev-utils/ignoredFiles');
+const redirectServedPath = require('react-dev-utils/redirectServedPathMiddleware');
+const paths = require('./paths');
+const getHttpsConfig = require('./getHttpsConfig');
+
+const host = process.env.HOST || '0.0.0.0';
+const sockHost = process.env.WDS_SOCKET_HOST;
+const sockPath = process.env.WDS_SOCKET_PATH; // default: '/ws'
+const sockPort = process.env.WDS_SOCKET_PORT;
+module.exports = function (proxy, allowedHost,configEntry) {
+  const disableFirewall =
+    !proxy || process.env.DANGEROUSLY_DISABLE_HOST_CHECK === 'true';
+  return {
+    // WebpackDevServer 2.4.3 introduced a security fix that prevents remote
+    // websites from potentially accessing local content through DNS rebinding:
+    // https://github.com/webpack/webpack-dev-server/issues/887
+    // https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a
+    // However, it made several existing use cases such as development in cloud
+    // environment or subdomains in development significantly more complicated:
+    // https://github.com/facebook/create-react-app/issues/2271
+    // https://github.com/facebook/create-react-app/issues/2233
+    // While we're investigating better solutions, for now we will take a
+    // compromise. Since our WDS configuration only serves files in the `public`
+    // folder we won't consider accessing them a vulnerability. However, if you
+    // use the `proxy` feature, it gets more dangerous because it can expose
+    // remote code execution vulnerabilities in backends like Django and Rails.
+    // So we will disable the host check normally, but enable it if you have
+    // specified the `proxy` setting. Finally, we let you override it if you
+    // really know what you're doing with a special environment variable.
+    // Note: ["localhost", ".localhost"] will support subdomains - but we might
+    // want to allow setting the allowedHosts manually for more complex setups
+    allowedHosts: disableFirewall ? 'all' : [allowedHost],
+    headers: {
+      'Access-Control-Allow-Origin': '*',
+      'Access-Control-Allow-Methods': '*',
+      'Access-Control-Allow-Headers': '*',
+    },
+    // Enable gzip compression of generated files.
+    compress: true,
+    static: {
+      // By default WebpackDevServer serves physical files from current directory
+      // in addition to all the virtual build products that it serves from memory.
+      // This is confusing because those files won’t automatically be available in
+      // production build folder unless we copy them. However, copying the whole
+      // project directory is dangerous because we may expose sensitive files.
+      // Instead, we establish a convention that only files in `public` directory
+      // get served. Our build script will copy `public` into the `build` folder.
+      // In `index.html`, you can get URL of `public` folder with %PUBLIC_URL%:
+      // <link rel="icon" href="%PUBLIC_URL%/favicon.ico">
+      // In JavaScript code, you can access it with `process.env.PUBLIC_URL`.
+      // Note that we only recommend to use `public` folder as an escape hatch
+      // for files like `favicon.ico`, `manifest.json`, and libraries that are
+      // for some reason broken when imported through webpack. If you just want to
+      // use an image, put it in `src` and `import` it from JavaScript instead.
+      directory: paths.appPublic,
+      publicPath: [paths.publicUrlOrPath],
+      // By default files from `contentBase` will not trigger a page reload.
+      watch: {
+        // Reportedly, this avoids CPU overload on some systems.
+        // https://github.com/facebook/create-react-app/issues/293
+        // src/node_modules is not ignored to support absolute imports
+        // https://github.com/facebook/create-react-app/issues/1065
+        ignored: ignoredFiles(paths.appSrc),
+      },
+    },
+    client: {
+      webSocketURL: {
+        // Enable custom sockjs pathname for websocket connection to hot reloading server.
+        // Enable custom sockjs hostname, pathname and port for websocket connection
+        // to hot reloading server.
+        hostname: sockHost,
+        pathname: sockPath,
+        port: sockPort,
+      },
+      overlay: {
+        errors: true,
+        warnings: false,
+      },
+    },
+    devMiddleware: {
+      // It is important to tell WebpackDevServer to use the same "publicPath" path as
+      // we specified in the webpack config. When homepage is '.', default to serving
+      // from the root.
+      // remove last slash so user can land on `/test` instead of `/test/`
+      publicPath: paths.publicUrlOrPath.slice(0, -1),
+    },
+
+    https: getHttpsConfig(),
+    host,
+    historyApiFallback: {
+      // Paths with dots should still use the history fallback.
+      // See https://github.com/facebook/create-react-app/issues/387.
+      disableDotRule: true,
+      // index: paths.publicUrlOrPath,
+      // 映射
+      rewrites:[
+        {form:/.*/ig,to:(context)=>{
+          let arr = Object.keys(configEntry)
+          let eq = arr.findIndex(key=>context.parsedUrl.path?.includes(key))
+          console.log(context.parsedUrl.path)
+          if(context.parsedUrl.path === '/'){
+            // return `/login/index.html`
+            return `/index.html`
+          }
+          if(context.parsedUrl.path.includes('/?code=')){
+            // return `/login/index.html`
+            return `/index.html`
+          }
+          if(eq >0){
+            if(arr[eq] === 'login'){
+              return `/index.html`
+            }
+            return `/${arr[eq]}/index.html`
+          }else{
+            // console.log(`404`)
+            return `/404/index.html`
+          }
+        }},
+      ]
+    },
+    
+    // `proxy` is run between `before` and `after` `webpack-dev-server` hooks
+    proxy,
+    onBeforeSetupMiddleware(devServer) {
+      // Keep `evalSourceMapMiddleware`
+      // middlewares before `redirectServedPath` otherwise will not have any effect
+      // This lets us fetch source contents from webpack for the error overlay
+      devServer.app.use(evalSourceMapMiddleware(devServer));
+
+      if (fs.existsSync(paths.proxySetup)) {
+        // This registers user provided middleware for proxy reasons
+        require(paths.proxySetup)(devServer.app);
+      }
+    },
+    onAfterSetupMiddleware(devServer) {
+      // Redirect to `PUBLIC_URL` or `homepage` from `package.json` if url not match
+      devServer.app.use(redirectServedPath(paths.publicUrlOrPath));
+
+      // This service worker file is effectively a 'no-op' that will reset any
+      // previous service worker registered for the same host:port combination.
+      // We do this in development to avoid hitting the production cache if
+      // it used the same host and port.
+      // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432
+      devServer.app.use(noopServiceWorkerMiddleware(paths.publicUrlOrPath));
+    },
+  };
+};

+ 180 - 0
package.json

@@ -0,0 +1,180 @@
+{
+  "name": "antd-demo-ts",
+  "version": "0.1.0",
+  "private": true,
+  "dependencies": {
+    "@babel/core": "^7.16.0",
+    "@hot-loader/react-dom": "^17.0.2",
+    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
+    "@svgr/webpack": "^5.5.0",
+    "@testing-library/jest-dom": "^5.14.1",
+    "@testing-library/react": "^12.0.0",
+    "@testing-library/user-event": "^13.2.1",
+    "@types/jest": "^27.0.1",
+    "@types/node": "^18.15.3",
+    "@types/react": "18.0.28",
+    "@types/react-color": "^3.0.6",
+    "@types/react-dom": "^18.0.11",
+    "@types/react-resizable": "^1.7.4",
+    "@types/react-window": "^1.8.5",
+    "@types/request": "^2.48.8",
+    "@types/sanitize-html": "^2.9.0",
+    "@types/sortablejs": "^1.10.7",
+    "@types/spark-md5": "^3.0.2",
+    "@types/webpack-env": "^1.18.0",
+    "ahooks": "2.9.1",
+    "ali-oss": "^6.21.0",
+    "antd": "^5.24.7",
+    "antd-img-crop": "^4.2.0",
+    "array-move": "^4.0.0",
+    "axios": "^0.26.1",
+    "babel-jest": "^27.4.2",
+    "babel-loader": "^8.2.3",
+    "babel-plugin-import": "^1.13.3",
+    "babel-plugin-named-asset-import": "^0.3.8",
+    "babel-preset-react-app": "^10.0.1",
+    "bfj": "^7.0.2",
+    "browserslist": "^4.18.1",
+    "camelcase": "^6.2.1",
+    "case-sensitive-paths-webpack-plugin": "^2.4.0",
+    "css-loader": "^6.5.1",
+    "css-minimizer-webpack-plugin": "^3.2.0",
+    "dotenv": "^10.0.0",
+    "dotenv-expand": "^5.1.0",
+    "echarts": "^5.3.1",
+    "eslint": "^8.3.0",
+    "eslint-config-react-app": "^7.0.0",
+    "eslint-webpack-plugin": "^3.1.1",
+    "exceljs": "^4.4.0",
+    "file-loader": "^6.2.0",
+    "file-saver": "^2.0.5",
+    "fs-extra": "^10.0.0",
+    "html-webpack-plugin": "^5.5.0",
+    "identity-obj-proxy": "^3.0.0",
+    "image-conversion": "^2.1.1",
+    "jest": "^27.4.3",
+    "jest-resolve": "^27.4.2",
+    "jest-watch-typeahead": "^1.0.0",
+    "less": "^4.1.2",
+    "less-loader": "^10.2.0",
+    "mini-css-extract-plugin": "^2.4.5",
+    "mobx": "^6.5.0",
+    "mobx-react": "^7.3.0",
+    "postcss": "^8.4.4",
+    "postcss-flexbugs-fixes": "^5.0.2",
+    "postcss-loader": "^6.2.1",
+    "postcss-normalize": "^10.0.1",
+    "postcss-preset-env": "^7.0.1",
+    "prompts": "^2.4.2",
+    "rc-virtual-list": "^3.11.3",
+    "react": "^18.3.0-next-fecc288b7-20221025",
+    "react-app-polyfill": "^3.0.0",
+    "react-color": "^2.19.3",
+    "react-contenteditable": "^3.3.7",
+    "react-cropper": "^2.1.8",
+    "react-dev-utils": "^12.0.0",
+    "react-dom": "^18.3.0-next-fecc288b7-20221025",
+    "react-infinite-scroll-component": "^6.1.0",
+    "react-refresh": "^0.11.0",
+    "react-resizable": "^3.0.4",
+    "react-router-dom": "^6.2.2",
+    "react-sortable-hoc": "^2.0.0",
+    "react-window": "^1.8.9",
+    "resolve": "^1.20.0",
+    "resolve-url-loader": "^4.0.0",
+    "sanitize-html": "^2.10.0",
+    "sass-loader": "^12.3.0",
+    "semver": "^7.3.5",
+    "sortablejs": "^1.15.0",
+    "source-map-loader": "^3.0.0",
+    "spark-md5": "^3.0.2",
+    "streamsaver": "^2.0.6",
+    "style-loader": "^3.3.1",
+    "tailwindcss": "^3.0.2",
+    "terser-webpack-plugin": "^5.2.5",
+    "typescript": "^4.9.5",
+    "web-vitals": "^2.1.0",
+    "webpack": "^5.64.4",
+    "webpack-dev-server": "^4.6.0",
+    "webpack-manifest-plugin": "^4.0.2",
+    "webpackbar": "^5.0.2",
+    "workbox-webpack-plugin": "^6.4.1"
+  },
+  "scripts": {
+    "start": "node scripts/start.js",
+    "build": "node scripts/build.js ",
+    "test": "node scripts/test.js"
+  },
+  "eslintConfig": {
+    "extends": [
+      "react-app",
+      "react-app/jest"
+    ]
+  },
+  "browserslist": {
+    "production": [
+      ">0.2%",
+      "not dead",
+      "not op_mini all"
+    ],
+    "development": [
+      "last 1 chrome version",
+      "last 1 firefox version",
+      "last 1 safari version"
+    ]
+  },
+  "jest": {
+    "roots": [
+      "<rootDir>/src"
+    ],
+    "collectCoverageFrom": [
+      "src/**/*.{js,jsx,ts,tsx}",
+      "!src/**/*.d.ts"
+    ],
+    "setupFiles": [
+      "react-app-polyfill/jsdom"
+    ],
+    "setupFilesAfterEnv": [
+      "<rootDir>/src/setupTests.ts"
+    ],
+    "testMatch": [
+      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
+      "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
+    ],
+    "testEnvironment": "jsdom",
+    "transform": {
+      "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": "<rootDir>/config/jest/babelTransform.js",
+      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
+      "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
+    },
+    "transformIgnorePatterns": [
+      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|cjs|ts|tsx)$",
+      "^.+\\.module\\.(css|sass|scss)$"
+    ],
+    "modulePaths": [],
+    "moduleNameMapper": {
+      "^react-native$": "react-native-web",
+      "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
+    },
+    "moduleFileExtensions": [
+      "web.js",
+      "js",
+      "web.ts",
+      "ts",
+      "web.tsx",
+      "tsx",
+      "json",
+      "web.jsx",
+      "jsx",
+      "node"
+    ],
+    "watchPlugins": [
+      "jest-watch-typeahead/filename",
+      "jest-watch-typeahead/testname"
+    ],
+    "resetMocks": true
+  },
+  "devDependencies": {
+    "react-hot-loader": "^4.13.0"
+  }
+}

+ 28532 - 0
public/antd.dark.css

@@ -0,0 +1,28532 @@
+/*!
+ * 
+ * antd v4.9.3
+ * 
+ * Copyright 2015-present, Alipay, Inc.
+ * All rights reserved.
+ *       
+ */
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+:root{
+  /* 路由背景 */
+  /* --layout_bg:#040404; */
+}
+[class^=ant-]::-ms-clear,
+[class*= ant-]::-ms-clear,
+[class^=ant-] input::-ms-clear,
+[class*= ant-] input::-ms-clear,
+[class^=ant-] input::-ms-reveal,
+[class*= ant-] input::-ms-reveal {
+  display: none;
+}
+[class^=ant-],
+[class*= ant-],
+[class^=ant-] *,
+[class*= ant-] *,
+[class^=ant-] *::before,
+[class*= ant-] *::before,
+[class^=ant-] *::after,
+[class*= ant-] *::after {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+/* stylelint-disable at-rule-no-unknown */
+html,
+body {
+  width: 100%;
+  height: 100%;
+}
+input::-ms-clear,
+input::-ms-reveal {
+  display: none;
+}
+*,
+*::before,
+*::after {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-family: sans-serif;
+  line-height: 1.15;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+  -ms-overflow-style: scrollbar;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+@-ms-viewport {
+  width: device-width;
+}
+body {
+  margin: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  background-color: #485257;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+[tabindex='-1']:focus {
+  outline: none !important;
+}
+hr {
+  -webkit-box-sizing: content-box;
+          box-sizing: content-box;
+  height: 0;
+  overflow: visible;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin-top: 0;
+  margin-bottom: 0.5em;
+  color: var(--text_cl);
+  font-weight: 500;
+}
+p {
+  margin-top: 0;
+  margin-bottom: 1em;
+}
+abbr[title],
+abbr[data-original-title] {
+  text-decoration: underline;
+  -webkit-text-decoration: underline dotted;
+          text-decoration: underline dotted;
+  border-bottom: 0;
+  cursor: help;
+}
+address {
+  margin-bottom: 1em;
+  font-style: normal;
+  line-height: inherit;
+}
+input[type='text'],
+input[type='password'],
+input[type='number'],
+textarea {
+  -webkit-appearance: none;
+}
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1em;
+}
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+dt {
+  font-weight: 500;
+}
+dd {
+  margin-bottom: 0.5em;
+  margin-left: 0;
+}
+blockquote {
+  margin: 0 0 1em;
+}
+dfn {
+  font-style: italic;
+}
+b,
+strong {
+  font-weight: bolder;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sub {
+  bottom: -0.25em;
+}
+sup {
+  top: -0.5em;
+}
+a {
+  color: var(--menu_selected_bg);
+  text-decoration: none;
+  background-color: transparent;
+  outline: none;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  -webkit-text-decoration-skip: objects;
+}
+a:hover {
+  color: var(--menu_selected_bg);
+}
+a:active {
+  color: #388ed3;
+}
+a:active,
+a:hover {
+  text-decoration: none;
+  outline: 0;
+}
+a:focus {
+  text-decoration: none;
+  outline: 0;
+}
+a[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+  pointer-events: none;
+}
+pre,
+code,
+kbd,
+samp {
+  font-size: 1em;
+  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
+}
+pre {
+  margin-top: 0;
+  margin-bottom: 1em;
+  overflow: auto;
+}
+figure {
+  margin: 0 0 1em;
+}
+img {
+  vertical-align: middle;
+  border-style: none;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+a,
+area,
+button,
+[role='button'],
+input:not([type='range']),
+label,
+select,
+summary,
+textarea {
+  -ms-touch-action: manipulation;
+      touch-action: manipulation;
+}
+table {
+  border-collapse: collapse;
+}
+caption {
+  padding-top: 0.75em;
+  padding-bottom: 0.3em;
+  color: rgba(255, 255, 255, 0.45);
+  text-align: left;
+  caption-side: bottom;
+}
+th {
+  text-align: inherit;
+}
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0;
+  color: inherit;
+  font-size: inherit;
+  font-family: inherit;
+  line-height: inherit;
+}
+button,
+input {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button;
+}
+button::-moz-focus-inner,
+[type='button']::-moz-focus-inner,
+[type='reset']::-moz-focus-inner,
+[type='submit']::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+input[type='radio'],
+input[type='checkbox'] {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0;
+}
+input[type='date'],
+input[type='time'],
+input[type='datetime-local'],
+input[type='month'] {
+  -webkit-appearance: listbox;
+}
+textarea {
+  overflow: auto;
+  resize: vertical;
+}
+fieldset {
+  min-width: 0;
+  margin: 0;
+  padding: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 0.5em;
+  padding: 0;
+  color: inherit;
+  font-size: 1.5em;
+  line-height: inherit;
+  white-space: normal;
+}
+progress {
+  vertical-align: baseline;
+}
+[type='number']::-webkit-inner-spin-button,
+[type='number']::-webkit-outer-spin-button {
+  height: auto;
+}
+[type='search'] {
+  outline-offset: -2px;
+  -webkit-appearance: none;
+}
+[type='search']::-webkit-search-cancel-button,
+[type='search']::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button;
+}
+output {
+  display: inline-block;
+}
+summary {
+  display: list-item;
+}
+template {
+  display: none;
+}
+[hidden] {
+  display: none !important;
+}
+mark {
+  padding: 0.2em;
+  background-color: #2b2611;
+}
+::-moz-selection {
+  color: #fff;
+  background: var(--menu_selected_bg);
+}
+::selection {
+  color: #fff;
+  background: var(--menu_selected_bg);
+}
+.clearfix::before {
+  display: table;
+  content: '';
+}
+.clearfix::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.anticon {
+  display: inline-block;
+  color: inherit;
+  font-style: normal;
+  line-height: 0;
+  text-align: center;
+  text-transform: none;
+  vertical-align: -0.125em;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.anticon > * {
+  line-height: 1;
+}
+.anticon svg {
+  display: inline-block;
+}
+.anticon::before {
+  display: none;
+}
+.anticon .anticon-icon {
+  display: block;
+}
+.anticon[tabindex] {
+  cursor: pointer;
+}
+.anticon-spin::before {
+  display: inline-block;
+  -webkit-animation: loadingCircle 1s infinite linear;
+          animation: loadingCircle 1s infinite linear;
+}
+.anticon-spin {
+  display: inline-block;
+  -webkit-animation: loadingCircle 1s infinite linear;
+          animation: loadingCircle 1s infinite linear;
+}
+.fade-enter,
+.fade-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.fade-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.fade-enter.fade-enter-active,
+.fade-appear.fade-appear-active {
+  -webkit-animation-name: antFadeIn;
+          animation-name: antFadeIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.fade-leave.fade-leave-active {
+  -webkit-animation-name: antFadeOut;
+          animation-name: antFadeOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.fade-enter,
+.fade-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: linear;
+          animation-timing-function: linear;
+}
+.fade-leave {
+  -webkit-animation-timing-function: linear;
+          animation-timing-function: linear;
+}
+@-webkit-keyframes antFadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+@keyframes antFadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antFadeOut {
+  0% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 0;
+  }
+}
+@keyframes antFadeOut {
+  0% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 0;
+  }
+}
+.move-up-enter,
+.move-up-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-up-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-up-enter.move-up-enter-active,
+.move-up-appear.move-up-appear-active {
+  -webkit-animation-name: antMoveUpIn;
+          animation-name: antMoveUpIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.move-up-leave.move-up-leave-active {
+  -webkit-animation-name: antMoveUpOut;
+          animation-name: antMoveUpOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.move-up-enter,
+.move-up-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.move-up-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+          animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+}
+.move-down-enter,
+.move-down-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-down-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-down-enter.move-down-enter-active,
+.move-down-appear.move-down-appear-active {
+  -webkit-animation-name: antMoveDownIn;
+          animation-name: antMoveDownIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.move-down-leave.move-down-leave-active {
+  -webkit-animation-name: antMoveDownOut;
+          animation-name: antMoveDownOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.move-down-enter,
+.move-down-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.move-down-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+          animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+}
+.move-left-enter,
+.move-left-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-left-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-left-enter.move-left-enter-active,
+.move-left-appear.move-left-appear-active {
+  -webkit-animation-name: antMoveLeftIn;
+          animation-name: antMoveLeftIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.move-left-leave.move-left-leave-active {
+  -webkit-animation-name: antMoveLeftOut;
+          animation-name: antMoveLeftOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.move-left-enter,
+.move-left-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.move-left-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+          animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+}
+.move-right-enter,
+.move-right-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-right-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.move-right-enter.move-right-enter-active,
+.move-right-appear.move-right-appear-active {
+  -webkit-animation-name: antMoveRightIn;
+          animation-name: antMoveRightIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.move-right-leave.move-right-leave-active {
+  -webkit-animation-name: antMoveRightOut;
+          animation-name: antMoveRightOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.move-right-enter,
+.move-right-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.move-right-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+          animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
+}
+@-webkit-keyframes antMoveDownIn {
+  0% {
+    -webkit-transform: translateY(100%);
+            transform: translateY(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@keyframes antMoveDownIn {
+  0% {
+    -webkit-transform: translateY(100%);
+            transform: translateY(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antMoveDownOut {
+  0% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateY(100%);
+            transform: translateY(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@keyframes antMoveDownOut {
+  0% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateY(100%);
+            transform: translateY(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antMoveLeftIn {
+  0% {
+    -webkit-transform: translateX(-100%);
+            transform: translateX(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@keyframes antMoveLeftIn {
+  0% {
+    -webkit-transform: translateX(-100%);
+            transform: translateX(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antMoveLeftOut {
+  0% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(-100%);
+            transform: translateX(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@keyframes antMoveLeftOut {
+  0% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(-100%);
+            transform: translateX(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antMoveRightIn {
+  0% {
+    -webkit-transform: translateX(100%);
+            transform: translateX(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@keyframes antMoveRightIn {
+  0% {
+    -webkit-transform: translateX(100%);
+            transform: translateX(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antMoveRightOut {
+  0% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(100%);
+            transform: translateX(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@keyframes antMoveRightOut {
+  0% {
+    -webkit-transform: translateX(0%);
+            transform: translateX(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(100%);
+            transform: translateX(100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antMoveUpIn {
+  0% {
+    -webkit-transform: translateY(-100%);
+            transform: translateY(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@keyframes antMoveUpIn {
+  0% {
+    -webkit-transform: translateY(-100%);
+            transform: translateY(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antMoveUpOut {
+  0% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateY(-100%);
+            transform: translateY(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@keyframes antMoveUpOut {
+  0% {
+    -webkit-transform: translateY(0%);
+            transform: translateY(0%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateY(-100%);
+            transform: translateY(-100%);
+    -webkit-transform-origin: 0 0;
+            transform-origin: 0 0;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes loadingCircle {
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg);
+  }
+}
+@keyframes loadingCircle {
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg);
+  }
+}
+[ant-click-animating='true'],
+[ant-click-animating-without-extra-node='true'] {
+  position: relative;
+}
+html {
+  --antd-wave-shadow-color: var(--menu_selected_bg);
+  --scroll-bar: 0;
+}
+[ant-click-animating-without-extra-node='true']::after,
+.ant-click-animating-node {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  display: block;
+  border-radius: inherit;
+  -webkit-box-shadow: 0 0 0 0 var(--menu_selected_bg);
+          box-shadow: 0 0 0 0 var(--menu_selected_bg);
+  -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+          box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+  opacity: 0.2;
+  -webkit-animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
+  -webkit-animation-fill-mode: forwards;
+          animation-fill-mode: forwards;
+  content: '';
+  pointer-events: none;
+}
+@-webkit-keyframes waveEffect {
+  100% {
+    -webkit-box-shadow: 0 0 0 var(--menu_selected_bg);
+            box-shadow: 0 0 0 var(--menu_selected_bg);
+    -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+            box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+  }
+}
+@keyframes waveEffect {
+  100% {
+    -webkit-box-shadow: 0 0 0 var(--menu_selected_bg);
+            box-shadow: 0 0 0 var(--menu_selected_bg);
+    -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+            box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+  }
+}
+@-webkit-keyframes fadeEffect {
+  100% {
+    opacity: 0;
+  }
+}
+@keyframes fadeEffect {
+  100% {
+    opacity: 0;
+  }
+}
+.slide-up-enter,
+.slide-up-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-up-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-up-enter.slide-up-enter-active,
+.slide-up-appear.slide-up-appear-active {
+  -webkit-animation-name: antSlideUpIn;
+          animation-name: antSlideUpIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.slide-up-leave.slide-up-leave-active {
+  -webkit-animation-name: antSlideUpOut;
+          animation-name: antSlideUpOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.slide-up-enter,
+.slide-up-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+          animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+}
+.slide-up-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+          animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+}
+.slide-down-enter,
+.slide-down-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-down-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-down-enter.slide-down-enter-active,
+.slide-down-appear.slide-down-appear-active {
+  -webkit-animation-name: antSlideDownIn;
+          animation-name: antSlideDownIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.slide-down-leave.slide-down-leave-active {
+  -webkit-animation-name: antSlideDownOut;
+          animation-name: antSlideDownOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.slide-down-enter,
+.slide-down-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+          animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+}
+.slide-down-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+          animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+}
+.slide-left-enter,
+.slide-left-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-left-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-left-enter.slide-left-enter-active,
+.slide-left-appear.slide-left-appear-active {
+  -webkit-animation-name: antSlideLeftIn;
+          animation-name: antSlideLeftIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.slide-left-leave.slide-left-leave-active {
+  -webkit-animation-name: antSlideLeftOut;
+          animation-name: antSlideLeftOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.slide-left-enter,
+.slide-left-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+          animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+}
+.slide-left-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+          animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+}
+.slide-right-enter,
+.slide-right-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-right-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.slide-right-enter.slide-right-enter-active,
+.slide-right-appear.slide-right-appear-active {
+  -webkit-animation-name: antSlideRightIn;
+          animation-name: antSlideRightIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.slide-right-leave.slide-right-leave-active {
+  -webkit-animation-name: antSlideRightOut;
+          animation-name: antSlideRightOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.slide-right-enter,
+.slide-right-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+          animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
+}
+.slide-right-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+          animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+}
+@-webkit-keyframes antSlideUpIn {
+  0% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+}
+@keyframes antSlideUpIn {
+  0% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antSlideUpOut {
+  0% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+}
+@keyframes antSlideUpOut {
+  0% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antSlideDownIn {
+  0% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 1;
+  }
+}
+@keyframes antSlideDownIn {
+  0% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antSlideDownOut {
+  0% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 0;
+  }
+}
+@keyframes antSlideDownOut {
+  0% {
+    -webkit-transform: scaleY(1);
+            transform: scaleY(1);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleY(0.8);
+            transform: scaleY(0.8);
+    -webkit-transform-origin: 100% 100%;
+            transform-origin: 100% 100%;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antSlideLeftIn {
+  0% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+}
+@keyframes antSlideLeftIn {
+  0% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antSlideLeftOut {
+  0% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+}
+@keyframes antSlideLeftOut {
+  0% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 0% 0%;
+            transform-origin: 0% 0%;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antSlideRightIn {
+  0% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 1;
+  }
+}
+@keyframes antSlideRightIn {
+  0% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antSlideRightOut {
+  0% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 0;
+  }
+}
+@keyframes antSlideRightOut {
+  0% {
+    -webkit-transform: scaleX(1);
+            transform: scaleX(1);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: scaleX(0.8);
+            transform: scaleX(0.8);
+    -webkit-transform-origin: 100% 0%;
+            transform-origin: 100% 0%;
+    opacity: 0;
+  }
+}
+.zoom-enter,
+.zoom-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-enter.zoom-enter-active,
+.zoom-appear.zoom-appear-active {
+  -webkit-animation-name: antZoomIn;
+          animation-name: antZoomIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-leave.zoom-leave-active {
+  -webkit-animation-name: antZoomOut;
+          animation-name: antZoomOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-enter,
+.zoom-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-enter-prepare,
+.zoom-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.zoom-big-enter,
+.zoom-big-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-big-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-big-enter.zoom-big-enter-active,
+.zoom-big-appear.zoom-big-appear-active {
+  -webkit-animation-name: antZoomBigIn;
+          animation-name: antZoomBigIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-big-leave.zoom-big-leave-active {
+  -webkit-animation-name: antZoomBigOut;
+          animation-name: antZoomBigOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-big-enter,
+.zoom-big-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-big-enter-prepare,
+.zoom-big-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-big-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.zoom-big-fast-enter,
+.zoom-big-fast-appear {
+  -webkit-animation-duration: 0.1s;
+          animation-duration: 0.1s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-big-fast-leave {
+  -webkit-animation-duration: 0.1s;
+          animation-duration: 0.1s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-big-fast-enter.zoom-big-fast-enter-active,
+.zoom-big-fast-appear.zoom-big-fast-appear-active {
+  -webkit-animation-name: antZoomBigIn;
+          animation-name: antZoomBigIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-big-fast-leave.zoom-big-fast-leave-active {
+  -webkit-animation-name: antZoomBigOut;
+          animation-name: antZoomBigOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-big-fast-enter,
+.zoom-big-fast-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-big-fast-enter-prepare,
+.zoom-big-fast-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-big-fast-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.zoom-up-enter,
+.zoom-up-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-up-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-up-enter.zoom-up-enter-active,
+.zoom-up-appear.zoom-up-appear-active {
+  -webkit-animation-name: antZoomUpIn;
+          animation-name: antZoomUpIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-up-leave.zoom-up-leave-active {
+  -webkit-animation-name: antZoomUpOut;
+          animation-name: antZoomUpOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-up-enter,
+.zoom-up-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-up-enter-prepare,
+.zoom-up-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-up-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.zoom-down-enter,
+.zoom-down-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-down-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-down-enter.zoom-down-enter-active,
+.zoom-down-appear.zoom-down-appear-active {
+  -webkit-animation-name: antZoomDownIn;
+          animation-name: antZoomDownIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-down-leave.zoom-down-leave-active {
+  -webkit-animation-name: antZoomDownOut;
+          animation-name: antZoomDownOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-down-enter,
+.zoom-down-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-down-enter-prepare,
+.zoom-down-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-down-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.zoom-left-enter,
+.zoom-left-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-left-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-left-enter.zoom-left-enter-active,
+.zoom-left-appear.zoom-left-appear-active {
+  -webkit-animation-name: antZoomLeftIn;
+          animation-name: antZoomLeftIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-left-leave.zoom-left-leave-active {
+  -webkit-animation-name: antZoomLeftOut;
+          animation-name: antZoomLeftOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-left-enter,
+.zoom-left-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-left-enter-prepare,
+.zoom-left-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-left-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.zoom-right-enter,
+.zoom-right-appear {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-right-leave {
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.zoom-right-enter.zoom-right-enter-active,
+.zoom-right-appear.zoom-right-appear-active {
+  -webkit-animation-name: antZoomRightIn;
+          animation-name: antZoomRightIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.zoom-right-leave.zoom-right-leave-active {
+  -webkit-animation-name: antZoomRightOut;
+          animation-name: antZoomRightOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.zoom-right-enter,
+.zoom-right-appear {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+          animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
+}
+.zoom-right-enter-prepare,
+.zoom-right-appear-prepare {
+  -webkit-transform: none;
+          transform: none;
+}
+.zoom-right-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+@-webkit-keyframes antZoomIn {
+  0% {
+    -webkit-transform: scale(0.2);
+            transform: scale(0.2);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 1;
+  }
+}
+@keyframes antZoomIn {
+  0% {
+    -webkit-transform: scale(0.2);
+            transform: scale(0.2);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antZoomOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  100% {
+    -webkit-transform: scale(0.2);
+            transform: scale(0.2);
+    opacity: 0;
+  }
+}
+@keyframes antZoomOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  100% {
+    -webkit-transform: scale(0.2);
+            transform: scale(0.2);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antZoomBigIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 1;
+  }
+}
+@keyframes antZoomBigIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antZoomBigOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    opacity: 0;
+  }
+}
+@keyframes antZoomBigOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antZoomUpIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+  }
+}
+@keyframes antZoomUpIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+  }
+}
+@-webkit-keyframes antZoomUpOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+    opacity: 0;
+  }
+}
+@keyframes antZoomUpOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 0%;
+            transform-origin: 50% 0%;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antZoomLeftIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+  }
+}
+@keyframes antZoomLeftIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+  }
+}
+@-webkit-keyframes antZoomLeftOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+    opacity: 0;
+  }
+}
+@keyframes antZoomLeftOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 0% 50%;
+            transform-origin: 0% 50%;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antZoomRightIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+  }
+}
+@keyframes antZoomRightIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+  }
+}
+@-webkit-keyframes antZoomRightOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+    opacity: 0;
+  }
+}
+@keyframes antZoomRightOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 100% 50%;
+            transform-origin: 100% 50%;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antZoomDownIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+  }
+}
+@keyframes antZoomDownIn {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+  }
+}
+@-webkit-keyframes antZoomDownOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+    opacity: 0;
+  }
+}
+@keyframes antZoomDownOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+  }
+  100% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    -webkit-transform-origin: 50% 100%;
+            transform-origin: 50% 100%;
+    opacity: 0;
+  }
+}
+.ant-motion-collapse-legacy {
+  overflow: hidden;
+}
+.ant-motion-collapse-legacy-active {
+  -webkit-transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
+  transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
+}
+.ant-motion-collapse {
+  overflow: hidden;
+  -webkit-transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
+  transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-affix {
+  position: fixed;
+  z-index: 10;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-alert {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 8px 15px;
+  word-wrap: break-word;
+  border-radius: 2px;
+}
+.ant-alert-content {
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  min-width: 0;
+}
+.ant-alert-icon {
+  margin-right: 8px;
+}
+.ant-alert-description {
+  display: none;
+  font-size: 14px;
+  line-height: 22px;
+}
+.ant-alert-success {
+  background-color: #162312;
+  border: 1px solid #274916;
+}
+.ant-alert-success .ant-alert-icon {
+  color: #49aa19;
+}
+.ant-alert-info {
+  background-color: var(--layout_bg);
+  border: 1px solid #153450;
+}
+.ant-alert-info .ant-alert-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-alert-warning {
+  background-color: #2b2111;
+  border: 1px solid #594214;
+}
+.ant-alert-warning .ant-alert-icon {
+  color: #d89614;
+}
+.ant-alert-error {
+  background-color: #2a1215;
+  border: 1px solid #58181c;
+}
+.ant-alert-error .ant-alert-icon {
+  color: #a61d24;
+}
+.ant-alert-error .ant-alert-description > pre {
+  margin: 0;
+  padding: 0;
+}
+.ant-alert-action {
+  margin-left: 8px;
+}
+.ant-alert-close-icon {
+  margin-left: 8px;
+  padding: 0;
+  overflow: hidden;
+  font-size: 12px;
+  line-height: 12px;
+  background-color: transparent;
+  border: none;
+  outline: none;
+  cursor: pointer;
+}
+.ant-alert-close-icon .anticon-close {
+  color: rgba(255, 255, 255, 0.45);
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-alert-close-icon .anticon-close:hover {
+  color: rgba(255, 255, 255, 0.75);
+}
+.ant-alert-close-text {
+  color: rgba(255, 255, 255, 0.45);
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-alert-close-text:hover {
+  color: rgba(255, 255, 255, 0.75);
+}
+.ant-alert-with-description {
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+  padding: 15px 15px 15px 24px;
+}
+.ant-alert-with-description.ant-alert-no-icon {
+  padding: 15px 15px;
+}
+.ant-alert-with-description .ant-alert-icon {
+  margin-right: 15px;
+  font-size: 24px;
+}
+.ant-alert-with-description .ant-alert-message {
+  display: block;
+  margin-bottom: 4px;
+  color: var(--text_cl);
+  font-size: 16px;
+}
+.ant-alert-message {
+  color: var(--text_cl);
+}
+.ant-alert-with-description .ant-alert-description {
+  display: block;
+}
+.ant-alert.ant-alert-motion-leave {
+  overflow: hidden;
+  opacity: 1;
+  -webkit-transition: max-height 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), padding-top 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), padding-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), margin-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  transition: max-height 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), padding-top 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), padding-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), margin-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.ant-alert.ant-alert-motion-leave-active {
+  max-height: 0;
+  margin-bottom: 0 !important;
+  padding-top: 0;
+  padding-bottom: 0;
+  opacity: 0;
+}
+.ant-alert-banner {
+  margin-bottom: 0;
+  border: 0;
+  border-radius: 0;
+}
+.ant-alert.ant-alert-rtl {
+  direction: rtl;
+}
+.ant-alert-rtl.ant-alert.ant-alert-no-icon {
+  padding: 8px 15px;
+}
+.ant-alert-rtl .ant-alert-icon {
+  margin-right: auto;
+  margin-left: 8px;
+}
+.ant-alert-rtl .ant-alert-action {
+  margin-right: 8px;
+  margin-left: auto;
+}
+.ant-alert-rtl .ant-alert-close-icon {
+  margin-right: 8px;
+  margin-left: auto;
+}
+.ant-alert-rtl.ant-alert-with-description .ant-alert-icon {
+  margin-right: auto;
+  margin-left: 15px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-anchor {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  padding-left: 2px;
+}
+.ant-anchor-wrapper {
+  margin-left: -4px;
+  padding-left: 4px;
+  overflow: auto;
+  background-color: var(--content_bg);
+}
+.ant-anchor-ink {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+.ant-anchor-ink::before {
+  position: relative;
+  display: block;
+  width: 2px;
+  height: 100%;
+  margin: 0 auto;
+  background-color: #5a6367;
+  content: ' ';
+}
+.ant-anchor-ink-ball {
+  position: absolute;
+  left: 50%;
+  display: none;
+  width: 8px;
+  height: 8px;
+  background-color: var(--content_bg);
+  border: 2px solid var(--menu_selected_bg);
+  border-radius: 8px;
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
+  -webkit-transition: top 0.3s ease-in-out;
+  transition: top 0.3s ease-in-out;
+}
+.ant-anchor-ink-ball.visible {
+  display: inline-block;
+}
+.ant-anchor.fixed .ant-anchor-ink .ant-anchor-ink-ball {
+  display: none;
+}
+.ant-anchor-link {
+  padding: 7px 0 7px 16px;
+  line-height: 1.143;
+}
+.ant-anchor-link-title {
+  position: relative;
+  display: block;
+  margin-bottom: 6px;
+  overflow: hidden;
+  color: var(--text_cl);
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-anchor-link-title:only-child {
+  margin-bottom: 0;
+}
+.ant-anchor-link-active > .ant-anchor-link-title {
+  color: var(--menu_selected_bg);
+}
+.ant-anchor-link .ant-anchor-link {
+  padding-top: 5px;
+  padding-bottom: 5px;
+}
+.ant-anchor-rtl {
+  direction: rtl;
+}
+.ant-anchor-rtl.ant-anchor-wrapper {
+  margin-right: -4px;
+  margin-left: 0;
+  padding-right: 4px;
+  padding-left: 0;
+}
+.ant-anchor-rtl .ant-anchor-ink {
+  right: 0;
+  left: auto;
+}
+.ant-anchor-rtl .ant-anchor-ink-ball {
+  right: 50%;
+  left: 0;
+  -webkit-transform: translateX(50%);
+          transform: translateX(50%);
+}
+.ant-anchor-rtl .ant-anchor-link {
+  padding: 7px 16px 7px 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-select-auto-complete {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+.ant-select-auto-complete .ant-select-clear {
+  right: 13px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-select-single .ant-select-selector {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-select-single .ant-select-selector .ant-select-selection-search {
+  position: absolute;
+  top: 0;
+  right: 11px;
+  bottom: 0;
+  left: 11px;
+}
+.ant-select-single .ant-select-selector .ant-select-selection-search-input {
+  width: 100%;
+}
+.ant-select-single .ant-select-selector .ant-select-selection-item,
+.ant-select-single .ant-select-selector .ant-select-selection-placeholder {
+  padding: 0;
+  line-height: 30px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+@supports (-moz-appearance: meterbar) {
+  .ant-select-single .ant-select-selector .ant-select-selection-item,
+  .ant-select-single .ant-select-selector .ant-select-selection-placeholder {
+    line-height: 30px;
+  }
+}
+.ant-select-single .ant-select-selector .ant-select-selection-item {
+  position: relative;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-select-single .ant-select-selector .ant-select-selection-placeholder {
+  pointer-events: none;
+}
+.ant-select-single .ant-select-selector::after,
+.ant-select-single .ant-select-selector .ant-select-selection-item::after,
+.ant-select-single .ant-select-selector .ant-select-selection-placeholder::after {
+  display: inline-block;
+  width: 0;
+  visibility: hidden;
+  content: '\a0';
+}
+.ant-select-single.ant-select-show-arrow .ant-select-selection-search {
+  right: 25px;
+}
+.ant-select-single.ant-select-show-arrow .ant-select-selection-item,
+.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder {
+  padding-right: 18px;
+}
+.ant-select-single.ant-select-open .ant-select-selection-item {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
+  width: 100%;
+  height: 32px;
+  padding: 0 11px;
+}
+.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input {
+  height: 30px;
+}
+.ant-select-single:not(.ant-select-customize-input) .ant-select-selector::after {
+  line-height: 30px;
+}
+.ant-select-single.ant-select-customize-input .ant-select-selector::after {
+  display: none;
+}
+.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search {
+  position: static;
+  width: 100%;
+}
+.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder {
+  position: absolute;
+  right: 0;
+  left: 0;
+  padding: 0 11px;
+}
+.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder::after {
+  display: none;
+}
+.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector {
+  height: 40px;
+}
+.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector::after,
+.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,
+.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder {
+  line-height: 38px;
+}
+.ant-select-single.ant-select-lg:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input {
+  height: 38px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector {
+  height: 24px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector::after,
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder {
+  line-height: 22px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input {
+  height: 22px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search {
+  right: 7px;
+  left: 7px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector {
+  padding: 0 7px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search {
+  right: 28px;
+}
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,
+.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder {
+  padding-right: 21px;
+}
+.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector {
+  padding: 0 11px;
+}
+/**
+ * Do not merge `height` & `line-height` under style with `selection` & `search`,
+ * since chrome may update to redesign with its align logic.
+ */
+.ant-select-multiple .ant-select-selector {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-wrap: wrap;
+      flex-wrap: wrap;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 1px 4px;
+}
+.ant-select-show-search.ant-select-multiple .ant-select-selector {
+  cursor: text;
+}
+.ant-select-disabled.ant-select-multiple .ant-select-selector {
+  background: var(--content_bg);
+  cursor: not-allowed;
+}
+.ant-select-multiple .ant-select-selector::after {
+  display: inline-block;
+  width: 0;
+  margin: 2px 0;
+  line-height: 24px;
+  content: '\a0';
+}
+.ant-select-multiple.ant-select-show-arrow .ant-select-selector,
+.ant-select-multiple.ant-select-allow-clear .ant-select-selector {
+  padding-right: 24px;
+}
+.ant-select-multiple .ant-select-selection-item {
+  position: relative;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  max-width: 100%;
+  height: 24px;
+  margin-top: 2px;
+  margin-right: 4px;
+  margin-bottom: 2px;
+  padding: 0 4px 0 8px;
+  line-height: 22px;
+  background: rgba(255, 255, 255, 0.08);
+  border: 1px solid #5a6367;
+  border-radius: 2px;
+  cursor: default;
+  -webkit-transition: font-size 0.3s, line-height 0.3s, height 0.3s;
+  transition: font-size 0.3s, line-height 0.3s, height 0.3s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-select-disabled.ant-select-multiple .ant-select-selection-item {
+  color: #595959;
+  border-color: var(--layout_bg);
+  cursor: not-allowed;
+}
+.ant-select-multiple .ant-select-selection-item-content {
+  display: inline-block;
+  margin-right: 4px;
+  overflow: hidden;
+  white-space: pre;
+  text-overflow: ellipsis;
+}
+.ant-select-multiple .ant-select-selection-item-remove {
+  color: inherit;
+  font-style: normal;
+  line-height: 0;
+  text-align: center;
+  text-transform: none;
+  vertical-align: -0.125em;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  display: inline-block;
+  color: rgba(255, 255, 255, 0.45);
+  font-weight: bold;
+  font-size: 10px;
+  line-height: inherit;
+  cursor: pointer;
+}
+.ant-select-multiple .ant-select-selection-item-remove > * {
+  line-height: 1;
+}
+.ant-select-multiple .ant-select-selection-item-remove svg {
+  display: inline-block;
+}
+.ant-select-multiple .ant-select-selection-item-remove::before {
+  display: none;
+}
+.ant-select-multiple .ant-select-selection-item-remove .ant-select-multiple .ant-select-selection-item-remove-icon {
+  display: block;
+}
+.ant-select-multiple .ant-select-selection-item-remove > .anticon {
+  vertical-align: -0.2em;
+}
+.ant-select-multiple .ant-select-selection-item-remove:hover {
+  color: rgba(255, 255, 255, 0.75);
+}
+.ant-select-multiple .ant-select-selection-search {
+  position: relative;
+  margin-left: 0.5px;
+}
+.ant-select-multiple .ant-select-selection-search-input,
+.ant-select-multiple .ant-select-selection-search-mirror {
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+  line-height: 1.5715;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-select-multiple .ant-select-selection-search-input {
+  width: 100%;
+  min-width: 4.1px;
+}
+.ant-select-multiple .ant-select-selection-search-mirror {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 999;
+  white-space: pre;
+  visibility: hidden;
+}
+.ant-select-multiple .ant-select-selection-search:first-child > .ant-select-selection-search-input {
+  margin-left: 6.5px !important;
+}
+.ant-select-multiple .ant-select-selection-placeholder {
+  position: absolute;
+  top: 50%;
+  right: 11px;
+  left: 11px;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-select-multiple.ant-select-lg .ant-select-selector::after {
+  line-height: 32px;
+}
+.ant-select-multiple.ant-select-lg .ant-select-selection-item {
+  height: 32px;
+  line-height: 30px;
+}
+.ant-select-multiple.ant-select-lg .ant-select-selection-search {
+  height: 33px;
+  line-height: 33px;
+}
+.ant-select-multiple.ant-select-lg .ant-select-selection-search-input,
+.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror {
+  height: 32px;
+  line-height: 30px;
+}
+.ant-select-multiple.ant-select-sm .ant-select-selector::after {
+  line-height: 16px;
+}
+.ant-select-multiple.ant-select-sm .ant-select-selection-item {
+  height: 16px;
+  line-height: 14px;
+}
+.ant-select-multiple.ant-select-sm .ant-select-selection-search {
+  height: 17px;
+  line-height: 17px;
+}
+.ant-select-multiple.ant-select-sm .ant-select-selection-search-input,
+.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror {
+  height: 16px;
+  line-height: 14px;
+}
+.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder {
+  left: 7px;
+}
+.ant-select-multiple.ant-select-sm .ant-select-selection-search:first-child .ant-select-selection-search-input {
+  margin-left: 3px;
+}
+.ant-select-multiple.ant-select-lg .ant-select-selection-item {
+  height: 32px;
+  line-height: 32px;
+}
+.ant-select-disabled .ant-select-selection-item-remove {
+  display: none;
+}
+/* Reset search input style */
+.ant-select {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  cursor: pointer;
+}
+.ant-select:not(.ant-select-customize-input) .ant-select-selector {
+  position: relative;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-select:not(.ant-select-customize-input) .ant-select-selector input {
+  cursor: pointer;
+}
+.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector {
+  cursor: text;
+}
+.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector input {
+  cursor: auto;
+}
+.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+}
+.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector input {
+  cursor: not-allowed;
+}
+.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input {
+  margin: 0;
+  padding: 0;
+  background: transparent;
+  border: none;
+  outline: none;
+  -webkit-appearance: none;
+     -moz-appearance: none;
+          appearance: none;
+}
+.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button {
+  display: none;
+  -webkit-appearance: none;
+}
+.ant-select:not(.ant-select-disabled):hover .ant-select-selector {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-select-selection-item {
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+@media all and (-ms-high-contrast: none) {
+  .ant-select-selection-item *::-ms-backdrop,
+  .ant-select-selection-item {
+    -ms-flex: auto;
+        flex: auto;
+  }
+}
+.ant-select-selection-placeholder {
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  overflow: hidden;
+  color: var(--text_cl);
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+@media all and (-ms-high-contrast: none) {
+  .ant-select-selection-placeholder *::-ms-backdrop,
+  .ant-select-selection-placeholder {
+    -ms-flex: auto;
+        flex: auto;
+  }
+}
+.ant-select-arrow {
+  display: inline-block;
+  color: inherit;
+  font-style: normal;
+  line-height: 0;
+  text-transform: none;
+  vertical-align: -0.125em;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  position: absolute;
+  top: 53%;
+  right: 11px;
+  width: 12px;
+  height: 12px;
+  margin-top: -6px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 12px;
+  line-height: 1;
+  text-align: center;
+  pointer-events: none;
+}
+.ant-select-arrow > * {
+  line-height: 1;
+}
+.ant-select-arrow svg {
+  display: inline-block;
+}
+.ant-select-arrow::before {
+  display: none;
+}
+.ant-select-arrow .ant-select-arrow-icon {
+  display: block;
+}
+.ant-select-arrow .anticon {
+  vertical-align: top;
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+.ant-select-arrow .anticon > svg {
+  vertical-align: top;
+}
+.ant-select-arrow .anticon:not(.ant-select-suffix) {
+  pointer-events: auto;
+}
+.ant-select-disabled .ant-select-arrow {
+  cursor: not-allowed;
+}
+.ant-select-clear {
+  position: absolute;
+  top: 50%;
+  right: 11px;
+  z-index: 1;
+  display: inline-block;
+  width: 12px;
+  height: 12px;
+  margin-top: -6px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 12px;
+  font-style: normal;
+  line-height: 1;
+  text-align: center;
+  text-transform: none;
+  background: var(--content_bg);
+  cursor: pointer;
+  opacity: 0;
+  -webkit-transition: color 0.3s ease, opacity 0.15s ease;
+  transition: color 0.3s ease, opacity 0.15s ease;
+  text-rendering: auto;
+}
+.ant-select-clear::before {
+  display: block;
+}
+.ant-select-clear:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-select:hover .ant-select-clear {
+  opacity: 1;
+}
+.ant-select-dropdown {
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: -9999px;
+  left: -9999px;
+  z-index: 1050;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 4px 0;
+  overflow: hidden;
+  font-size: 14px;
+  font-variant: initial;
+  background-color: var(--layout_bg);
+  border-radius: 2px;
+  outline: none;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft,
+.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft {
+  -webkit-animation-name: antSlideUpIn;
+          animation-name: antSlideUpIn;
+}
+.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft,
+.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft {
+  -webkit-animation-name: antSlideDownIn;
+          animation-name: antSlideDownIn;
+}
+.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft {
+  -webkit-animation-name: antSlideUpOut;
+          animation-name: antSlideUpOut;
+}
+.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft {
+  -webkit-animation-name: antSlideDownOut;
+          animation-name: antSlideDownOut;
+}
+.ant-select-dropdown-hidden {
+  display: none;
+}
+.ant-select-dropdown-empty {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-select-item-empty {
+  position: relative;
+  display: block;
+  min-height: 32px;
+  padding: 5px 12px;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+  line-height: 22px;
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-select-item {
+  position: relative;
+  display: block;
+  min-height: 32px;
+  padding: 5px 12px;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+  line-height: 22px;
+  cursor: pointer;
+  -webkit-transition: background 0.3s ease;
+  transition: background 0.3s ease;
+}
+.ant-select-item-group {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 12px;
+  cursor: default;
+}
+.ant-select-item-option {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-select-item-option-content {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-select-item-option-state {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-select-item-option-active:not(.ant-select-item-option-disabled) {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-select-item-option-selected:not(.ant-select-item-option-disabled) {
+  color: var(--text_cl);
+  font-weight: 600;
+  background-color: var(--layout_bg);
+}
+.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state {
+  color: var(--menu_selected_bg);
+}
+.ant-select-item-option-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-select-item-option-grouped {
+  padding-left: 24px;
+}
+.ant-select-lg {
+  font-size: 16px;
+}
+.ant-select-borderless .ant-select-selector {
+  background-color: transparent !important;
+  border-color: transparent !important;
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+.ant-select-rtl {
+  direction: rtl;
+}
+.ant-select-rtl .ant-select-arrow {
+  right: initial;
+  left: 11px;
+}
+.ant-select-rtl .ant-select-clear {
+  right: initial;
+  left: 11px;
+}
+.ant-select-dropdown-rtl {
+  direction: rtl;
+}
+.ant-select-dropdown-rtl .ant-select-item-option-grouped {
+  padding-right: 24px;
+  padding-left: 12px;
+}
+.ant-select-rtl.ant-select-multiple.ant-select-show-arrow .ant-select-selector,
+.ant-select-rtl.ant-select-multiple.ant-select-allow-clear .ant-select-selector {
+  padding-right: 4px;
+  padding-left: 24px;
+}
+.ant-select-rtl.ant-select-multiple .ant-select-selection-item {
+  margin-right: 0;
+  margin-left: 4px;
+  padding: 0 8px 0 4px;
+  text-align: right;
+}
+.ant-select-rtl.ant-select-multiple .ant-select-selection-item-content {
+  margin-right: 0;
+  margin-left: 4px;
+  text-align: right;
+}
+.ant-select-rtl.ant-select-multiple .ant-select-selection-search {
+  margin-right: 0.5px;
+  margin-left: 4px;
+}
+.ant-select-rtl.ant-select-multiple .ant-select-selection-search-mirror {
+  right: 0;
+  left: auto;
+}
+.ant-select-rtl.ant-select-multiple .ant-select-selection-search:first-child > .ant-select-selection-search-input {
+  margin-right: 5px !important;
+  margin-left: 0 !important;
+}
+.ant-select-rtl.ant-select-multiple .ant-select-selection-placeholder {
+  right: 11px;
+  left: auto;
+}
+.ant-select-rtl.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder {
+  right: 7px;
+}
+.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-item,
+.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-placeholder {
+  right: 0;
+  left: 9px;
+  text-align: right;
+}
+.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-search {
+  right: 11px;
+  left: 25px;
+}
+.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-item,
+.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder {
+  padding-right: 0;
+  padding-left: 18px;
+}
+.ant-select-rtl.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
+  padding: 0 11px;
+}
+.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search {
+  right: 0;
+}
+.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,
+.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder {
+  padding-right: 0;
+  padding-left: 21px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-empty {
+  margin: 0 8px;
+  font-size: 14px;
+  line-height: 1.5715;
+  text-align: center;
+}
+.ant-empty-image {
+  height: 100px;
+  margin-bottom: 8px;
+}
+.ant-empty-image img {
+  height: 100%;
+}
+.ant-empty-image svg {
+  height: 100%;
+  margin: auto;
+}
+.ant-empty-description {
+  margin: 0;
+}
+.ant-empty-footer {
+  margin-top: 16px;
+}
+.ant-empty-normal {
+  margin: 32px 0;
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-empty-normal .ant-empty-image {
+  height: 40px;
+}
+.ant-empty-small {
+  margin: 8px 0;
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-empty-small .ant-empty-image {
+  height: 35px;
+}
+.ant-empty-img-default-ellipse {
+  fill-opacity: 0.08;
+  fill: #fff;
+}
+.ant-empty-img-default-path-1 {
+  fill: var(--content_bg);
+}
+.ant-empty-img-default-path-2 {
+  fill: url(#linearGradient-1);
+}
+.ant-empty-img-default-path-3 {
+  fill: #595959;
+}
+.ant-empty-img-default-path-4 {
+  fill: #cac1c1;
+}
+.ant-empty-img-default-path-5 {
+  fill: #595959;
+}
+.ant-empty-img-default-g {
+  fill: #cac1c1;
+}
+.ant-empty-img-simple-ellipse {
+  fill: #fff;
+  fill-opacity: 0.08;
+}
+.ant-empty-img-simple-g {
+  stroke: #cac1c1;
+}
+.ant-empty-img-simple-path {
+  fill: #404446;
+  stroke: #cac1c1;
+}
+.ant-empty-rtl {
+  direction: rtl;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-avatar {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  overflow: hidden;
+  color: #fff;
+  white-space: nowrap;
+  text-align: center;
+  vertical-align: middle;
+  background: rgba(255, 255, 255, 0.3);
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+  border-radius: 50%;
+}
+.ant-avatar-image {
+  background: transparent;
+}
+.ant-avatar .ant-image-img {
+  display: block;
+}
+.ant-avatar-string {
+  position: absolute;
+  left: 50%;
+  -webkit-transform-origin: 0 center;
+          transform-origin: 0 center;
+}
+.ant-avatar.ant-avatar-icon {
+  font-size: 18px;
+}
+.ant-avatar.ant-avatar-icon > .anticon {
+  margin: 0;
+}
+.ant-avatar-lg {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  border-radius: 50%;
+}
+.ant-avatar-lg-string {
+  position: absolute;
+  left: 50%;
+  -webkit-transform-origin: 0 center;
+          transform-origin: 0 center;
+}
+.ant-avatar-lg.ant-avatar-icon {
+  font-size: 24px;
+}
+.ant-avatar-lg.ant-avatar-icon > .anticon {
+  margin: 0;
+}
+.ant-avatar-sm {
+  width: 24px;
+  height: 24px;
+  line-height: 24px;
+  border-radius: 50%;
+}
+.ant-avatar-sm-string {
+  position: absolute;
+  left: 50%;
+  -webkit-transform-origin: 0 center;
+          transform-origin: 0 center;
+}
+.ant-avatar-sm.ant-avatar-icon {
+  font-size: 14px;
+}
+.ant-avatar-sm.ant-avatar-icon > .anticon {
+  margin: 0;
+}
+.ant-avatar-square {
+  border-radius: 2px;
+}
+.ant-avatar > img {
+  display: block;
+  width: 100%;
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+.ant-avatar-group {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-avatar-group .ant-avatar {
+  border: 1px solid #fff;
+}
+.ant-avatar-group .ant-avatar:not(:first-child) {
+  margin-left: -8px;
+}
+.ant-avatar-group-popover .ant-avatar + .ant-avatar {
+  margin-left: 3px;
+}
+.ant-avatar-group-rtl .ant-avatar:not(:first-child) {
+  margin-right: -8px;
+  margin-left: 0;
+}
+.ant-avatar-group-popover.ant-popover-rtl .ant-avatar + .ant-avatar {
+  margin-right: 3px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-popover {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1030;
+  font-weight: normal;
+  white-space: normal;
+  text-align: left;
+  cursor: auto;
+  -webkit-user-select: text;
+     -moz-user-select: text;
+      -ms-user-select: text;
+          user-select: text;
+}
+.ant-popover::after {
+  position: absolute;
+  background: rgba(255, 255, 255, 0.01);
+  content: '';
+}
+.ant-popover-hidden {
+  display: none;
+}
+.ant-popover-placement-top,
+.ant-popover-placement-topLeft,
+.ant-popover-placement-topRight {
+  padding-bottom: 10px;
+}
+.ant-popover-placement-right,
+.ant-popover-placement-rightTop,
+.ant-popover-placement-rightBottom {
+  padding-left: 10px;
+}
+.ant-popover-placement-bottom,
+.ant-popover-placement-bottomLeft,
+.ant-popover-placement-bottomRight {
+  padding-top: 10px;
+}
+.ant-popover-placement-left,
+.ant-popover-placement-leftTop,
+.ant-popover-placement-leftBottom {
+  padding-right: 10px;
+}
+.ant-popover-inner {
+  background-color: var(--layout_bg);
+  background-clip: padding-box;
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.45) \9;
+          box-shadow: 0 0 8px rgba(0, 0, 0, 0.45) \9;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+  .ant-popover {
+    /* IE10+ */
+  }
+  .ant-popover-inner {
+    -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+            box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+  }
+}
+.ant-popover-title {
+  min-width: 177px;
+  min-height: 32px;
+  margin: 0;
+  padding: 5px 16px 4px;
+  color: var(--text_cl);
+  font-weight: 500;
+  border-bottom: 1px solid #5a6367;
+}
+.ant-popover-inner-content {
+  padding: 12px 16px;
+  color: var(--text_cl);
+}
+.ant-popover-message {
+  position: relative;
+  padding: 4px 0 12px;
+  color: var(--text_cl);
+  font-size: 14px;
+}
+.ant-popover-message > .anticon {
+  position: absolute;
+  top: 8.0005px;
+  color: #d89614;
+  font-size: 14px;
+}
+.ant-popover-message-title {
+  padding-left: 22px;
+}
+.ant-popover-buttons {
+  margin-bottom: 4px;
+  text-align: right;
+}
+.ant-popover-buttons button {
+  margin-left: 8px;
+}
+.ant-popover-arrow {
+  position: absolute;
+  display: block;
+  width: 8.48528137px;
+  height: 8.48528137px;
+  background: transparent;
+  border-style: solid;
+  border-width: 4.24264069px;
+  -webkit-transform: rotate(45deg);
+          transform: rotate(45deg);
+}
+.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
+  bottom: 6.2px;
+  border-top-color: transparent;
+  border-right-color: var(--layout_bg);
+  border-bottom-color: var(--layout_bg);
+  border-left-color: transparent;
+  -webkit-box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
+}
+.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow {
+  left: 50%;
+  -webkit-transform: translateX(-50%) rotate(45deg);
+          transform: translateX(-50%) rotate(45deg);
+}
+.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow {
+  left: 16px;
+}
+.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
+  right: 16px;
+}
+.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {
+  left: 6px;
+  border-top-color: transparent;
+  border-right-color: transparent;
+  border-bottom-color: var(--layout_bg);
+  border-left-color: var(--layout_bg);
+  -webkit-box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);
+}
+.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow {
+  top: 50%;
+  -webkit-transform: translateY(-50%) rotate(45deg);
+          transform: translateY(-50%) rotate(45deg);
+}
+.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow {
+  top: 12px;
+}
+.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {
+  bottom: 12px;
+}
+.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
+  top: 6px;
+  border-top-color: var(--layout_bg);
+  border-right-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: var(--layout_bg);
+  -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);
+          box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);
+}
+.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow {
+  left: 50%;
+  -webkit-transform: translateX(-50%) rotate(45deg);
+          transform: translateX(-50%) rotate(45deg);
+}
+.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow {
+  left: 16px;
+}
+.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
+  right: 16px;
+}
+.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow,
+.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {
+  right: 6px;
+  border-top-color: var(--layout_bg);
+  border-right-color: var(--layout_bg);
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  -webkit-box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);
+}
+.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow {
+  top: 50%;
+  -webkit-transform: translateY(-50%) rotate(45deg);
+          transform: translateY(-50%) rotate(45deg);
+}
+.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow {
+  top: 12px;
+}
+.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {
+  bottom: 12px;
+}
+.ant-popover-rtl {
+  direction: rtl;
+  text-align: right;
+}
+.ant-popover-rtl .ant-popover-message-title {
+  padding-right: 22px;
+  padding-left: 16px;
+}
+.ant-popover-rtl .ant-popover-buttons {
+  text-align: left;
+}
+.ant-popover-rtl .ant-popover-buttons button {
+  margin-right: 8px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-back-top {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: fixed;
+  right: 100px;
+  bottom: 50px;
+  z-index: 10;
+  width: 40px;
+  height: 40px;
+  cursor: pointer;
+}
+.ant-back-top:empty {
+  display: none;
+}
+.ant-back-top-rtl {
+  right: auto;
+  left: 100px;
+  direction: rtl;
+}
+.ant-back-top-content {
+  width: 40px;
+  height: 40px;
+  overflow: hidden;
+  color: #fff;
+  text-align: center;
+  background-color: rgba(255, 255, 255, 0.45);
+  border-radius: 20px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-back-top-content:hover {
+  background-color: var(--text_cl);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-back-top-icon {
+  font-size: 24px;
+  line-height: 40px;
+}
+@media screen and (max-width: 768px) {
+  .ant-back-top {
+    right: 60px;
+  }
+}
+@media screen and (max-width: 480px) {
+  .ant-back-top {
+    right: 20px;
+  }
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-badge {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  line-height: 1;
+}
+.ant-badge-count {
+  z-index: auto;
+  min-width: 20px;
+  height: 20px;
+  padding: 0 6px;
+  color: #fff;
+  font-weight: normal;
+  font-size: 12px;
+  line-height: 20px;
+  white-space: nowrap;
+  text-align: center;
+  background: #a61d24;
+  border-radius: 10px;
+  -webkit-box-shadow: 0 0 0 1px var(--content_bg);
+          box-shadow: 0 0 0 1px var(--content_bg);
+}
+.ant-badge-count a,
+.ant-badge-count a:hover {
+  color: #fff;
+}
+.ant-badge-count-sm {
+  min-width: 14px;
+  height: 14px;
+  padding: 0;
+  font-size: 12px;
+  line-height: 14px;
+  border-radius: 7px;
+}
+.ant-badge-multiple-words {
+  padding: 0 8px;
+}
+.ant-badge-dot {
+  z-index: auto;
+  width: 6px;
+  height: 6px;
+  background: #a61d24;
+  border-radius: 100%;
+  -webkit-box-shadow: 0 0 0 1px var(--content_bg);
+          box-shadow: 0 0 0 1px var(--content_bg);
+}
+.ant-badge-count,
+.ant-badge-dot,
+.ant-badge .ant-scroll-number-custom-component {
+  position: absolute;
+  top: 0;
+  right: 0;
+  -webkit-transform: translate(50%, -50%);
+          transform: translate(50%, -50%);
+  -webkit-transform-origin: 100% 0%;
+          transform-origin: 100% 0%;
+}
+.ant-badge-status {
+  line-height: inherit;
+  vertical-align: baseline;
+}
+.ant-badge-status-dot {
+  position: relative;
+  top: -1px;
+  display: inline-block;
+  width: 6px;
+  height: 6px;
+  vertical-align: middle;
+  border-radius: 50%;
+}
+.ant-badge-status-success {
+  background-color: #49aa19;
+}
+.ant-badge-status-processing {
+  position: relative;
+  background-color: var(--menu_selected_bg);
+}
+.ant-badge-status-processing::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 1px solid var(--menu_selected_bg);
+  border-radius: 50%;
+  -webkit-animation: antStatusProcessing 1.2s infinite ease-in-out;
+          animation: antStatusProcessing 1.2s infinite ease-in-out;
+  content: '';
+}
+.ant-badge-status-default {
+  background-color: #d9d9d9;
+}
+.ant-badge-status-error {
+  background-color: #a61d24;
+}
+.ant-badge-status-warning {
+  background-color: #d89614;
+}
+.ant-badge-status-pink {
+  background: #cb2b83;
+}
+.ant-badge-status-magenta {
+  background: #cb2b83;
+}
+.ant-badge-status-red {
+  background: #d32029;
+}
+.ant-badge-status-volcano {
+  background: #d84a1b;
+}
+.ant-badge-status-orange {
+  background: #d87a16;
+}
+.ant-badge-status-yellow {
+  background: #d8bd14;
+}
+.ant-badge-status-gold {
+  background: #d89614;
+}
+.ant-badge-status-cyan {
+  background: #13a8a8;
+}
+.ant-badge-status-lime {
+  background: #8bbb11;
+}
+.ant-badge-status-green {
+  background: #49aa19;
+}
+.ant-badge-status-blue {
+  background: var(--menu_selected_bg);
+}
+.ant-badge-status-geekblue {
+  background: #2b4acb;
+}
+.ant-badge-status-purple {
+  background: #642ab5;
+}
+.ant-badge-status-text {
+  margin-left: 8px;
+  color: var(--text_cl);
+  font-size: 14px;
+}
+.ant-badge-zoom-appear,
+.ant-badge-zoom-enter {
+  -webkit-animation: antZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);
+          animation: antZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+}
+.ant-badge-zoom-leave {
+  -webkit-animation: antZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6);
+          animation: antZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6);
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+}
+.ant-badge-not-a-wrapper .ant-badge-zoom-appear,
+.ant-badge-not-a-wrapper .ant-badge-zoom-enter {
+  -webkit-animation: antNoWrapperZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);
+          animation: antNoWrapperZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);
+}
+.ant-badge-not-a-wrapper .ant-badge-zoom-leave {
+  -webkit-animation: antNoWrapperZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6);
+          animation: antNoWrapperZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6);
+}
+.ant-badge-not-a-wrapper:not(.ant-badge-status) {
+  vertical-align: middle;
+}
+.ant-badge-not-a-wrapper .ant-scroll-number {
+  position: relative;
+  top: auto;
+  display: block;
+  -webkit-transform-origin: 50% 50%;
+          transform-origin: 50% 50%;
+}
+.ant-badge-not-a-wrapper .ant-badge-count {
+  -webkit-transform: none;
+          transform: none;
+}
+@-webkit-keyframes antStatusProcessing {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(2.4);
+            transform: scale(2.4);
+    opacity: 0;
+  }
+}
+@keyframes antStatusProcessing {
+  0% {
+    -webkit-transform: scale(0.8);
+            transform: scale(0.8);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(2.4);
+            transform: scale(2.4);
+    opacity: 0;
+  }
+}
+.ant-scroll-number {
+  overflow: hidden;
+}
+.ant-scroll-number-only {
+  display: inline-block;
+  height: 20px;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-scroll-number-only > p.ant-scroll-number-only-unit {
+  height: 20px;
+  margin: 0;
+}
+.ant-scroll-number-symbol {
+  vertical-align: top;
+}
+@-webkit-keyframes antZoomBadgeIn {
+  0% {
+    -webkit-transform: scale(0) translate(50%, -50%);
+            transform: scale(0) translate(50%, -50%);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1) translate(50%, -50%);
+            transform: scale(1) translate(50%, -50%);
+  }
+}
+@keyframes antZoomBadgeIn {
+  0% {
+    -webkit-transform: scale(0) translate(50%, -50%);
+            transform: scale(0) translate(50%, -50%);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1) translate(50%, -50%);
+            transform: scale(1) translate(50%, -50%);
+  }
+}
+@-webkit-keyframes antZoomBadgeOut {
+  0% {
+    -webkit-transform: scale(1) translate(50%, -50%);
+            transform: scale(1) translate(50%, -50%);
+  }
+  100% {
+    -webkit-transform: scale(0) translate(50%, -50%);
+            transform: scale(0) translate(50%, -50%);
+    opacity: 0;
+  }
+}
+@keyframes antZoomBadgeOut {
+  0% {
+    -webkit-transform: scale(1) translate(50%, -50%);
+            transform: scale(1) translate(50%, -50%);
+  }
+  100% {
+    -webkit-transform: scale(0) translate(50%, -50%);
+            transform: scale(0) translate(50%, -50%);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes antNoWrapperZoomBadgeIn {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@keyframes antNoWrapperZoomBadgeIn {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@-webkit-keyframes antNoWrapperZoomBadgeOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  100% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+    opacity: 0;
+  }
+}
+@keyframes antNoWrapperZoomBadgeOut {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  100% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+    opacity: 0;
+  }
+}
+.ant-ribbon-wrapper {
+  position: relative;
+}
+.ant-ribbon {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: 8px;
+  height: 22px;
+  padding: 0 8px;
+  color: #fff;
+  line-height: 22px;
+  white-space: nowrap;
+  background-color: var(--menu_selected_bg);
+  border-radius: 2px;
+}
+.ant-ribbon-text {
+  color: #fff;
+}
+.ant-ribbon-corner {
+  position: absolute;
+  top: 100%;
+  width: 8px;
+  height: 8px;
+  color: currentColor;
+  border: 4px solid;
+  -webkit-transform: scaleY(0.75);
+          transform: scaleY(0.75);
+  -webkit-transform-origin: top;
+          transform-origin: top;
+}
+.ant-ribbon-corner::after {
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  width: inherit;
+  height: inherit;
+  color: rgba(0, 0, 0, 0.25);
+  border: inherit;
+  content: '';
+}
+.ant-ribbon-color-pink {
+  color: #cb2b83;
+  background: #cb2b83;
+}
+.ant-ribbon-color-magenta {
+  color: #cb2b83;
+  background: #cb2b83;
+}
+.ant-ribbon-color-red {
+  color: #d32029;
+  background: #d32029;
+}
+.ant-ribbon-color-volcano {
+  color: #d84a1b;
+  background: #d84a1b;
+}
+.ant-ribbon-color-orange {
+  color: #d87a16;
+  background: #d87a16;
+}
+.ant-ribbon-color-yellow {
+  color: #d8bd14;
+  background: #d8bd14;
+}
+.ant-ribbon-color-gold {
+  color: #d89614;
+  background: #d89614;
+}
+.ant-ribbon-color-cyan {
+  color: #13a8a8;
+  background: #13a8a8;
+}
+.ant-ribbon-color-lime {
+  color: #8bbb11;
+  background: #8bbb11;
+}
+.ant-ribbon-color-green {
+  color: #49aa19;
+  background: #49aa19;
+}
+.ant-ribbon-color-blue {
+  color: var(--menu_selected_bg);
+  background: var(--menu_selected_bg);
+}
+.ant-ribbon-color-geekblue {
+  color: #2b4acb;
+  background: #2b4acb;
+}
+.ant-ribbon-color-purple {
+  color: #642ab5;
+  background: #642ab5;
+}
+.ant-ribbon.ant-ribbon-placement-end {
+  right: -8px;
+  border-bottom-right-radius: 0;
+}
+.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner {
+  right: 0;
+  border-color: currentColor transparent transparent currentColor;
+}
+.ant-ribbon.ant-ribbon-placement-start {
+  left: -8px;
+  border-bottom-left-radius: 0;
+}
+.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner {
+  left: 0;
+  border-color: currentColor currentColor transparent transparent;
+}
+.ant-badge-rtl {
+  direction: rtl;
+}
+.ant-badge-rtl .ant-badge-count,
+.ant-badge-rtl .ant-badge-dot,
+.ant-badge-rtl .ant-badge .ant-scroll-number-custom-component {
+  right: auto;
+  left: 0;
+  direction: ltr;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  -webkit-transform-origin: 0% 0%;
+          transform-origin: 0% 0%;
+}
+.ant-badge-rtl.ant-badge .ant-scroll-number-custom-component {
+  right: auto;
+  left: 0;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  -webkit-transform-origin: 0% 0%;
+          transform-origin: 0% 0%;
+}
+.ant-badge-rtl .ant-badge-status-text {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-badge-rtl .ant-badge-zoom-appear,
+.ant-badge-rtl .ant-badge-zoom-enter {
+  -webkit-animation-name: antZoomBadgeInRtl;
+          animation-name: antZoomBadgeInRtl;
+}
+.ant-badge-rtl .ant-badge-zoom-leave {
+  -webkit-animation-name: antZoomBadgeOutRtl;
+          animation-name: antZoomBadgeOutRtl;
+}
+.ant-badge-not-a-wrapper .ant-badge-count {
+  -webkit-transform: none;
+          transform: none;
+}
+.ant-ribbon-rtl {
+  direction: rtl;
+}
+.ant-ribbon-rtl.ant-ribbon-placement-end {
+  right: unset;
+  left: -8px;
+  border-bottom-right-radius: 2px;
+  border-bottom-left-radius: 0;
+}
+.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner {
+  right: unset;
+  left: 0;
+  border-color: currentColor currentColor transparent transparent;
+}
+.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner::after {
+  border-color: currentColor currentColor transparent transparent;
+}
+.ant-ribbon-rtl.ant-ribbon-placement-start {
+  right: -8px;
+  left: unset;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 2px;
+}
+.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner {
+  right: 0;
+  left: unset;
+  border-color: currentColor transparent transparent currentColor;
+}
+.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner::after {
+  border-color: currentColor transparent transparent currentColor;
+}
+@-webkit-keyframes antZoomBadgeInRtl {
+  0% {
+    -webkit-transform: scale(0) translate(-50%, -50%);
+            transform: scale(0) translate(-50%, -50%);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1) translate(-50%, -50%);
+            transform: scale(1) translate(-50%, -50%);
+  }
+}
+@keyframes antZoomBadgeInRtl {
+  0% {
+    -webkit-transform: scale(0) translate(-50%, -50%);
+            transform: scale(0) translate(-50%, -50%);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: scale(1) translate(-50%, -50%);
+            transform: scale(1) translate(-50%, -50%);
+  }
+}
+@-webkit-keyframes antZoomBadgeOutRtl {
+  0% {
+    -webkit-transform: scale(1) translate(-50%, -50%);
+            transform: scale(1) translate(-50%, -50%);
+  }
+  100% {
+    -webkit-transform: scale(0) translate(-50%, -50%);
+            transform: scale(0) translate(-50%, -50%);
+    opacity: 0;
+  }
+}
+@keyframes antZoomBadgeOutRtl {
+  0% {
+    -webkit-transform: scale(1) translate(-50%, -50%);
+            transform: scale(1) translate(-50%, -50%);
+  }
+  100% {
+    -webkit-transform: scale(0) translate(-50%, -50%);
+            transform: scale(0) translate(-50%, -50%);
+    opacity: 0;
+  }
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-breadcrumb {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+}
+.ant-breadcrumb .anticon {
+  font-size: 14px;
+}
+.ant-breadcrumb a {
+  color: rgba(255, 255, 255, 0.45);
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-breadcrumb a:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-breadcrumb > span:last-child {
+  color: var(--text_cl);
+}
+.ant-breadcrumb > span:last-child a {
+  color: var(--text_cl);
+}
+.ant-breadcrumb > span:last-child .ant-breadcrumb-separator {
+  display: none;
+}
+.ant-breadcrumb-separator {
+  margin: 0 8px;
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-breadcrumb-link > .anticon + span,
+.ant-breadcrumb-link > .anticon + a {
+  margin-left: 4px;
+}
+.ant-breadcrumb-overlay-link > .anticon {
+  margin-left: 4px;
+}
+.ant-breadcrumb-rtl {
+  direction: rtl;
+}
+.ant-breadcrumb-rtl::before {
+  display: table;
+  content: '';
+}
+.ant-breadcrumb-rtl::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-breadcrumb-rtl > span {
+  float: right;
+}
+.ant-breadcrumb-rtl .ant-breadcrumb-link > .anticon + span,
+.ant-breadcrumb-rtl .ant-breadcrumb-link > .anticon + a {
+  margin-right: 4px;
+  margin-left: 0;
+}
+.ant-breadcrumb-rtl .ant-breadcrumb-overlay-link > .anticon {
+  margin-right: 4px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-menu-item-danger.ant-menu-item {
+  color: #a61d24;
+}
+.ant-menu-item-danger.ant-menu-item:hover,
+.ant-menu-item-danger.ant-menu-item-active {
+  color: #a61d24;
+}
+.ant-menu-item-danger.ant-menu-item:active {
+  background: #2a1215;
+}
+.ant-menu-item-danger.ant-menu-item-selected {
+  color: #a61d24;
+}
+.ant-menu-item-danger.ant-menu-item-selected > a,
+.ant-menu-item-danger.ant-menu-item-selected > a:hover {
+  color: #a61d24;
+}
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {
+  background-color: #2a1215;
+}
+.ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {
+  border-right-color: #a61d24;
+}
+.ant-menu-dark .ant-menu-item-danger.ant-menu-item,
+.ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover,
+.ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {
+  color: #a61d24;
+}
+.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {
+  color: #fff;
+  background-color: #a61d24;
+}
+.ant-menu {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  margin-bottom: 0;
+  padding-left: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 0;
+  text-align: left;
+  list-style: none;
+  background: var(--menu_bg);
+  outline: none;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+  -webkit-transition: background 0.3s, width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s;
+  transition: background 0.3s, width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s;
+}
+.ant-menu::before {
+  display: table;
+  content: '';
+}
+.ant-menu::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-menu ul,
+.ant-menu ol {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.ant-menu-hidden {
+  display: none;
+}
+.ant-menu-item-group-title {
+  height: 1.5715;
+  padding: 8px 16px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  line-height: 1.5715;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-menu-horizontal .ant-menu-submenu {
+  -webkit-transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-submenu,
+.ant-menu-submenu-inline {
+  -webkit-transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-submenu-selected {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-item:active,
+.ant-menu-submenu-title:active {
+  background: var(--layout_bg);
+}
+.ant-menu-submenu .ant-menu-sub {
+  cursor: initial;
+  -webkit-transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-item a {
+  color: var(--text_cl);
+}
+.ant-menu-item a:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-item a::before {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background-color: transparent;
+  content: '';
+}
+.ant-menu-item > .ant-badge a {
+  color: var(--text_cl);
+}
+.ant-menu-item > .ant-badge a:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-item-divider {
+  height: 1px;
+  overflow: hidden;
+  line-height: 0;
+  background-color: #5a6367;
+}
+.ant-menu-item:hover,
+.ant-menu-item-active,
+.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
+.ant-menu-submenu-active,
+.ant-menu-submenu-title:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-horizontal .ant-menu-item,
+.ant-menu-horizontal .ant-menu-submenu {
+  margin-top: -1px;
+}
+.ant-menu-horizontal > .ant-menu-item:hover,
+.ant-menu-horizontal > .ant-menu-item-active,
+.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {
+  background-color: transparent;
+}
+.ant-menu-item-selected {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-item-selected a,
+.ant-menu-item-selected a:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
+  background-color: var(--layout_bg);
+}
+.ant-menu-inline,
+.ant-menu-vertical,
+.ant-menu-vertical-left {
+  border-right: 1px solid #5a6367;
+}
+.ant-menu-vertical-right {
+  border-left: 1px solid #5a6367;
+}
+.ant-menu-vertical.ant-menu-sub,
+.ant-menu-vertical-left.ant-menu-sub,
+.ant-menu-vertical-right.ant-menu-sub {
+  min-width: 160px;
+  max-height: calc(100vh - 100px);
+  padding: 0;
+  overflow: hidden;
+  border-right: 0;
+}
+.ant-menu-vertical.ant-menu-sub:not([class*='-active']),
+.ant-menu-vertical-left.ant-menu-sub:not([class*='-active']),
+.ant-menu-vertical-right.ant-menu-sub:not([class*='-active']) {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.ant-menu-vertical.ant-menu-sub .ant-menu-item,
+.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,
+.ant-menu-vertical-right.ant-menu-sub .ant-menu-item {
+  left: 0;
+  margin-left: 0;
+  border-right: 0;
+}
+.ant-menu-vertical.ant-menu-sub .ant-menu-item::after,
+.ant-menu-vertical-left.ant-menu-sub .ant-menu-item::after,
+.ant-menu-vertical-right.ant-menu-sub .ant-menu-item::after {
+  border-right: 0;
+}
+.ant-menu-vertical.ant-menu-sub > .ant-menu-item,
+.ant-menu-vertical-left.ant-menu-sub > .ant-menu-item,
+.ant-menu-vertical-right.ant-menu-sub > .ant-menu-item,
+.ant-menu-vertical.ant-menu-sub > .ant-menu-submenu,
+.ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu,
+.ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu {
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+.ant-menu-horizontal.ant-menu-sub {
+  min-width: 114px;
+}
+.ant-menu-horizontal .ant-menu-item,
+.ant-menu-horizontal .ant-menu-submenu-title {
+  -webkit-transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-item,
+.ant-menu-submenu-title {
+  position: relative;
+  display: block;
+  margin: 0;
+  padding: 0 20px;
+  white-space: nowrap;
+  cursor: pointer;
+  -webkit-transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-item .ant-menu-item-icon,
+.ant-menu-submenu-title .ant-menu-item-icon,
+.ant-menu-item .anticon,
+.ant-menu-submenu-title .anticon {
+  min-width: 14px;
+  margin-right: 10px;
+  font-size: 14px;
+  -webkit-transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-item .ant-menu-item-icon + span,
+.ant-menu-submenu-title .ant-menu-item-icon + span,
+.ant-menu-item .anticon + span,
+.ant-menu-submenu-title .anticon + span {
+  opacity: 1;
+  -webkit-transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-item.ant-menu-item-only-child > .anticon,
+.ant-menu-submenu-title.ant-menu-item-only-child > .anticon,
+.ant-menu-item.ant-menu-item-only-child > .ant-menu-item-icon,
+.ant-menu-submenu-title.ant-menu-item-only-child > .ant-menu-item-icon {
+  margin-right: 0;
+}
+.ant-menu > .ant-menu-item-divider {
+  height: 1px;
+  margin: 1px 0;
+  padding: 0;
+  overflow: hidden;
+  line-height: 0;
+  background-color: #5a6367;
+}
+.ant-menu-submenu-popup {
+  position: absolute;
+  z-index: 1050;
+  background: transparent;
+  border-radius: 2px;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+.ant-menu-submenu-popup::before {
+  position: absolute;
+  top: -7px;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: -1;
+  width: 100%;
+  height: 100%;
+  opacity: 0.0001;
+  content: ' ';
+}
+.ant-menu-submenu-placement-rightTop::before {
+  top: 0;
+  left: -7px;
+}
+.ant-menu-submenu > .ant-menu {
+  background-color: var(--content_bg);
+  border-radius: 2px;
+}
+.ant-menu-submenu > .ant-menu-submenu-title::after {
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-submenu-popup > .ant-menu {
+  background-color: var(--layout_bg);
+}
+.ant-menu-submenu-expand-icon,
+.ant-menu-submenu-arrow {
+  position: absolute;
+  top: 50%;
+  right: 16px;
+  width: 10px;
+  color: var(--text_cl);
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-submenu-arrow::before,
+.ant-menu-submenu-arrow::after {
+  position: absolute;
+  width: 6px;
+  height: 1.5px;
+  background-color: currentColor;
+  border-radius: 2px;
+  -webkit-transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  content: '';
+}
+.ant-menu-submenu-arrow::before {
+  -webkit-transform: rotate(45deg) translateY(-2.5px);
+          transform: rotate(45deg) translateY(-2.5px);
+}
+.ant-menu-submenu-arrow::after {
+  -webkit-transform: rotate(-45deg) translateY(2.5px);
+          transform: rotate(-45deg) translateY(2.5px);
+}
+.ant-menu-submenu:hover > .ant-menu-submenu-title > .ant-menu-submenu-expand-icon,
+.ant-menu-submenu:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-submenu-inline .ant-menu-submenu-arrow::before {
+  -webkit-transform: rotate(-45deg) translateX(2.5px);
+          transform: rotate(-45deg) translateX(2.5px);
+}
+.ant-menu-submenu-inline .ant-menu-submenu-arrow::after {
+  -webkit-transform: rotate(45deg) translateX(-2.5px);
+          transform: rotate(45deg) translateX(-2.5px);
+}
+.ant-menu-submenu-horizontal .ant-menu-submenu-arrow {
+  display: none;
+}
+.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title > .ant-menu-submenu-arrow {
+  -webkit-transform: translateY(-2px);
+          transform: translateY(-2px);
+}
+.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {
+  -webkit-transform: rotate(-45deg) translateX(-2.5px);
+          transform: rotate(-45deg) translateX(-2.5px);
+}
+.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before {
+  -webkit-transform: rotate(45deg) translateX(2.5px);
+          transform: rotate(45deg) translateX(2.5px);
+}
+.ant-menu-vertical .ant-menu-submenu-selected,
+.ant-menu-vertical-left .ant-menu-submenu-selected,
+.ant-menu-vertical-right .ant-menu-submenu-selected {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-horizontal {
+  line-height: 46px;
+  border: 0;
+  border-bottom: 1px solid #5a6367;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu {
+  margin: 0 20px;
+  margin-top: -1px;
+  margin-bottom: 0;
+  padding: 0 20px;
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-active,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-active,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-open,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-open,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-selected,
+.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected {
+  color: var(--menu_selected_bg);
+  border-bottom: 2px solid var(--menu_selected_bg);
+}
+.ant-menu-horizontal > .ant-menu-item,
+.ant-menu-horizontal > .ant-menu-submenu {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  vertical-align: bottom;
+  border-bottom: 2px solid transparent;
+}
+.ant-menu-horizontal > .ant-menu-submenu > .ant-menu-submenu-title {
+  padding: 0;
+}
+.ant-menu-horizontal > .ant-menu-item a {
+  color: var(--text_cl);
+}
+.ant-menu-horizontal > .ant-menu-item a:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-horizontal > .ant-menu-item a::before {
+  bottom: -2px;
+}
+.ant-menu-horizontal > .ant-menu-item-selected a {
+  color: var(--menu_selected_bg);
+}
+.ant-menu-horizontal::after {
+  display: block;
+  clear: both;
+  height: 0;
+  content: '\20';
+}
+.ant-menu-vertical .ant-menu-item,
+.ant-menu-vertical-left .ant-menu-item,
+.ant-menu-vertical-right .ant-menu-item,
+.ant-menu-inline .ant-menu-item {
+  position: relative;
+}
+.ant-menu-vertical .ant-menu-item::after,
+.ant-menu-vertical-left .ant-menu-item::after,
+.ant-menu-vertical-right .ant-menu-item::after,
+.ant-menu-inline .ant-menu-item::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  border-right: 3px solid var(--menu_selected_bg);
+  -webkit-transform: scaleY(0.0001);
+          transform: scaleY(0.0001);
+  opacity: 0;
+  -webkit-transition: opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
+  transition: opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
+  transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
+  transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
+  content: '';
+}
+.ant-menu-vertical .ant-menu-item,
+.ant-menu-vertical-left .ant-menu-item,
+.ant-menu-vertical-right .ant-menu-item,
+.ant-menu-inline .ant-menu-item,
+.ant-menu-vertical .ant-menu-submenu-title,
+.ant-menu-vertical-left .ant-menu-submenu-title,
+.ant-menu-vertical-right .ant-menu-submenu-title,
+.ant-menu-inline .ant-menu-submenu-title {
+  height: 40px;
+  margin-top: 4px;
+  margin-bottom: 4px;
+  padding: 0 16px;
+  overflow: hidden;
+  line-height: 40px;
+  text-overflow: ellipsis;
+}
+.ant-menu-vertical .ant-menu-submenu,
+.ant-menu-vertical-left .ant-menu-submenu,
+.ant-menu-vertical-right .ant-menu-submenu,
+.ant-menu-inline .ant-menu-submenu {
+  padding-bottom: 0.02px;
+}
+.ant-menu-vertical .ant-menu-item:not(:last-child),
+.ant-menu-vertical-left .ant-menu-item:not(:last-child),
+.ant-menu-vertical-right .ant-menu-item:not(:last-child),
+.ant-menu-inline .ant-menu-item:not(:last-child) {
+  margin-bottom: 8px;
+}
+.ant-menu-vertical > .ant-menu-item,
+.ant-menu-vertical-left > .ant-menu-item,
+.ant-menu-vertical-right > .ant-menu-item,
+.ant-menu-inline > .ant-menu-item,
+.ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title,
+.ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title,
+.ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title,
+.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
+  height: 40px;
+  line-height: 40px;
+}
+.ant-menu-vertical .ant-menu-submenu-title {
+  padding-right: 34px;
+}
+.ant-menu-inline {
+  width: 100%;
+}
+.ant-menu-inline .ant-menu-selected::after,
+.ant-menu-inline .ant-menu-item-selected::after {
+  -webkit-transform: scaleY(1);
+          transform: scaleY(1);
+  opacity: 1;
+  -webkit-transition: opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-menu-inline .ant-menu-item,
+.ant-menu-inline .ant-menu-submenu-title {
+  width: calc(100% + 1px);
+}
+.ant-menu-inline .ant-menu-submenu-title {
+  padding-right: 34px;
+}
+.ant-menu-inline-collapsed {
+  width: 80px;
+}
+.ant-menu-inline-collapsed > .ant-menu-item,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title,
+.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
+  left: 0;
+  padding: 0 calc(50% - 16px / 2);
+  text-overflow: clip;
+}
+.ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow,
+.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+  display: none;
+}
+.ant-menu-inline-collapsed > .ant-menu-item .ant-menu-item-icon,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-item-icon,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-item-icon,
+.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-item-icon,
+.ant-menu-inline-collapsed > .ant-menu-item .anticon,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon,
+.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon {
+  margin: 0;
+  font-size: 16px;
+  line-height: 40px;
+}
+.ant-menu-inline-collapsed > .ant-menu-item .ant-menu-item-icon + span,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-item-icon + span,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-item-icon + span,
+.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-item-icon + span,
+.ant-menu-inline-collapsed > .ant-menu-item .anticon + span,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span,
+.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span,
+.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {
+  display: inline-block;
+  max-width: 0;
+  opacity: 0;
+}
+.ant-menu-inline-collapsed .ant-menu-item-icon,
+.ant-menu-inline-collapsed .anticon {
+  display: inline-block;
+}
+.ant-menu-inline-collapsed-tooltip {
+  pointer-events: none;
+}
+.ant-menu-inline-collapsed-tooltip .ant-menu-item-icon,
+.ant-menu-inline-collapsed-tooltip .anticon {
+  display: none;
+}
+.ant-menu-inline-collapsed-tooltip a {
+  color: var(--text_cl);
+}
+.ant-menu-inline-collapsed .ant-menu-item-group-title {
+  padding-right: 4px;
+  padding-left: 4px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-menu-item-group-list {
+  margin: 0;
+  padding: 0;
+}
+.ant-menu-item-group-list .ant-menu-item,
+.ant-menu-item-group-list .ant-menu-submenu-title {
+  padding: 0 16px 0 28px;
+}
+.ant-menu-root.ant-menu-vertical,
+.ant-menu-root.ant-menu-vertical-left,
+.ant-menu-root.ant-menu-vertical-right,
+.ant-menu-root.ant-menu-inline {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-menu-root.ant-menu-inline-collapsed .ant-menu-item > .ant-menu-inline-collapsed-noicon,
+.ant-menu-root.ant-menu-inline-collapsed .ant-menu-submenu .ant-menu-submenu-title > .ant-menu-inline-collapsed-noicon {
+  font-size: 16px;
+  text-align: center;
+}
+.ant-menu-sub.ant-menu-inline {
+  padding: 0;
+  border: 0;
+  border-radius: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-menu-sub.ant-menu-inline > .ant-menu-item,
+.ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
+  height: 40px;
+  line-height: 40px;
+  list-style-position: inside;
+  list-style-type: disc;
+}
+.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title {
+  padding-left: 32px;
+}
+.ant-menu-item-disabled,
+.ant-menu-submenu-disabled {
+  color: rgba(255, 255, 255, 0.3) !important;
+  background: none;
+  border-color: transparent !important;
+  cursor: not-allowed;
+}
+.ant-menu-item-disabled a,
+.ant-menu-submenu-disabled a {
+  color: rgba(255, 255, 255, 0.3) !important;
+  pointer-events: none;
+}
+.ant-menu-item-disabled > .ant-menu-submenu-title,
+.ant-menu-submenu-disabled > .ant-menu-submenu-title {
+  color: rgba(255, 255, 255, 0.3) !important;
+  cursor: not-allowed;
+}
+.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {
+  background: rgba(255, 255, 255, 0.3) !important;
+}
+.ant-layout-header .ant-menu {
+  line-height: inherit;
+}
+.ant-menu.ant-menu-dark,
+.ant-menu-dark .ant-menu-sub,
+.ant-menu.ant-menu-dark .ant-menu-sub {
+  color: rgba(255, 255, 255, 0.65);
+  background: var(--menu_bg);
+}
+.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow,
+.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow {
+  opacity: 0.45;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after,
+.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after,
+.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before,
+.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before {
+  background: #fff;
+}
+.ant-menu-dark.ant-menu-submenu-popup {
+  background: transparent;
+}
+.ant-menu-dark .ant-menu-inline.ant-menu-sub {
+  background: var(--content_bg);
+}
+.ant-menu-dark.ant-menu-horizontal {
+  border-bottom: 0;
+}
+.ant-menu-dark.ant-menu-horizontal > .ant-menu-item,
+.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {
+  top: 0;
+  margin-top: 0;
+  padding: 0 20px;
+  border-color: var(--menu_bg);
+  border-bottom: 0;
+}
+.ant-menu-dark.ant-menu-horizontal > .ant-menu-item:hover {
+  background-color: var(--menu_selected_bg);
+}
+.ant-menu-dark.ant-menu-horizontal > .ant-menu-item > a::before {
+  bottom: 0;
+}
+.ant-menu-dark .ant-menu-item,
+.ant-menu-dark .ant-menu-item-group-title,
+.ant-menu-dark .ant-menu-item > a,
+.ant-menu-dark .ant-menu-item > span > a {
+  color: rgba(255, 255, 255, 0.65);
+}
+.ant-menu-dark.ant-menu-inline,
+.ant-menu-dark.ant-menu-vertical,
+.ant-menu-dark.ant-menu-vertical-left,
+.ant-menu-dark.ant-menu-vertical-right {
+  border-right: 0;
+}
+.ant-menu-dark.ant-menu-inline .ant-menu-item,
+.ant-menu-dark.ant-menu-vertical .ant-menu-item,
+.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,
+.ant-menu-dark.ant-menu-vertical-right .ant-menu-item {
+  left: 0;
+  margin-left: 0;
+  border-right: 0;
+}
+.ant-menu-dark.ant-menu-inline .ant-menu-item::after,
+.ant-menu-dark.ant-menu-vertical .ant-menu-item::after,
+.ant-menu-dark.ant-menu-vertical-left .ant-menu-item::after,
+.ant-menu-dark.ant-menu-vertical-right .ant-menu-item::after {
+  border-right: 0;
+}
+.ant-menu-dark.ant-menu-inline .ant-menu-item,
+.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title {
+  width: 100%;
+}
+.ant-menu-dark .ant-menu-item:hover,
+.ant-menu-dark .ant-menu-item-active,
+.ant-menu-dark .ant-menu-submenu-active,
+.ant-menu-dark .ant-menu-submenu-open,
+.ant-menu-dark .ant-menu-submenu-selected,
+.ant-menu-dark .ant-menu-submenu-title:hover {
+  color: #fff;
+  background-color: transparent;
+}
+.ant-menu-dark .ant-menu-item:hover > a,
+.ant-menu-dark .ant-menu-item-active > a,
+.ant-menu-dark .ant-menu-submenu-active > a,
+.ant-menu-dark .ant-menu-submenu-open > a,
+.ant-menu-dark .ant-menu-submenu-selected > a,
+.ant-menu-dark .ant-menu-submenu-title:hover > a,
+.ant-menu-dark .ant-menu-item:hover > span > a,
+.ant-menu-dark .ant-menu-item-active > span > a,
+.ant-menu-dark .ant-menu-submenu-active > span > a,
+.ant-menu-dark .ant-menu-submenu-open > span > a,
+.ant-menu-dark .ant-menu-submenu-selected > span > a,
+.ant-menu-dark .ant-menu-submenu-title:hover > span > a {
+  color: #fff;
+}
+.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
+.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow {
+  opacity: 1;
+}
+.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before {
+  background: #fff;
+}
+.ant-menu-dark .ant-menu-item:hover {
+  background-color: transparent;
+}
+.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected {
+  background-color: var(--menu_selected_bg);
+}
+.ant-menu-dark .ant-menu-item-selected {
+  color: #fff;
+  border-right: 0;
+}
+.ant-menu-dark .ant-menu-item-selected::after {
+  border-right: 0;
+}
+.ant-menu-dark .ant-menu-item-selected > a,
+.ant-menu-dark .ant-menu-item-selected > span > a,
+.ant-menu-dark .ant-menu-item-selected > a:hover,
+.ant-menu-dark .ant-menu-item-selected > span > a:hover {
+  color: #fff;
+}
+.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon,
+.ant-menu-dark .ant-menu-item-selected .anticon {
+  color: #fff;
+}
+.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon + span,
+.ant-menu-dark .ant-menu-item-selected .anticon + span {
+  color: #fff;
+}
+.ant-menu.ant-menu-dark .ant-menu-item-selected,
+.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected {
+  background-color: var(--menu_selected_bg);
+}
+.ant-menu-dark .ant-menu-item-disabled,
+.ant-menu-dark .ant-menu-submenu-disabled,
+.ant-menu-dark .ant-menu-item-disabled > a,
+.ant-menu-dark .ant-menu-submenu-disabled > a,
+.ant-menu-dark .ant-menu-item-disabled > span > a,
+.ant-menu-dark .ant-menu-submenu-disabled > span > a {
+  color: rgba(255, 255, 255, 0.3) !important;
+  opacity: 0.8;
+}
+.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title,
+.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {
+  color: rgba(255, 255, 255, 0.3) !important;
+}
+.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,
+.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,
+.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {
+  background: rgba(255, 255, 255, 0.3) !important;
+}
+.ant-menu.ant-menu-rtl {
+  direction: rtl;
+  text-align: right;
+}
+.ant-menu-rtl .ant-menu-item-group-title {
+  text-align: right;
+}
+.ant-menu-rtl.ant-menu-inline,
+.ant-menu-rtl.ant-menu-vertical {
+  border-right: none;
+  border-left: 1px solid #5a6367;
+}
+.ant-menu-rtl.ant-menu-dark.ant-menu-inline,
+.ant-menu-rtl.ant-menu-dark.ant-menu-vertical {
+  border-left: none;
+}
+.ant-menu-rtl.ant-menu-vertical.ant-menu-sub > .ant-menu-item,
+.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub > .ant-menu-item,
+.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub > .ant-menu-item,
+.ant-menu-rtl.ant-menu-vertical.ant-menu-sub > .ant-menu-submenu,
+.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu,
+.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu {
+  -webkit-transform-origin: top right;
+          transform-origin: top right;
+}
+.ant-menu-rtl .ant-menu-item .ant-menu-item-icon,
+.ant-menu-rtl .ant-menu-submenu-title .ant-menu-item-icon,
+.ant-menu-rtl .ant-menu-item .anticon,
+.ant-menu-rtl .ant-menu-submenu-title .anticon {
+  margin-right: auto;
+  margin-left: 10px;
+}
+.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child > .ant-menu-item-icon,
+.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child > .ant-menu-item-icon,
+.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child > .anticon,
+.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child > .anticon {
+  margin-left: 0;
+}
+.ant-menu-submenu-rtl.ant-menu-submenu-popup {
+  -webkit-transform-origin: 100% 0;
+          transform-origin: 100% 0;
+}
+.ant-menu-rtl .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow,
+.ant-menu-rtl .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow,
+.ant-menu-rtl .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow,
+.ant-menu-rtl .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+  right: auto;
+  left: 16px;
+}
+.ant-menu-rtl .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,
+.ant-menu-rtl .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,
+.ant-menu-rtl .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before {
+  -webkit-transform: rotate(-45deg) translateY(-2px);
+          transform: rotate(-45deg) translateY(-2px);
+}
+.ant-menu-rtl .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,
+.ant-menu-rtl .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,
+.ant-menu-rtl .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after {
+  -webkit-transform: rotate(45deg) translateY(2px);
+          transform: rotate(45deg) translateY(2px);
+}
+.ant-menu-rtl.ant-menu-vertical .ant-menu-item::after,
+.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item::after,
+.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item::after,
+.ant-menu-rtl.ant-menu-inline .ant-menu-item::after {
+  right: auto;
+  left: 0;
+}
+.ant-menu-rtl.ant-menu-vertical .ant-menu-item,
+.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item,
+.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item,
+.ant-menu-rtl.ant-menu-inline .ant-menu-item,
+.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title,
+.ant-menu-rtl.ant-menu-vertical-left .ant-menu-submenu-title,
+.ant-menu-rtl.ant-menu-vertical-right .ant-menu-submenu-title,
+.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title {
+  text-align: right;
+}
+.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title {
+  padding-right: 0;
+  padding-left: 34px;
+}
+.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title {
+  padding-right: 16px;
+  padding-left: 34px;
+}
+.ant-menu-rtl.ant-menu-inline-collapsed.ant-menu-vertical .ant-menu-submenu-title {
+  padding: 0 calc(50% - 16px / 2);
+}
+.ant-menu-rtl .ant-menu-item-group-list .ant-menu-item,
+.ant-menu-rtl .ant-menu-item-group-list .ant-menu-submenu-title {
+  padding: 0 28px 0 16px;
+}
+.ant-menu-sub.ant-menu-inline {
+  border: 0;
+}
+.ant-menu-rtl.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title {
+  padding-right: 32px;
+  padding-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-tooltip {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  max-width: 250px;
+  visibility: visible;
+}
+.ant-tooltip-hidden {
+  display: none;
+}
+.ant-tooltip-placement-top,
+.ant-tooltip-placement-topLeft,
+.ant-tooltip-placement-topRight {
+  padding-bottom: 8px;
+}
+.ant-tooltip-placement-right,
+.ant-tooltip-placement-rightTop,
+.ant-tooltip-placement-rightBottom {
+  padding-left: 8px;
+}
+.ant-tooltip-placement-bottom,
+.ant-tooltip-placement-bottomLeft,
+.ant-tooltip-placement-bottomRight {
+  padding-top: 8px;
+}
+.ant-tooltip-placement-left,
+.ant-tooltip-placement-leftTop,
+.ant-tooltip-placement-leftBottom {
+  padding-right: 8px;
+}
+.ant-tooltip-inner {
+  min-width: 30px;
+  min-height: 32px;
+  padding: 6px 8px;
+  color: #fff;
+  text-align: left;
+  text-decoration: none;
+  word-wrap: break-word;
+  background-color: #cac1c1;
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-tooltip-arrow {
+  position: absolute;
+  display: block;
+  width: 13.07106781px;
+  height: 13.07106781px;
+  overflow: hidden;
+  background: transparent;
+  pointer-events: none;
+}
+.ant-tooltip-arrow-content {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  display: block;
+  width: 5px;
+  height: 5px;
+  margin: auto;
+  background-color: #cac1c1;
+  content: '';
+  pointer-events: auto;
+}
+.ant-tooltip-placement-top .ant-tooltip-arrow,
+.ant-tooltip-placement-topLeft .ant-tooltip-arrow,
+.ant-tooltip-placement-topRight .ant-tooltip-arrow {
+  bottom: -5.07106781px;
+}
+.ant-tooltip-placement-top .ant-tooltip-arrow-content,
+.ant-tooltip-placement-topLeft .ant-tooltip-arrow-content,
+.ant-tooltip-placement-topRight .ant-tooltip-arrow-content {
+  -webkit-box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
+  -webkit-transform: translateY(-6.53553391px) rotate(45deg);
+          transform: translateY(-6.53553391px) rotate(45deg);
+}
+.ant-tooltip-placement-top .ant-tooltip-arrow {
+  left: 50%;
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
+}
+.ant-tooltip-placement-topLeft .ant-tooltip-arrow {
+  left: 13px;
+}
+.ant-tooltip-placement-topRight .ant-tooltip-arrow {
+  right: 13px;
+}
+.ant-tooltip-placement-right .ant-tooltip-arrow,
+.ant-tooltip-placement-rightTop .ant-tooltip-arrow,
+.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {
+  left: -5.07106781px;
+}
+.ant-tooltip-placement-right .ant-tooltip-arrow-content,
+.ant-tooltip-placement-rightTop .ant-tooltip-arrow-content,
+.ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content {
+  -webkit-box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);
+  -webkit-transform: translateX(6.53553391px) rotate(45deg);
+          transform: translateX(6.53553391px) rotate(45deg);
+}
+.ant-tooltip-placement-right .ant-tooltip-arrow {
+  top: 50%;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+}
+.ant-tooltip-placement-rightTop .ant-tooltip-arrow {
+  top: 5px;
+}
+.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {
+  bottom: 5px;
+}
+.ant-tooltip-placement-left .ant-tooltip-arrow,
+.ant-tooltip-placement-leftTop .ant-tooltip-arrow,
+.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {
+  right: -5.07106781px;
+}
+.ant-tooltip-placement-left .ant-tooltip-arrow-content,
+.ant-tooltip-placement-leftTop .ant-tooltip-arrow-content,
+.ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content {
+  -webkit-box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);
+  -webkit-transform: translateX(-6.53553391px) rotate(45deg);
+          transform: translateX(-6.53553391px) rotate(45deg);
+}
+.ant-tooltip-placement-left .ant-tooltip-arrow {
+  top: 50%;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+}
+.ant-tooltip-placement-leftTop .ant-tooltip-arrow {
+  top: 5px;
+}
+.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {
+  bottom: 5px;
+}
+.ant-tooltip-placement-bottom .ant-tooltip-arrow,
+.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,
+.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
+  top: -5.07106781px;
+}
+.ant-tooltip-placement-bottom .ant-tooltip-arrow-content,
+.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content,
+.ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content {
+  -webkit-box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07);
+  -webkit-transform: translateY(6.53553391px) rotate(45deg);
+          transform: translateY(6.53553391px) rotate(45deg);
+}
+.ant-tooltip-placement-bottom .ant-tooltip-arrow {
+  left: 50%;
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
+}
+.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow {
+  left: 13px;
+}
+.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
+  right: 13px;
+}
+.ant-tooltip-pink .ant-tooltip-inner {
+  background-color: #cb2b83;
+}
+.ant-tooltip-pink .ant-tooltip-arrow-content {
+  background-color: #cb2b83;
+}
+.ant-tooltip-magenta .ant-tooltip-inner {
+  background-color: #cb2b83;
+}
+.ant-tooltip-magenta .ant-tooltip-arrow-content {
+  background-color: #cb2b83;
+}
+.ant-tooltip-red .ant-tooltip-inner {
+  background-color: #d32029;
+}
+.ant-tooltip-red .ant-tooltip-arrow-content {
+  background-color: #d32029;
+}
+.ant-tooltip-volcano .ant-tooltip-inner {
+  background-color: #d84a1b;
+}
+.ant-tooltip-volcano .ant-tooltip-arrow-content {
+  background-color: #d84a1b;
+}
+.ant-tooltip-orange .ant-tooltip-inner {
+  background-color: #d87a16;
+}
+.ant-tooltip-orange .ant-tooltip-arrow-content {
+  background-color: #d87a16;
+}
+.ant-tooltip-yellow .ant-tooltip-inner {
+  background-color: #d8bd14;
+}
+.ant-tooltip-yellow .ant-tooltip-arrow-content {
+  background-color: #d8bd14;
+}
+.ant-tooltip-gold .ant-tooltip-inner {
+  background-color: #d89614;
+}
+.ant-tooltip-gold .ant-tooltip-arrow-content {
+  background-color: #d89614;
+}
+.ant-tooltip-cyan .ant-tooltip-inner {
+  background-color: #13a8a8;
+}
+.ant-tooltip-cyan .ant-tooltip-arrow-content {
+  background-color: #13a8a8;
+}
+.ant-tooltip-lime .ant-tooltip-inner {
+  background-color: #8bbb11;
+}
+.ant-tooltip-lime .ant-tooltip-arrow-content {
+  background-color: #8bbb11;
+}
+.ant-tooltip-green .ant-tooltip-inner {
+  background-color: #49aa19;
+}
+.ant-tooltip-green .ant-tooltip-arrow-content {
+  background-color: #49aa19;
+}
+.ant-tooltip-blue .ant-tooltip-inner {
+  background-color: var(--menu_selected_bg);
+}
+.ant-tooltip-blue .ant-tooltip-arrow-content {
+  background-color: var(--menu_selected_bg);
+}
+.ant-tooltip-geekblue .ant-tooltip-inner {
+  background-color: #2b4acb;
+}
+.ant-tooltip-geekblue .ant-tooltip-arrow-content {
+  background-color: #2b4acb;
+}
+.ant-tooltip-purple .ant-tooltip-inner {
+  background-color: #642ab5;
+}
+.ant-tooltip-purple .ant-tooltip-arrow-content {
+  background-color: #642ab5;
+}
+.ant-tooltip-rtl {
+  direction: rtl;
+}
+.ant-tooltip-rtl .ant-tooltip-inner {
+  text-align: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-dropdown-menu-item.ant-dropdown-menu-item-danger {
+  color: #a61d24;
+}
+.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {
+  color: #fff;
+  background-color: #a61d24;
+}
+.ant-dropdown {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: -9999px;
+  left: -9999px;
+  z-index: 1050;
+  display: block;
+}
+.ant-dropdown::before {
+  position: absolute;
+  top: -4px;
+  right: 0;
+  bottom: -4px;
+  left: -7px;
+  z-index: -9999;
+  opacity: 0.0001;
+  content: ' ';
+}
+.ant-dropdown-wrap {
+  position: relative;
+}
+.ant-dropdown-wrap .ant-btn > .anticon-down {
+  font-size: 10px;
+}
+.ant-dropdown-wrap .anticon-down::before {
+  -webkit-transition: -webkit-transform 0.2s;
+  transition: -webkit-transform 0.2s;
+  transition: transform 0.2s;
+  transition: transform 0.2s, -webkit-transform 0.2s;
+}
+.ant-dropdown-wrap-open .anticon-down::before {
+  -webkit-transform: rotate(180deg);
+          transform: rotate(180deg);
+}
+.ant-dropdown-hidden,
+.ant-dropdown-menu-hidden {
+  display: none;
+}
+.ant-dropdown-show-arrow.ant-dropdown-placement-topCenter,
+.ant-dropdown-show-arrow.ant-dropdown-placement-topLeft,
+.ant-dropdown-show-arrow.ant-dropdown-placement-topRight {
+  padding-bottom: 10px;
+}
+.ant-dropdown-show-arrow.ant-dropdown-placement-bottomCenter,
+.ant-dropdown-show-arrow.ant-dropdown-placement-bottomLeft,
+.ant-dropdown-show-arrow.ant-dropdown-placement-bottomRight {
+  padding-top: 10px;
+}
+.ant-dropdown-arrow {
+  position: absolute;
+  z-index: 1;
+  display: block;
+  width: 8.48528137px;
+  height: 8.48528137px;
+  background: transparent;
+  border-style: solid;
+  border-width: 4.24264069px;
+  -webkit-transform: rotate(45deg);
+          transform: rotate(45deg);
+}
+.ant-dropdown-placement-topCenter > .ant-dropdown-arrow,
+.ant-dropdown-placement-topLeft > .ant-dropdown-arrow,
+.ant-dropdown-placement-topRight > .ant-dropdown-arrow {
+  bottom: 6.2px;
+  border-top-color: transparent;
+  border-right-color: var(--layout_bg);
+  border-bottom-color: var(--layout_bg);
+  border-left-color: transparent;
+  -webkit-box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
+          box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
+}
+.ant-dropdown-placement-topCenter > .ant-dropdown-arrow {
+  left: 50%;
+  -webkit-transform: translateX(-50%) rotate(45deg);
+          transform: translateX(-50%) rotate(45deg);
+}
+.ant-dropdown-placement-topLeft > .ant-dropdown-arrow {
+  left: 16px;
+}
+.ant-dropdown-placement-topRight > .ant-dropdown-arrow {
+  right: 16px;
+}
+.ant-dropdown-placement-bottomCenter > .ant-dropdown-arrow,
+.ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow,
+.ant-dropdown-placement-bottomRight > .ant-dropdown-arrow {
+  top: 6px;
+  border-top-color: var(--layout_bg);
+  border-right-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: var(--layout_bg);
+  -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);
+          box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);
+}
+.ant-dropdown-placement-bottomCenter > .ant-dropdown-arrow {
+  left: 50%;
+  -webkit-transform: translateX(-50%) rotate(45deg);
+          transform: translateX(-50%) rotate(45deg);
+}
+.ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow {
+  left: 16px;
+}
+.ant-dropdown-placement-bottomRight > .ant-dropdown-arrow {
+  right: 16px;
+}
+.ant-dropdown-menu {
+  position: relative;
+  margin: 0;
+  padding: 4px 0;
+  text-align: left;
+  list-style-type: none;
+  background-color: var(--layout_bg);
+  background-clip: padding-box;
+  border-radius: 2px;
+  outline: none;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-dropdown-menu-item-group-title {
+  padding: 5px 12px;
+  color: rgba(255, 255, 255, 0.45);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-dropdown-menu-submenu-popup {
+  position: absolute;
+  z-index: 1050;
+  background: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+.ant-dropdown-menu-submenu-popup ul,
+.ant-dropdown-menu-submenu-popup li {
+  list-style: none;
+}
+.ant-dropdown-menu-submenu-popup ul {
+  margin-right: 0.3em;
+  margin-left: 0.3em;
+}
+.ant-dropdown-menu-item,
+.ant-dropdown-menu-submenu-title {
+  clear: both;
+  margin: 0;
+  padding: 5px 12px;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+  line-height: 22px;
+  white-space: nowrap;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-dropdown-menu-item > .anticon:first-child,
+.ant-dropdown-menu-submenu-title > .anticon:first-child,
+.ant-dropdown-menu-item > a > .anticon:first-child,
+.ant-dropdown-menu-submenu-title > a > .anticon:first-child,
+.ant-dropdown-menu-item > span > .anticon:first-child,
+.ant-dropdown-menu-submenu-title > span > .anticon:first-child {
+  min-width: 12px;
+  margin-right: 8px;
+  font-size: 12px;
+  vertical-align: -0.1em;
+}
+.ant-dropdown-menu-item > a,
+.ant-dropdown-menu-submenu-title > a {
+  display: block;
+  margin: -5px -12px;
+  padding: 5px 12px;
+  color: var(--text_cl);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-dropdown-menu-item > a:hover,
+.ant-dropdown-menu-submenu-title > a:hover {
+  color: var(--text_cl);
+}
+.ant-dropdown-menu-item > .anticon + span > a,
+.ant-dropdown-menu-submenu-title > .anticon + span > a {
+  color: var(--text_cl);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-dropdown-menu-item > .anticon + span > a:hover,
+.ant-dropdown-menu-submenu-title > .anticon + span > a:hover {
+  color: var(--text_cl);
+}
+.ant-dropdown-menu-item-selected,
+.ant-dropdown-menu-submenu-title-selected,
+.ant-dropdown-menu-item-selected > a,
+.ant-dropdown-menu-submenu-title-selected > a {
+  color: var(--menu_selected_bg);
+  background-color: var(--layout_bg);
+}
+.ant-dropdown-menu-item:hover,
+.ant-dropdown-menu-submenu-title:hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-dropdown-menu-item-disabled,
+.ant-dropdown-menu-submenu-title-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-dropdown-menu-item-disabled:hover,
+.ant-dropdown-menu-submenu-title-disabled:hover {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: transparent;
+  cursor: not-allowed;
+}
+.ant-dropdown-menu-item-divider,
+.ant-dropdown-menu-submenu-title-divider {
+  height: 1px;
+  margin: 4px 0;
+  overflow: hidden;
+  line-height: 0;
+  background-color: #5a6367;
+}
+.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,
+.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon {
+  position: absolute;
+  right: 8px;
+}
+.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,
+.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon {
+  margin-right: 0 !important;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 10px;
+  font-style: normal;
+}
+.ant-dropdown-menu-item-group-list {
+  margin: 0 8px;
+  padding: 0;
+  list-style: none;
+}
+.ant-dropdown-menu-submenu-title {
+  padding-right: 24px;
+}
+.ant-dropdown-menu-submenu-vertical {
+  position: relative;
+}
+.ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu {
+  position: absolute;
+  top: 0;
+  left: 100%;
+  min-width: 100%;
+  margin-left: 4px;
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,
+.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: transparent;
+  cursor: not-allowed;
+}
+.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {
+  color: var(--menu_selected_bg);
+}
+.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft,
+.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft,
+.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter,
+.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter,
+.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight,
+.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight {
+  -webkit-animation-name: antSlideUpIn;
+          animation-name: antSlideUpIn;
+}
+.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft,
+.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft,
+.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter,
+.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter,
+.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight,
+.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight {
+  -webkit-animation-name: antSlideDownIn;
+          animation-name: antSlideDownIn;
+}
+.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft,
+.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter,
+.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight {
+  -webkit-animation-name: antSlideUpOut;
+          animation-name: antSlideUpOut;
+}
+.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft,
+.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter,
+.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight {
+  -webkit-animation-name: antSlideDownOut;
+          animation-name: antSlideDownOut;
+}
+.ant-dropdown-trigger > .anticon.anticon-down,
+.ant-dropdown-link > .anticon.anticon-down,
+.ant-dropdown-button > .anticon.anticon-down {
+  font-size: 10px;
+  vertical-align: baseline;
+}
+.ant-dropdown-button {
+  white-space: nowrap;
+}
+.ant-dropdown-button.ant-btn-group > .ant-btn:last-child:not(:first-child):not(.ant-btn-icon-only) {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.ant-dropdown-menu-dark,
+.ant-dropdown-menu-dark .ant-dropdown-menu {
+  background: var(--menu_bg);
+}
+.ant-dropdown-menu-dark .ant-dropdown-menu-item,
+.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item > a,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a {
+  color: rgba(255, 255, 255, 0.65);
+}
+.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow::after,
+.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow::after,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow::after,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a .ant-dropdown-menu-submenu-arrow::after {
+  color: rgba(255, 255, 255, 0.65);
+}
+.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,
+.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a:hover {
+  color: #fff;
+  background: transparent;
+}
+.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,
+.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
+  color: #fff;
+  background: var(--menu_selected_bg);
+}
+.ant-dropdown-rtl {
+  direction: rtl;
+}
+.ant-dropdown-rtl.ant-dropdown::before {
+  right: -7px;
+  left: 0;
+}
+.ant-dropdown-menu.ant-dropdown-menu-rtl {
+  direction: rtl;
+  text-align: right;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-item-group-title {
+  direction: rtl;
+  text-align: right;
+}
+.ant-dropdown-menu-submenu-popup.ant-dropdown-menu-submenu-rtl {
+  -webkit-transform-origin: 100% 0;
+          transform-origin: 100% 0;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup ul,
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup li {
+  text-align: right;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-item,
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-title {
+  text-align: right;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-item > .anticon:first-child,
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-title > .anticon:first-child,
+.ant-dropdown-rtl .ant-dropdown-menu-item > span > .anticon:first-child,
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-title > span > .anticon:first-child {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow,
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow {
+  right: auto;
+  left: 8px;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+  margin-left: 0 !important;
+  -webkit-transform: scaleX(-1);
+          transform: scaleX(-1);
+}
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-title {
+  padding-right: 12px;
+  padding-left: 24px;
+}
+.ant-dropdown-rtl .ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu {
+  right: 100%;
+  left: 0;
+  margin-right: 4px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-btn {
+  line-height: 1.5715;
+  position: relative;
+  display: inline-block;
+  font-weight: 400;
+  white-space: nowrap;
+  text-align: center;
+  background-image: none;
+  border: 1px solid transparent;
+  -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);
+          box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);
+  cursor: pointer;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -ms-touch-action: manipulation;
+      touch-action: manipulation;
+  height: 32px;
+  padding: 4px 15px;
+  font-size: 14px;
+  border-radius: 2px;
+  color: var(--text_cl);
+  background: transparent;
+  border-color: #cac1c1;
+}
+.ant-btn > .anticon {
+  line-height: 1;
+}
+.ant-btn,
+.ant-btn:active,
+.ant-btn:focus {
+  outline: 0;
+}
+.ant-btn:not([disabled]):hover {
+  text-decoration: none;
+}
+.ant-btn:not([disabled]):active {
+  outline: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn[disabled] {
+  cursor: not-allowed;
+}
+.ant-btn[disabled] > * {
+  pointer-events: none;
+}
+.ant-btn-lg {
+  height: 40px;
+  padding: 6.4px 15px;
+  font-size: 16px;
+  border-radius: 2px;
+}
+.ant-btn-sm {
+  height: 24px;
+  padding: 0px 7px;
+  font-size: 14px;
+  border-radius: 2px;
+}
+.ant-btn > a:only-child {
+  color: currentColor;
+}
+.ant-btn > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn:hover,
+.ant-btn:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn:hover > a:only-child,
+.ant-btn:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn:hover > a:only-child::after,
+.ant-btn:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn[disabled],
+.ant-btn[disabled]:hover,
+.ant-btn[disabled]:focus,
+.ant-btn[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn[disabled] > a:only-child,
+.ant-btn[disabled]:hover > a:only-child,
+.ant-btn[disabled]:focus > a:only-child,
+.ant-btn[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn[disabled] > a:only-child::after,
+.ant-btn[disabled]:hover > a:only-child::after,
+.ant-btn[disabled]:focus > a:only-child::after,
+.ant-btn[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn:hover,
+.ant-btn:focus,
+.ant-btn:active {
+  text-decoration: none;
+  background: transparent;
+}
+.ant-btn > span {
+  display: inline-block;
+}
+.ant-btn-primary {
+  color: #fff;
+  background: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
+  -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+          box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+}
+.ant-btn-primary > a:only-child {
+  color: currentColor;
+}
+.ant-btn-primary > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-primary:hover,
+.ant-btn-primary:focus {
+  color: #fff;
+  background: #1aa3e7;
+  border-color: #1aa3e7;
+}
+.ant-btn-primary:hover > a:only-child,
+.ant-btn-primary:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-primary:hover > a:only-child::after,
+.ant-btn-primary:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-primary:active {
+  color: #fff;
+  background: #3c9be8;
+  border-color: #3c9be8;
+}
+.ant-btn-primary:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-primary:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-primary[disabled],
+.ant-btn-primary[disabled]:hover,
+.ant-btn-primary[disabled]:focus,
+.ant-btn-primary[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-primary[disabled] > a:only-child,
+.ant-btn-primary[disabled]:hover > a:only-child,
+.ant-btn-primary[disabled]:focus > a:only-child,
+.ant-btn-primary[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-primary[disabled] > a:only-child::after,
+.ant-btn-primary[disabled]:hover > a:only-child::after,
+.ant-btn-primary[disabled]:focus > a:only-child::after,
+.ant-btn-primary[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
+  border-right-color: var(--menu_selected_bg);
+  border-left-color: var(--menu_selected_bg);
+}
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {
+  border-color: #cac1c1;
+}
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
+  border-right-color: var(--menu_selected_bg);
+}
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {
+  border-right-color: #cac1c1;
+}
+.ant-btn-group .ant-btn-primary:last-child:not(:first-child),
+.ant-btn-group .ant-btn-primary + .ant-btn-primary {
+  border-left-color: var(--menu_selected_bg);
+}
+.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],
+.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {
+  border-left-color: #cac1c1;
+}
+.ant-btn-ghost {
+  color: var(--text_cl);
+  background: transparent;
+  border-color: #cac1c1;
+}
+.ant-btn-ghost > a:only-child {
+  color: currentColor;
+}
+.ant-btn-ghost > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-ghost:hover,
+.ant-btn-ghost:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn-ghost:hover > a:only-child,
+.ant-btn-ghost:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-ghost:hover > a:only-child::after,
+.ant-btn-ghost:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-ghost:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn-ghost:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-ghost:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-ghost[disabled],
+.ant-btn-ghost[disabled]:hover,
+.ant-btn-ghost[disabled]:focus,
+.ant-btn-ghost[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-ghost[disabled] > a:only-child,
+.ant-btn-ghost[disabled]:hover > a:only-child,
+.ant-btn-ghost[disabled]:focus > a:only-child,
+.ant-btn-ghost[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-ghost[disabled] > a:only-child::after,
+.ant-btn-ghost[disabled]:hover > a:only-child::after,
+.ant-btn-ghost[disabled]:focus > a:only-child::after,
+.ant-btn-ghost[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dashed {
+  color: var(--text_cl);
+  background: transparent;
+  border-color: #cac1c1;
+  border-style: dashed;
+}
+.ant-btn-dashed > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dashed > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dashed:hover,
+.ant-btn-dashed:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn-dashed:hover > a:only-child,
+.ant-btn-dashed:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dashed:hover > a:only-child::after,
+.ant-btn-dashed:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dashed:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn-dashed:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dashed:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dashed[disabled],
+.ant-btn-dashed[disabled]:hover,
+.ant-btn-dashed[disabled]:focus,
+.ant-btn-dashed[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dashed[disabled] > a:only-child,
+.ant-btn-dashed[disabled]:hover > a:only-child,
+.ant-btn-dashed[disabled]:focus > a:only-child,
+.ant-btn-dashed[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dashed[disabled] > a:only-child::after,
+.ant-btn-dashed[disabled]:hover > a:only-child::after,
+.ant-btn-dashed[disabled]:focus > a:only-child::after,
+.ant-btn-dashed[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-danger {
+  color: #fff;
+  background: #a61d24;
+  border-color: #a61d24;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
+  -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+          box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+}
+.ant-btn-danger > a:only-child {
+  color: currentColor;
+}
+.ant-btn-danger > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-danger:hover,
+.ant-btn-danger:focus {
+  color: #fff;
+  background: #800f19;
+  border-color: #800f19;
+}
+.ant-btn-danger:hover > a:only-child,
+.ant-btn-danger:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-danger:hover > a:only-child::after,
+.ant-btn-danger:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-danger:active {
+  color: #fff;
+  background: #b33b3d;
+  border-color: #b33b3d;
+}
+.ant-btn-danger:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-danger:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-danger[disabled],
+.ant-btn-danger[disabled]:hover,
+.ant-btn-danger[disabled]:focus,
+.ant-btn-danger[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-danger[disabled] > a:only-child,
+.ant-btn-danger[disabled]:hover > a:only-child,
+.ant-btn-danger[disabled]:focus > a:only-child,
+.ant-btn-danger[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-danger[disabled] > a:only-child::after,
+.ant-btn-danger[disabled]:hover > a:only-child::after,
+.ant-btn-danger[disabled]:focus > a:only-child::after,
+.ant-btn-danger[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-link {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-link > a:only-child {
+  color: currentColor;
+}
+.ant-btn-link > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-link:hover,
+.ant-btn-link:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn-link:hover > a:only-child,
+.ant-btn-link:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-link:hover > a:only-child::after,
+.ant-btn-link:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-link:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn-link:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-link:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-link[disabled],
+.ant-btn-link[disabled]:hover,
+.ant-btn-link[disabled]:focus,
+.ant-btn-link[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-link[disabled] > a:only-child,
+.ant-btn-link[disabled]:hover > a:only-child,
+.ant-btn-link[disabled]:focus > a:only-child,
+.ant-btn-link[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-link[disabled] > a:only-child::after,
+.ant-btn-link[disabled]:hover > a:only-child::after,
+.ant-btn-link[disabled]:focus > a:only-child::after,
+.ant-btn-link[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-link:hover {
+  background: transparent;
+}
+.ant-btn-link:hover,
+.ant-btn-link:focus,
+.ant-btn-link:active {
+  border-color: transparent;
+}
+.ant-btn-link[disabled],
+.ant-btn-link[disabled]:hover,
+.ant-btn-link[disabled]:focus,
+.ant-btn-link[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  border-color: transparent;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-link[disabled] > a:only-child,
+.ant-btn-link[disabled]:hover > a:only-child,
+.ant-btn-link[disabled]:focus > a:only-child,
+.ant-btn-link[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-link[disabled] > a:only-child::after,
+.ant-btn-link[disabled]:hover > a:only-child::after,
+.ant-btn-link[disabled]:focus > a:only-child::after,
+.ant-btn-link[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-text {
+  color: var(--text_cl);
+  background: transparent;
+  border-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-text > a:only-child {
+  color: currentColor;
+}
+.ant-btn-text > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-text:hover,
+.ant-btn-text:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn-text:hover > a:only-child,
+.ant-btn-text:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-text:hover > a:only-child::after,
+.ant-btn-text:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-text:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn-text:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-text:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-text[disabled],
+.ant-btn-text[disabled]:hover,
+.ant-btn-text[disabled]:focus,
+.ant-btn-text[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-text[disabled] > a:only-child,
+.ant-btn-text[disabled]:hover > a:only-child,
+.ant-btn-text[disabled]:focus > a:only-child,
+.ant-btn-text[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-text[disabled] > a:only-child::after,
+.ant-btn-text[disabled]:hover > a:only-child::after,
+.ant-btn-text[disabled]:focus > a:only-child::after,
+.ant-btn-text[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-text:hover,
+.ant-btn-text:focus {
+  color: var(--text_cl);
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+}
+.ant-btn-text:active {
+  color: var(--text_cl);
+  background: rgba(255, 255, 255, 0.04);
+  border-color: transparent;
+}
+.ant-btn-text[disabled],
+.ant-btn-text[disabled]:hover,
+.ant-btn-text[disabled]:focus,
+.ant-btn-text[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  border-color: transparent;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-text[disabled] > a:only-child,
+.ant-btn-text[disabled]:hover > a:only-child,
+.ant-btn-text[disabled]:focus > a:only-child,
+.ant-btn-text[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-text[disabled] > a:only-child::after,
+.ant-btn-text[disabled]:hover > a:only-child::after,
+.ant-btn-text[disabled]:focus > a:only-child::after,
+.ant-btn-text[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous {
+  color: #a61d24;
+  background: transparent;
+  border-color: #a61d24;
+}
+.ant-btn-dangerous > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous:hover,
+.ant-btn-dangerous:focus {
+  color: #800f19;
+  background: transparent;
+  border-color: #800f19;
+}
+.ant-btn-dangerous:hover > a:only-child,
+.ant-btn-dangerous:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous:hover > a:only-child::after,
+.ant-btn-dangerous:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous:active {
+  color: #b33b3d;
+  background: transparent;
+  border-color: #b33b3d;
+}
+.ant-btn-dangerous:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous[disabled],
+.ant-btn-dangerous[disabled]:hover,
+.ant-btn-dangerous[disabled]:focus,
+.ant-btn-dangerous[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous[disabled] > a:only-child,
+.ant-btn-dangerous[disabled]:hover > a:only-child,
+.ant-btn-dangerous[disabled]:focus > a:only-child,
+.ant-btn-dangerous[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous[disabled] > a:only-child::after,
+.ant-btn-dangerous[disabled]:hover > a:only-child::after,
+.ant-btn-dangerous[disabled]:focus > a:only-child::after,
+.ant-btn-dangerous[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-primary {
+  color: #fff;
+  background: #a61d24;
+  border-color: #a61d24;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
+  -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+          box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+}
+.ant-btn-dangerous.ant-btn-primary > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-primary > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-primary:hover,
+.ant-btn-dangerous.ant-btn-primary:focus {
+  color: #fff;
+  background: #800f19;
+  border-color: #800f19;
+}
+.ant-btn-dangerous.ant-btn-primary:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-primary:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-primary:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-primary:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-primary:active {
+  color: #fff;
+  background: #b33b3d;
+  border-color: #b33b3d;
+}
+.ant-btn-dangerous.ant-btn-primary:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-primary:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-primary[disabled],
+.ant-btn-dangerous.ant-btn-primary[disabled]:hover,
+.ant-btn-dangerous.ant-btn-primary[disabled]:focus,
+.ant-btn-dangerous.ant-btn-primary[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child,
+.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child,
+.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child::after,
+.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child::after,
+.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link {
+  color: #a61d24;
+  background: transparent;
+  border-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-link > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link:hover,
+.ant-btn-dangerous.ant-btn-link:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn-dangerous.ant-btn-link:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-link:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn-dangerous.ant-btn-link:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link[disabled],
+.ant-btn-dangerous.ant-btn-link[disabled]:hover,
+.ant-btn-dangerous.ant-btn-link[disabled]:focus,
+.ant-btn-dangerous.ant-btn-link[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,
+.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,
+.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link:hover,
+.ant-btn-dangerous.ant-btn-link:focus {
+  color: #800f19;
+  background: transparent;
+  border-color: transparent;
+}
+.ant-btn-dangerous.ant-btn-link:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-link:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link:active {
+  color: #b33b3d;
+  background: transparent;
+  border-color: transparent;
+}
+.ant-btn-dangerous.ant-btn-link:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-link[disabled],
+.ant-btn-dangerous.ant-btn-link[disabled]:hover,
+.ant-btn-dangerous.ant-btn-link[disabled]:focus,
+.ant-btn-dangerous.ant-btn-link[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  border-color: transparent;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,
+.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,
+.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,
+.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text {
+  color: #a61d24;
+  background: transparent;
+  border-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-text > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text:hover,
+.ant-btn-dangerous.ant-btn-text:focus {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-btn-dangerous.ant-btn-text:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-text:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text:active {
+  color: #388ed3;
+  background: transparent;
+  border-color: #388ed3;
+}
+.ant-btn-dangerous.ant-btn-text:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text[disabled],
+.ant-btn-dangerous.ant-btn-text[disabled]:hover,
+.ant-btn-dangerous.ant-btn-text[disabled]:focus,
+.ant-btn-dangerous.ant-btn-text[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child,
+.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child,
+.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text:hover,
+.ant-btn-dangerous.ant-btn-text:focus {
+  color: #800f19;
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+}
+.ant-btn-dangerous.ant-btn-text:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-text:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text:active {
+  color: #b33b3d;
+  background: rgba(255, 255, 255, 0.04);
+  border-color: transparent;
+}
+.ant-btn-dangerous.ant-btn-text:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-dangerous.ant-btn-text[disabled],
+.ant-btn-dangerous.ant-btn-text[disabled]:hover,
+.ant-btn-dangerous.ant-btn-text[disabled]:focus,
+.ant-btn-dangerous.ant-btn-text[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  border-color: transparent;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child,
+.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child,
+.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child,
+.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after,
+.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-icon-only {
+  width: 32px;
+  height: 32px;
+  padding: 2.4px 0;
+  font-size: 16px;
+  border-radius: 2px;
+  vertical-align: -1px;
+}
+.ant-btn-icon-only > * {
+  font-size: 16px;
+}
+.ant-btn-icon-only.ant-btn-lg {
+  width: 40px;
+  height: 40px;
+  padding: 4.9px 0;
+  font-size: 18px;
+  border-radius: 2px;
+}
+.ant-btn-icon-only.ant-btn-lg > * {
+  font-size: 18px;
+}
+.ant-btn-icon-only.ant-btn-sm {
+  width: 24px;
+  height: 24px;
+  padding: 0px 0;
+  font-size: 14px;
+  border-radius: 2px;
+}
+.ant-btn-icon-only.ant-btn-sm > * {
+  font-size: 14px;
+}
+.ant-btn-round {
+  height: 32px;
+  padding: 4px 16px;
+  font-size: 14px;
+  border-radius: 32px;
+}
+.ant-btn-round.ant-btn-lg {
+  height: 40px;
+  padding: 6.4px 20px;
+  font-size: 16px;
+  border-radius: 40px;
+}
+.ant-btn-round.ant-btn-sm {
+  height: 24px;
+  padding: 0px 12px;
+  font-size: 14px;
+  border-radius: 24px;
+}
+.ant-btn-round.ant-btn-icon-only {
+  width: auto;
+}
+.ant-btn-circle {
+  min-width: 32px;
+  padding-right: 0;
+  padding-left: 0;
+  text-align: center;
+  border-radius: 50%;
+}
+.ant-btn-circle.ant-btn-lg {
+  min-width: 40px;
+  border-radius: 50%;
+}
+.ant-btn-circle.ant-btn-sm {
+  min-width: 24px;
+  border-radius: 50%;
+}
+.ant-btn::before {
+  position: absolute;
+  top: -1px;
+  right: -1px;
+  bottom: -1px;
+  left: -1px;
+  z-index: 1;
+  display: none;
+  background: var(--content_bg);
+  border-radius: inherit;
+  opacity: 0.35;
+  -webkit-transition: opacity 0.2s;
+  transition: opacity 0.2s;
+  content: '';
+  pointer-events: none;
+}
+.ant-btn .anticon {
+  -webkit-transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-btn .anticon.anticon-plus > svg,
+.ant-btn .anticon.anticon-minus > svg {
+  shape-rendering: optimizeSpeed;
+}
+.ant-btn.ant-btn-loading {
+  position: relative;
+}
+.ant-btn.ant-btn-loading:not([disabled]) {
+  pointer-events: none;
+}
+.ant-btn.ant-btn-loading::before {
+  display: block;
+}
+.ant-btn > .ant-btn-loading-icon {
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-btn > .ant-btn-loading-icon .anticon {
+  padding-right: 8px;
+  -webkit-animation: none;
+          animation: none;
+}
+.ant-btn > .ant-btn-loading-icon .anticon svg {
+  -webkit-animation: loadingCircle 1s infinite linear;
+          animation: loadingCircle 1s infinite linear;
+}
+.ant-btn > .ant-btn-loading-icon:only-child .anticon {
+  padding-right: 0;
+}
+.ant-btn-group {
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-btn-group > .ant-btn,
+.ant-btn-group > span > .ant-btn {
+  position: relative;
+}
+.ant-btn-group > .ant-btn:hover,
+.ant-btn-group > span > .ant-btn:hover,
+.ant-btn-group > .ant-btn:focus,
+.ant-btn-group > span > .ant-btn:focus,
+.ant-btn-group > .ant-btn:active,
+.ant-btn-group > span > .ant-btn:active {
+  z-index: 2;
+}
+.ant-btn-group > .ant-btn[disabled],
+.ant-btn-group > span > .ant-btn[disabled] {
+  z-index: 0;
+}
+.ant-btn-group .ant-btn-icon-only {
+  font-size: 14px;
+}
+.ant-btn-group-lg > .ant-btn,
+.ant-btn-group-lg > span > .ant-btn {
+  height: 40px;
+  padding: 6.4px 15px;
+  font-size: 16px;
+  border-radius: 0;
+}
+.ant-btn-group-lg .ant-btn.ant-btn-icon-only {
+  width: 40px;
+  height: 40px;
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-btn-group-sm > .ant-btn,
+.ant-btn-group-sm > span > .ant-btn {
+  height: 24px;
+  padding: 0px 7px;
+  font-size: 14px;
+  border-radius: 0;
+}
+.ant-btn-group-sm > .ant-btn > .anticon,
+.ant-btn-group-sm > span > .ant-btn > .anticon {
+  font-size: 14px;
+}
+.ant-btn-group-sm .ant-btn.ant-btn-icon-only {
+  width: 24px;
+  height: 24px;
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-btn-group .ant-btn + .ant-btn,
+.ant-btn + .ant-btn-group,
+.ant-btn-group span + .ant-btn,
+.ant-btn-group .ant-btn + span,
+.ant-btn-group > span + span,
+.ant-btn-group + .ant-btn,
+.ant-btn-group + .ant-btn-group {
+  margin-left: -1px;
+}
+.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {
+  border-left-color: transparent;
+}
+.ant-btn-group .ant-btn {
+  border-radius: 0;
+}
+.ant-btn-group > .ant-btn:first-child,
+.ant-btn-group > span:first-child > .ant-btn {
+  margin-left: 0;
+}
+.ant-btn-group > .ant-btn:only-child {
+  border-radius: 2px;
+}
+.ant-btn-group > span:only-child > .ant-btn {
+  border-radius: 2px;
+}
+.ant-btn-group > .ant-btn:first-child:not(:last-child),
+.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
+  border-top-left-radius: 2px;
+  border-bottom-left-radius: 2px;
+}
+.ant-btn-group > .ant-btn:last-child:not(:first-child),
+.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+.ant-btn-group-sm > .ant-btn:only-child {
+  border-radius: 2px;
+}
+.ant-btn-group-sm > span:only-child > .ant-btn {
+  border-radius: 2px;
+}
+.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),
+.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
+  border-top-left-radius: 2px;
+  border-bottom-left-radius: 2px;
+}
+.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),
+.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+.ant-btn-group > .ant-btn-group {
+  float: left;
+}
+.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {
+  border-radius: 0;
+}
+.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {
+  padding-right: 8px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {
+  padding-left: 8px;
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.ant-btn-rtl.ant-btn-group .ant-btn + .ant-btn,
+.ant-btn-rtl.ant-btn + .ant-btn-group,
+.ant-btn-rtl.ant-btn-group span + .ant-btn,
+.ant-btn-rtl.ant-btn-group .ant-btn + span,
+.ant-btn-rtl.ant-btn-group > span + span,
+.ant-btn-rtl.ant-btn-group + .ant-btn,
+.ant-btn-rtl.ant-btn-group + .ant-btn-group,
+.ant-btn-group-rtl.ant-btn-group .ant-btn + .ant-btn,
+.ant-btn-group-rtl.ant-btn + .ant-btn-group,
+.ant-btn-group-rtl.ant-btn-group span + .ant-btn,
+.ant-btn-group-rtl.ant-btn-group .ant-btn + span,
+.ant-btn-group-rtl.ant-btn-group > span + span,
+.ant-btn-group-rtl.ant-btn-group + .ant-btn,
+.ant-btn-group-rtl.ant-btn-group + .ant-btn-group {
+  margin-right: -1px;
+  margin-left: auto;
+}
+.ant-btn-group.ant-btn-group-rtl {
+  direction: rtl;
+}
+.ant-btn-group-rtl.ant-btn-group > .ant-btn:first-child:not(:last-child),
+.ant-btn-group-rtl.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
+  border-top-left-radius: 0;
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+  border-bottom-left-radius: 0;
+}
+.ant-btn-group-rtl.ant-btn-group > .ant-btn:last-child:not(:first-child),
+.ant-btn-group-rtl.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
+  border-top-left-radius: 2px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 2px;
+}
+.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),
+.ant-btn-group-rtl.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
+  border-top-left-radius: 0;
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+  border-bottom-left-radius: 0;
+}
+.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),
+.ant-btn-group-rtl.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
+  border-top-left-radius: 2px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 2px;
+}
+.ant-btn:focus > span,
+.ant-btn:active > span {
+  position: relative;
+}
+.ant-btn > .anticon + span,
+.ant-btn > span + .anticon {
+  margin-left: 8px;
+}
+.ant-btn-background-ghost {
+  color: var(--text_cl);
+  background: transparent !important;
+  border-color: rgba(255, 255, 255, 0.25);
+}
+.ant-btn-background-ghost.ant-btn-primary {
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+  text-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-primary > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-primary > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-primary:hover,
+.ant-btn-background-ghost.ant-btn-primary:focus {
+  color: #1aa3e7;
+  background: transparent;
+  border-color: #1aa3e7;
+}
+.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-primary:active {
+  color: #3c9be8;
+  background: transparent;
+  border-color: #3c9be8;
+}
+.ant-btn-background-ghost.ant-btn-primary:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-primary[disabled],
+.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-danger {
+  color: #a61d24;
+  background: transparent;
+  border-color: #a61d24;
+  text-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-danger > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-danger > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-danger:hover,
+.ant-btn-background-ghost.ant-btn-danger:focus {
+  color: #800f19;
+  background: transparent;
+  border-color: #800f19;
+}
+.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-danger:active {
+  color: #b33b3d;
+  background: transparent;
+  border-color: #b33b3d;
+}
+.ant-btn-background-ghost.ant-btn-danger:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-danger[disabled],
+.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous {
+  color: #a61d24;
+  background: transparent;
+  border-color: #a61d24;
+  text-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-dangerous > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous:hover,
+.ant-btn-background-ghost.ant-btn-dangerous:focus {
+  color: #800f19;
+  background: transparent;
+  border-color: #800f19;
+}
+.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous:active {
+  color: #b33b3d;
+  background: transparent;
+  border-color: #b33b3d;
+}
+.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous[disabled],
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link {
+  color: #a61d24;
+  background: transparent;
+  border-color: transparent;
+  text-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus {
+  color: #800f19;
+  background: transparent;
+  border-color: transparent;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active {
+  color: #b33b3d;
+  background: transparent;
+  border-color: transparent;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled],
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  text-shadow: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {
+  color: currentColor;
+}
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,
+.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  content: '';
+}
+.ant-btn-two-chinese-chars::first-letter {
+  letter-spacing: 0.34em;
+}
+.ant-btn-two-chinese-chars > *:not(.anticon) {
+  margin-right: -0.34em;
+  letter-spacing: 0.34em;
+}
+.ant-btn-block {
+  width: 100%;
+}
+.ant-btn:empty {
+  display: inline-block;
+  width: 0;
+  visibility: hidden;
+  content: '\a0';
+}
+a.ant-btn {
+  padding-top: 0.1px;
+  line-height: 30px;
+}
+a.ant-btn-lg {
+  line-height: 38px;
+}
+a.ant-btn-sm {
+  line-height: 22px;
+}
+.ant-btn-rtl {
+  direction: rtl;
+}
+.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child),
+.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {
+  border-right-color: var(--menu_selected_bg);
+  border-left-color: #cac1c1;
+}
+.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],
+.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {
+  border-right-color: #cac1c1;
+  border-left-color: var(--menu_selected_bg);
+}
+.ant-btn-rtl.ant-btn > .ant-btn-loading-icon .anticon {
+  padding-right: 0;
+  padding-left: 8px;
+}
+.ant-btn > .ant-btn-loading-icon:only-child .anticon {
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-btn-rtl.ant-btn > .anticon + span,
+.ant-btn-rtl.ant-btn > span + .anticon {
+  margin-right: 8px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-picker-calendar {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  background: var(--content_bg);
+}
+.ant-picker-calendar-header {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: end;
+      -ms-flex-pack: end;
+          justify-content: flex-end;
+  padding: 12px 0;
+}
+.ant-picker-calendar-header .ant-picker-calendar-year-select {
+  min-width: 80px;
+}
+.ant-picker-calendar-header .ant-picker-calendar-month-select {
+  min-width: 70px;
+  margin-left: 8px;
+}
+.ant-picker-calendar-header .ant-picker-calendar-mode-switch {
+  margin-left: 8px;
+}
+.ant-picker-calendar .ant-picker-panel {
+  background: var(--content_bg);
+  border: 0;
+  border-top: 1px solid #5a6367;
+  border-radius: 0;
+}
+.ant-picker-calendar .ant-picker-panel .ant-picker-month-panel,
+.ant-picker-calendar .ant-picker-panel .ant-picker-date-panel {
+  width: auto;
+}
+.ant-picker-calendar .ant-picker-panel .ant-picker-body {
+  padding: 8px 0;
+}
+.ant-picker-calendar .ant-picker-panel .ant-picker-content {
+  width: 100%;
+}
+.ant-picker-calendar-mini {
+  border-radius: 2px;
+}
+.ant-picker-calendar-mini .ant-picker-calendar-header {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.ant-picker-calendar-mini .ant-picker-panel {
+  border-radius: 0 0 2px 2px;
+}
+.ant-picker-calendar-mini .ant-picker-content {
+  height: 256px;
+}
+.ant-picker-calendar-mini .ant-picker-content th {
+  height: auto;
+  padding: 0;
+  line-height: 18px;
+}
+.ant-picker-calendar-full .ant-picker-panel {
+  display: block;
+  width: 100%;
+  text-align: right;
+  background: var(--content_bg);
+  border: 0;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-body td {
+  padding: 0;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th {
+  height: auto;
+  padding: 0 12px 5px 0;
+  line-height: 18px;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell::before {
+  display: none;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell:hover .ant-picker-calendar-date {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell .ant-picker-calendar-date-today::before {
+  display: none;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date-today,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date-today {
+  background: var(--layout_bg);
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date .ant-picker-calendar-date-value,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date .ant-picker-calendar-date-value,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date-today .ant-picker-calendar-date-value,
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date-today .ant-picker-calendar-date-value {
+  color: var(--menu_selected_bg);
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date {
+  display: block;
+  width: auto;
+  height: auto;
+  margin: 0 4px;
+  padding: 4px 8px 0;
+  border: 0;
+  border-top: 2px solid #5a6367;
+  border-radius: 0;
+  -webkit-transition: background 0.3s;
+  transition: background 0.3s;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-value {
+  line-height: 24px;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-content {
+  position: static;
+  width: auto;
+  height: 86px;
+  overflow-y: auto;
+  color: var(--text_cl);
+  line-height: 1.5715;
+  text-align: left;
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-today {
+  border-color: var(--menu_selected_bg);
+}
+.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-today .ant-picker-calendar-date-value {
+  color: var(--text_cl);
+}
+@media only screen and (max-width: 480px) {
+  .ant-picker-calendar-header {
+    display: block;
+  }
+  .ant-picker-calendar-header .ant-picker-calendar-year-select {
+    width: 50%;
+  }
+  .ant-picker-calendar-header .ant-picker-calendar-month-select {
+    width: calc(50% - 8px);
+  }
+  .ant-picker-calendar-header .ant-picker-calendar-mode-switch {
+    width: 100%;
+    margin-top: 8px;
+    margin-left: 0;
+  }
+  .ant-picker-calendar-header .ant-picker-calendar-mode-switch > label {
+    width: 50%;
+    text-align: center;
+  }
+}
+.ant-picker-calendar-rtl {
+  direction: rtl;
+}
+.ant-picker-calendar-rtl .ant-picker-calendar-header .ant-picker-calendar-month-select {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-picker-calendar-rtl .ant-picker-calendar-header .ant-picker-calendar-mode-switch {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-picker-calendar-rtl.ant-picker-calendar-full .ant-picker-panel {
+  text-align: left;
+}
+.ant-picker-calendar-rtl.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th {
+  padding: 0 0 5px 12px;
+}
+.ant-picker-calendar-rtl.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-content {
+  text-align: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-radio-group {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+  font-size: 0;
+  line-height: unset;
+}
+.ant-radio-group .ant-badge-count {
+  z-index: 1;
+}
+.ant-radio-group > .ant-badge:not(:first-child) > .ant-radio-button-wrapper {
+  border-left: none;
+}
+.ant-radio-wrapper {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  margin-right: 8px;
+  white-space: nowrap;
+  cursor: pointer;
+}
+.ant-radio {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  top: 0px;
+  display: inline-block;
+  line-height: 1;
+  white-space: nowrap;
+  vertical-align: sub;
+  outline: none;
+  cursor: pointer;
+}
+.ant-radio-wrapper:hover .ant-radio,
+.ant-radio:hover .ant-radio-inner,
+.ant-radio-input:focus + .ant-radio-inner {
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-input:focus + .ant-radio-inner {
+  -webkit-box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+          box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+}
+.ant-radio-checked::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 1px solid var(--menu_selected_bg);
+  border-radius: 50%;
+  visibility: hidden;
+  -webkit-animation: antRadioEffect 0.36s ease-in-out;
+          animation: antRadioEffect 0.36s ease-in-out;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  content: '';
+}
+.ant-radio:hover::after,
+.ant-radio-wrapper:hover .ant-radio::after {
+  visibility: visible;
+}
+.ant-radio-inner {
+  position: relative;
+  top: 0;
+  left: 0;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  border-color: #cac1c1;
+  border-style: solid;
+  border-width: 1px;
+  border-radius: 50%;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-radio-inner::after {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: table;
+  width: 8px;
+  height: 8px;
+  background-color: var(--menu_selected_bg);
+  border-top: 0;
+  border-left: 0;
+  border-radius: 8px;
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  opacity: 0;
+  -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  content: ' ';
+}
+.ant-radio-input {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  cursor: pointer;
+  opacity: 0;
+}
+.ant-radio-checked .ant-radio-inner {
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-checked .ant-radio-inner::after {
+  -webkit-transform: scale(1);
+          transform: scale(1);
+  opacity: 1;
+  -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.ant-radio-disabled {
+  cursor: not-allowed;
+}
+.ant-radio-disabled .ant-radio-inner {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1 !important;
+  cursor: not-allowed;
+}
+.ant-radio-disabled .ant-radio-inner::after {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+.ant-radio-disabled .ant-radio-input {
+  cursor: not-allowed;
+}
+.ant-radio-disabled + span {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+span.ant-radio + * {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.ant-radio-button-wrapper {
+  position: relative;
+  display: inline-block;
+  height: 32px;
+  margin: 0;
+  padding: 0 15px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 30px;
+  background: transparent;
+  border: 1px solid var(--border_cl);
+  border-top-width: 1.02px;
+  border-left-width: 0;
+  cursor: pointer;
+  -webkit-transition: color 0.3s, background 0.3s, border-color 0.3s, -webkit-box-shadow 0.3s;
+  transition: color 0.3s, background 0.3s, border-color 0.3s, -webkit-box-shadow 0.3s;
+  transition: color 0.3s, background 0.3s, border-color 0.3s, box-shadow 0.3s;
+  transition: color 0.3s, background 0.3s, border-color 0.3s, box-shadow 0.3s, -webkit-box-shadow 0.3s;
+}
+.ant-radio-button-wrapper a {
+  color: var(--text_cl);
+}
+.ant-radio-button-wrapper > .ant-radio-button {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  width: 100%;
+  height: 100%;
+}
+.ant-radio-group-large .ant-radio-button-wrapper {
+  height: 40px;
+  font-size: 16px;
+  line-height: 38px;
+}
+.ant-radio-group-small .ant-radio-button-wrapper {
+  height: 24px;
+  padding: 0 7px;
+  line-height: 22px;
+}
+.ant-radio-button-wrapper:not(:first-child)::before {
+  position: absolute;
+  top: -1px;
+  left: -1px;
+  display: block;
+  -webkit-box-sizing: content-box;
+          box-sizing: content-box;
+  width: 1px;
+  height: 100%;
+  padding: 1px 0;
+  background-color: #cac1c1;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+  content: '';
+}
+.ant-radio-button-wrapper:first-child {
+  border-left: 1px solid var(--border_cl);
+  border-radius: 2px 0 0 2px;
+}
+.ant-radio-button-wrapper:last-child {
+  border-radius: 0 2px 2px 0;
+}
+.ant-radio-button-wrapper:first-child:last-child {
+  border-radius: 2px;
+}
+.ant-radio-button-wrapper:hover {
+  position: relative;
+  color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper:focus-within {
+  -webkit-box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+          box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+}
+.ant-radio-button-wrapper .ant-radio-inner,
+.ant-radio-button-wrapper input[type='checkbox'],
+.ant-radio-button-wrapper input[type='radio'] {
+  width: 0;
+  height: 0;
+  opacity: 0;
+  pointer-events: none;
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+  z-index: 1;
+  color: var(--menu_selected_bg);
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
+  background-color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+  color: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {
+  background-color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+  color: #388ed3;
+  border-color: #388ed3;
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before {
+  background-color: #388ed3;
+}
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+  -webkit-box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+          box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+}
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+  color: #fff;
+  background: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+  color: #fff;
+  background: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+  color: #fff;
+  background: #388ed3;
+  border-color: #388ed3;
+}
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+  -webkit-box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+          box-shadow: 0 0 0 3px rgba(23, 125, 220, 0.08);
+}
+.ant-radio-button-wrapper-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  cursor: not-allowed;
+}
+.ant-radio-button-wrapper-disabled:first-child,
+.ant-radio-button-wrapper-disabled:hover {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+}
+.ant-radio-button-wrapper-disabled:first-child {
+  border-left-color: #cac1c1;
+}
+.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.2);
+  border-color: #cac1c1;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+@-webkit-keyframes antRadioEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+@keyframes antRadioEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+@supports (-moz-appearance: meterbar) and (background-blend-mode: difference, normal) {
+  .ant-radio {
+    vertical-align: text-bottom;
+  }
+}
+.ant-radio-group.ant-radio-group-rtl {
+  direction: rtl;
+}
+.ant-radio-wrapper.ant-radio-wrapper-rtl {
+  margin-right: 0;
+  margin-left: 8px;
+  direction: rtl;
+}
+.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:not(:first-child)::before {
+  right: -1px;
+  left: 0;
+}
+.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:first-child {
+  border-right: 1px solid var(--border_cl);
+  border-radius: 0 2px 2px 0;
+}
+.ant-radio-button-wrapper-checked:not([class*=' ant-radio-button-wrapper-disabled']).ant-radio-button-wrapper:first-child {
+  border-right-color: var(--menu_selected_bg);
+}
+.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:last-child {
+  border-radius: 2px 0 0 2px;
+}
+.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper-disabled:first-child {
+  border-right-color: #cac1c1;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-picker {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  padding: 4px 11px 4px;
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  background: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: border 0.3s, -webkit-box-shadow 0.3s;
+  transition: border 0.3s, -webkit-box-shadow 0.3s;
+  transition: border 0.3s, box-shadow 0.3s;
+  transition: border 0.3s, box-shadow 0.3s, -webkit-box-shadow 0.3s;
+}
+.ant-picker:hover,
+.ant-picker-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-picker-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-picker.ant-picker-disabled {
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  cursor: not-allowed;
+}
+.ant-picker.ant-picker-disabled .ant-picker-suffix {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-picker.ant-picker-borderless {
+  background-color: transparent !important;
+  border-color: transparent !important;
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+.ant-picker-input {
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  width: 100%;
+}
+.ant-picker-input > input {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  min-width: 0;
+  padding: 4px 11px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  min-width: 1px;
+  height: auto;
+  padding: 0;
+  background: transparent;
+  border: 0;
+}
+.ant-picker-input > input::-moz-placeholder {
+  opacity: 1;
+}
+.ant-picker-input > input::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-picker-input > input:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-picker-input > input::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-picker-input > input::placeholder {
+  color: var(--text_cl);
+}
+.ant-picker-input > input:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-picker-input > input:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-picker-input > input:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-picker-input > input:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-picker-input > input:focus,
+.ant-picker-input > input-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-picker-input > input-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-picker-input > input-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-picker-input > input[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-picker-input > input[disabled]:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-picker-input > input-borderless,
+.ant-picker-input > input-borderless:hover,
+.ant-picker-input > input-borderless:focus,
+.ant-picker-input > input-borderless-focused,
+.ant-picker-input > input-borderless-disabled,
+.ant-picker-input > input-borderless[disabled] {
+  background-color: transparent;
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+textarea.ant-picker-input > input {
+  max-width: 100%;
+  height: auto;
+  min-height: 32px;
+  line-height: 1.5715;
+  vertical-align: bottom;
+  -webkit-transition: all 0.3s, height 0s;
+  transition: all 0.3s, height 0s;
+}
+.ant-picker-input > input-lg {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-picker-input > input-sm {
+  padding: 0px 7px;
+}
+.ant-picker-input > input:focus {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-picker-input > input[disabled] {
+  background: transparent;
+}
+.ant-picker-input:hover .ant-picker-clear {
+  opacity: 1;
+}
+.ant-picker-input-placeholder > input {
+  color: var(--text_cl);
+}
+.ant-picker-large {
+  padding: 6.5px 11px 6.5px;
+}
+.ant-picker-large .ant-picker-input > input {
+  font-size: 16px;
+}
+.ant-picker-small {
+  padding: 0px 7px 0px;
+}
+.ant-picker-suffix {
+  -ms-flex-item-align: center;
+      align-self: center;
+  margin-left: 4px;
+  color: rgba(255, 255, 255, 0.3);
+  line-height: 1;
+  pointer-events: none;
+}
+.ant-picker-suffix > * {
+  vertical-align: top;
+}
+.ant-picker-clear {
+  position: absolute;
+  top: 50%;
+  right: 0;
+  color: rgba(255, 255, 255, 0.3);
+  line-height: 1;
+  background: var(--content_bg);
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+  cursor: pointer;
+  opacity: 0;
+  -webkit-transition: opacity 0.3s, color 0.3s;
+  transition: opacity 0.3s, color 0.3s;
+}
+.ant-picker-clear > * {
+  vertical-align: top;
+}
+.ant-picker-clear:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-picker-separator {
+  position: relative;
+  display: inline-block;
+  width: 1em;
+  height: 16px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 16px;
+  vertical-align: top;
+  cursor: default;
+}
+.ant-picker-focused .ant-picker-separator {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-picker-disabled .ant-picker-range-separator .ant-picker-separator {
+  cursor: not-allowed;
+}
+.ant-picker-range {
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-picker-range .ant-picker-clear {
+  right: 11px;
+}
+.ant-picker-range:hover .ant-picker-clear {
+  opacity: 1;
+}
+.ant-picker-range .ant-picker-active-bar {
+  bottom: -1px;
+  height: 2px;
+  margin-left: 11px;
+  background: var(--menu_selected_bg);
+  opacity: 0;
+  -webkit-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+  pointer-events: none;
+}
+.ant-picker-range.ant-picker-focused .ant-picker-active-bar {
+  opacity: 1;
+}
+.ant-picker-range-separator {
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 0 8px;
+  line-height: 1;
+}
+.ant-picker-range.ant-picker-small .ant-picker-clear {
+  right: 7px;
+}
+.ant-picker-range.ant-picker-small .ant-picker-active-bar {
+  margin-left: 7px;
+}
+.ant-picker-dropdown {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  z-index: 1050;
+}
+.ant-picker-dropdown-hidden {
+  display: none;
+}
+.ant-picker-dropdown-placement-bottomLeft .ant-picker-range-arrow {
+  top: 1.66666667px;
+  display: block;
+  -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg);
+}
+.ant-picker-dropdown-placement-topLeft .ant-picker-range-arrow {
+  bottom: 1.66666667px;
+  display: block;
+  -webkit-transform: rotate(135deg);
+          transform: rotate(135deg);
+}
+.ant-picker-dropdown.slide-up-enter.slide-up-enter-active.ant-picker-dropdown-placement-topLeft,
+.ant-picker-dropdown.slide-up-enter.slide-up-enter-active.ant-picker-dropdown-placement-topRight,
+.ant-picker-dropdown.slide-up-appear.slide-up-appear-active.ant-picker-dropdown-placement-topLeft,
+.ant-picker-dropdown.slide-up-appear.slide-up-appear-active.ant-picker-dropdown-placement-topRight {
+  -webkit-animation-name: antSlideDownIn;
+          animation-name: antSlideDownIn;
+}
+.ant-picker-dropdown.slide-up-enter.slide-up-enter-active.ant-picker-dropdown-placement-bottomLeft,
+.ant-picker-dropdown.slide-up-enter.slide-up-enter-active.ant-picker-dropdown-placement-bottomRight,
+.ant-picker-dropdown.slide-up-appear.slide-up-appear-active.ant-picker-dropdown-placement-bottomLeft,
+.ant-picker-dropdown.slide-up-appear.slide-up-appear-active.ant-picker-dropdown-placement-bottomRight {
+  -webkit-animation-name: antSlideUpIn;
+          animation-name: antSlideUpIn;
+}
+.ant-picker-dropdown.slide-up-leave.slide-up-leave-active.ant-picker-dropdown-placement-topLeft,
+.ant-picker-dropdown.slide-up-leave.slide-up-leave-active.ant-picker-dropdown-placement-topRight {
+  -webkit-animation-name: antSlideDownOut;
+          animation-name: antSlideDownOut;
+}
+.ant-picker-dropdown.slide-up-leave.slide-up-leave-active.ant-picker-dropdown-placement-bottomLeft,
+.ant-picker-dropdown.slide-up-leave.slide-up-leave-active.ant-picker-dropdown-placement-bottomRight {
+  -webkit-animation-name: antSlideUpOut;
+          animation-name: antSlideUpOut;
+}
+.ant-picker-dropdown-range {
+  padding: 6.66666667px 0;
+}
+.ant-picker-dropdown-range-hidden {
+  display: none;
+}
+.ant-picker-dropdown .ant-picker-panel > .ant-picker-time-panel {
+  padding-top: 4px;
+}
+.ant-picker-ranges {
+  margin-bottom: 0;
+  padding: 4px 12px;
+  overflow: hidden;
+  line-height: 34px;
+  text-align: left;
+  list-style: none;
+}
+.ant-picker-ranges > li {
+  display: inline-block;
+}
+.ant-picker-ranges .ant-picker-preset > .ant-tag-blue {
+  color: var(--menu_selected_bg);
+  background: var(--layout_bg);
+  border-color: #153450;
+  cursor: pointer;
+}
+.ant-picker-ranges .ant-picker-ok {
+  float: right;
+  margin-left: 8px;
+}
+.ant-picker-range-wrapper {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-picker-range-arrow {
+  position: absolute;
+  z-index: 1;
+  display: none;
+  width: 10px;
+  height: 10px;
+  margin-left: 16.5px;
+  -webkit-box-shadow: 2px -2px 6px rgba(0, 0, 0, 0.06);
+          box-shadow: 2px -2px 6px rgba(0, 0, 0, 0.06);
+  -webkit-transition: left 0.3s ease-out;
+  transition: left 0.3s ease-out;
+}
+.ant-picker-range-arrow::after {
+  position: absolute;
+  top: 1px;
+  right: 1px;
+  width: 10px;
+  height: 10px;
+  border: 5px solid #5a6367;
+  border-color: var(--layout_bg) var(--layout_bg) transparent transparent;
+  content: '';
+}
+.ant-picker-panel-container {
+  overflow: hidden;
+  vertical-align: top;
+  background: var(--layout_bg);
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+  -webkit-transition: margin 0.3s;
+  transition: margin 0.3s;
+}
+.ant-picker-panel-container .ant-picker-panels {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+  direction: ltr;
+}
+.ant-picker-panel-container .ant-picker-panel {
+  vertical-align: top;
+  background: transparent;
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.ant-picker-panel-container .ant-picker-panel-focused {
+  border-color: #5a6367;
+}
+.ant-picker-panel {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  text-align: center;
+  background: var(--layout_bg);
+  border: 1px solid #5a6367;
+  border-radius: 2px;
+  outline: none;
+}
+.ant-picker-panel-focused {
+  border-color: var(--menu_selected_bg);
+}
+.ant-picker-decade-panel,
+.ant-picker-year-panel,
+.ant-picker-quarter-panel,
+.ant-picker-month-panel,
+.ant-picker-week-panel,
+.ant-picker-date-panel,
+.ant-picker-time-panel {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  width: 280px;
+}
+.ant-picker-header {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  padding: 0 8px;
+  color: var(--text_cl);
+  border-bottom: 1px solid #5a6367;
+}
+.ant-picker-header > * {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-picker-header button {
+  padding: 0;
+  color: rgba(255, 255, 255, 0.3);
+  line-height: 40px;
+  background: transparent;
+  border: 0;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-picker-header > button {
+  min-width: 1.6em;
+  font-size: 14px;
+}
+.ant-picker-header > button:hover {
+  color: var(--text_cl);
+}
+.ant-picker-header-view {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  font-weight: 500;
+  line-height: 40px;
+}
+.ant-picker-header-view button {
+  color: inherit;
+  font-weight: inherit;
+}
+.ant-picker-header-view button:not(:first-child) {
+  margin-left: 8px;
+}
+.ant-picker-header-view button:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-picker-prev-icon,
+.ant-picker-next-icon,
+.ant-picker-super-prev-icon,
+.ant-picker-super-next-icon {
+  position: relative;
+  display: inline-block;
+  width: 7px;
+  height: 7px;
+}
+.ant-picker-prev-icon::before,
+.ant-picker-next-icon::before,
+.ant-picker-super-prev-icon::before,
+.ant-picker-super-next-icon::before {
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: inline-block;
+  width: 7px;
+  height: 7px;
+  border: 0 solid currentColor;
+  border-width: 1.5px 0 0 1.5px;
+  content: '';
+}
+.ant-picker-super-prev-icon::after,
+.ant-picker-super-next-icon::after {
+  position: absolute;
+  top: 4px;
+  left: 4px;
+  display: inline-block;
+  width: 7px;
+  height: 7px;
+  border: 0 solid currentColor;
+  border-width: 1.5px 0 0 1.5px;
+  content: '';
+}
+.ant-picker-prev-icon,
+.ant-picker-super-prev-icon {
+  -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg);
+}
+.ant-picker-next-icon,
+.ant-picker-super-next-icon {
+  -webkit-transform: rotate(135deg);
+          transform: rotate(135deg);
+}
+.ant-picker-content {
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: collapse;
+}
+.ant-picker-content th,
+.ant-picker-content td {
+  position: relative;
+  min-width: 24px;
+  font-weight: 400;
+}
+.ant-picker-content th {
+  height: 30px;
+  color: var(--text_cl);
+  line-height: 30px;
+}
+.ant-picker-cell {
+  padding: 3px 0;
+  color: rgba(255, 255, 255, 0.3);
+  cursor: pointer;
+}
+.ant-picker-cell-in-view {
+  color: var(--text_cl);
+}
+.ant-picker-cell-disabled {
+  cursor: not-allowed;
+}
+.ant-picker-cell::before {
+  position: absolute;
+  top: 50%;
+  right: 0;
+  left: 0;
+  z-index: 1;
+  height: 24px;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+  content: '';
+}
+.ant-picker-cell .ant-picker-cell-inner {
+  position: relative;
+  z-index: 2;
+  display: inline-block;
+  min-width: 24px;
+  height: 24px;
+  line-height: 24px;
+  border-radius: 2px;
+  -webkit-transition: background 0.3s, border 0.3s;
+  transition: background 0.3s, border 0.3s;
+}
+.ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,
+.ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  border: 1px solid var(--menu_selected_bg);
+  border-radius: 2px;
+  content: '';
+}
+.ant-picker-cell-in-view.ant-picker-cell-in-range {
+  position: relative;
+}
+.ant-picker-cell-in-view.ant-picker-cell-in-range::before {
+  background: var(--layout_bg);
+}
+.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,
+.ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,
+.ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner {
+  color: #fff;
+  background: var(--menu_selected_bg);
+}
+.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before,
+.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before {
+  background: var(--layout_bg);
+}
+.ant-picker-cell-in-view.ant-picker-cell-range-start::before {
+  left: 50%;
+}
+.ant-picker-cell-in-view.ant-picker-cell-range-end::before {
+  right: 50%;
+}
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after {
+  position: absolute;
+  top: 50%;
+  z-index: 0;
+  height: 24px;
+  border-top: 1px dashed #0e4980;
+  border-bottom: 1px dashed #0e4980;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+  content: '';
+}
+.ant-picker-cell-range-hover-start::after,
+.ant-picker-cell-range-hover-end::after,
+.ant-picker-cell-range-hover::after {
+  right: 0;
+  left: 2px;
+}
+.ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before,
+.ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before,
+.ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before,
+.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before,
+.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before,
+.ant-picker-panel > :not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before,
+.ant-picker-panel > :not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before {
+  background: #06213a;
+}
+.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner {
+  border-radius: 2px 0 0 2px;
+}
+.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner {
+  border-radius: 0 2px 2px 0;
+}
+.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after,
+.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: -1;
+  background: #06213a;
+  content: '';
+}
+.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after {
+  right: -6px;
+  left: 0;
+}
+.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after {
+  right: 0;
+  left: -6px;
+}
+.ant-picker-cell-range-hover.ant-picker-cell-range-start::after {
+  right: 50%;
+}
+.ant-picker-cell-range-hover.ant-picker-cell-range-end::after {
+  left: 50%;
+}
+tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after,
+tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after,
+.ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after {
+  left: 6px;
+  border-left: 1px dashed #0e4980;
+  border-top-left-radius: 2px;
+  border-bottom-left-radius: 2px;
+}
+tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after,
+tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after,
+.ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after,
+.ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after {
+  right: 6px;
+  border-right: 1px dashed #0e4980;
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+.ant-picker-cell-disabled {
+  pointer-events: none;
+}
+.ant-picker-cell-disabled .ant-picker-cell-inner {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+}
+.ant-picker-cell-disabled::before {
+  background: #5a6367;
+}
+.ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before {
+  border-color: rgba(255, 255, 255, 0.3);
+}
+.ant-picker-decade-panel .ant-picker-content,
+.ant-picker-year-panel .ant-picker-content,
+.ant-picker-quarter-panel .ant-picker-content,
+.ant-picker-month-panel .ant-picker-content {
+  height: 264px;
+}
+.ant-picker-decade-panel .ant-picker-cell-inner,
+.ant-picker-year-panel .ant-picker-cell-inner,
+.ant-picker-quarter-panel .ant-picker-cell-inner,
+.ant-picker-month-panel .ant-picker-cell-inner {
+  padding: 0 8px;
+}
+.ant-picker-decade-panel .ant-picker-cell-disabled .ant-picker-cell-inner,
+.ant-picker-year-panel .ant-picker-cell-disabled .ant-picker-cell-inner,
+.ant-picker-quarter-panel .ant-picker-cell-disabled .ant-picker-cell-inner,
+.ant-picker-month-panel .ant-picker-cell-disabled .ant-picker-cell-inner {
+  background: #5a6367;
+}
+.ant-picker-quarter-panel .ant-picker-content {
+  height: 56px;
+}
+.ant-picker-footer {
+  width: -webkit-min-content;
+  width: -moz-min-content;
+  width: min-content;
+  min-width: 100%;
+  line-height: 38px;
+  text-align: center;
+  border-bottom: 1px solid transparent;
+}
+.ant-picker-panel .ant-picker-footer {
+  border-top: 1px solid #5a6367;
+}
+.ant-picker-footer-extra {
+  padding: 0 12px;
+  line-height: 38px;
+  text-align: left;
+}
+.ant-picker-footer-extra:not(:last-child) {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-picker-now {
+  text-align: left;
+}
+.ant-picker-today-btn {
+  color: var(--menu_selected_bg);
+}
+.ant-picker-today-btn:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-picker-today-btn:active {
+  color: #388ed3;
+}
+.ant-picker-today-btn.ant-picker-today-btn-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-picker-decade-panel .ant-picker-cell-inner {
+  padding: 0 4px;
+}
+.ant-picker-decade-panel .ant-picker-cell::before {
+  display: none;
+}
+.ant-picker-year-panel .ant-picker-body,
+.ant-picker-quarter-panel .ant-picker-body,
+.ant-picker-month-panel .ant-picker-body {
+  padding: 0 8px;
+}
+.ant-picker-year-panel .ant-picker-cell-inner,
+.ant-picker-quarter-panel .ant-picker-cell-inner,
+.ant-picker-month-panel .ant-picker-cell-inner {
+  width: 60px;
+}
+.ant-picker-year-panel .ant-picker-cell-range-hover-start::after,
+.ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,
+.ant-picker-month-panel .ant-picker-cell-range-hover-start::after {
+  left: 14px;
+  border-left: 1px dashed #0e4980;
+  border-radius: 2px 0 0 2px;
+}
+.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,
+.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,
+.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-start::after {
+  right: 14px;
+  border-right: 1px dashed #0e4980;
+  border-radius: 0 2px 2px 0;
+}
+.ant-picker-year-panel .ant-picker-cell-range-hover-end::after,
+.ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,
+.ant-picker-month-panel .ant-picker-cell-range-hover-end::after {
+  right: 14px;
+  border-right: 1px dashed #0e4980;
+  border-radius: 0 2px 2px 0;
+}
+.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,
+.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,
+.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-end::after {
+  left: 14px;
+  border-left: 1px dashed #0e4980;
+  border-radius: 2px 0 0 2px;
+}
+.ant-picker-week-panel .ant-picker-body {
+  padding: 8px 12px;
+}
+.ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,
+.ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,
+.ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner {
+  background: transparent !important;
+}
+.ant-picker-week-panel-row td {
+  -webkit-transition: background 0.3s;
+  transition: background 0.3s;
+}
+.ant-picker-week-panel-row:hover td {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-picker-week-panel-row-selected td,
+.ant-picker-week-panel-row-selected:hover td {
+  background: var(--menu_selected_bg);
+}
+.ant-picker-week-panel-row-selected td.ant-picker-cell-week,
+.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week {
+  color: rgba(255, 255, 255, 0.5);
+}
+.ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before,
+.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before {
+  border-color: #fff;
+}
+.ant-picker-week-panel-row-selected td .ant-picker-cell-inner,
+.ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner {
+  color: #fff;
+}
+.ant-picker-date-panel .ant-picker-body {
+  padding: 8px 12px;
+}
+.ant-picker-date-panel .ant-picker-content {
+  width: 252px;
+}
+.ant-picker-date-panel .ant-picker-content th {
+  width: 36px;
+}
+.ant-picker-datetime-panel {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-picker-datetime-panel .ant-picker-time-panel {
+  border-left: 1px solid #5a6367;
+}
+.ant-picker-datetime-panel .ant-picker-date-panel,
+.ant-picker-datetime-panel .ant-picker-time-panel {
+  -webkit-transition: opacity 0.3s;
+  transition: opacity 0.3s;
+}
+.ant-picker-datetime-panel-active .ant-picker-date-panel,
+.ant-picker-datetime-panel-active .ant-picker-time-panel {
+  opacity: 0.3;
+}
+.ant-picker-datetime-panel-active .ant-picker-date-panel-active,
+.ant-picker-datetime-panel-active .ant-picker-time-panel-active {
+  opacity: 1;
+}
+.ant-picker-time-panel {
+  width: auto;
+  min-width: auto;
+}
+.ant-picker-time-panel .ant-picker-content {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  height: 224px;
+}
+.ant-picker-time-panel-column {
+  -webkit-box-flex: 1;
+      -ms-flex: 1 0 auto;
+          flex: 1 0 auto;
+  width: 56px;
+  margin: 0;
+  padding: 0;
+  overflow-y: hidden;
+  text-align: left;
+  list-style: none;
+  -webkit-transition: background 0.3s;
+  transition: background 0.3s;
+}
+.ant-picker-time-panel-column::after {
+  display: block;
+  height: 196px;
+  content: '';
+}
+.ant-picker-datetime-panel .ant-picker-time-panel-column::after {
+  height: 198px;
+}
+.ant-picker-time-panel-column:not(:first-child) {
+  border-left: 1px solid #5a6367;
+}
+.ant-picker-time-panel-column-active {
+  background: rgba(17, 27, 38, 0.2);
+}
+.ant-picker-time-panel-column:hover {
+  overflow-y: auto;
+}
+.ant-picker-time-panel-column > li {
+  margin: 0;
+  padding: 0;
+}
+.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner {
+  display: block;
+  width: 100%;
+  height: 28px;
+  margin: 0;
+  padding: 0 0 0 14px;
+  color: var(--text_cl);
+  line-height: 28px;
+  border-radius: 0;
+  cursor: pointer;
+  -webkit-transition: background 0.3s;
+  transition: background 0.3s;
+}
+.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner {
+  background: var(--layout_bg);
+}
+.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  cursor: not-allowed;
+}
+/* stylelint-disable-next-line */
+_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell,
+:root .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell,
+_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell,
+:root .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell {
+  padding: 21px 0;
+}
+.ant-picker-rtl {
+  direction: rtl;
+}
+.ant-picker-rtl .ant-picker-suffix {
+  margin-right: 4px;
+  margin-left: 0;
+}
+.ant-picker-rtl .ant-picker-clear {
+  right: auto;
+  left: 0;
+}
+.ant-picker-rtl .ant-picker-separator {
+  -webkit-transform: rotate(180deg);
+          transform: rotate(180deg);
+}
+.ant-picker-panel-rtl .ant-picker-header-view button:not(:first-child) {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-picker-rtl.ant-picker-range .ant-picker-clear {
+  right: auto;
+  left: 11px;
+}
+.ant-picker-rtl.ant-picker-range .ant-picker-active-bar {
+  margin-right: 11px;
+  margin-left: 0;
+}
+.ant-picker-rtl.ant-picker-range.ant-picker-small .ant-picker-active-bar {
+  margin-right: 7px;
+}
+.ant-picker-dropdown-rtl .ant-picker-ranges {
+  text-align: right;
+}
+.ant-picker-dropdown-rtl .ant-picker-ranges .ant-picker-ok {
+  float: left;
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-picker-panel-rtl {
+  direction: rtl;
+}
+.ant-picker-panel-rtl .ant-picker-prev-icon,
+.ant-picker-panel-rtl .ant-picker-super-prev-icon {
+  -webkit-transform: rotate(135deg);
+          transform: rotate(135deg);
+}
+.ant-picker-panel-rtl .ant-picker-next-icon,
+.ant-picker-panel-rtl .ant-picker-super-next-icon {
+  -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg);
+}
+.ant-picker-cell .ant-picker-cell-inner {
+  position: relative;
+  z-index: 2;
+  display: inline-block;
+  min-width: 24px;
+  height: 24px;
+  line-height: 24px;
+  border-radius: 2px;
+  -webkit-transition: background 0.3s, border 0.3s;
+  transition: background 0.3s, border 0.3s;
+}
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start::before {
+  right: 50%;
+  left: 0;
+}
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end::before {
+  right: 0;
+  left: 50%;
+}
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-end::before {
+  right: 50%;
+  left: 50%;
+}
+.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after {
+  right: 0;
+  left: -6px;
+}
+.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after {
+  right: -6px;
+  left: 0;
+}
+.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-start::after {
+  right: 0;
+  left: 50%;
+}
+.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-end::after {
+  right: 50%;
+  left: 0;
+}
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner {
+  border-radius: 0 2px 2px 0;
+}
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner {
+  border-radius: 2px 0 0 2px;
+}
+.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):first-child::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after {
+  right: 6px;
+  left: 0;
+  border-right: 1px dashed #0e4980;
+  border-left: none;
+  border-top-left-radius: 0;
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+  border-bottom-left-radius: 0;
+}
+.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):last-child::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after {
+  right: 0;
+  left: 6px;
+  border-right: none;
+  border-left: 1px dashed #0e4980;
+  border-top-left-radius: 2px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 2px;
+}
+.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after,
+.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover)::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-end.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover)::after,
+.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-start.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover)::after,
+.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-start:last-child::after,
+.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-end:first-child::after {
+  right: 6px;
+  left: 6px;
+  border-right: 1px dashed #0e4980;
+  border-left: 1px dashed #0e4980;
+  border-radius: 2px;
+}
+.ant-picker-dropdown-rtl .ant-picker-footer-extra {
+  direction: rtl;
+  text-align: right;
+}
+.ant-picker-panel-rtl .ant-picker-time-panel {
+  direction: ltr;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-tag {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+  height: auto;
+  margin-right: 8px;
+  padding: 0 7px;
+  font-size: 12px;
+  line-height: 20px;
+  white-space: nowrap;
+  background: rgba(255, 255, 255, 0.04);
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  opacity: 1;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-tag:hover {
+  opacity: 0.85;
+}
+.ant-tag,
+.ant-tag a,
+.ant-tag a:hover {
+  color: var(--text_cl);
+}
+.ant-tag > a:first-child:last-child {
+  display: inline-block;
+  margin: 0 -8px;
+  padding: 0 8px;
+}
+.ant-tag-close-icon {
+  margin-left: 3px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 10px;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-tag-close-icon:hover {
+  color: var(--text_cl);
+}
+.ant-tag-has-color {
+  border-color: transparent;
+}
+.ant-tag-has-color,
+.ant-tag-has-color a,
+.ant-tag-has-color a:hover,
+.ant-tag-has-color .anticon-close,
+.ant-tag-has-color .anticon-close:hover {
+  color: #fff;
+}
+.ant-tag-checkable {
+  background-color: transparent;
+  border-color: transparent;
+  cursor: pointer;
+}
+.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {
+  color: var(--menu_selected_bg);
+}
+.ant-tag-checkable:active,
+.ant-tag-checkable-checked {
+  color: #fff;
+}
+.ant-tag-checkable-checked {
+  background-color: var(--menu_selected_bg);
+}
+.ant-tag-checkable:active {
+  background-color: #388ed3;
+}
+.ant-tag-hidden {
+  display: none;
+}
+.ant-tag-pink {
+  color: #cb2b83;
+  background: #291321;
+  border-color: #551c3b;
+}
+.ant-tag-pink-inverse {
+  color: #fff;
+  background: #cb2b83;
+  border-color: #cb2b83;
+}
+.ant-tag-magenta {
+  color: #cb2b83;
+  background: #291321;
+  border-color: #551c3b;
+}
+.ant-tag-magenta-inverse {
+  color: #fff;
+  background: #cb2b83;
+  border-color: #cb2b83;
+}
+.ant-tag-red {
+  color: #d32029;
+  background: #2a1215;
+  border-color: #58181c;
+}
+.ant-tag-red-inverse {
+  color: #fff;
+  background: #d32029;
+  border-color: #d32029;
+}
+.ant-tag-volcano {
+  color: #d84a1b;
+  background: #2b1611;
+  border-color: #592716;
+}
+.ant-tag-volcano-inverse {
+  color: #fff;
+  background: #d84a1b;
+  border-color: #d84a1b;
+}
+.ant-tag-orange {
+  color: #d87a16;
+  background: #2b1d11;
+  border-color: #593815;
+}
+.ant-tag-orange-inverse {
+  color: #fff;
+  background: #d87a16;
+  border-color: #d87a16;
+}
+.ant-tag-yellow {
+  color: #d8bd14;
+  background: #2b2611;
+  border-color: #595014;
+}
+.ant-tag-yellow-inverse {
+  color: #fff;
+  background: #d8bd14;
+  border-color: #d8bd14;
+}
+.ant-tag-gold {
+  color: #d89614;
+  background: #2b2111;
+  border-color: #594214;
+}
+.ant-tag-gold-inverse {
+  color: #fff;
+  background: #d89614;
+  border-color: #d89614;
+}
+.ant-tag-cyan {
+  color: #13a8a8;
+  background: #112123;
+  border-color: #144848;
+}
+.ant-tag-cyan-inverse {
+  color: #fff;
+  background: #13a8a8;
+  border-color: #13a8a8;
+}
+.ant-tag-lime {
+  color: #8bbb11;
+  background: #1f2611;
+  border-color: #3e4f13;
+}
+.ant-tag-lime-inverse {
+  color: #fff;
+  background: #8bbb11;
+  border-color: #8bbb11;
+}
+.ant-tag-green {
+  color: #49aa19;
+  background: #162312;
+  border-color: #274916;
+}
+.ant-tag-green-inverse {
+  color: #fff;
+  background: #49aa19;
+  border-color: #49aa19;
+}
+.ant-tag-blue {
+  color: var(--menu_selected_bg);
+  background: #111d2c;
+  border-color: #15395b;
+}
+.ant-tag-blue-inverse {
+  color: #fff;
+  background: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-tag-geekblue {
+  color: #2b4acb;
+  background: #131629;
+  border-color: #1c2755;
+}
+.ant-tag-geekblue-inverse {
+  color: #fff;
+  background: #2b4acb;
+  border-color: #2b4acb;
+}
+.ant-tag-purple {
+  color: #642ab5;
+  background: #1a1325;
+  border-color: #301c4d;
+}
+.ant-tag-purple-inverse {
+  color: #fff;
+  background: #642ab5;
+  border-color: #642ab5;
+}
+.ant-tag-success {
+  color: #49aa19;
+  background: #162312;
+  border-color: #274916;
+}
+.ant-tag-processing {
+  color: var(--menu_selected_bg);
+  background: #111d2c;
+  border-color: #15395b;
+}
+.ant-tag-error {
+  color: #d32029;
+  background: #2a1215;
+  border-color: #58181c;
+}
+.ant-tag-warning {
+  color: #d87a16;
+  background: #2b1d11;
+  border-color: #593815;
+}
+.ant-tag > .anticon + span,
+.ant-tag > span + .anticon {
+  margin-left: 7px;
+}
+.ant-tag.ant-tag-rtl {
+  margin-right: 0;
+  margin-left: 8px;
+  direction: rtl;
+  text-align: right;
+}
+.ant-tag-rtl .ant-tag-close-icon {
+  margin-right: 3px;
+  margin-left: 0;
+}
+.ant-tag-rtl.ant-tag > .anticon + span,
+.ant-tag-rtl.ant-tag > span + .anticon {
+  margin-right: 7px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-card {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  background: var(--content_bg);
+  border-radius: 2px;
+}
+.ant-card-rtl {
+  direction: rtl;
+}
+.ant-card-hoverable {
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s, -webkit-box-shadow 0.3s;
+  transition: border-color 0.3s, -webkit-box-shadow 0.3s;
+  transition: box-shadow 0.3s, border-color 0.3s;
+  transition: box-shadow 0.3s, border-color 0.3s, -webkit-box-shadow 0.3s;
+}
+.ant-card-hoverable:hover {
+  border-color: transparent;
+  /* -webkit-box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48), 0 5px 12px 4px rgba(0, 0, 0, 0.36);
+          box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48), 0 5px 12px 4px rgba(0, 0, 0, 0.36); */
+}
+.ant-card-bordered {
+  border: 1px solid #5a6367;
+}
+.ant-card-head {
+  min-height: 48px;
+  margin-bottom: -1px;
+  padding: 0 24px;
+  color: var(--text_cl);
+  font-weight: 500;
+  font-size: 16px;
+  background: transparent;
+  border-bottom: 1px solid #5a6367;
+  border-radius: 2px 2px 0 0;
+}
+.ant-card-head::before {
+  display: table;
+  content: '';
+}
+.ant-card-head::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-card-head-wrapper {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-card-head-title {
+  display: inline-block;
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  padding: 16px 0;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-card-head-title > .ant-typography,
+.ant-card-head-title > .ant-typography-edit-content {
+  left: 0;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.ant-card-head .ant-tabs {
+  clear: both;
+  margin-bottom: -17px;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+}
+.ant-card-head .ant-tabs-bar {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-card-extra {
+  float: right;
+  margin-left: auto;
+  padding: 16px 0;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+}
+.ant-card-rtl .ant-card-extra {
+  margin-right: auto;
+  margin-left: 0;
+}
+.ant-card-body {
+  padding: 24px;
+}
+.ant-card-body::before {
+  display: table;
+  content: '';
+}
+.ant-card-body::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body {
+  margin: -1px 0 0 -1px;
+  padding: 0;
+}
+.ant-card-grid {
+  float: left;
+  width: 33.33%;
+  padding: 24px;
+  border: 0;
+  border-radius: 0;
+  -webkit-box-shadow: 1px 0 0 0 #5a6367, 0 1px 0 0 #5a6367, 1px 1px 0 0 #5a6367, 1px 0 0 0 #5a6367 inset, 0 1px 0 0 #5a6367 inset;
+          box-shadow: 1px 0 0 0 #5a6367, 0 1px 0 0 #5a6367, 1px 1px 0 0 #5a6367, 1px 0 0 0 #5a6367 inset, 0 1px 0 0 #5a6367 inset;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-card-rtl .ant-card-grid {
+  float: right;
+}
+.ant-card-grid-hoverable:hover {
+  position: relative;
+  z-index: 1;
+  -webkit-box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48), 0 5px 12px 4px rgba(0, 0, 0, 0.36);
+          box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48), 0 5px 12px 4px rgba(0, 0, 0, 0.36);
+}
+.ant-card-contain-tabs > .ant-card-head .ant-card-head-title {
+  min-height: 32px;
+  padding-bottom: 0;
+}
+.ant-card-contain-tabs > .ant-card-head .ant-card-extra {
+  padding-bottom: 0;
+}
+.ant-card-bordered .ant-card-cover {
+  margin-right: -1px;
+  margin-left: -1px;
+  -webkit-transform: translateY(-1px);
+          transform: translateY(-1px);
+}
+.ant-card-cover > * {
+  display: block;
+  width: 100%;
+}
+.ant-card-cover img {
+  border-radius: 2px 2px 0 0;
+}
+.ant-card-actions {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  background: var(--content_bg);
+  border-top: 1px solid #5a6367;
+}
+.ant-card-actions::before {
+  display: table;
+  content: '';
+}
+.ant-card-actions::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-card-actions > li {
+  float: left;
+  margin: 12px 0;
+  color: rgba(255, 255, 255, 0.45);
+  text-align: center;
+}
+.ant-card-rtl .ant-card-actions > li {
+  float: right;
+}
+.ant-card-actions > li > span {
+  position: relative;
+  display: block;
+  min-width: 32px;
+  font-size: 14px;
+  line-height: 1.5715;
+  cursor: pointer;
+}
+.ant-card-actions > li > span:hover {
+  color: var(--menu_selected_bg);
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-card-actions > li > span a:not(.ant-btn),
+.ant-card-actions > li > span > .anticon {
+  display: inline-block;
+  width: 100%;
+  color: rgba(255, 255, 255, 0.45);
+  line-height: 22px;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-card-actions > li > span a:not(.ant-btn):hover,
+.ant-card-actions > li > span > .anticon:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-card-actions > li > span > .anticon {
+  font-size: 16px;
+  line-height: 22px;
+}
+.ant-card-actions > li:not(:last-child) {
+  border-right: 1px solid #5a6367;
+}
+.ant-card-type-inner .ant-card-head {
+  padding: 0 24px;
+  background: rgba(255, 255, 255, 0.04);
+}
+.ant-card-type-inner .ant-card-head-title {
+  padding: 12px 0;
+  font-size: 14px;
+}
+.ant-card-type-inner .ant-card-body {
+  padding: 16px 24px;
+}
+.ant-card-type-inner .ant-card-extra {
+  padding: 13.5px 0;
+}
+.ant-card-meta {
+  margin: -4px 0;
+}
+.ant-card-meta::before {
+  display: table;
+  content: '';
+}
+.ant-card-meta::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-card-meta-avatar {
+  float: left;
+  padding-right: 16px;
+}
+.ant-card-rtl .ant-card-meta-avatar {
+  float: right;
+  padding-right: 0;
+  padding-left: 16px;
+}
+.ant-card-meta-detail {
+  overflow: hidden;
+}
+.ant-card-meta-detail > div:not(:last-child) {
+  margin-bottom: 8px;
+}
+.ant-card-meta-title {
+  overflow: hidden;
+  color: var(--text_cl);
+  font-weight: 500;
+  font-size: 16px;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-card-meta-description {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-card-loading {
+  overflow: hidden;
+}
+.ant-card-loading .ant-card-body {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-card-loading-content p {
+  margin: 0;
+}
+.ant-card-loading-block {
+  height: 14px;
+  margin: 4px 0;
+  background: -webkit-gradient(linear, left top, right top, from(rgba(48, 48, 48, 0.2)), color-stop(rgba(48, 48, 48, 0.4)), to(rgba(48, 48, 48, 0.2)));
+  background: linear-gradient(90deg, rgba(48, 48, 48, 0.2), rgba(48, 48, 48, 0.4), rgba(48, 48, 48, 0.2));
+  background-size: 600% 600%;
+  border-radius: 2px;
+  -webkit-animation: card-loading 1.4s ease infinite;
+          animation: card-loading 1.4s ease infinite;
+}
+@-webkit-keyframes card-loading {
+  0%,
+  100% {
+    background-position: 0 50%;
+  }
+  50% {
+    background-position: 100% 50%;
+  }
+}
+@keyframes card-loading {
+  0%,
+  100% {
+    background-position: 0 50%;
+  }
+  50% {
+    background-position: 100% 50%;
+  }
+}
+.ant-card-small > .ant-card-head {
+  min-height: 36px;
+  padding: 0 12px;
+  font-size: 14px;
+}
+.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title {
+  padding: 8px 0;
+}
+.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra {
+  padding: 8px 0;
+  font-size: 14px;
+}
+.ant-card-small > .ant-card-body {
+  padding: 12px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-tabs-small > .ant-tabs-nav .ant-tabs-tab {
+  padding: 8px 0;
+  font-size: 14px;
+}
+.ant-tabs-large > .ant-tabs-nav .ant-tabs-tab {
+  padding: 16px 0;
+  font-size: 16px;
+}
+.ant-tabs-card.ant-tabs-small > .ant-tabs-nav .ant-tabs-tab {
+  padding: 6px 16px;
+}
+.ant-tabs-card.ant-tabs-large > .ant-tabs-nav .ant-tabs-tab {
+  padding: 7px 16px 6px;
+}
+.ant-tabs-rtl {
+  direction: rtl;
+}
+.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab {
+  margin: 0 0 0 32px;
+}
+.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab:last-of-type {
+  margin-left: 0;
+}
+.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .anticon {
+  margin-right: 0;
+  margin-left: 12px;
+}
+.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove {
+  margin-right: 8px;
+  margin-left: -4px;
+}
+.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove .anticon {
+  margin: 0;
+}
+.ant-tabs-rtl.ant-tabs-left > .ant-tabs-nav {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+}
+.ant-tabs-rtl.ant-tabs-left > .ant-tabs-content-holder {
+  -webkit-box-ordinal-group: 1;
+      -ms-flex-order: 0;
+          order: 0;
+}
+.ant-tabs-rtl.ant-tabs-right > .ant-tabs-nav {
+  -webkit-box-ordinal-group: 1;
+      -ms-flex-order: 0;
+          order: 0;
+}
+.ant-tabs-rtl.ant-tabs-right > .ant-tabs-content-holder {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+}
+.ant-tabs-rtl.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-rtl.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type) {
+  margin-right: 0;
+  margin-left: 2px;
+}
+.ant-tabs-dropdown-rtl {
+  direction: rtl;
+}
+.ant-tabs-dropdown-rtl .ant-tabs-dropdown-menu-item {
+  text-align: right;
+}
+.ant-tabs-top,
+.ant-tabs-bottom {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-tabs-top > .ant-tabs-nav,
+.ant-tabs-bottom > .ant-tabs-nav,
+.ant-tabs-top > div > .ant-tabs-nav,
+.ant-tabs-bottom > div > .ant-tabs-nav {
+  margin: 0 0 16px 0;
+}
+.ant-tabs-top > .ant-tabs-nav::before,
+.ant-tabs-bottom > .ant-tabs-nav::before,
+.ant-tabs-top > div > .ant-tabs-nav::before,
+.ant-tabs-bottom > div > .ant-tabs-nav::before {
+  position: absolute;
+  right: 0;
+  left: 0;
+  border-bottom: 1px solid #5a6367;
+  content: '';
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  height: 2px;
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar-animated,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-ink-bar-animated,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar-animated,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-ink-bar-animated {
+  -webkit-transition: width 0.3s, left 0.3s, right 0.3s;
+  transition: width 0.3s, left 0.3s, right 0.3s;
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {
+  top: 0;
+  bottom: 0;
+  width: 30px;
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::before {
+  left: 0;
+  -webkit-box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);
+          box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {
+  right: 0;
+  -webkit-box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);
+          box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before {
+  opacity: 1;
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after {
+  opacity: 1;
+}
+.ant-tabs-top > .ant-tabs-nav::before,
+.ant-tabs-top > div > .ant-tabs-nav::before {
+  bottom: 0;
+}
+.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  bottom: 0;
+}
+.ant-tabs-bottom > .ant-tabs-nav,
+.ant-tabs-bottom > div > .ant-tabs-nav {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+  margin-top: 16px;
+  margin-bottom: 0;
+}
+.ant-tabs-bottom > .ant-tabs-nav::before,
+.ant-tabs-bottom > div > .ant-tabs-nav::before {
+  top: 0;
+}
+.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  top: 0;
+}
+.ant-tabs-bottom > .ant-tabs-content-holder,
+.ant-tabs-bottom > div > .ant-tabs-content-holder {
+  -webkit-box-ordinal-group: 1;
+      -ms-flex-order: 0;
+          order: 0;
+}
+.ant-tabs-left > .ant-tabs-nav,
+.ant-tabs-right > .ant-tabs-nav,
+.ant-tabs-left > div > .ant-tabs-nav,
+.ant-tabs-right > div > .ant-tabs-nav {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  min-width: 50px;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab {
+  margin: 0 0 16px 0;
+  padding: 8px 24px;
+  text-align: center;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab:last-of-type,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab:last-of-type,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab:last-of-type,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab:last-of-type {
+  margin-bottom: 0;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-active .ant-tabs-tab-btn,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab-active .ant-tabs-tab-btn,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab-active .ant-tabs-tab-btn,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab-active .ant-tabs-tab-btn {
+  font-weight: normal;
+  text-shadow: 0 0 0.25px #388ed3;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {
+  right: 0;
+  left: 0;
+  height: 30px;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::before {
+  top: 0;
+  -webkit-box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);
+          box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {
+  bottom: 0;
+  -webkit-box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);
+          box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before {
+  opacity: 1;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after {
+  opacity: 1;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  width: 2px;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar-animated,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-ink-bar-animated,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-ink-bar-animated,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-ink-bar-animated {
+  -webkit-transition: height 0.3s, top 0.3s;
+  transition: height 0.3s, top 0.3s;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-list,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-list,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-list,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-list,
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-operations,
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-operations,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-operations,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-operations {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  right: 0;
+}
+.ant-tabs-left > .ant-tabs-content-holder,
+.ant-tabs-left > div > .ant-tabs-content-holder {
+  margin-left: -1px;
+  border-left: 1px solid #5a6367;
+}
+.ant-tabs-left > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane,
+.ant-tabs-left > div > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane {
+  padding-left: 24px;
+}
+.ant-tabs-right > .ant-tabs-nav,
+.ant-tabs-right > div > .ant-tabs-nav {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+}
+.ant-tabs-right > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  left: 0;
+}
+.ant-tabs-right > .ant-tabs-content-holder,
+.ant-tabs-right > div > .ant-tabs-content-holder {
+  -webkit-box-ordinal-group: 1;
+      -ms-flex-order: 0;
+          order: 0;
+  margin-right: -1px;
+  border-right: 1px solid #5a6367;
+}
+.ant-tabs-right > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane,
+.ant-tabs-right > div > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane {
+  padding-right: 24px;
+}
+.ant-tabs-dropdown {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: -9999px;
+  left: -9999px;
+  z-index: 1050;
+  display: block;
+}
+.ant-tabs-dropdown-hidden {
+  display: none;
+}
+.ant-tabs-dropdown-menu {
+  max-height: 200px;
+  margin: 0;
+  padding: 4px 0;
+  overflow-x: hidden;
+  overflow-y: auto;
+  text-align: left;
+  list-style-type: none;
+  background-color: var(--layout_bg);
+  background-clip: padding-box;
+  border-radius: 2px;
+  outline: none;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-tabs-dropdown-menu-item {
+  min-width: 120px;
+  margin: 0;
+  padding: 5px 12px;
+  overflow: hidden;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+  line-height: 22px;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-tabs-dropdown-menu-item:hover {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-tabs-dropdown-menu-item-disabled,
+.ant-tabs-dropdown-menu-item-disabled:hover {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  cursor: not-allowed;
+}
+.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab {
+  margin: 0;
+  padding: 8px 16px;
+  background: rgba(255, 255, 255, 0.04);
+  border: 1px solid #5a6367;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab-active,
+.ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab-active {
+  color: var(--menu_selected_bg);
+  background: var(--content_bg);
+}
+.ant-tabs-card > .ant-tabs-nav .ant-tabs-ink-bar,
+.ant-tabs-card > div > .ant-tabs-nav .ant-tabs-ink-bar {
+  visibility: hidden;
+}
+.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type) {
+  margin-right: 2px;
+}
+.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab {
+  border-radius: 2px 2px 0 0;
+}
+.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab-active,
+.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab-active {
+  border-bottom-color: var(--content_bg);
+}
+.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab {
+  border-radius: 0 0 2px 2px;
+}
+.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab-active,
+.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab-active {
+  border-top-color: var(--content_bg);
+}
+.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type),
+.ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type) {
+  margin-bottom: 2px;
+}
+.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab {
+  border-radius: 2px 0 0 2px;
+}
+.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-active,
+.ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab-active {
+  border-right-color: var(--content_bg);
+}
+.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab,
+.ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab {
+  border-radius: 0 2px 2px 0;
+}
+.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab-active,
+.ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab-active {
+  border-left-color: var(--content_bg);
+}
+.ant-tabs {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  overflow: hidden;
+}
+.ant-tabs > .ant-tabs-nav,
+.ant-tabs > div > .ant-tabs-nav {
+  position: relative;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-wrap,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap {
+  position: relative;
+  display: inline-block;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+  overflow: hidden;
+  white-space: nowrap;
+  -webkit-transform: translate(0);
+          transform: translate(0);
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap::before,
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-wrap::after,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {
+  position: absolute;
+  z-index: 1;
+  opacity: 0;
+  -webkit-transition: opacity 0.3s;
+  transition: opacity 0.3s;
+  content: '';
+  pointer-events: none;
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-list {
+  position: relative;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-operations,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-operations {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-operations-hidden,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-operations-hidden {
+  position: absolute;
+  visibility: hidden;
+  pointer-events: none;
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-more,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-more {
+  position: relative;
+  padding: 8px 16px;
+  background: transparent;
+  border: 0;
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-more::after,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-more::after {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  height: 5px;
+  -webkit-transform: translateY(100%);
+          transform: translateY(100%);
+  content: '';
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add {
+  min-width: 40px;
+  padding: 0 8px;
+  background: rgba(255, 255, 255, 0.04);
+  border: 1px solid #5a6367;
+  border-radius: 2px 2px 0 0;
+  outline: none;
+  cursor: pointer;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:hover,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:active,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:active,
+.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:focus,
+.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:focus {
+  color: #388ed3;
+}
+.ant-tabs-extra-content {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-tabs-centered > .ant-tabs-nav .ant-tabs-nav-wrap:not([class*='ant-tabs-nav-wrap-ping']),
+.ant-tabs-centered > div > .ant-tabs-nav .ant-tabs-nav-wrap:not([class*='ant-tabs-nav-wrap-ping']) {
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+}
+.ant-tabs-ink-bar {
+  position: absolute;
+  background: var(--menu_selected_bg);
+  pointer-events: none;
+}
+.ant-tabs-tab {
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  margin: 0 32px 0 0;
+  padding: 12px 0;
+  font-size: 14px;
+  background: transparent;
+  border: 0;
+  outline: none;
+  cursor: pointer;
+}
+.ant-tabs-tab:last-of-type {
+  margin-right: 0;
+  margin-left: 0;
+}
+.ant-tabs-tab-btn:focus,
+.ant-tabs-tab-remove:focus,
+.ant-tabs-tab-btn:active,
+.ant-tabs-tab-remove:active {
+  color: #388ed3;
+}
+.ant-tabs-tab-btn {
+  outline: none;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-tabs-tab-remove {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  margin-right: -4px;
+  margin-left: 8px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 12px;
+  background: transparent;
+  border: none;
+  outline: none;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-tabs-tab-remove:hover {
+  color: var(--text_cl);
+}
+.ant-tabs-tab:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
+  color: var(--menu_selected_bg);
+  font-weight: 500;
+}
+.ant-tabs-tab.ant-tabs-tab-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:focus,
+.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:focus,
+.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:active,
+.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:active {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-tabs-tab .ant-tabs-tab-remove .anticon {
+  margin: 0;
+}
+.ant-tabs-tab .anticon {
+  margin-right: 12px;
+}
+.ant-tabs-content {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  width: 100%;
+}
+.ant-tabs-content-holder {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  min-width: 0;
+  min-height: 0;
+}
+.ant-tabs-content-animated {
+  -webkit-transition: margin 0.3s;
+  transition: margin 0.3s;
+}
+.ant-tabs-tabpane {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  width: 100%;
+  outline: none;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-row {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+      -ms-flex-flow: row wrap;
+          flex-flow: row wrap;
+}
+.ant-row::before,
+.ant-row::after {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-row-no-wrap {
+  -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+}
+.ant-row-start {
+  -webkit-box-pack: start;
+      -ms-flex-pack: start;
+          justify-content: flex-start;
+}
+.ant-row-center {
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+}
+.ant-row-end {
+  -webkit-box-pack: end;
+      -ms-flex-pack: end;
+          justify-content: flex-end;
+}
+.ant-row-space-between {
+  -webkit-box-pack: justify;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+}
+.ant-row-space-around {
+  -ms-flex-pack: distribute;
+      justify-content: space-around;
+}
+.ant-row-top {
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+}
+.ant-row-middle {
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-row-bottom {
+  -webkit-box-align: end;
+      -ms-flex-align: end;
+          align-items: flex-end;
+}
+.ant-col {
+  position: relative;
+  max-width: 100%;
+  min-height: 1px;
+}
+.ant-col-24 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 100%;
+          flex: 0 0 100%;
+  max-width: 100%;
+}
+.ant-col-push-24 {
+  left: 100%;
+}
+.ant-col-pull-24 {
+  right: 100%;
+}
+.ant-col-offset-24 {
+  margin-left: 100%;
+}
+.ant-col-order-24 {
+  -webkit-box-ordinal-group: 25;
+      -ms-flex-order: 24;
+          order: 24;
+}
+.ant-col-23 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 95.83333333%;
+          flex: 0 0 95.83333333%;
+  max-width: 95.83333333%;
+}
+.ant-col-push-23 {
+  left: 95.83333333%;
+}
+.ant-col-pull-23 {
+  right: 95.83333333%;
+}
+.ant-col-offset-23 {
+  margin-left: 95.83333333%;
+}
+.ant-col-order-23 {
+  -webkit-box-ordinal-group: 24;
+      -ms-flex-order: 23;
+          order: 23;
+}
+.ant-col-22 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 91.66666667%;
+          flex: 0 0 91.66666667%;
+  max-width: 91.66666667%;
+}
+.ant-col-push-22 {
+  left: 91.66666667%;
+}
+.ant-col-pull-22 {
+  right: 91.66666667%;
+}
+.ant-col-offset-22 {
+  margin-left: 91.66666667%;
+}
+.ant-col-order-22 {
+  -webkit-box-ordinal-group: 23;
+      -ms-flex-order: 22;
+          order: 22;
+}
+.ant-col-21 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 87.5%;
+          flex: 0 0 87.5%;
+  max-width: 87.5%;
+}
+.ant-col-push-21 {
+  left: 87.5%;
+}
+.ant-col-pull-21 {
+  right: 87.5%;
+}
+.ant-col-offset-21 {
+  margin-left: 87.5%;
+}
+.ant-col-order-21 {
+  -webkit-box-ordinal-group: 22;
+      -ms-flex-order: 21;
+          order: 21;
+}
+.ant-col-20 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 83.33333333%;
+          flex: 0 0 83.33333333%;
+  max-width: 83.33333333%;
+}
+.ant-col-push-20 {
+  left: 83.33333333%;
+}
+.ant-col-pull-20 {
+  right: 83.33333333%;
+}
+.ant-col-offset-20 {
+  margin-left: 83.33333333%;
+}
+.ant-col-order-20 {
+  -webkit-box-ordinal-group: 21;
+      -ms-flex-order: 20;
+          order: 20;
+}
+.ant-col-19 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 79.16666667%;
+          flex: 0 0 79.16666667%;
+  max-width: 79.16666667%;
+}
+.ant-col-push-19 {
+  left: 79.16666667%;
+}
+.ant-col-pull-19 {
+  right: 79.16666667%;
+}
+.ant-col-offset-19 {
+  margin-left: 79.16666667%;
+}
+.ant-col-order-19 {
+  -webkit-box-ordinal-group: 20;
+      -ms-flex-order: 19;
+          order: 19;
+}
+.ant-col-18 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 75%;
+          flex: 0 0 75%;
+  max-width: 75%;
+}
+.ant-col-push-18 {
+  left: 75%;
+}
+.ant-col-pull-18 {
+  right: 75%;
+}
+.ant-col-offset-18 {
+  margin-left: 75%;
+}
+.ant-col-order-18 {
+  -webkit-box-ordinal-group: 19;
+      -ms-flex-order: 18;
+          order: 18;
+}
+.ant-col-17 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 70.83333333%;
+          flex: 0 0 70.83333333%;
+  max-width: 70.83333333%;
+}
+.ant-col-push-17 {
+  left: 70.83333333%;
+}
+.ant-col-pull-17 {
+  right: 70.83333333%;
+}
+.ant-col-offset-17 {
+  margin-left: 70.83333333%;
+}
+.ant-col-order-17 {
+  -webkit-box-ordinal-group: 18;
+      -ms-flex-order: 17;
+          order: 17;
+}
+.ant-col-16 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 66.66666667%;
+          flex: 0 0 66.66666667%;
+  max-width: 66.66666667%;
+}
+.ant-col-push-16 {
+  left: 66.66666667%;
+}
+.ant-col-pull-16 {
+  right: 66.66666667%;
+}
+.ant-col-offset-16 {
+  margin-left: 66.66666667%;
+}
+.ant-col-order-16 {
+  -webkit-box-ordinal-group: 17;
+      -ms-flex-order: 16;
+          order: 16;
+}
+.ant-col-15 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 62.5%;
+          flex: 0 0 62.5%;
+  max-width: 62.5%;
+}
+.ant-col-push-15 {
+  left: 62.5%;
+}
+.ant-col-pull-15 {
+  right: 62.5%;
+}
+.ant-col-offset-15 {
+  margin-left: 62.5%;
+}
+.ant-col-order-15 {
+  -webkit-box-ordinal-group: 16;
+      -ms-flex-order: 15;
+          order: 15;
+}
+.ant-col-14 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 58.33333333%;
+          flex: 0 0 58.33333333%;
+  max-width: 58.33333333%;
+}
+.ant-col-push-14 {
+  left: 58.33333333%;
+}
+.ant-col-pull-14 {
+  right: 58.33333333%;
+}
+.ant-col-offset-14 {
+  margin-left: 58.33333333%;
+}
+.ant-col-order-14 {
+  -webkit-box-ordinal-group: 15;
+      -ms-flex-order: 14;
+          order: 14;
+}
+.ant-col-13 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 54.16666667%;
+          flex: 0 0 54.16666667%;
+  max-width: 54.16666667%;
+}
+.ant-col-push-13 {
+  left: 54.16666667%;
+}
+.ant-col-pull-13 {
+  right: 54.16666667%;
+}
+.ant-col-offset-13 {
+  margin-left: 54.16666667%;
+}
+.ant-col-order-13 {
+  -webkit-box-ordinal-group: 14;
+      -ms-flex-order: 13;
+          order: 13;
+}
+.ant-col-12 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 50%;
+          flex: 0 0 50%;
+  max-width: 50%;
+}
+.ant-col-push-12 {
+  left: 50%;
+}
+.ant-col-pull-12 {
+  right: 50%;
+}
+.ant-col-offset-12 {
+  margin-left: 50%;
+}
+.ant-col-order-12 {
+  -webkit-box-ordinal-group: 13;
+      -ms-flex-order: 12;
+          order: 12;
+}
+.ant-col-11 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 45.83333333%;
+          flex: 0 0 45.83333333%;
+  max-width: 45.83333333%;
+}
+.ant-col-push-11 {
+  left: 45.83333333%;
+}
+.ant-col-pull-11 {
+  right: 45.83333333%;
+}
+.ant-col-offset-11 {
+  margin-left: 45.83333333%;
+}
+.ant-col-order-11 {
+  -webkit-box-ordinal-group: 12;
+      -ms-flex-order: 11;
+          order: 11;
+}
+.ant-col-10 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 41.66666667%;
+          flex: 0 0 41.66666667%;
+  max-width: 41.66666667%;
+}
+.ant-col-push-10 {
+  left: 41.66666667%;
+}
+.ant-col-pull-10 {
+  right: 41.66666667%;
+}
+.ant-col-offset-10 {
+  margin-left: 41.66666667%;
+}
+.ant-col-order-10 {
+  -webkit-box-ordinal-group: 11;
+      -ms-flex-order: 10;
+          order: 10;
+}
+.ant-col-9 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 37.5%;
+          flex: 0 0 37.5%;
+  max-width: 37.5%;
+}
+.ant-col-push-9 {
+  left: 37.5%;
+}
+.ant-col-pull-9 {
+  right: 37.5%;
+}
+.ant-col-offset-9 {
+  margin-left: 37.5%;
+}
+.ant-col-order-9 {
+  -webkit-box-ordinal-group: 10;
+      -ms-flex-order: 9;
+          order: 9;
+}
+.ant-col-8 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 33.33333333%;
+          flex: 0 0 33.33333333%;
+  max-width: 33.33333333%;
+}
+.ant-col-push-8 {
+  left: 33.33333333%;
+}
+.ant-col-pull-8 {
+  right: 33.33333333%;
+}
+.ant-col-offset-8 {
+  margin-left: 33.33333333%;
+}
+.ant-col-order-8 {
+  -webkit-box-ordinal-group: 9;
+      -ms-flex-order: 8;
+          order: 8;
+}
+.ant-col-7 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 29.16666667%;
+          flex: 0 0 29.16666667%;
+  max-width: 29.16666667%;
+}
+.ant-col-push-7 {
+  left: 29.16666667%;
+}
+.ant-col-pull-7 {
+  right: 29.16666667%;
+}
+.ant-col-offset-7 {
+  margin-left: 29.16666667%;
+}
+.ant-col-order-7 {
+  -webkit-box-ordinal-group: 8;
+      -ms-flex-order: 7;
+          order: 7;
+}
+.ant-col-6 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 25%;
+          flex: 0 0 25%;
+  max-width: 25%;
+}
+.ant-col-push-6 {
+  left: 25%;
+}
+.ant-col-pull-6 {
+  right: 25%;
+}
+.ant-col-offset-6 {
+  margin-left: 25%;
+}
+.ant-col-order-6 {
+  -webkit-box-ordinal-group: 7;
+      -ms-flex-order: 6;
+          order: 6;
+}
+.ant-col-5 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 20.83333333%;
+          flex: 0 0 20.83333333%;
+  max-width: 20.83333333%;
+}
+.ant-col-push-5 {
+  left: 20.83333333%;
+}
+.ant-col-pull-5 {
+  right: 20.83333333%;
+}
+.ant-col-offset-5 {
+  margin-left: 20.83333333%;
+}
+.ant-col-order-5 {
+  -webkit-box-ordinal-group: 6;
+      -ms-flex-order: 5;
+          order: 5;
+}
+.ant-col-4 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 16.66666667%;
+          flex: 0 0 16.66666667%;
+  max-width: 16.66666667%;
+}
+.ant-col-push-4 {
+  left: 16.66666667%;
+}
+.ant-col-pull-4 {
+  right: 16.66666667%;
+}
+.ant-col-offset-4 {
+  margin-left: 16.66666667%;
+}
+.ant-col-order-4 {
+  -webkit-box-ordinal-group: 5;
+      -ms-flex-order: 4;
+          order: 4;
+}
+.ant-col-3 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 12.5%;
+          flex: 0 0 12.5%;
+  max-width: 12.5%;
+}
+.ant-col-push-3 {
+  left: 12.5%;
+}
+.ant-col-pull-3 {
+  right: 12.5%;
+}
+.ant-col-offset-3 {
+  margin-left: 12.5%;
+}
+.ant-col-order-3 {
+  -webkit-box-ordinal-group: 4;
+      -ms-flex-order: 3;
+          order: 3;
+}
+.ant-col-2 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 8.33333333%;
+          flex: 0 0 8.33333333%;
+  max-width: 8.33333333%;
+}
+.ant-col-push-2 {
+  left: 8.33333333%;
+}
+.ant-col-pull-2 {
+  right: 8.33333333%;
+}
+.ant-col-offset-2 {
+  margin-left: 8.33333333%;
+}
+.ant-col-order-2 {
+  -webkit-box-ordinal-group: 3;
+      -ms-flex-order: 2;
+          order: 2;
+}
+.ant-col-1 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 4.16666667%;
+          flex: 0 0 4.16666667%;
+  max-width: 4.16666667%;
+}
+.ant-col-push-1 {
+  left: 4.16666667%;
+}
+.ant-col-pull-1 {
+  right: 4.16666667%;
+}
+.ant-col-offset-1 {
+  margin-left: 4.16666667%;
+}
+.ant-col-order-1 {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+}
+.ant-col-0 {
+  display: none;
+}
+.ant-col-push-0 {
+  left: auto;
+}
+.ant-col-pull-0 {
+  right: auto;
+}
+.ant-col-push-0 {
+  left: auto;
+}
+.ant-col-pull-0 {
+  right: auto;
+}
+.ant-col-offset-0 {
+  margin-left: 0;
+}
+.ant-col-order-0 {
+  -webkit-box-ordinal-group: 1;
+      -ms-flex-order: 0;
+          order: 0;
+}
+.ant-col-push-0.ant-col-rtl {
+  right: auto;
+}
+.ant-col-pull-0.ant-col-rtl {
+  left: auto;
+}
+.ant-col-push-0.ant-col-rtl {
+  right: auto;
+}
+.ant-col-pull-0.ant-col-rtl {
+  left: auto;
+}
+.ant-col-offset-0.ant-col-rtl {
+  margin-right: 0;
+}
+.ant-col-push-1.ant-col-rtl {
+  right: 4.16666667%;
+  left: auto;
+}
+.ant-col-pull-1.ant-col-rtl {
+  right: auto;
+  left: 4.16666667%;
+}
+.ant-col-offset-1.ant-col-rtl {
+  margin-right: 4.16666667%;
+  margin-left: 0;
+}
+.ant-col-push-2.ant-col-rtl {
+  right: 8.33333333%;
+  left: auto;
+}
+.ant-col-pull-2.ant-col-rtl {
+  right: auto;
+  left: 8.33333333%;
+}
+.ant-col-offset-2.ant-col-rtl {
+  margin-right: 8.33333333%;
+  margin-left: 0;
+}
+.ant-col-push-3.ant-col-rtl {
+  right: 12.5%;
+  left: auto;
+}
+.ant-col-pull-3.ant-col-rtl {
+  right: auto;
+  left: 12.5%;
+}
+.ant-col-offset-3.ant-col-rtl {
+  margin-right: 12.5%;
+  margin-left: 0;
+}
+.ant-col-push-4.ant-col-rtl {
+  right: 16.66666667%;
+  left: auto;
+}
+.ant-col-pull-4.ant-col-rtl {
+  right: auto;
+  left: 16.66666667%;
+}
+.ant-col-offset-4.ant-col-rtl {
+  margin-right: 16.66666667%;
+  margin-left: 0;
+}
+.ant-col-push-5.ant-col-rtl {
+  right: 20.83333333%;
+  left: auto;
+}
+.ant-col-pull-5.ant-col-rtl {
+  right: auto;
+  left: 20.83333333%;
+}
+.ant-col-offset-5.ant-col-rtl {
+  margin-right: 20.83333333%;
+  margin-left: 0;
+}
+.ant-col-push-6.ant-col-rtl {
+  right: 25%;
+  left: auto;
+}
+.ant-col-pull-6.ant-col-rtl {
+  right: auto;
+  left: 25%;
+}
+.ant-col-offset-6.ant-col-rtl {
+  margin-right: 25%;
+  margin-left: 0;
+}
+.ant-col-push-7.ant-col-rtl {
+  right: 29.16666667%;
+  left: auto;
+}
+.ant-col-pull-7.ant-col-rtl {
+  right: auto;
+  left: 29.16666667%;
+}
+.ant-col-offset-7.ant-col-rtl {
+  margin-right: 29.16666667%;
+  margin-left: 0;
+}
+.ant-col-push-8.ant-col-rtl {
+  right: 33.33333333%;
+  left: auto;
+}
+.ant-col-pull-8.ant-col-rtl {
+  right: auto;
+  left: 33.33333333%;
+}
+.ant-col-offset-8.ant-col-rtl {
+  margin-right: 33.33333333%;
+  margin-left: 0;
+}
+.ant-col-push-9.ant-col-rtl {
+  right: 37.5%;
+  left: auto;
+}
+.ant-col-pull-9.ant-col-rtl {
+  right: auto;
+  left: 37.5%;
+}
+.ant-col-offset-9.ant-col-rtl {
+  margin-right: 37.5%;
+  margin-left: 0;
+}
+.ant-col-push-10.ant-col-rtl {
+  right: 41.66666667%;
+  left: auto;
+}
+.ant-col-pull-10.ant-col-rtl {
+  right: auto;
+  left: 41.66666667%;
+}
+.ant-col-offset-10.ant-col-rtl {
+  margin-right: 41.66666667%;
+  margin-left: 0;
+}
+.ant-col-push-11.ant-col-rtl {
+  right: 45.83333333%;
+  left: auto;
+}
+.ant-col-pull-11.ant-col-rtl {
+  right: auto;
+  left: 45.83333333%;
+}
+.ant-col-offset-11.ant-col-rtl {
+  margin-right: 45.83333333%;
+  margin-left: 0;
+}
+.ant-col-push-12.ant-col-rtl {
+  right: 50%;
+  left: auto;
+}
+.ant-col-pull-12.ant-col-rtl {
+  right: auto;
+  left: 50%;
+}
+.ant-col-offset-12.ant-col-rtl {
+  margin-right: 50%;
+  margin-left: 0;
+}
+.ant-col-push-13.ant-col-rtl {
+  right: 54.16666667%;
+  left: auto;
+}
+.ant-col-pull-13.ant-col-rtl {
+  right: auto;
+  left: 54.16666667%;
+}
+.ant-col-offset-13.ant-col-rtl {
+  margin-right: 54.16666667%;
+  margin-left: 0;
+}
+.ant-col-push-14.ant-col-rtl {
+  right: 58.33333333%;
+  left: auto;
+}
+.ant-col-pull-14.ant-col-rtl {
+  right: auto;
+  left: 58.33333333%;
+}
+.ant-col-offset-14.ant-col-rtl {
+  margin-right: 58.33333333%;
+  margin-left: 0;
+}
+.ant-col-push-15.ant-col-rtl {
+  right: 62.5%;
+  left: auto;
+}
+.ant-col-pull-15.ant-col-rtl {
+  right: auto;
+  left: 62.5%;
+}
+.ant-col-offset-15.ant-col-rtl {
+  margin-right: 62.5%;
+  margin-left: 0;
+}
+.ant-col-push-16.ant-col-rtl {
+  right: 66.66666667%;
+  left: auto;
+}
+.ant-col-pull-16.ant-col-rtl {
+  right: auto;
+  left: 66.66666667%;
+}
+.ant-col-offset-16.ant-col-rtl {
+  margin-right: 66.66666667%;
+  margin-left: 0;
+}
+.ant-col-push-17.ant-col-rtl {
+  right: 70.83333333%;
+  left: auto;
+}
+.ant-col-pull-17.ant-col-rtl {
+  right: auto;
+  left: 70.83333333%;
+}
+.ant-col-offset-17.ant-col-rtl {
+  margin-right: 70.83333333%;
+  margin-left: 0;
+}
+.ant-col-push-18.ant-col-rtl {
+  right: 75%;
+  left: auto;
+}
+.ant-col-pull-18.ant-col-rtl {
+  right: auto;
+  left: 75%;
+}
+.ant-col-offset-18.ant-col-rtl {
+  margin-right: 75%;
+  margin-left: 0;
+}
+.ant-col-push-19.ant-col-rtl {
+  right: 79.16666667%;
+  left: auto;
+}
+.ant-col-pull-19.ant-col-rtl {
+  right: auto;
+  left: 79.16666667%;
+}
+.ant-col-offset-19.ant-col-rtl {
+  margin-right: 79.16666667%;
+  margin-left: 0;
+}
+.ant-col-push-20.ant-col-rtl {
+  right: 83.33333333%;
+  left: auto;
+}
+.ant-col-pull-20.ant-col-rtl {
+  right: auto;
+  left: 83.33333333%;
+}
+.ant-col-offset-20.ant-col-rtl {
+  margin-right: 83.33333333%;
+  margin-left: 0;
+}
+.ant-col-push-21.ant-col-rtl {
+  right: 87.5%;
+  left: auto;
+}
+.ant-col-pull-21.ant-col-rtl {
+  right: auto;
+  left: 87.5%;
+}
+.ant-col-offset-21.ant-col-rtl {
+  margin-right: 87.5%;
+  margin-left: 0;
+}
+.ant-col-push-22.ant-col-rtl {
+  right: 91.66666667%;
+  left: auto;
+}
+.ant-col-pull-22.ant-col-rtl {
+  right: auto;
+  left: 91.66666667%;
+}
+.ant-col-offset-22.ant-col-rtl {
+  margin-right: 91.66666667%;
+  margin-left: 0;
+}
+.ant-col-push-23.ant-col-rtl {
+  right: 95.83333333%;
+  left: auto;
+}
+.ant-col-pull-23.ant-col-rtl {
+  right: auto;
+  left: 95.83333333%;
+}
+.ant-col-offset-23.ant-col-rtl {
+  margin-right: 95.83333333%;
+  margin-left: 0;
+}
+.ant-col-push-24.ant-col-rtl {
+  right: 100%;
+  left: auto;
+}
+.ant-col-pull-24.ant-col-rtl {
+  right: auto;
+  left: 100%;
+}
+.ant-col-offset-24.ant-col-rtl {
+  margin-right: 100%;
+  margin-left: 0;
+}
+.ant-col-xs-24 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 100%;
+          flex: 0 0 100%;
+  max-width: 100%;
+}
+.ant-col-xs-push-24 {
+  left: 100%;
+}
+.ant-col-xs-pull-24 {
+  right: 100%;
+}
+.ant-col-xs-offset-24 {
+  margin-left: 100%;
+}
+.ant-col-xs-order-24 {
+  -webkit-box-ordinal-group: 25;
+      -ms-flex-order: 24;
+          order: 24;
+}
+.ant-col-xs-23 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 95.83333333%;
+          flex: 0 0 95.83333333%;
+  max-width: 95.83333333%;
+}
+.ant-col-xs-push-23 {
+  left: 95.83333333%;
+}
+.ant-col-xs-pull-23 {
+  right: 95.83333333%;
+}
+.ant-col-xs-offset-23 {
+  margin-left: 95.83333333%;
+}
+.ant-col-xs-order-23 {
+  -webkit-box-ordinal-group: 24;
+      -ms-flex-order: 23;
+          order: 23;
+}
+.ant-col-xs-22 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 91.66666667%;
+          flex: 0 0 91.66666667%;
+  max-width: 91.66666667%;
+}
+.ant-col-xs-push-22 {
+  left: 91.66666667%;
+}
+.ant-col-xs-pull-22 {
+  right: 91.66666667%;
+}
+.ant-col-xs-offset-22 {
+  margin-left: 91.66666667%;
+}
+.ant-col-xs-order-22 {
+  -webkit-box-ordinal-group: 23;
+      -ms-flex-order: 22;
+          order: 22;
+}
+.ant-col-xs-21 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 87.5%;
+          flex: 0 0 87.5%;
+  max-width: 87.5%;
+}
+.ant-col-xs-push-21 {
+  left: 87.5%;
+}
+.ant-col-xs-pull-21 {
+  right: 87.5%;
+}
+.ant-col-xs-offset-21 {
+  margin-left: 87.5%;
+}
+.ant-col-xs-order-21 {
+  -webkit-box-ordinal-group: 22;
+      -ms-flex-order: 21;
+          order: 21;
+}
+.ant-col-xs-20 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 83.33333333%;
+          flex: 0 0 83.33333333%;
+  max-width: 83.33333333%;
+}
+.ant-col-xs-push-20 {
+  left: 83.33333333%;
+}
+.ant-col-xs-pull-20 {
+  right: 83.33333333%;
+}
+.ant-col-xs-offset-20 {
+  margin-left: 83.33333333%;
+}
+.ant-col-xs-order-20 {
+  -webkit-box-ordinal-group: 21;
+      -ms-flex-order: 20;
+          order: 20;
+}
+.ant-col-xs-19 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 79.16666667%;
+          flex: 0 0 79.16666667%;
+  max-width: 79.16666667%;
+}
+.ant-col-xs-push-19 {
+  left: 79.16666667%;
+}
+.ant-col-xs-pull-19 {
+  right: 79.16666667%;
+}
+.ant-col-xs-offset-19 {
+  margin-left: 79.16666667%;
+}
+.ant-col-xs-order-19 {
+  -webkit-box-ordinal-group: 20;
+      -ms-flex-order: 19;
+          order: 19;
+}
+.ant-col-xs-18 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 75%;
+          flex: 0 0 75%;
+  max-width: 75%;
+}
+.ant-col-xs-push-18 {
+  left: 75%;
+}
+.ant-col-xs-pull-18 {
+  right: 75%;
+}
+.ant-col-xs-offset-18 {
+  margin-left: 75%;
+}
+.ant-col-xs-order-18 {
+  -webkit-box-ordinal-group: 19;
+      -ms-flex-order: 18;
+          order: 18;
+}
+.ant-col-xs-17 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 70.83333333%;
+          flex: 0 0 70.83333333%;
+  max-width: 70.83333333%;
+}
+.ant-col-xs-push-17 {
+  left: 70.83333333%;
+}
+.ant-col-xs-pull-17 {
+  right: 70.83333333%;
+}
+.ant-col-xs-offset-17 {
+  margin-left: 70.83333333%;
+}
+.ant-col-xs-order-17 {
+  -webkit-box-ordinal-group: 18;
+      -ms-flex-order: 17;
+          order: 17;
+}
+.ant-col-xs-16 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 66.66666667%;
+          flex: 0 0 66.66666667%;
+  max-width: 66.66666667%;
+}
+.ant-col-xs-push-16 {
+  left: 66.66666667%;
+}
+.ant-col-xs-pull-16 {
+  right: 66.66666667%;
+}
+.ant-col-xs-offset-16 {
+  margin-left: 66.66666667%;
+}
+.ant-col-xs-order-16 {
+  -webkit-box-ordinal-group: 17;
+      -ms-flex-order: 16;
+          order: 16;
+}
+.ant-col-xs-15 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 62.5%;
+          flex: 0 0 62.5%;
+  max-width: 62.5%;
+}
+.ant-col-xs-push-15 {
+  left: 62.5%;
+}
+.ant-col-xs-pull-15 {
+  right: 62.5%;
+}
+.ant-col-xs-offset-15 {
+  margin-left: 62.5%;
+}
+.ant-col-xs-order-15 {
+  -webkit-box-ordinal-group: 16;
+      -ms-flex-order: 15;
+          order: 15;
+}
+.ant-col-xs-14 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 58.33333333%;
+          flex: 0 0 58.33333333%;
+  max-width: 58.33333333%;
+}
+.ant-col-xs-push-14 {
+  left: 58.33333333%;
+}
+.ant-col-xs-pull-14 {
+  right: 58.33333333%;
+}
+.ant-col-xs-offset-14 {
+  margin-left: 58.33333333%;
+}
+.ant-col-xs-order-14 {
+  -webkit-box-ordinal-group: 15;
+      -ms-flex-order: 14;
+          order: 14;
+}
+.ant-col-xs-13 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 54.16666667%;
+          flex: 0 0 54.16666667%;
+  max-width: 54.16666667%;
+}
+.ant-col-xs-push-13 {
+  left: 54.16666667%;
+}
+.ant-col-xs-pull-13 {
+  right: 54.16666667%;
+}
+.ant-col-xs-offset-13 {
+  margin-left: 54.16666667%;
+}
+.ant-col-xs-order-13 {
+  -webkit-box-ordinal-group: 14;
+      -ms-flex-order: 13;
+          order: 13;
+}
+.ant-col-xs-12 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 50%;
+          flex: 0 0 50%;
+  max-width: 50%;
+}
+.ant-col-xs-push-12 {
+  left: 50%;
+}
+.ant-col-xs-pull-12 {
+  right: 50%;
+}
+.ant-col-xs-offset-12 {
+  margin-left: 50%;
+}
+.ant-col-xs-order-12 {
+  -webkit-box-ordinal-group: 13;
+      -ms-flex-order: 12;
+          order: 12;
+}
+.ant-col-xs-11 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 45.83333333%;
+          flex: 0 0 45.83333333%;
+  max-width: 45.83333333%;
+}
+.ant-col-xs-push-11 {
+  left: 45.83333333%;
+}
+.ant-col-xs-pull-11 {
+  right: 45.83333333%;
+}
+.ant-col-xs-offset-11 {
+  margin-left: 45.83333333%;
+}
+.ant-col-xs-order-11 {
+  -webkit-box-ordinal-group: 12;
+      -ms-flex-order: 11;
+          order: 11;
+}
+.ant-col-xs-10 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 41.66666667%;
+          flex: 0 0 41.66666667%;
+  max-width: 41.66666667%;
+}
+.ant-col-xs-push-10 {
+  left: 41.66666667%;
+}
+.ant-col-xs-pull-10 {
+  right: 41.66666667%;
+}
+.ant-col-xs-offset-10 {
+  margin-left: 41.66666667%;
+}
+.ant-col-xs-order-10 {
+  -webkit-box-ordinal-group: 11;
+      -ms-flex-order: 10;
+          order: 10;
+}
+.ant-col-xs-9 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 37.5%;
+          flex: 0 0 37.5%;
+  max-width: 37.5%;
+}
+.ant-col-xs-push-9 {
+  left: 37.5%;
+}
+.ant-col-xs-pull-9 {
+  right: 37.5%;
+}
+.ant-col-xs-offset-9 {
+  margin-left: 37.5%;
+}
+.ant-col-xs-order-9 {
+  -webkit-box-ordinal-group: 10;
+      -ms-flex-order: 9;
+          order: 9;
+}
+.ant-col-xs-8 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 33.33333333%;
+          flex: 0 0 33.33333333%;
+  max-width: 33.33333333%;
+}
+.ant-col-xs-push-8 {
+  left: 33.33333333%;
+}
+.ant-col-xs-pull-8 {
+  right: 33.33333333%;
+}
+.ant-col-xs-offset-8 {
+  margin-left: 33.33333333%;
+}
+.ant-col-xs-order-8 {
+  -webkit-box-ordinal-group: 9;
+      -ms-flex-order: 8;
+          order: 8;
+}
+.ant-col-xs-7 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 29.16666667%;
+          flex: 0 0 29.16666667%;
+  max-width: 29.16666667%;
+}
+.ant-col-xs-push-7 {
+  left: 29.16666667%;
+}
+.ant-col-xs-pull-7 {
+  right: 29.16666667%;
+}
+.ant-col-xs-offset-7 {
+  margin-left: 29.16666667%;
+}
+.ant-col-xs-order-7 {
+  -webkit-box-ordinal-group: 8;
+      -ms-flex-order: 7;
+          order: 7;
+}
+.ant-col-xs-6 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 25%;
+          flex: 0 0 25%;
+  max-width: 25%;
+}
+.ant-col-xs-push-6 {
+  left: 25%;
+}
+.ant-col-xs-pull-6 {
+  right: 25%;
+}
+.ant-col-xs-offset-6 {
+  margin-left: 25%;
+}
+.ant-col-xs-order-6 {
+  -webkit-box-ordinal-group: 7;
+      -ms-flex-order: 6;
+          order: 6;
+}
+.ant-col-xs-5 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 20.83333333%;
+          flex: 0 0 20.83333333%;
+  max-width: 20.83333333%;
+}
+.ant-col-xs-push-5 {
+  left: 20.83333333%;
+}
+.ant-col-xs-pull-5 {
+  right: 20.83333333%;
+}
+.ant-col-xs-offset-5 {
+  margin-left: 20.83333333%;
+}
+.ant-col-xs-order-5 {
+  -webkit-box-ordinal-group: 6;
+      -ms-flex-order: 5;
+          order: 5;
+}
+.ant-col-xs-4 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 16.66666667%;
+          flex: 0 0 16.66666667%;
+  max-width: 16.66666667%;
+}
+.ant-col-xs-push-4 {
+  left: 16.66666667%;
+}
+.ant-col-xs-pull-4 {
+  right: 16.66666667%;
+}
+.ant-col-xs-offset-4 {
+  margin-left: 16.66666667%;
+}
+.ant-col-xs-order-4 {
+  -webkit-box-ordinal-group: 5;
+      -ms-flex-order: 4;
+          order: 4;
+}
+.ant-col-xs-3 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 12.5%;
+          flex: 0 0 12.5%;
+  max-width: 12.5%;
+}
+.ant-col-xs-push-3 {
+  left: 12.5%;
+}
+.ant-col-xs-pull-3 {
+  right: 12.5%;
+}
+.ant-col-xs-offset-3 {
+  margin-left: 12.5%;
+}
+.ant-col-xs-order-3 {
+  -webkit-box-ordinal-group: 4;
+      -ms-flex-order: 3;
+          order: 3;
+}
+.ant-col-xs-2 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 8.33333333%;
+          flex: 0 0 8.33333333%;
+  max-width: 8.33333333%;
+}
+.ant-col-xs-push-2 {
+  left: 8.33333333%;
+}
+.ant-col-xs-pull-2 {
+  right: 8.33333333%;
+}
+.ant-col-xs-offset-2 {
+  margin-left: 8.33333333%;
+}
+.ant-col-xs-order-2 {
+  -webkit-box-ordinal-group: 3;
+      -ms-flex-order: 2;
+          order: 2;
+}
+.ant-col-xs-1 {
+  display: block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 4.16666667%;
+          flex: 0 0 4.16666667%;
+  max-width: 4.16666667%;
+}
+.ant-col-xs-push-1 {
+  left: 4.16666667%;
+}
+.ant-col-xs-pull-1 {
+  right: 4.16666667%;
+}
+.ant-col-xs-offset-1 {
+  margin-left: 4.16666667%;
+}
+.ant-col-xs-order-1 {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+}
+.ant-col-xs-0 {
+  display: none;
+}
+.ant-col-push-0 {
+  left: auto;
+}
+.ant-col-pull-0 {
+  right: auto;
+}
+.ant-col-xs-push-0 {
+  left: auto;
+}
+.ant-col-xs-pull-0 {
+  right: auto;
+}
+.ant-col-xs-offset-0 {
+  margin-left: 0;
+}
+.ant-col-xs-order-0 {
+  -webkit-box-ordinal-group: 1;
+      -ms-flex-order: 0;
+          order: 0;
+}
+.ant-col-push-0.ant-col-rtl {
+  right: auto;
+}
+.ant-col-pull-0.ant-col-rtl {
+  left: auto;
+}
+.ant-col-xs-push-0.ant-col-rtl {
+  right: auto;
+}
+.ant-col-xs-pull-0.ant-col-rtl {
+  left: auto;
+}
+.ant-col-xs-offset-0.ant-col-rtl {
+  margin-right: 0;
+}
+.ant-col-xs-push-1.ant-col-rtl {
+  right: 4.16666667%;
+  left: auto;
+}
+.ant-col-xs-pull-1.ant-col-rtl {
+  right: auto;
+  left: 4.16666667%;
+}
+.ant-col-xs-offset-1.ant-col-rtl {
+  margin-right: 4.16666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-2.ant-col-rtl {
+  right: 8.33333333%;
+  left: auto;
+}
+.ant-col-xs-pull-2.ant-col-rtl {
+  right: auto;
+  left: 8.33333333%;
+}
+.ant-col-xs-offset-2.ant-col-rtl {
+  margin-right: 8.33333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-3.ant-col-rtl {
+  right: 12.5%;
+  left: auto;
+}
+.ant-col-xs-pull-3.ant-col-rtl {
+  right: auto;
+  left: 12.5%;
+}
+.ant-col-xs-offset-3.ant-col-rtl {
+  margin-right: 12.5%;
+  margin-left: 0;
+}
+.ant-col-xs-push-4.ant-col-rtl {
+  right: 16.66666667%;
+  left: auto;
+}
+.ant-col-xs-pull-4.ant-col-rtl {
+  right: auto;
+  left: 16.66666667%;
+}
+.ant-col-xs-offset-4.ant-col-rtl {
+  margin-right: 16.66666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-5.ant-col-rtl {
+  right: 20.83333333%;
+  left: auto;
+}
+.ant-col-xs-pull-5.ant-col-rtl {
+  right: auto;
+  left: 20.83333333%;
+}
+.ant-col-xs-offset-5.ant-col-rtl {
+  margin-right: 20.83333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-6.ant-col-rtl {
+  right: 25%;
+  left: auto;
+}
+.ant-col-xs-pull-6.ant-col-rtl {
+  right: auto;
+  left: 25%;
+}
+.ant-col-xs-offset-6.ant-col-rtl {
+  margin-right: 25%;
+  margin-left: 0;
+}
+.ant-col-xs-push-7.ant-col-rtl {
+  right: 29.16666667%;
+  left: auto;
+}
+.ant-col-xs-pull-7.ant-col-rtl {
+  right: auto;
+  left: 29.16666667%;
+}
+.ant-col-xs-offset-7.ant-col-rtl {
+  margin-right: 29.16666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-8.ant-col-rtl {
+  right: 33.33333333%;
+  left: auto;
+}
+.ant-col-xs-pull-8.ant-col-rtl {
+  right: auto;
+  left: 33.33333333%;
+}
+.ant-col-xs-offset-8.ant-col-rtl {
+  margin-right: 33.33333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-9.ant-col-rtl {
+  right: 37.5%;
+  left: auto;
+}
+.ant-col-xs-pull-9.ant-col-rtl {
+  right: auto;
+  left: 37.5%;
+}
+.ant-col-xs-offset-9.ant-col-rtl {
+  margin-right: 37.5%;
+  margin-left: 0;
+}
+.ant-col-xs-push-10.ant-col-rtl {
+  right: 41.66666667%;
+  left: auto;
+}
+.ant-col-xs-pull-10.ant-col-rtl {
+  right: auto;
+  left: 41.66666667%;
+}
+.ant-col-xs-offset-10.ant-col-rtl {
+  margin-right: 41.66666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-11.ant-col-rtl {
+  right: 45.83333333%;
+  left: auto;
+}
+.ant-col-xs-pull-11.ant-col-rtl {
+  right: auto;
+  left: 45.83333333%;
+}
+.ant-col-xs-offset-11.ant-col-rtl {
+  margin-right: 45.83333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-12.ant-col-rtl {
+  right: 50%;
+  left: auto;
+}
+.ant-col-xs-pull-12.ant-col-rtl {
+  right: auto;
+  left: 50%;
+}
+.ant-col-xs-offset-12.ant-col-rtl {
+  margin-right: 50%;
+  margin-left: 0;
+}
+.ant-col-xs-push-13.ant-col-rtl {
+  right: 54.16666667%;
+  left: auto;
+}
+.ant-col-xs-pull-13.ant-col-rtl {
+  right: auto;
+  left: 54.16666667%;
+}
+.ant-col-xs-offset-13.ant-col-rtl {
+  margin-right: 54.16666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-14.ant-col-rtl {
+  right: 58.33333333%;
+  left: auto;
+}
+.ant-col-xs-pull-14.ant-col-rtl {
+  right: auto;
+  left: 58.33333333%;
+}
+.ant-col-xs-offset-14.ant-col-rtl {
+  margin-right: 58.33333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-15.ant-col-rtl {
+  right: 62.5%;
+  left: auto;
+}
+.ant-col-xs-pull-15.ant-col-rtl {
+  right: auto;
+  left: 62.5%;
+}
+.ant-col-xs-offset-15.ant-col-rtl {
+  margin-right: 62.5%;
+  margin-left: 0;
+}
+.ant-col-xs-push-16.ant-col-rtl {
+  right: 66.66666667%;
+  left: auto;
+}
+.ant-col-xs-pull-16.ant-col-rtl {
+  right: auto;
+  left: 66.66666667%;
+}
+.ant-col-xs-offset-16.ant-col-rtl {
+  margin-right: 66.66666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-17.ant-col-rtl {
+  right: 70.83333333%;
+  left: auto;
+}
+.ant-col-xs-pull-17.ant-col-rtl {
+  right: auto;
+  left: 70.83333333%;
+}
+.ant-col-xs-offset-17.ant-col-rtl {
+  margin-right: 70.83333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-18.ant-col-rtl {
+  right: 75%;
+  left: auto;
+}
+.ant-col-xs-pull-18.ant-col-rtl {
+  right: auto;
+  left: 75%;
+}
+.ant-col-xs-offset-18.ant-col-rtl {
+  margin-right: 75%;
+  margin-left: 0;
+}
+.ant-col-xs-push-19.ant-col-rtl {
+  right: 79.16666667%;
+  left: auto;
+}
+.ant-col-xs-pull-19.ant-col-rtl {
+  right: auto;
+  left: 79.16666667%;
+}
+.ant-col-xs-offset-19.ant-col-rtl {
+  margin-right: 79.16666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-20.ant-col-rtl {
+  right: 83.33333333%;
+  left: auto;
+}
+.ant-col-xs-pull-20.ant-col-rtl {
+  right: auto;
+  left: 83.33333333%;
+}
+.ant-col-xs-offset-20.ant-col-rtl {
+  margin-right: 83.33333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-21.ant-col-rtl {
+  right: 87.5%;
+  left: auto;
+}
+.ant-col-xs-pull-21.ant-col-rtl {
+  right: auto;
+  left: 87.5%;
+}
+.ant-col-xs-offset-21.ant-col-rtl {
+  margin-right: 87.5%;
+  margin-left: 0;
+}
+.ant-col-xs-push-22.ant-col-rtl {
+  right: 91.66666667%;
+  left: auto;
+}
+.ant-col-xs-pull-22.ant-col-rtl {
+  right: auto;
+  left: 91.66666667%;
+}
+.ant-col-xs-offset-22.ant-col-rtl {
+  margin-right: 91.66666667%;
+  margin-left: 0;
+}
+.ant-col-xs-push-23.ant-col-rtl {
+  right: 95.83333333%;
+  left: auto;
+}
+.ant-col-xs-pull-23.ant-col-rtl {
+  right: auto;
+  left: 95.83333333%;
+}
+.ant-col-xs-offset-23.ant-col-rtl {
+  margin-right: 95.83333333%;
+  margin-left: 0;
+}
+.ant-col-xs-push-24.ant-col-rtl {
+  right: 100%;
+  left: auto;
+}
+.ant-col-xs-pull-24.ant-col-rtl {
+  right: auto;
+  left: 100%;
+}
+.ant-col-xs-offset-24.ant-col-rtl {
+  margin-right: 100%;
+  margin-left: 0;
+}
+@media (min-width: 576px) {
+  .ant-col-sm-24 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 100%;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .ant-col-sm-push-24 {
+    left: 100%;
+  }
+  .ant-col-sm-pull-24 {
+    right: 100%;
+  }
+  .ant-col-sm-offset-24 {
+    margin-left: 100%;
+  }
+  .ant-col-sm-order-24 {
+    -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+            order: 24;
+  }
+  .ant-col-sm-23 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 95.83333333%;
+            flex: 0 0 95.83333333%;
+    max-width: 95.83333333%;
+  }
+  .ant-col-sm-push-23 {
+    left: 95.83333333%;
+  }
+  .ant-col-sm-pull-23 {
+    right: 95.83333333%;
+  }
+  .ant-col-sm-offset-23 {
+    margin-left: 95.83333333%;
+  }
+  .ant-col-sm-order-23 {
+    -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+            order: 23;
+  }
+  .ant-col-sm-22 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 91.66666667%;
+            flex: 0 0 91.66666667%;
+    max-width: 91.66666667%;
+  }
+  .ant-col-sm-push-22 {
+    left: 91.66666667%;
+  }
+  .ant-col-sm-pull-22 {
+    right: 91.66666667%;
+  }
+  .ant-col-sm-offset-22 {
+    margin-left: 91.66666667%;
+  }
+  .ant-col-sm-order-22 {
+    -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+            order: 22;
+  }
+  .ant-col-sm-21 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 87.5%;
+            flex: 0 0 87.5%;
+    max-width: 87.5%;
+  }
+  .ant-col-sm-push-21 {
+    left: 87.5%;
+  }
+  .ant-col-sm-pull-21 {
+    right: 87.5%;
+  }
+  .ant-col-sm-offset-21 {
+    margin-left: 87.5%;
+  }
+  .ant-col-sm-order-21 {
+    -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+            order: 21;
+  }
+  .ant-col-sm-20 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 83.33333333%;
+            flex: 0 0 83.33333333%;
+    max-width: 83.33333333%;
+  }
+  .ant-col-sm-push-20 {
+    left: 83.33333333%;
+  }
+  .ant-col-sm-pull-20 {
+    right: 83.33333333%;
+  }
+  .ant-col-sm-offset-20 {
+    margin-left: 83.33333333%;
+  }
+  .ant-col-sm-order-20 {
+    -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+            order: 20;
+  }
+  .ant-col-sm-19 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 79.16666667%;
+            flex: 0 0 79.16666667%;
+    max-width: 79.16666667%;
+  }
+  .ant-col-sm-push-19 {
+    left: 79.16666667%;
+  }
+  .ant-col-sm-pull-19 {
+    right: 79.16666667%;
+  }
+  .ant-col-sm-offset-19 {
+    margin-left: 79.16666667%;
+  }
+  .ant-col-sm-order-19 {
+    -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+            order: 19;
+  }
+  .ant-col-sm-18 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 75%;
+            flex: 0 0 75%;
+    max-width: 75%;
+  }
+  .ant-col-sm-push-18 {
+    left: 75%;
+  }
+  .ant-col-sm-pull-18 {
+    right: 75%;
+  }
+  .ant-col-sm-offset-18 {
+    margin-left: 75%;
+  }
+  .ant-col-sm-order-18 {
+    -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+            order: 18;
+  }
+  .ant-col-sm-17 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 70.83333333%;
+            flex: 0 0 70.83333333%;
+    max-width: 70.83333333%;
+  }
+  .ant-col-sm-push-17 {
+    left: 70.83333333%;
+  }
+  .ant-col-sm-pull-17 {
+    right: 70.83333333%;
+  }
+  .ant-col-sm-offset-17 {
+    margin-left: 70.83333333%;
+  }
+  .ant-col-sm-order-17 {
+    -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+            order: 17;
+  }
+  .ant-col-sm-16 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 66.66666667%;
+            flex: 0 0 66.66666667%;
+    max-width: 66.66666667%;
+  }
+  .ant-col-sm-push-16 {
+    left: 66.66666667%;
+  }
+  .ant-col-sm-pull-16 {
+    right: 66.66666667%;
+  }
+  .ant-col-sm-offset-16 {
+    margin-left: 66.66666667%;
+  }
+  .ant-col-sm-order-16 {
+    -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+            order: 16;
+  }
+  .ant-col-sm-15 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 62.5%;
+            flex: 0 0 62.5%;
+    max-width: 62.5%;
+  }
+  .ant-col-sm-push-15 {
+    left: 62.5%;
+  }
+  .ant-col-sm-pull-15 {
+    right: 62.5%;
+  }
+  .ant-col-sm-offset-15 {
+    margin-left: 62.5%;
+  }
+  .ant-col-sm-order-15 {
+    -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+            order: 15;
+  }
+  .ant-col-sm-14 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 58.33333333%;
+            flex: 0 0 58.33333333%;
+    max-width: 58.33333333%;
+  }
+  .ant-col-sm-push-14 {
+    left: 58.33333333%;
+  }
+  .ant-col-sm-pull-14 {
+    right: 58.33333333%;
+  }
+  .ant-col-sm-offset-14 {
+    margin-left: 58.33333333%;
+  }
+  .ant-col-sm-order-14 {
+    -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+            order: 14;
+  }
+  .ant-col-sm-13 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 54.16666667%;
+            flex: 0 0 54.16666667%;
+    max-width: 54.16666667%;
+  }
+  .ant-col-sm-push-13 {
+    left: 54.16666667%;
+  }
+  .ant-col-sm-pull-13 {
+    right: 54.16666667%;
+  }
+  .ant-col-sm-offset-13 {
+    margin-left: 54.16666667%;
+  }
+  .ant-col-sm-order-13 {
+    -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+            order: 13;
+  }
+  .ant-col-sm-12 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 50%;
+            flex: 0 0 50%;
+    max-width: 50%;
+  }
+  .ant-col-sm-push-12 {
+    left: 50%;
+  }
+  .ant-col-sm-pull-12 {
+    right: 50%;
+  }
+  .ant-col-sm-offset-12 {
+    margin-left: 50%;
+  }
+  .ant-col-sm-order-12 {
+    -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+            order: 12;
+  }
+  .ant-col-sm-11 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 45.83333333%;
+            flex: 0 0 45.83333333%;
+    max-width: 45.83333333%;
+  }
+  .ant-col-sm-push-11 {
+    left: 45.83333333%;
+  }
+  .ant-col-sm-pull-11 {
+    right: 45.83333333%;
+  }
+  .ant-col-sm-offset-11 {
+    margin-left: 45.83333333%;
+  }
+  .ant-col-sm-order-11 {
+    -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+            order: 11;
+  }
+  .ant-col-sm-10 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 41.66666667%;
+            flex: 0 0 41.66666667%;
+    max-width: 41.66666667%;
+  }
+  .ant-col-sm-push-10 {
+    left: 41.66666667%;
+  }
+  .ant-col-sm-pull-10 {
+    right: 41.66666667%;
+  }
+  .ant-col-sm-offset-10 {
+    margin-left: 41.66666667%;
+  }
+  .ant-col-sm-order-10 {
+    -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+            order: 10;
+  }
+  .ant-col-sm-9 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 37.5%;
+            flex: 0 0 37.5%;
+    max-width: 37.5%;
+  }
+  .ant-col-sm-push-9 {
+    left: 37.5%;
+  }
+  .ant-col-sm-pull-9 {
+    right: 37.5%;
+  }
+  .ant-col-sm-offset-9 {
+    margin-left: 37.5%;
+  }
+  .ant-col-sm-order-9 {
+    -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+            order: 9;
+  }
+  .ant-col-sm-8 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 33.33333333%;
+            flex: 0 0 33.33333333%;
+    max-width: 33.33333333%;
+  }
+  .ant-col-sm-push-8 {
+    left: 33.33333333%;
+  }
+  .ant-col-sm-pull-8 {
+    right: 33.33333333%;
+  }
+  .ant-col-sm-offset-8 {
+    margin-left: 33.33333333%;
+  }
+  .ant-col-sm-order-8 {
+    -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+            order: 8;
+  }
+  .ant-col-sm-7 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 29.16666667%;
+            flex: 0 0 29.16666667%;
+    max-width: 29.16666667%;
+  }
+  .ant-col-sm-push-7 {
+    left: 29.16666667%;
+  }
+  .ant-col-sm-pull-7 {
+    right: 29.16666667%;
+  }
+  .ant-col-sm-offset-7 {
+    margin-left: 29.16666667%;
+  }
+  .ant-col-sm-order-7 {
+    -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+            order: 7;
+  }
+  .ant-col-sm-6 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 25%;
+            flex: 0 0 25%;
+    max-width: 25%;
+  }
+  .ant-col-sm-push-6 {
+    left: 25%;
+  }
+  .ant-col-sm-pull-6 {
+    right: 25%;
+  }
+  .ant-col-sm-offset-6 {
+    margin-left: 25%;
+  }
+  .ant-col-sm-order-6 {
+    -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+            order: 6;
+  }
+  .ant-col-sm-5 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 20.83333333%;
+            flex: 0 0 20.83333333%;
+    max-width: 20.83333333%;
+  }
+  .ant-col-sm-push-5 {
+    left: 20.83333333%;
+  }
+  .ant-col-sm-pull-5 {
+    right: 20.83333333%;
+  }
+  .ant-col-sm-offset-5 {
+    margin-left: 20.83333333%;
+  }
+  .ant-col-sm-order-5 {
+    -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+            order: 5;
+  }
+  .ant-col-sm-4 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 16.66666667%;
+            flex: 0 0 16.66666667%;
+    max-width: 16.66666667%;
+  }
+  .ant-col-sm-push-4 {
+    left: 16.66666667%;
+  }
+  .ant-col-sm-pull-4 {
+    right: 16.66666667%;
+  }
+  .ant-col-sm-offset-4 {
+    margin-left: 16.66666667%;
+  }
+  .ant-col-sm-order-4 {
+    -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+            order: 4;
+  }
+  .ant-col-sm-3 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 12.5%;
+            flex: 0 0 12.5%;
+    max-width: 12.5%;
+  }
+  .ant-col-sm-push-3 {
+    left: 12.5%;
+  }
+  .ant-col-sm-pull-3 {
+    right: 12.5%;
+  }
+  .ant-col-sm-offset-3 {
+    margin-left: 12.5%;
+  }
+  .ant-col-sm-order-3 {
+    -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+            order: 3;
+  }
+  .ant-col-sm-2 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 8.33333333%;
+            flex: 0 0 8.33333333%;
+    max-width: 8.33333333%;
+  }
+  .ant-col-sm-push-2 {
+    left: 8.33333333%;
+  }
+  .ant-col-sm-pull-2 {
+    right: 8.33333333%;
+  }
+  .ant-col-sm-offset-2 {
+    margin-left: 8.33333333%;
+  }
+  .ant-col-sm-order-2 {
+    -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+            order: 2;
+  }
+  .ant-col-sm-1 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 4.16666667%;
+            flex: 0 0 4.16666667%;
+    max-width: 4.16666667%;
+  }
+  .ant-col-sm-push-1 {
+    left: 4.16666667%;
+  }
+  .ant-col-sm-pull-1 {
+    right: 4.16666667%;
+  }
+  .ant-col-sm-offset-1 {
+    margin-left: 4.16666667%;
+  }
+  .ant-col-sm-order-1 {
+    -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+            order: 1;
+  }
+  .ant-col-sm-0 {
+    display: none;
+  }
+  .ant-col-push-0 {
+    left: auto;
+  }
+  .ant-col-pull-0 {
+    right: auto;
+  }
+  .ant-col-sm-push-0 {
+    left: auto;
+  }
+  .ant-col-sm-pull-0 {
+    right: auto;
+  }
+  .ant-col-sm-offset-0 {
+    margin-left: 0;
+  }
+  .ant-col-sm-order-0 {
+    -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+            order: 0;
+  }
+  .ant-col-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-sm-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-sm-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-sm-offset-0.ant-col-rtl {
+    margin-right: 0;
+  }
+  .ant-col-sm-push-1.ant-col-rtl {
+    right: 4.16666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-1.ant-col-rtl {
+    right: auto;
+    left: 4.16666667%;
+  }
+  .ant-col-sm-offset-1.ant-col-rtl {
+    margin-right: 4.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-2.ant-col-rtl {
+    right: 8.33333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-2.ant-col-rtl {
+    right: auto;
+    left: 8.33333333%;
+  }
+  .ant-col-sm-offset-2.ant-col-rtl {
+    margin-right: 8.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-3.ant-col-rtl {
+    right: 12.5%;
+    left: auto;
+  }
+  .ant-col-sm-pull-3.ant-col-rtl {
+    right: auto;
+    left: 12.5%;
+  }
+  .ant-col-sm-offset-3.ant-col-rtl {
+    margin-right: 12.5%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-4.ant-col-rtl {
+    right: 16.66666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-4.ant-col-rtl {
+    right: auto;
+    left: 16.66666667%;
+  }
+  .ant-col-sm-offset-4.ant-col-rtl {
+    margin-right: 16.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-5.ant-col-rtl {
+    right: 20.83333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-5.ant-col-rtl {
+    right: auto;
+    left: 20.83333333%;
+  }
+  .ant-col-sm-offset-5.ant-col-rtl {
+    margin-right: 20.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-6.ant-col-rtl {
+    right: 25%;
+    left: auto;
+  }
+  .ant-col-sm-pull-6.ant-col-rtl {
+    right: auto;
+    left: 25%;
+  }
+  .ant-col-sm-offset-6.ant-col-rtl {
+    margin-right: 25%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-7.ant-col-rtl {
+    right: 29.16666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-7.ant-col-rtl {
+    right: auto;
+    left: 29.16666667%;
+  }
+  .ant-col-sm-offset-7.ant-col-rtl {
+    margin-right: 29.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-8.ant-col-rtl {
+    right: 33.33333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-8.ant-col-rtl {
+    right: auto;
+    left: 33.33333333%;
+  }
+  .ant-col-sm-offset-8.ant-col-rtl {
+    margin-right: 33.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-9.ant-col-rtl {
+    right: 37.5%;
+    left: auto;
+  }
+  .ant-col-sm-pull-9.ant-col-rtl {
+    right: auto;
+    left: 37.5%;
+  }
+  .ant-col-sm-offset-9.ant-col-rtl {
+    margin-right: 37.5%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-10.ant-col-rtl {
+    right: 41.66666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-10.ant-col-rtl {
+    right: auto;
+    left: 41.66666667%;
+  }
+  .ant-col-sm-offset-10.ant-col-rtl {
+    margin-right: 41.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-11.ant-col-rtl {
+    right: 45.83333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-11.ant-col-rtl {
+    right: auto;
+    left: 45.83333333%;
+  }
+  .ant-col-sm-offset-11.ant-col-rtl {
+    margin-right: 45.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-12.ant-col-rtl {
+    right: 50%;
+    left: auto;
+  }
+  .ant-col-sm-pull-12.ant-col-rtl {
+    right: auto;
+    left: 50%;
+  }
+  .ant-col-sm-offset-12.ant-col-rtl {
+    margin-right: 50%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-13.ant-col-rtl {
+    right: 54.16666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-13.ant-col-rtl {
+    right: auto;
+    left: 54.16666667%;
+  }
+  .ant-col-sm-offset-13.ant-col-rtl {
+    margin-right: 54.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-14.ant-col-rtl {
+    right: 58.33333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-14.ant-col-rtl {
+    right: auto;
+    left: 58.33333333%;
+  }
+  .ant-col-sm-offset-14.ant-col-rtl {
+    margin-right: 58.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-15.ant-col-rtl {
+    right: 62.5%;
+    left: auto;
+  }
+  .ant-col-sm-pull-15.ant-col-rtl {
+    right: auto;
+    left: 62.5%;
+  }
+  .ant-col-sm-offset-15.ant-col-rtl {
+    margin-right: 62.5%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-16.ant-col-rtl {
+    right: 66.66666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-16.ant-col-rtl {
+    right: auto;
+    left: 66.66666667%;
+  }
+  .ant-col-sm-offset-16.ant-col-rtl {
+    margin-right: 66.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-17.ant-col-rtl {
+    right: 70.83333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-17.ant-col-rtl {
+    right: auto;
+    left: 70.83333333%;
+  }
+  .ant-col-sm-offset-17.ant-col-rtl {
+    margin-right: 70.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-18.ant-col-rtl {
+    right: 75%;
+    left: auto;
+  }
+  .ant-col-sm-pull-18.ant-col-rtl {
+    right: auto;
+    left: 75%;
+  }
+  .ant-col-sm-offset-18.ant-col-rtl {
+    margin-right: 75%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-19.ant-col-rtl {
+    right: 79.16666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-19.ant-col-rtl {
+    right: auto;
+    left: 79.16666667%;
+  }
+  .ant-col-sm-offset-19.ant-col-rtl {
+    margin-right: 79.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-20.ant-col-rtl {
+    right: 83.33333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-20.ant-col-rtl {
+    right: auto;
+    left: 83.33333333%;
+  }
+  .ant-col-sm-offset-20.ant-col-rtl {
+    margin-right: 83.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-21.ant-col-rtl {
+    right: 87.5%;
+    left: auto;
+  }
+  .ant-col-sm-pull-21.ant-col-rtl {
+    right: auto;
+    left: 87.5%;
+  }
+  .ant-col-sm-offset-21.ant-col-rtl {
+    margin-right: 87.5%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-22.ant-col-rtl {
+    right: 91.66666667%;
+    left: auto;
+  }
+  .ant-col-sm-pull-22.ant-col-rtl {
+    right: auto;
+    left: 91.66666667%;
+  }
+  .ant-col-sm-offset-22.ant-col-rtl {
+    margin-right: 91.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-23.ant-col-rtl {
+    right: 95.83333333%;
+    left: auto;
+  }
+  .ant-col-sm-pull-23.ant-col-rtl {
+    right: auto;
+    left: 95.83333333%;
+  }
+  .ant-col-sm-offset-23.ant-col-rtl {
+    margin-right: 95.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-sm-push-24.ant-col-rtl {
+    right: 100%;
+    left: auto;
+  }
+  .ant-col-sm-pull-24.ant-col-rtl {
+    right: auto;
+    left: 100%;
+  }
+  .ant-col-sm-offset-24.ant-col-rtl {
+    margin-right: 100%;
+    margin-left: 0;
+  }
+}
+@media (min-width: 768px) {
+  .ant-col-md-24 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 100%;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .ant-col-md-push-24 {
+    left: 100%;
+  }
+  .ant-col-md-pull-24 {
+    right: 100%;
+  }
+  .ant-col-md-offset-24 {
+    margin-left: 100%;
+  }
+  .ant-col-md-order-24 {
+    -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+            order: 24;
+  }
+  .ant-col-md-23 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 95.83333333%;
+            flex: 0 0 95.83333333%;
+    max-width: 95.83333333%;
+  }
+  .ant-col-md-push-23 {
+    left: 95.83333333%;
+  }
+  .ant-col-md-pull-23 {
+    right: 95.83333333%;
+  }
+  .ant-col-md-offset-23 {
+    margin-left: 95.83333333%;
+  }
+  .ant-col-md-order-23 {
+    -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+            order: 23;
+  }
+  .ant-col-md-22 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 91.66666667%;
+            flex: 0 0 91.66666667%;
+    max-width: 91.66666667%;
+  }
+  .ant-col-md-push-22 {
+    left: 91.66666667%;
+  }
+  .ant-col-md-pull-22 {
+    right: 91.66666667%;
+  }
+  .ant-col-md-offset-22 {
+    margin-left: 91.66666667%;
+  }
+  .ant-col-md-order-22 {
+    -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+            order: 22;
+  }
+  .ant-col-md-21 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 87.5%;
+            flex: 0 0 87.5%;
+    max-width: 87.5%;
+  }
+  .ant-col-md-push-21 {
+    left: 87.5%;
+  }
+  .ant-col-md-pull-21 {
+    right: 87.5%;
+  }
+  .ant-col-md-offset-21 {
+    margin-left: 87.5%;
+  }
+  .ant-col-md-order-21 {
+    -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+            order: 21;
+  }
+  .ant-col-md-20 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 83.33333333%;
+            flex: 0 0 83.33333333%;
+    max-width: 83.33333333%;
+  }
+  .ant-col-md-push-20 {
+    left: 83.33333333%;
+  }
+  .ant-col-md-pull-20 {
+    right: 83.33333333%;
+  }
+  .ant-col-md-offset-20 {
+    margin-left: 83.33333333%;
+  }
+  .ant-col-md-order-20 {
+    -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+            order: 20;
+  }
+  .ant-col-md-19 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 79.16666667%;
+            flex: 0 0 79.16666667%;
+    max-width: 79.16666667%;
+  }
+  .ant-col-md-push-19 {
+    left: 79.16666667%;
+  }
+  .ant-col-md-pull-19 {
+    right: 79.16666667%;
+  }
+  .ant-col-md-offset-19 {
+    margin-left: 79.16666667%;
+  }
+  .ant-col-md-order-19 {
+    -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+            order: 19;
+  }
+  .ant-col-md-18 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 75%;
+            flex: 0 0 75%;
+    max-width: 75%;
+  }
+  .ant-col-md-push-18 {
+    left: 75%;
+  }
+  .ant-col-md-pull-18 {
+    right: 75%;
+  }
+  .ant-col-md-offset-18 {
+    margin-left: 75%;
+  }
+  .ant-col-md-order-18 {
+    -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+            order: 18;
+  }
+  .ant-col-md-17 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 70.83333333%;
+            flex: 0 0 70.83333333%;
+    max-width: 70.83333333%;
+  }
+  .ant-col-md-push-17 {
+    left: 70.83333333%;
+  }
+  .ant-col-md-pull-17 {
+    right: 70.83333333%;
+  }
+  .ant-col-md-offset-17 {
+    margin-left: 70.83333333%;
+  }
+  .ant-col-md-order-17 {
+    -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+            order: 17;
+  }
+  .ant-col-md-16 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 66.66666667%;
+            flex: 0 0 66.66666667%;
+    max-width: 66.66666667%;
+  }
+  .ant-col-md-push-16 {
+    left: 66.66666667%;
+  }
+  .ant-col-md-pull-16 {
+    right: 66.66666667%;
+  }
+  .ant-col-md-offset-16 {
+    margin-left: 66.66666667%;
+  }
+  .ant-col-md-order-16 {
+    -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+            order: 16;
+  }
+  .ant-col-md-15 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 62.5%;
+            flex: 0 0 62.5%;
+    max-width: 62.5%;
+  }
+  .ant-col-md-push-15 {
+    left: 62.5%;
+  }
+  .ant-col-md-pull-15 {
+    right: 62.5%;
+  }
+  .ant-col-md-offset-15 {
+    margin-left: 62.5%;
+  }
+  .ant-col-md-order-15 {
+    -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+            order: 15;
+  }
+  .ant-col-md-14 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 58.33333333%;
+            flex: 0 0 58.33333333%;
+    max-width: 58.33333333%;
+  }
+  .ant-col-md-push-14 {
+    left: 58.33333333%;
+  }
+  .ant-col-md-pull-14 {
+    right: 58.33333333%;
+  }
+  .ant-col-md-offset-14 {
+    margin-left: 58.33333333%;
+  }
+  .ant-col-md-order-14 {
+    -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+            order: 14;
+  }
+  .ant-col-md-13 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 54.16666667%;
+            flex: 0 0 54.16666667%;
+    max-width: 54.16666667%;
+  }
+  .ant-col-md-push-13 {
+    left: 54.16666667%;
+  }
+  .ant-col-md-pull-13 {
+    right: 54.16666667%;
+  }
+  .ant-col-md-offset-13 {
+    margin-left: 54.16666667%;
+  }
+  .ant-col-md-order-13 {
+    -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+            order: 13;
+  }
+  .ant-col-md-12 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 50%;
+            flex: 0 0 50%;
+    max-width: 50%;
+  }
+  .ant-col-md-push-12 {
+    left: 50%;
+  }
+  .ant-col-md-pull-12 {
+    right: 50%;
+  }
+  .ant-col-md-offset-12 {
+    margin-left: 50%;
+  }
+  .ant-col-md-order-12 {
+    -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+            order: 12;
+  }
+  .ant-col-md-11 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 45.83333333%;
+            flex: 0 0 45.83333333%;
+    max-width: 45.83333333%;
+  }
+  .ant-col-md-push-11 {
+    left: 45.83333333%;
+  }
+  .ant-col-md-pull-11 {
+    right: 45.83333333%;
+  }
+  .ant-col-md-offset-11 {
+    margin-left: 45.83333333%;
+  }
+  .ant-col-md-order-11 {
+    -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+            order: 11;
+  }
+  .ant-col-md-10 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 41.66666667%;
+            flex: 0 0 41.66666667%;
+    max-width: 41.66666667%;
+  }
+  .ant-col-md-push-10 {
+    left: 41.66666667%;
+  }
+  .ant-col-md-pull-10 {
+    right: 41.66666667%;
+  }
+  .ant-col-md-offset-10 {
+    margin-left: 41.66666667%;
+  }
+  .ant-col-md-order-10 {
+    -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+            order: 10;
+  }
+  .ant-col-md-9 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 37.5%;
+            flex: 0 0 37.5%;
+    max-width: 37.5%;
+  }
+  .ant-col-md-push-9 {
+    left: 37.5%;
+  }
+  .ant-col-md-pull-9 {
+    right: 37.5%;
+  }
+  .ant-col-md-offset-9 {
+    margin-left: 37.5%;
+  }
+  .ant-col-md-order-9 {
+    -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+            order: 9;
+  }
+  .ant-col-md-8 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 33.33333333%;
+            flex: 0 0 33.33333333%;
+    max-width: 33.33333333%;
+  }
+  .ant-col-md-push-8 {
+    left: 33.33333333%;
+  }
+  .ant-col-md-pull-8 {
+    right: 33.33333333%;
+  }
+  .ant-col-md-offset-8 {
+    margin-left: 33.33333333%;
+  }
+  .ant-col-md-order-8 {
+    -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+            order: 8;
+  }
+  .ant-col-md-7 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 29.16666667%;
+            flex: 0 0 29.16666667%;
+    max-width: 29.16666667%;
+  }
+  .ant-col-md-push-7 {
+    left: 29.16666667%;
+  }
+  .ant-col-md-pull-7 {
+    right: 29.16666667%;
+  }
+  .ant-col-md-offset-7 {
+    margin-left: 29.16666667%;
+  }
+  .ant-col-md-order-7 {
+    -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+            order: 7;
+  }
+  .ant-col-md-6 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 25%;
+            flex: 0 0 25%;
+    max-width: 25%;
+  }
+  .ant-col-md-push-6 {
+    left: 25%;
+  }
+  .ant-col-md-pull-6 {
+    right: 25%;
+  }
+  .ant-col-md-offset-6 {
+    margin-left: 25%;
+  }
+  .ant-col-md-order-6 {
+    -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+            order: 6;
+  }
+  .ant-col-md-5 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 20.83333333%;
+            flex: 0 0 20.83333333%;
+    max-width: 20.83333333%;
+  }
+  .ant-col-md-push-5 {
+    left: 20.83333333%;
+  }
+  .ant-col-md-pull-5 {
+    right: 20.83333333%;
+  }
+  .ant-col-md-offset-5 {
+    margin-left: 20.83333333%;
+  }
+  .ant-col-md-order-5 {
+    -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+            order: 5;
+  }
+  .ant-col-md-4 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 16.66666667%;
+            flex: 0 0 16.66666667%;
+    max-width: 16.66666667%;
+  }
+  .ant-col-md-push-4 {
+    left: 16.66666667%;
+  }
+  .ant-col-md-pull-4 {
+    right: 16.66666667%;
+  }
+  .ant-col-md-offset-4 {
+    margin-left: 16.66666667%;
+  }
+  .ant-col-md-order-4 {
+    -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+            order: 4;
+  }
+  .ant-col-md-3 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 12.5%;
+            flex: 0 0 12.5%;
+    max-width: 12.5%;
+  }
+  .ant-col-md-push-3 {
+    left: 12.5%;
+  }
+  .ant-col-md-pull-3 {
+    right: 12.5%;
+  }
+  .ant-col-md-offset-3 {
+    margin-left: 12.5%;
+  }
+  .ant-col-md-order-3 {
+    -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+            order: 3;
+  }
+  .ant-col-md-2 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 8.33333333%;
+            flex: 0 0 8.33333333%;
+    max-width: 8.33333333%;
+  }
+  .ant-col-md-push-2 {
+    left: 8.33333333%;
+  }
+  .ant-col-md-pull-2 {
+    right: 8.33333333%;
+  }
+  .ant-col-md-offset-2 {
+    margin-left: 8.33333333%;
+  }
+  .ant-col-md-order-2 {
+    -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+            order: 2;
+  }
+  .ant-col-md-1 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 4.16666667%;
+            flex: 0 0 4.16666667%;
+    max-width: 4.16666667%;
+  }
+  .ant-col-md-push-1 {
+    left: 4.16666667%;
+  }
+  .ant-col-md-pull-1 {
+    right: 4.16666667%;
+  }
+  .ant-col-md-offset-1 {
+    margin-left: 4.16666667%;
+  }
+  .ant-col-md-order-1 {
+    -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+            order: 1;
+  }
+  .ant-col-md-0 {
+    display: none;
+  }
+  .ant-col-push-0 {
+    left: auto;
+  }
+  .ant-col-pull-0 {
+    right: auto;
+  }
+  .ant-col-md-push-0 {
+    left: auto;
+  }
+  .ant-col-md-pull-0 {
+    right: auto;
+  }
+  .ant-col-md-offset-0 {
+    margin-left: 0;
+  }
+  .ant-col-md-order-0 {
+    -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+            order: 0;
+  }
+  .ant-col-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-md-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-md-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-md-offset-0.ant-col-rtl {
+    margin-right: 0;
+  }
+  .ant-col-md-push-1.ant-col-rtl {
+    right: 4.16666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-1.ant-col-rtl {
+    right: auto;
+    left: 4.16666667%;
+  }
+  .ant-col-md-offset-1.ant-col-rtl {
+    margin-right: 4.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-2.ant-col-rtl {
+    right: 8.33333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-2.ant-col-rtl {
+    right: auto;
+    left: 8.33333333%;
+  }
+  .ant-col-md-offset-2.ant-col-rtl {
+    margin-right: 8.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-3.ant-col-rtl {
+    right: 12.5%;
+    left: auto;
+  }
+  .ant-col-md-pull-3.ant-col-rtl {
+    right: auto;
+    left: 12.5%;
+  }
+  .ant-col-md-offset-3.ant-col-rtl {
+    margin-right: 12.5%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-4.ant-col-rtl {
+    right: 16.66666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-4.ant-col-rtl {
+    right: auto;
+    left: 16.66666667%;
+  }
+  .ant-col-md-offset-4.ant-col-rtl {
+    margin-right: 16.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-5.ant-col-rtl {
+    right: 20.83333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-5.ant-col-rtl {
+    right: auto;
+    left: 20.83333333%;
+  }
+  .ant-col-md-offset-5.ant-col-rtl {
+    margin-right: 20.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-6.ant-col-rtl {
+    right: 25%;
+    left: auto;
+  }
+  .ant-col-md-pull-6.ant-col-rtl {
+    right: auto;
+    left: 25%;
+  }
+  .ant-col-md-offset-6.ant-col-rtl {
+    margin-right: 25%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-7.ant-col-rtl {
+    right: 29.16666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-7.ant-col-rtl {
+    right: auto;
+    left: 29.16666667%;
+  }
+  .ant-col-md-offset-7.ant-col-rtl {
+    margin-right: 29.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-8.ant-col-rtl {
+    right: 33.33333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-8.ant-col-rtl {
+    right: auto;
+    left: 33.33333333%;
+  }
+  .ant-col-md-offset-8.ant-col-rtl {
+    margin-right: 33.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-9.ant-col-rtl {
+    right: 37.5%;
+    left: auto;
+  }
+  .ant-col-md-pull-9.ant-col-rtl {
+    right: auto;
+    left: 37.5%;
+  }
+  .ant-col-md-offset-9.ant-col-rtl {
+    margin-right: 37.5%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-10.ant-col-rtl {
+    right: 41.66666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-10.ant-col-rtl {
+    right: auto;
+    left: 41.66666667%;
+  }
+  .ant-col-md-offset-10.ant-col-rtl {
+    margin-right: 41.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-11.ant-col-rtl {
+    right: 45.83333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-11.ant-col-rtl {
+    right: auto;
+    left: 45.83333333%;
+  }
+  .ant-col-md-offset-11.ant-col-rtl {
+    margin-right: 45.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-12.ant-col-rtl {
+    right: 50%;
+    left: auto;
+  }
+  .ant-col-md-pull-12.ant-col-rtl {
+    right: auto;
+    left: 50%;
+  }
+  .ant-col-md-offset-12.ant-col-rtl {
+    margin-right: 50%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-13.ant-col-rtl {
+    right: 54.16666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-13.ant-col-rtl {
+    right: auto;
+    left: 54.16666667%;
+  }
+  .ant-col-md-offset-13.ant-col-rtl {
+    margin-right: 54.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-14.ant-col-rtl {
+    right: 58.33333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-14.ant-col-rtl {
+    right: auto;
+    left: 58.33333333%;
+  }
+  .ant-col-md-offset-14.ant-col-rtl {
+    margin-right: 58.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-15.ant-col-rtl {
+    right: 62.5%;
+    left: auto;
+  }
+  .ant-col-md-pull-15.ant-col-rtl {
+    right: auto;
+    left: 62.5%;
+  }
+  .ant-col-md-offset-15.ant-col-rtl {
+    margin-right: 62.5%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-16.ant-col-rtl {
+    right: 66.66666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-16.ant-col-rtl {
+    right: auto;
+    left: 66.66666667%;
+  }
+  .ant-col-md-offset-16.ant-col-rtl {
+    margin-right: 66.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-17.ant-col-rtl {
+    right: 70.83333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-17.ant-col-rtl {
+    right: auto;
+    left: 70.83333333%;
+  }
+  .ant-col-md-offset-17.ant-col-rtl {
+    margin-right: 70.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-18.ant-col-rtl {
+    right: 75%;
+    left: auto;
+  }
+  .ant-col-md-pull-18.ant-col-rtl {
+    right: auto;
+    left: 75%;
+  }
+  .ant-col-md-offset-18.ant-col-rtl {
+    margin-right: 75%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-19.ant-col-rtl {
+    right: 79.16666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-19.ant-col-rtl {
+    right: auto;
+    left: 79.16666667%;
+  }
+  .ant-col-md-offset-19.ant-col-rtl {
+    margin-right: 79.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-20.ant-col-rtl {
+    right: 83.33333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-20.ant-col-rtl {
+    right: auto;
+    left: 83.33333333%;
+  }
+  .ant-col-md-offset-20.ant-col-rtl {
+    margin-right: 83.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-21.ant-col-rtl {
+    right: 87.5%;
+    left: auto;
+  }
+  .ant-col-md-pull-21.ant-col-rtl {
+    right: auto;
+    left: 87.5%;
+  }
+  .ant-col-md-offset-21.ant-col-rtl {
+    margin-right: 87.5%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-22.ant-col-rtl {
+    right: 91.66666667%;
+    left: auto;
+  }
+  .ant-col-md-pull-22.ant-col-rtl {
+    right: auto;
+    left: 91.66666667%;
+  }
+  .ant-col-md-offset-22.ant-col-rtl {
+    margin-right: 91.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-23.ant-col-rtl {
+    right: 95.83333333%;
+    left: auto;
+  }
+  .ant-col-md-pull-23.ant-col-rtl {
+    right: auto;
+    left: 95.83333333%;
+  }
+  .ant-col-md-offset-23.ant-col-rtl {
+    margin-right: 95.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-md-push-24.ant-col-rtl {
+    right: 100%;
+    left: auto;
+  }
+  .ant-col-md-pull-24.ant-col-rtl {
+    right: auto;
+    left: 100%;
+  }
+  .ant-col-md-offset-24.ant-col-rtl {
+    margin-right: 100%;
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .ant-col-lg-24 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 100%;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .ant-col-lg-push-24 {
+    left: 100%;
+  }
+  .ant-col-lg-pull-24 {
+    right: 100%;
+  }
+  .ant-col-lg-offset-24 {
+    margin-left: 100%;
+  }
+  .ant-col-lg-order-24 {
+    -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+            order: 24;
+  }
+  .ant-col-lg-23 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 95.83333333%;
+            flex: 0 0 95.83333333%;
+    max-width: 95.83333333%;
+  }
+  .ant-col-lg-push-23 {
+    left: 95.83333333%;
+  }
+  .ant-col-lg-pull-23 {
+    right: 95.83333333%;
+  }
+  .ant-col-lg-offset-23 {
+    margin-left: 95.83333333%;
+  }
+  .ant-col-lg-order-23 {
+    -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+            order: 23;
+  }
+  .ant-col-lg-22 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 91.66666667%;
+            flex: 0 0 91.66666667%;
+    max-width: 91.66666667%;
+  }
+  .ant-col-lg-push-22 {
+    left: 91.66666667%;
+  }
+  .ant-col-lg-pull-22 {
+    right: 91.66666667%;
+  }
+  .ant-col-lg-offset-22 {
+    margin-left: 91.66666667%;
+  }
+  .ant-col-lg-order-22 {
+    -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+            order: 22;
+  }
+  .ant-col-lg-21 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 87.5%;
+            flex: 0 0 87.5%;
+    max-width: 87.5%;
+  }
+  .ant-col-lg-push-21 {
+    left: 87.5%;
+  }
+  .ant-col-lg-pull-21 {
+    right: 87.5%;
+  }
+  .ant-col-lg-offset-21 {
+    margin-left: 87.5%;
+  }
+  .ant-col-lg-order-21 {
+    -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+            order: 21;
+  }
+  .ant-col-lg-20 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 83.33333333%;
+            flex: 0 0 83.33333333%;
+    max-width: 83.33333333%;
+  }
+  .ant-col-lg-push-20 {
+    left: 83.33333333%;
+  }
+  .ant-col-lg-pull-20 {
+    right: 83.33333333%;
+  }
+  .ant-col-lg-offset-20 {
+    margin-left: 83.33333333%;
+  }
+  .ant-col-lg-order-20 {
+    -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+            order: 20;
+  }
+  .ant-col-lg-19 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 79.16666667%;
+            flex: 0 0 79.16666667%;
+    max-width: 79.16666667%;
+  }
+  .ant-col-lg-push-19 {
+    left: 79.16666667%;
+  }
+  .ant-col-lg-pull-19 {
+    right: 79.16666667%;
+  }
+  .ant-col-lg-offset-19 {
+    margin-left: 79.16666667%;
+  }
+  .ant-col-lg-order-19 {
+    -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+            order: 19;
+  }
+  .ant-col-lg-18 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 75%;
+            flex: 0 0 75%;
+    max-width: 75%;
+  }
+  .ant-col-lg-push-18 {
+    left: 75%;
+  }
+  .ant-col-lg-pull-18 {
+    right: 75%;
+  }
+  .ant-col-lg-offset-18 {
+    margin-left: 75%;
+  }
+  .ant-col-lg-order-18 {
+    -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+            order: 18;
+  }
+  .ant-col-lg-17 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 70.83333333%;
+            flex: 0 0 70.83333333%;
+    max-width: 70.83333333%;
+  }
+  .ant-col-lg-push-17 {
+    left: 70.83333333%;
+  }
+  .ant-col-lg-pull-17 {
+    right: 70.83333333%;
+  }
+  .ant-col-lg-offset-17 {
+    margin-left: 70.83333333%;
+  }
+  .ant-col-lg-order-17 {
+    -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+            order: 17;
+  }
+  .ant-col-lg-16 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 66.66666667%;
+            flex: 0 0 66.66666667%;
+    max-width: 66.66666667%;
+  }
+  .ant-col-lg-push-16 {
+    left: 66.66666667%;
+  }
+  .ant-col-lg-pull-16 {
+    right: 66.66666667%;
+  }
+  .ant-col-lg-offset-16 {
+    margin-left: 66.66666667%;
+  }
+  .ant-col-lg-order-16 {
+    -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+            order: 16;
+  }
+  .ant-col-lg-15 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 62.5%;
+            flex: 0 0 62.5%;
+    max-width: 62.5%;
+  }
+  .ant-col-lg-push-15 {
+    left: 62.5%;
+  }
+  .ant-col-lg-pull-15 {
+    right: 62.5%;
+  }
+  .ant-col-lg-offset-15 {
+    margin-left: 62.5%;
+  }
+  .ant-col-lg-order-15 {
+    -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+            order: 15;
+  }
+  .ant-col-lg-14 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 58.33333333%;
+            flex: 0 0 58.33333333%;
+    max-width: 58.33333333%;
+  }
+  .ant-col-lg-push-14 {
+    left: 58.33333333%;
+  }
+  .ant-col-lg-pull-14 {
+    right: 58.33333333%;
+  }
+  .ant-col-lg-offset-14 {
+    margin-left: 58.33333333%;
+  }
+  .ant-col-lg-order-14 {
+    -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+            order: 14;
+  }
+  .ant-col-lg-13 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 54.16666667%;
+            flex: 0 0 54.16666667%;
+    max-width: 54.16666667%;
+  }
+  .ant-col-lg-push-13 {
+    left: 54.16666667%;
+  }
+  .ant-col-lg-pull-13 {
+    right: 54.16666667%;
+  }
+  .ant-col-lg-offset-13 {
+    margin-left: 54.16666667%;
+  }
+  .ant-col-lg-order-13 {
+    -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+            order: 13;
+  }
+  .ant-col-lg-12 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 50%;
+            flex: 0 0 50%;
+    max-width: 50%;
+  }
+  .ant-col-lg-push-12 {
+    left: 50%;
+  }
+  .ant-col-lg-pull-12 {
+    right: 50%;
+  }
+  .ant-col-lg-offset-12 {
+    margin-left: 50%;
+  }
+  .ant-col-lg-order-12 {
+    -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+            order: 12;
+  }
+  .ant-col-lg-11 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 45.83333333%;
+            flex: 0 0 45.83333333%;
+    max-width: 45.83333333%;
+  }
+  .ant-col-lg-push-11 {
+    left: 45.83333333%;
+  }
+  .ant-col-lg-pull-11 {
+    right: 45.83333333%;
+  }
+  .ant-col-lg-offset-11 {
+    margin-left: 45.83333333%;
+  }
+  .ant-col-lg-order-11 {
+    -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+            order: 11;
+  }
+  .ant-col-lg-10 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 41.66666667%;
+            flex: 0 0 41.66666667%;
+    max-width: 41.66666667%;
+  }
+  .ant-col-lg-push-10 {
+    left: 41.66666667%;
+  }
+  .ant-col-lg-pull-10 {
+    right: 41.66666667%;
+  }
+  .ant-col-lg-offset-10 {
+    margin-left: 41.66666667%;
+  }
+  .ant-col-lg-order-10 {
+    -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+            order: 10;
+  }
+  .ant-col-lg-9 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 37.5%;
+            flex: 0 0 37.5%;
+    max-width: 37.5%;
+  }
+  .ant-col-lg-push-9 {
+    left: 37.5%;
+  }
+  .ant-col-lg-pull-9 {
+    right: 37.5%;
+  }
+  .ant-col-lg-offset-9 {
+    margin-left: 37.5%;
+  }
+  .ant-col-lg-order-9 {
+    -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+            order: 9;
+  }
+  .ant-col-lg-8 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 33.33333333%;
+            flex: 0 0 33.33333333%;
+    max-width: 33.33333333%;
+  }
+  .ant-col-lg-push-8 {
+    left: 33.33333333%;
+  }
+  .ant-col-lg-pull-8 {
+    right: 33.33333333%;
+  }
+  .ant-col-lg-offset-8 {
+    margin-left: 33.33333333%;
+  }
+  .ant-col-lg-order-8 {
+    -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+            order: 8;
+  }
+  .ant-col-lg-7 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 29.16666667%;
+            flex: 0 0 29.16666667%;
+    max-width: 29.16666667%;
+  }
+  .ant-col-lg-push-7 {
+    left: 29.16666667%;
+  }
+  .ant-col-lg-pull-7 {
+    right: 29.16666667%;
+  }
+  .ant-col-lg-offset-7 {
+    margin-left: 29.16666667%;
+  }
+  .ant-col-lg-order-7 {
+    -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+            order: 7;
+  }
+  .ant-col-lg-6 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 25%;
+            flex: 0 0 25%;
+    max-width: 25%;
+  }
+  .ant-col-lg-push-6 {
+    left: 25%;
+  }
+  .ant-col-lg-pull-6 {
+    right: 25%;
+  }
+  .ant-col-lg-offset-6 {
+    margin-left: 25%;
+  }
+  .ant-col-lg-order-6 {
+    -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+            order: 6;
+  }
+  .ant-col-lg-5 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 20.83333333%;
+            flex: 0 0 20.83333333%;
+    max-width: 20.83333333%;
+  }
+  .ant-col-lg-push-5 {
+    left: 20.83333333%;
+  }
+  .ant-col-lg-pull-5 {
+    right: 20.83333333%;
+  }
+  .ant-col-lg-offset-5 {
+    margin-left: 20.83333333%;
+  }
+  .ant-col-lg-order-5 {
+    -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+            order: 5;
+  }
+  .ant-col-lg-4 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 16.66666667%;
+            flex: 0 0 16.66666667%;
+    max-width: 16.66666667%;
+  }
+  .ant-col-lg-push-4 {
+    left: 16.66666667%;
+  }
+  .ant-col-lg-pull-4 {
+    right: 16.66666667%;
+  }
+  .ant-col-lg-offset-4 {
+    margin-left: 16.66666667%;
+  }
+  .ant-col-lg-order-4 {
+    -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+            order: 4;
+  }
+  .ant-col-lg-3 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 12.5%;
+            flex: 0 0 12.5%;
+    max-width: 12.5%;
+  }
+  .ant-col-lg-push-3 {
+    left: 12.5%;
+  }
+  .ant-col-lg-pull-3 {
+    right: 12.5%;
+  }
+  .ant-col-lg-offset-3 {
+    margin-left: 12.5%;
+  }
+  .ant-col-lg-order-3 {
+    -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+            order: 3;
+  }
+  .ant-col-lg-2 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 8.33333333%;
+            flex: 0 0 8.33333333%;
+    max-width: 8.33333333%;
+  }
+  .ant-col-lg-push-2 {
+    left: 8.33333333%;
+  }
+  .ant-col-lg-pull-2 {
+    right: 8.33333333%;
+  }
+  .ant-col-lg-offset-2 {
+    margin-left: 8.33333333%;
+  }
+  .ant-col-lg-order-2 {
+    -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+            order: 2;
+  }
+  .ant-col-lg-1 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 4.16666667%;
+            flex: 0 0 4.16666667%;
+    max-width: 4.16666667%;
+  }
+  .ant-col-lg-push-1 {
+    left: 4.16666667%;
+  }
+  .ant-col-lg-pull-1 {
+    right: 4.16666667%;
+  }
+  .ant-col-lg-offset-1 {
+    margin-left: 4.16666667%;
+  }
+  .ant-col-lg-order-1 {
+    -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+            order: 1;
+  }
+  .ant-col-lg-0 {
+    display: none;
+  }
+  .ant-col-push-0 {
+    left: auto;
+  }
+  .ant-col-pull-0 {
+    right: auto;
+  }
+  .ant-col-lg-push-0 {
+    left: auto;
+  }
+  .ant-col-lg-pull-0 {
+    right: auto;
+  }
+  .ant-col-lg-offset-0 {
+    margin-left: 0;
+  }
+  .ant-col-lg-order-0 {
+    -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+            order: 0;
+  }
+  .ant-col-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-lg-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-lg-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-lg-offset-0.ant-col-rtl {
+    margin-right: 0;
+  }
+  .ant-col-lg-push-1.ant-col-rtl {
+    right: 4.16666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-1.ant-col-rtl {
+    right: auto;
+    left: 4.16666667%;
+  }
+  .ant-col-lg-offset-1.ant-col-rtl {
+    margin-right: 4.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-2.ant-col-rtl {
+    right: 8.33333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-2.ant-col-rtl {
+    right: auto;
+    left: 8.33333333%;
+  }
+  .ant-col-lg-offset-2.ant-col-rtl {
+    margin-right: 8.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-3.ant-col-rtl {
+    right: 12.5%;
+    left: auto;
+  }
+  .ant-col-lg-pull-3.ant-col-rtl {
+    right: auto;
+    left: 12.5%;
+  }
+  .ant-col-lg-offset-3.ant-col-rtl {
+    margin-right: 12.5%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-4.ant-col-rtl {
+    right: 16.66666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-4.ant-col-rtl {
+    right: auto;
+    left: 16.66666667%;
+  }
+  .ant-col-lg-offset-4.ant-col-rtl {
+    margin-right: 16.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-5.ant-col-rtl {
+    right: 20.83333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-5.ant-col-rtl {
+    right: auto;
+    left: 20.83333333%;
+  }
+  .ant-col-lg-offset-5.ant-col-rtl {
+    margin-right: 20.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-6.ant-col-rtl {
+    right: 25%;
+    left: auto;
+  }
+  .ant-col-lg-pull-6.ant-col-rtl {
+    right: auto;
+    left: 25%;
+  }
+  .ant-col-lg-offset-6.ant-col-rtl {
+    margin-right: 25%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-7.ant-col-rtl {
+    right: 29.16666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-7.ant-col-rtl {
+    right: auto;
+    left: 29.16666667%;
+  }
+  .ant-col-lg-offset-7.ant-col-rtl {
+    margin-right: 29.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-8.ant-col-rtl {
+    right: 33.33333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-8.ant-col-rtl {
+    right: auto;
+    left: 33.33333333%;
+  }
+  .ant-col-lg-offset-8.ant-col-rtl {
+    margin-right: 33.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-9.ant-col-rtl {
+    right: 37.5%;
+    left: auto;
+  }
+  .ant-col-lg-pull-9.ant-col-rtl {
+    right: auto;
+    left: 37.5%;
+  }
+  .ant-col-lg-offset-9.ant-col-rtl {
+    margin-right: 37.5%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-10.ant-col-rtl {
+    right: 41.66666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-10.ant-col-rtl {
+    right: auto;
+    left: 41.66666667%;
+  }
+  .ant-col-lg-offset-10.ant-col-rtl {
+    margin-right: 41.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-11.ant-col-rtl {
+    right: 45.83333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-11.ant-col-rtl {
+    right: auto;
+    left: 45.83333333%;
+  }
+  .ant-col-lg-offset-11.ant-col-rtl {
+    margin-right: 45.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-12.ant-col-rtl {
+    right: 50%;
+    left: auto;
+  }
+  .ant-col-lg-pull-12.ant-col-rtl {
+    right: auto;
+    left: 50%;
+  }
+  .ant-col-lg-offset-12.ant-col-rtl {
+    margin-right: 50%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-13.ant-col-rtl {
+    right: 54.16666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-13.ant-col-rtl {
+    right: auto;
+    left: 54.16666667%;
+  }
+  .ant-col-lg-offset-13.ant-col-rtl {
+    margin-right: 54.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-14.ant-col-rtl {
+    right: 58.33333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-14.ant-col-rtl {
+    right: auto;
+    left: 58.33333333%;
+  }
+  .ant-col-lg-offset-14.ant-col-rtl {
+    margin-right: 58.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-15.ant-col-rtl {
+    right: 62.5%;
+    left: auto;
+  }
+  .ant-col-lg-pull-15.ant-col-rtl {
+    right: auto;
+    left: 62.5%;
+  }
+  .ant-col-lg-offset-15.ant-col-rtl {
+    margin-right: 62.5%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-16.ant-col-rtl {
+    right: 66.66666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-16.ant-col-rtl {
+    right: auto;
+    left: 66.66666667%;
+  }
+  .ant-col-lg-offset-16.ant-col-rtl {
+    margin-right: 66.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-17.ant-col-rtl {
+    right: 70.83333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-17.ant-col-rtl {
+    right: auto;
+    left: 70.83333333%;
+  }
+  .ant-col-lg-offset-17.ant-col-rtl {
+    margin-right: 70.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-18.ant-col-rtl {
+    right: 75%;
+    left: auto;
+  }
+  .ant-col-lg-pull-18.ant-col-rtl {
+    right: auto;
+    left: 75%;
+  }
+  .ant-col-lg-offset-18.ant-col-rtl {
+    margin-right: 75%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-19.ant-col-rtl {
+    right: 79.16666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-19.ant-col-rtl {
+    right: auto;
+    left: 79.16666667%;
+  }
+  .ant-col-lg-offset-19.ant-col-rtl {
+    margin-right: 79.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-20.ant-col-rtl {
+    right: 83.33333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-20.ant-col-rtl {
+    right: auto;
+    left: 83.33333333%;
+  }
+  .ant-col-lg-offset-20.ant-col-rtl {
+    margin-right: 83.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-21.ant-col-rtl {
+    right: 87.5%;
+    left: auto;
+  }
+  .ant-col-lg-pull-21.ant-col-rtl {
+    right: auto;
+    left: 87.5%;
+  }
+  .ant-col-lg-offset-21.ant-col-rtl {
+    margin-right: 87.5%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-22.ant-col-rtl {
+    right: 91.66666667%;
+    left: auto;
+  }
+  .ant-col-lg-pull-22.ant-col-rtl {
+    right: auto;
+    left: 91.66666667%;
+  }
+  .ant-col-lg-offset-22.ant-col-rtl {
+    margin-right: 91.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-23.ant-col-rtl {
+    right: 95.83333333%;
+    left: auto;
+  }
+  .ant-col-lg-pull-23.ant-col-rtl {
+    right: auto;
+    left: 95.83333333%;
+  }
+  .ant-col-lg-offset-23.ant-col-rtl {
+    margin-right: 95.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-lg-push-24.ant-col-rtl {
+    right: 100%;
+    left: auto;
+  }
+  .ant-col-lg-pull-24.ant-col-rtl {
+    right: auto;
+    left: 100%;
+  }
+  .ant-col-lg-offset-24.ant-col-rtl {
+    margin-right: 100%;
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .ant-col-xl-24 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 100%;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .ant-col-xl-push-24 {
+    left: 100%;
+  }
+  .ant-col-xl-pull-24 {
+    right: 100%;
+  }
+  .ant-col-xl-offset-24 {
+    margin-left: 100%;
+  }
+  .ant-col-xl-order-24 {
+    -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+            order: 24;
+  }
+  .ant-col-xl-23 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 95.83333333%;
+            flex: 0 0 95.83333333%;
+    max-width: 95.83333333%;
+  }
+  .ant-col-xl-push-23 {
+    left: 95.83333333%;
+  }
+  .ant-col-xl-pull-23 {
+    right: 95.83333333%;
+  }
+  .ant-col-xl-offset-23 {
+    margin-left: 95.83333333%;
+  }
+  .ant-col-xl-order-23 {
+    -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+            order: 23;
+  }
+  .ant-col-xl-22 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 91.66666667%;
+            flex: 0 0 91.66666667%;
+    max-width: 91.66666667%;
+  }
+  .ant-col-xl-push-22 {
+    left: 91.66666667%;
+  }
+  .ant-col-xl-pull-22 {
+    right: 91.66666667%;
+  }
+  .ant-col-xl-offset-22 {
+    margin-left: 91.66666667%;
+  }
+  .ant-col-xl-order-22 {
+    -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+            order: 22;
+  }
+  .ant-col-xl-21 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 87.5%;
+            flex: 0 0 87.5%;
+    max-width: 87.5%;
+  }
+  .ant-col-xl-push-21 {
+    left: 87.5%;
+  }
+  .ant-col-xl-pull-21 {
+    right: 87.5%;
+  }
+  .ant-col-xl-offset-21 {
+    margin-left: 87.5%;
+  }
+  .ant-col-xl-order-21 {
+    -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+            order: 21;
+  }
+  .ant-col-xl-20 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 83.33333333%;
+            flex: 0 0 83.33333333%;
+    max-width: 83.33333333%;
+  }
+  .ant-col-xl-push-20 {
+    left: 83.33333333%;
+  }
+  .ant-col-xl-pull-20 {
+    right: 83.33333333%;
+  }
+  .ant-col-xl-offset-20 {
+    margin-left: 83.33333333%;
+  }
+  .ant-col-xl-order-20 {
+    -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+            order: 20;
+  }
+  .ant-col-xl-19 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 79.16666667%;
+            flex: 0 0 79.16666667%;
+    max-width: 79.16666667%;
+  }
+  .ant-col-xl-push-19 {
+    left: 79.16666667%;
+  }
+  .ant-col-xl-pull-19 {
+    right: 79.16666667%;
+  }
+  .ant-col-xl-offset-19 {
+    margin-left: 79.16666667%;
+  }
+  .ant-col-xl-order-19 {
+    -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+            order: 19;
+  }
+  .ant-col-xl-18 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 75%;
+            flex: 0 0 75%;
+    max-width: 75%;
+  }
+  .ant-col-xl-push-18 {
+    left: 75%;
+  }
+  .ant-col-xl-pull-18 {
+    right: 75%;
+  }
+  .ant-col-xl-offset-18 {
+    margin-left: 75%;
+  }
+  .ant-col-xl-order-18 {
+    -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+            order: 18;
+  }
+  .ant-col-xl-17 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 70.83333333%;
+            flex: 0 0 70.83333333%;
+    max-width: 70.83333333%;
+  }
+  .ant-col-xl-push-17 {
+    left: 70.83333333%;
+  }
+  .ant-col-xl-pull-17 {
+    right: 70.83333333%;
+  }
+  .ant-col-xl-offset-17 {
+    margin-left: 70.83333333%;
+  }
+  .ant-col-xl-order-17 {
+    -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+            order: 17;
+  }
+  .ant-col-xl-16 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 66.66666667%;
+            flex: 0 0 66.66666667%;
+    max-width: 66.66666667%;
+  }
+  .ant-col-xl-push-16 {
+    left: 66.66666667%;
+  }
+  .ant-col-xl-pull-16 {
+    right: 66.66666667%;
+  }
+  .ant-col-xl-offset-16 {
+    margin-left: 66.66666667%;
+  }
+  .ant-col-xl-order-16 {
+    -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+            order: 16;
+  }
+  .ant-col-xl-15 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 62.5%;
+            flex: 0 0 62.5%;
+    max-width: 62.5%;
+  }
+  .ant-col-xl-push-15 {
+    left: 62.5%;
+  }
+  .ant-col-xl-pull-15 {
+    right: 62.5%;
+  }
+  .ant-col-xl-offset-15 {
+    margin-left: 62.5%;
+  }
+  .ant-col-xl-order-15 {
+    -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+            order: 15;
+  }
+  .ant-col-xl-14 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 58.33333333%;
+            flex: 0 0 58.33333333%;
+    max-width: 58.33333333%;
+  }
+  .ant-col-xl-push-14 {
+    left: 58.33333333%;
+  }
+  .ant-col-xl-pull-14 {
+    right: 58.33333333%;
+  }
+  .ant-col-xl-offset-14 {
+    margin-left: 58.33333333%;
+  }
+  .ant-col-xl-order-14 {
+    -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+            order: 14;
+  }
+  .ant-col-xl-13 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 54.16666667%;
+            flex: 0 0 54.16666667%;
+    max-width: 54.16666667%;
+  }
+  .ant-col-xl-push-13 {
+    left: 54.16666667%;
+  }
+  .ant-col-xl-pull-13 {
+    right: 54.16666667%;
+  }
+  .ant-col-xl-offset-13 {
+    margin-left: 54.16666667%;
+  }
+  .ant-col-xl-order-13 {
+    -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+            order: 13;
+  }
+  .ant-col-xl-12 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 50%;
+            flex: 0 0 50%;
+    max-width: 50%;
+  }
+  .ant-col-xl-push-12 {
+    left: 50%;
+  }
+  .ant-col-xl-pull-12 {
+    right: 50%;
+  }
+  .ant-col-xl-offset-12 {
+    margin-left: 50%;
+  }
+  .ant-col-xl-order-12 {
+    -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+            order: 12;
+  }
+  .ant-col-xl-11 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 45.83333333%;
+            flex: 0 0 45.83333333%;
+    max-width: 45.83333333%;
+  }
+  .ant-col-xl-push-11 {
+    left: 45.83333333%;
+  }
+  .ant-col-xl-pull-11 {
+    right: 45.83333333%;
+  }
+  .ant-col-xl-offset-11 {
+    margin-left: 45.83333333%;
+  }
+  .ant-col-xl-order-11 {
+    -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+            order: 11;
+  }
+  .ant-col-xl-10 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 41.66666667%;
+            flex: 0 0 41.66666667%;
+    max-width: 41.66666667%;
+  }
+  .ant-col-xl-push-10 {
+    left: 41.66666667%;
+  }
+  .ant-col-xl-pull-10 {
+    right: 41.66666667%;
+  }
+  .ant-col-xl-offset-10 {
+    margin-left: 41.66666667%;
+  }
+  .ant-col-xl-order-10 {
+    -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+            order: 10;
+  }
+  .ant-col-xl-9 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 37.5%;
+            flex: 0 0 37.5%;
+    max-width: 37.5%;
+  }
+  .ant-col-xl-push-9 {
+    left: 37.5%;
+  }
+  .ant-col-xl-pull-9 {
+    right: 37.5%;
+  }
+  .ant-col-xl-offset-9 {
+    margin-left: 37.5%;
+  }
+  .ant-col-xl-order-9 {
+    -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+            order: 9;
+  }
+  .ant-col-xl-8 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 33.33333333%;
+            flex: 0 0 33.33333333%;
+    max-width: 33.33333333%;
+  }
+  .ant-col-xl-push-8 {
+    left: 33.33333333%;
+  }
+  .ant-col-xl-pull-8 {
+    right: 33.33333333%;
+  }
+  .ant-col-xl-offset-8 {
+    margin-left: 33.33333333%;
+  }
+  .ant-col-xl-order-8 {
+    -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+            order: 8;
+  }
+  .ant-col-xl-7 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 29.16666667%;
+            flex: 0 0 29.16666667%;
+    max-width: 29.16666667%;
+  }
+  .ant-col-xl-push-7 {
+    left: 29.16666667%;
+  }
+  .ant-col-xl-pull-7 {
+    right: 29.16666667%;
+  }
+  .ant-col-xl-offset-7 {
+    margin-left: 29.16666667%;
+  }
+  .ant-col-xl-order-7 {
+    -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+            order: 7;
+  }
+  .ant-col-xl-6 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 25%;
+            flex: 0 0 25%;
+    max-width: 25%;
+  }
+  .ant-col-xl-push-6 {
+    left: 25%;
+  }
+  .ant-col-xl-pull-6 {
+    right: 25%;
+  }
+  .ant-col-xl-offset-6 {
+    margin-left: 25%;
+  }
+  .ant-col-xl-order-6 {
+    -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+            order: 6;
+  }
+  .ant-col-xl-5 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 20.83333333%;
+            flex: 0 0 20.83333333%;
+    max-width: 20.83333333%;
+  }
+  .ant-col-xl-push-5 {
+    left: 20.83333333%;
+  }
+  .ant-col-xl-pull-5 {
+    right: 20.83333333%;
+  }
+  .ant-col-xl-offset-5 {
+    margin-left: 20.83333333%;
+  }
+  .ant-col-xl-order-5 {
+    -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+            order: 5;
+  }
+  .ant-col-xl-4 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 16.66666667%;
+            flex: 0 0 16.66666667%;
+    max-width: 16.66666667%;
+  }
+  .ant-col-xl-push-4 {
+    left: 16.66666667%;
+  }
+  .ant-col-xl-pull-4 {
+    right: 16.66666667%;
+  }
+  .ant-col-xl-offset-4 {
+    margin-left: 16.66666667%;
+  }
+  .ant-col-xl-order-4 {
+    -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+            order: 4;
+  }
+  .ant-col-xl-3 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 12.5%;
+            flex: 0 0 12.5%;
+    max-width: 12.5%;
+  }
+  .ant-col-xl-push-3 {
+    left: 12.5%;
+  }
+  .ant-col-xl-pull-3 {
+    right: 12.5%;
+  }
+  .ant-col-xl-offset-3 {
+    margin-left: 12.5%;
+  }
+  .ant-col-xl-order-3 {
+    -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+            order: 3;
+  }
+  .ant-col-xl-2 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 8.33333333%;
+            flex: 0 0 8.33333333%;
+    max-width: 8.33333333%;
+  }
+  .ant-col-xl-push-2 {
+    left: 8.33333333%;
+  }
+  .ant-col-xl-pull-2 {
+    right: 8.33333333%;
+  }
+  .ant-col-xl-offset-2 {
+    margin-left: 8.33333333%;
+  }
+  .ant-col-xl-order-2 {
+    -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+            order: 2;
+  }
+  .ant-col-xl-1 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 4.16666667%;
+            flex: 0 0 4.16666667%;
+    max-width: 4.16666667%;
+  }
+  .ant-col-xl-push-1 {
+    left: 4.16666667%;
+  }
+  .ant-col-xl-pull-1 {
+    right: 4.16666667%;
+  }
+  .ant-col-xl-offset-1 {
+    margin-left: 4.16666667%;
+  }
+  .ant-col-xl-order-1 {
+    -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+            order: 1;
+  }
+  .ant-col-xl-0 {
+    display: none;
+  }
+  .ant-col-push-0 {
+    left: auto;
+  }
+  .ant-col-pull-0 {
+    right: auto;
+  }
+  .ant-col-xl-push-0 {
+    left: auto;
+  }
+  .ant-col-xl-pull-0 {
+    right: auto;
+  }
+  .ant-col-xl-offset-0 {
+    margin-left: 0;
+  }
+  .ant-col-xl-order-0 {
+    -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+            order: 0;
+  }
+  .ant-col-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-xl-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-xl-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-xl-offset-0.ant-col-rtl {
+    margin-right: 0;
+  }
+  .ant-col-xl-push-1.ant-col-rtl {
+    right: 4.16666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-1.ant-col-rtl {
+    right: auto;
+    left: 4.16666667%;
+  }
+  .ant-col-xl-offset-1.ant-col-rtl {
+    margin-right: 4.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-2.ant-col-rtl {
+    right: 8.33333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-2.ant-col-rtl {
+    right: auto;
+    left: 8.33333333%;
+  }
+  .ant-col-xl-offset-2.ant-col-rtl {
+    margin-right: 8.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-3.ant-col-rtl {
+    right: 12.5%;
+    left: auto;
+  }
+  .ant-col-xl-pull-3.ant-col-rtl {
+    right: auto;
+    left: 12.5%;
+  }
+  .ant-col-xl-offset-3.ant-col-rtl {
+    margin-right: 12.5%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-4.ant-col-rtl {
+    right: 16.66666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-4.ant-col-rtl {
+    right: auto;
+    left: 16.66666667%;
+  }
+  .ant-col-xl-offset-4.ant-col-rtl {
+    margin-right: 16.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-5.ant-col-rtl {
+    right: 20.83333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-5.ant-col-rtl {
+    right: auto;
+    left: 20.83333333%;
+  }
+  .ant-col-xl-offset-5.ant-col-rtl {
+    margin-right: 20.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-6.ant-col-rtl {
+    right: 25%;
+    left: auto;
+  }
+  .ant-col-xl-pull-6.ant-col-rtl {
+    right: auto;
+    left: 25%;
+  }
+  .ant-col-xl-offset-6.ant-col-rtl {
+    margin-right: 25%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-7.ant-col-rtl {
+    right: 29.16666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-7.ant-col-rtl {
+    right: auto;
+    left: 29.16666667%;
+  }
+  .ant-col-xl-offset-7.ant-col-rtl {
+    margin-right: 29.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-8.ant-col-rtl {
+    right: 33.33333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-8.ant-col-rtl {
+    right: auto;
+    left: 33.33333333%;
+  }
+  .ant-col-xl-offset-8.ant-col-rtl {
+    margin-right: 33.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-9.ant-col-rtl {
+    right: 37.5%;
+    left: auto;
+  }
+  .ant-col-xl-pull-9.ant-col-rtl {
+    right: auto;
+    left: 37.5%;
+  }
+  .ant-col-xl-offset-9.ant-col-rtl {
+    margin-right: 37.5%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-10.ant-col-rtl {
+    right: 41.66666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-10.ant-col-rtl {
+    right: auto;
+    left: 41.66666667%;
+  }
+  .ant-col-xl-offset-10.ant-col-rtl {
+    margin-right: 41.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-11.ant-col-rtl {
+    right: 45.83333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-11.ant-col-rtl {
+    right: auto;
+    left: 45.83333333%;
+  }
+  .ant-col-xl-offset-11.ant-col-rtl {
+    margin-right: 45.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-12.ant-col-rtl {
+    right: 50%;
+    left: auto;
+  }
+  .ant-col-xl-pull-12.ant-col-rtl {
+    right: auto;
+    left: 50%;
+  }
+  .ant-col-xl-offset-12.ant-col-rtl {
+    margin-right: 50%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-13.ant-col-rtl {
+    right: 54.16666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-13.ant-col-rtl {
+    right: auto;
+    left: 54.16666667%;
+  }
+  .ant-col-xl-offset-13.ant-col-rtl {
+    margin-right: 54.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-14.ant-col-rtl {
+    right: 58.33333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-14.ant-col-rtl {
+    right: auto;
+    left: 58.33333333%;
+  }
+  .ant-col-xl-offset-14.ant-col-rtl {
+    margin-right: 58.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-15.ant-col-rtl {
+    right: 62.5%;
+    left: auto;
+  }
+  .ant-col-xl-pull-15.ant-col-rtl {
+    right: auto;
+    left: 62.5%;
+  }
+  .ant-col-xl-offset-15.ant-col-rtl {
+    margin-right: 62.5%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-16.ant-col-rtl {
+    right: 66.66666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-16.ant-col-rtl {
+    right: auto;
+    left: 66.66666667%;
+  }
+  .ant-col-xl-offset-16.ant-col-rtl {
+    margin-right: 66.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-17.ant-col-rtl {
+    right: 70.83333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-17.ant-col-rtl {
+    right: auto;
+    left: 70.83333333%;
+  }
+  .ant-col-xl-offset-17.ant-col-rtl {
+    margin-right: 70.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-18.ant-col-rtl {
+    right: 75%;
+    left: auto;
+  }
+  .ant-col-xl-pull-18.ant-col-rtl {
+    right: auto;
+    left: 75%;
+  }
+  .ant-col-xl-offset-18.ant-col-rtl {
+    margin-right: 75%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-19.ant-col-rtl {
+    right: 79.16666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-19.ant-col-rtl {
+    right: auto;
+    left: 79.16666667%;
+  }
+  .ant-col-xl-offset-19.ant-col-rtl {
+    margin-right: 79.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-20.ant-col-rtl {
+    right: 83.33333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-20.ant-col-rtl {
+    right: auto;
+    left: 83.33333333%;
+  }
+  .ant-col-xl-offset-20.ant-col-rtl {
+    margin-right: 83.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-21.ant-col-rtl {
+    right: 87.5%;
+    left: auto;
+  }
+  .ant-col-xl-pull-21.ant-col-rtl {
+    right: auto;
+    left: 87.5%;
+  }
+  .ant-col-xl-offset-21.ant-col-rtl {
+    margin-right: 87.5%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-22.ant-col-rtl {
+    right: 91.66666667%;
+    left: auto;
+  }
+  .ant-col-xl-pull-22.ant-col-rtl {
+    right: auto;
+    left: 91.66666667%;
+  }
+  .ant-col-xl-offset-22.ant-col-rtl {
+    margin-right: 91.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-23.ant-col-rtl {
+    right: 95.83333333%;
+    left: auto;
+  }
+  .ant-col-xl-pull-23.ant-col-rtl {
+    right: auto;
+    left: 95.83333333%;
+  }
+  .ant-col-xl-offset-23.ant-col-rtl {
+    margin-right: 95.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xl-push-24.ant-col-rtl {
+    right: 100%;
+    left: auto;
+  }
+  .ant-col-xl-pull-24.ant-col-rtl {
+    right: auto;
+    left: 100%;
+  }
+  .ant-col-xl-offset-24.ant-col-rtl {
+    margin-right: 100%;
+    margin-left: 0;
+  }
+}
+@media (min-width: 1600px) {
+  .ant-col-xxl-24 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 100%;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .ant-col-xxl-push-24 {
+    left: 100%;
+  }
+  .ant-col-xxl-pull-24 {
+    right: 100%;
+  }
+  .ant-col-xxl-offset-24 {
+    margin-left: 100%;
+  }
+  .ant-col-xxl-order-24 {
+    -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+            order: 24;
+  }
+  .ant-col-xxl-23 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 95.83333333%;
+            flex: 0 0 95.83333333%;
+    max-width: 95.83333333%;
+  }
+  .ant-col-xxl-push-23 {
+    left: 95.83333333%;
+  }
+  .ant-col-xxl-pull-23 {
+    right: 95.83333333%;
+  }
+  .ant-col-xxl-offset-23 {
+    margin-left: 95.83333333%;
+  }
+  .ant-col-xxl-order-23 {
+    -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+            order: 23;
+  }
+  .ant-col-xxl-22 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 91.66666667%;
+            flex: 0 0 91.66666667%;
+    max-width: 91.66666667%;
+  }
+  .ant-col-xxl-push-22 {
+    left: 91.66666667%;
+  }
+  .ant-col-xxl-pull-22 {
+    right: 91.66666667%;
+  }
+  .ant-col-xxl-offset-22 {
+    margin-left: 91.66666667%;
+  }
+  .ant-col-xxl-order-22 {
+    -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+            order: 22;
+  }
+  .ant-col-xxl-21 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 87.5%;
+            flex: 0 0 87.5%;
+    max-width: 87.5%;
+  }
+  .ant-col-xxl-push-21 {
+    left: 87.5%;
+  }
+  .ant-col-xxl-pull-21 {
+    right: 87.5%;
+  }
+  .ant-col-xxl-offset-21 {
+    margin-left: 87.5%;
+  }
+  .ant-col-xxl-order-21 {
+    -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+            order: 21;
+  }
+  .ant-col-xxl-20 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 83.33333333%;
+            flex: 0 0 83.33333333%;
+    max-width: 83.33333333%;
+  }
+  .ant-col-xxl-push-20 {
+    left: 83.33333333%;
+  }
+  .ant-col-xxl-pull-20 {
+    right: 83.33333333%;
+  }
+  .ant-col-xxl-offset-20 {
+    margin-left: 83.33333333%;
+  }
+  .ant-col-xxl-order-20 {
+    -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+            order: 20;
+  }
+  .ant-col-xxl-19 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 79.16666667%;
+            flex: 0 0 79.16666667%;
+    max-width: 79.16666667%;
+  }
+  .ant-col-xxl-push-19 {
+    left: 79.16666667%;
+  }
+  .ant-col-xxl-pull-19 {
+    right: 79.16666667%;
+  }
+  .ant-col-xxl-offset-19 {
+    margin-left: 79.16666667%;
+  }
+  .ant-col-xxl-order-19 {
+    -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+            order: 19;
+  }
+  .ant-col-xxl-18 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 75%;
+            flex: 0 0 75%;
+    max-width: 75%;
+  }
+  .ant-col-xxl-push-18 {
+    left: 75%;
+  }
+  .ant-col-xxl-pull-18 {
+    right: 75%;
+  }
+  .ant-col-xxl-offset-18 {
+    margin-left: 75%;
+  }
+  .ant-col-xxl-order-18 {
+    -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+            order: 18;
+  }
+  .ant-col-xxl-17 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 70.83333333%;
+            flex: 0 0 70.83333333%;
+    max-width: 70.83333333%;
+  }
+  .ant-col-xxl-push-17 {
+    left: 70.83333333%;
+  }
+  .ant-col-xxl-pull-17 {
+    right: 70.83333333%;
+  }
+  .ant-col-xxl-offset-17 {
+    margin-left: 70.83333333%;
+  }
+  .ant-col-xxl-order-17 {
+    -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+            order: 17;
+  }
+  .ant-col-xxl-16 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 66.66666667%;
+            flex: 0 0 66.66666667%;
+    max-width: 66.66666667%;
+  }
+  .ant-col-xxl-push-16 {
+    left: 66.66666667%;
+  }
+  .ant-col-xxl-pull-16 {
+    right: 66.66666667%;
+  }
+  .ant-col-xxl-offset-16 {
+    margin-left: 66.66666667%;
+  }
+  .ant-col-xxl-order-16 {
+    -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+            order: 16;
+  }
+  .ant-col-xxl-15 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 62.5%;
+            flex: 0 0 62.5%;
+    max-width: 62.5%;
+  }
+  .ant-col-xxl-push-15 {
+    left: 62.5%;
+  }
+  .ant-col-xxl-pull-15 {
+    right: 62.5%;
+  }
+  .ant-col-xxl-offset-15 {
+    margin-left: 62.5%;
+  }
+  .ant-col-xxl-order-15 {
+    -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+            order: 15;
+  }
+  .ant-col-xxl-14 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 58.33333333%;
+            flex: 0 0 58.33333333%;
+    max-width: 58.33333333%;
+  }
+  .ant-col-xxl-push-14 {
+    left: 58.33333333%;
+  }
+  .ant-col-xxl-pull-14 {
+    right: 58.33333333%;
+  }
+  .ant-col-xxl-offset-14 {
+    margin-left: 58.33333333%;
+  }
+  .ant-col-xxl-order-14 {
+    -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+            order: 14;
+  }
+  .ant-col-xxl-13 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 54.16666667%;
+            flex: 0 0 54.16666667%;
+    max-width: 54.16666667%;
+  }
+  .ant-col-xxl-push-13 {
+    left: 54.16666667%;
+  }
+  .ant-col-xxl-pull-13 {
+    right: 54.16666667%;
+  }
+  .ant-col-xxl-offset-13 {
+    margin-left: 54.16666667%;
+  }
+  .ant-col-xxl-order-13 {
+    -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+            order: 13;
+  }
+  .ant-col-xxl-12 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 50%;
+            flex: 0 0 50%;
+    max-width: 50%;
+  }
+  .ant-col-xxl-push-12 {
+    left: 50%;
+  }
+  .ant-col-xxl-pull-12 {
+    right: 50%;
+  }
+  .ant-col-xxl-offset-12 {
+    margin-left: 50%;
+  }
+  .ant-col-xxl-order-12 {
+    -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+            order: 12;
+  }
+  .ant-col-xxl-11 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 45.83333333%;
+            flex: 0 0 45.83333333%;
+    max-width: 45.83333333%;
+  }
+  .ant-col-xxl-push-11 {
+    left: 45.83333333%;
+  }
+  .ant-col-xxl-pull-11 {
+    right: 45.83333333%;
+  }
+  .ant-col-xxl-offset-11 {
+    margin-left: 45.83333333%;
+  }
+  .ant-col-xxl-order-11 {
+    -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+            order: 11;
+  }
+  .ant-col-xxl-10 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 41.66666667%;
+            flex: 0 0 41.66666667%;
+    max-width: 41.66666667%;
+  }
+  .ant-col-xxl-push-10 {
+    left: 41.66666667%;
+  }
+  .ant-col-xxl-pull-10 {
+    right: 41.66666667%;
+  }
+  .ant-col-xxl-offset-10 {
+    margin-left: 41.66666667%;
+  }
+  .ant-col-xxl-order-10 {
+    -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+            order: 10;
+  }
+  .ant-col-xxl-9 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 37.5%;
+            flex: 0 0 37.5%;
+    max-width: 37.5%;
+  }
+  .ant-col-xxl-push-9 {
+    left: 37.5%;
+  }
+  .ant-col-xxl-pull-9 {
+    right: 37.5%;
+  }
+  .ant-col-xxl-offset-9 {
+    margin-left: 37.5%;
+  }
+  .ant-col-xxl-order-9 {
+    -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+            order: 9;
+  }
+  .ant-col-xxl-8 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 33.33333333%;
+            flex: 0 0 33.33333333%;
+    max-width: 33.33333333%;
+  }
+  .ant-col-xxl-push-8 {
+    left: 33.33333333%;
+  }
+  .ant-col-xxl-pull-8 {
+    right: 33.33333333%;
+  }
+  .ant-col-xxl-offset-8 {
+    margin-left: 33.33333333%;
+  }
+  .ant-col-xxl-order-8 {
+    -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+            order: 8;
+  }
+  .ant-col-xxl-7 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 29.16666667%;
+            flex: 0 0 29.16666667%;
+    max-width: 29.16666667%;
+  }
+  .ant-col-xxl-push-7 {
+    left: 29.16666667%;
+  }
+  .ant-col-xxl-pull-7 {
+    right: 29.16666667%;
+  }
+  .ant-col-xxl-offset-7 {
+    margin-left: 29.16666667%;
+  }
+  .ant-col-xxl-order-7 {
+    -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+            order: 7;
+  }
+  .ant-col-xxl-6 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 25%;
+            flex: 0 0 25%;
+    max-width: 25%;
+  }
+  .ant-col-xxl-push-6 {
+    left: 25%;
+  }
+  .ant-col-xxl-pull-6 {
+    right: 25%;
+  }
+  .ant-col-xxl-offset-6 {
+    margin-left: 25%;
+  }
+  .ant-col-xxl-order-6 {
+    -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+            order: 6;
+  }
+  .ant-col-xxl-5 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 20.83333333%;
+            flex: 0 0 20.83333333%;
+    max-width: 20.83333333%;
+  }
+  .ant-col-xxl-push-5 {
+    left: 20.83333333%;
+  }
+  .ant-col-xxl-pull-5 {
+    right: 20.83333333%;
+  }
+  .ant-col-xxl-offset-5 {
+    margin-left: 20.83333333%;
+  }
+  .ant-col-xxl-order-5 {
+    -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+            order: 5;
+  }
+  .ant-col-xxl-4 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 16.66666667%;
+            flex: 0 0 16.66666667%;
+    max-width: 16.66666667%;
+  }
+  .ant-col-xxl-push-4 {
+    left: 16.66666667%;
+  }
+  .ant-col-xxl-pull-4 {
+    right: 16.66666667%;
+  }
+  .ant-col-xxl-offset-4 {
+    margin-left: 16.66666667%;
+  }
+  .ant-col-xxl-order-4 {
+    -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+            order: 4;
+  }
+  .ant-col-xxl-3 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 12.5%;
+            flex: 0 0 12.5%;
+    max-width: 12.5%;
+  }
+  .ant-col-xxl-push-3 {
+    left: 12.5%;
+  }
+  .ant-col-xxl-pull-3 {
+    right: 12.5%;
+  }
+  .ant-col-xxl-offset-3 {
+    margin-left: 12.5%;
+  }
+  .ant-col-xxl-order-3 {
+    -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+            order: 3;
+  }
+  .ant-col-xxl-2 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 8.33333333%;
+            flex: 0 0 8.33333333%;
+    max-width: 8.33333333%;
+  }
+  .ant-col-xxl-push-2 {
+    left: 8.33333333%;
+  }
+  .ant-col-xxl-pull-2 {
+    right: 8.33333333%;
+  }
+  .ant-col-xxl-offset-2 {
+    margin-left: 8.33333333%;
+  }
+  .ant-col-xxl-order-2 {
+    -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+            order: 2;
+  }
+  .ant-col-xxl-1 {
+    display: block;
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 4.16666667%;
+            flex: 0 0 4.16666667%;
+    max-width: 4.16666667%;
+  }
+  .ant-col-xxl-push-1 {
+    left: 4.16666667%;
+  }
+  .ant-col-xxl-pull-1 {
+    right: 4.16666667%;
+  }
+  .ant-col-xxl-offset-1 {
+    margin-left: 4.16666667%;
+  }
+  .ant-col-xxl-order-1 {
+    -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+            order: 1;
+  }
+  .ant-col-xxl-0 {
+    display: none;
+  }
+  .ant-col-push-0 {
+    left: auto;
+  }
+  .ant-col-pull-0 {
+    right: auto;
+  }
+  .ant-col-xxl-push-0 {
+    left: auto;
+  }
+  .ant-col-xxl-pull-0 {
+    right: auto;
+  }
+  .ant-col-xxl-offset-0 {
+    margin-left: 0;
+  }
+  .ant-col-xxl-order-0 {
+    -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+            order: 0;
+  }
+  .ant-col-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-xxl-push-0.ant-col-rtl {
+    right: auto;
+  }
+  .ant-col-xxl-pull-0.ant-col-rtl {
+    left: auto;
+  }
+  .ant-col-xxl-offset-0.ant-col-rtl {
+    margin-right: 0;
+  }
+  .ant-col-xxl-push-1.ant-col-rtl {
+    right: 4.16666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-1.ant-col-rtl {
+    right: auto;
+    left: 4.16666667%;
+  }
+  .ant-col-xxl-offset-1.ant-col-rtl {
+    margin-right: 4.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-2.ant-col-rtl {
+    right: 8.33333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-2.ant-col-rtl {
+    right: auto;
+    left: 8.33333333%;
+  }
+  .ant-col-xxl-offset-2.ant-col-rtl {
+    margin-right: 8.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-3.ant-col-rtl {
+    right: 12.5%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-3.ant-col-rtl {
+    right: auto;
+    left: 12.5%;
+  }
+  .ant-col-xxl-offset-3.ant-col-rtl {
+    margin-right: 12.5%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-4.ant-col-rtl {
+    right: 16.66666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-4.ant-col-rtl {
+    right: auto;
+    left: 16.66666667%;
+  }
+  .ant-col-xxl-offset-4.ant-col-rtl {
+    margin-right: 16.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-5.ant-col-rtl {
+    right: 20.83333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-5.ant-col-rtl {
+    right: auto;
+    left: 20.83333333%;
+  }
+  .ant-col-xxl-offset-5.ant-col-rtl {
+    margin-right: 20.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-6.ant-col-rtl {
+    right: 25%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-6.ant-col-rtl {
+    right: auto;
+    left: 25%;
+  }
+  .ant-col-xxl-offset-6.ant-col-rtl {
+    margin-right: 25%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-7.ant-col-rtl {
+    right: 29.16666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-7.ant-col-rtl {
+    right: auto;
+    left: 29.16666667%;
+  }
+  .ant-col-xxl-offset-7.ant-col-rtl {
+    margin-right: 29.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-8.ant-col-rtl {
+    right: 33.33333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-8.ant-col-rtl {
+    right: auto;
+    left: 33.33333333%;
+  }
+  .ant-col-xxl-offset-8.ant-col-rtl {
+    margin-right: 33.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-9.ant-col-rtl {
+    right: 37.5%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-9.ant-col-rtl {
+    right: auto;
+    left: 37.5%;
+  }
+  .ant-col-xxl-offset-9.ant-col-rtl {
+    margin-right: 37.5%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-10.ant-col-rtl {
+    right: 41.66666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-10.ant-col-rtl {
+    right: auto;
+    left: 41.66666667%;
+  }
+  .ant-col-xxl-offset-10.ant-col-rtl {
+    margin-right: 41.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-11.ant-col-rtl {
+    right: 45.83333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-11.ant-col-rtl {
+    right: auto;
+    left: 45.83333333%;
+  }
+  .ant-col-xxl-offset-11.ant-col-rtl {
+    margin-right: 45.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-12.ant-col-rtl {
+    right: 50%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-12.ant-col-rtl {
+    right: auto;
+    left: 50%;
+  }
+  .ant-col-xxl-offset-12.ant-col-rtl {
+    margin-right: 50%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-13.ant-col-rtl {
+    right: 54.16666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-13.ant-col-rtl {
+    right: auto;
+    left: 54.16666667%;
+  }
+  .ant-col-xxl-offset-13.ant-col-rtl {
+    margin-right: 54.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-14.ant-col-rtl {
+    right: 58.33333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-14.ant-col-rtl {
+    right: auto;
+    left: 58.33333333%;
+  }
+  .ant-col-xxl-offset-14.ant-col-rtl {
+    margin-right: 58.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-15.ant-col-rtl {
+    right: 62.5%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-15.ant-col-rtl {
+    right: auto;
+    left: 62.5%;
+  }
+  .ant-col-xxl-offset-15.ant-col-rtl {
+    margin-right: 62.5%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-16.ant-col-rtl {
+    right: 66.66666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-16.ant-col-rtl {
+    right: auto;
+    left: 66.66666667%;
+  }
+  .ant-col-xxl-offset-16.ant-col-rtl {
+    margin-right: 66.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-17.ant-col-rtl {
+    right: 70.83333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-17.ant-col-rtl {
+    right: auto;
+    left: 70.83333333%;
+  }
+  .ant-col-xxl-offset-17.ant-col-rtl {
+    margin-right: 70.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-18.ant-col-rtl {
+    right: 75%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-18.ant-col-rtl {
+    right: auto;
+    left: 75%;
+  }
+  .ant-col-xxl-offset-18.ant-col-rtl {
+    margin-right: 75%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-19.ant-col-rtl {
+    right: 79.16666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-19.ant-col-rtl {
+    right: auto;
+    left: 79.16666667%;
+  }
+  .ant-col-xxl-offset-19.ant-col-rtl {
+    margin-right: 79.16666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-20.ant-col-rtl {
+    right: 83.33333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-20.ant-col-rtl {
+    right: auto;
+    left: 83.33333333%;
+  }
+  .ant-col-xxl-offset-20.ant-col-rtl {
+    margin-right: 83.33333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-21.ant-col-rtl {
+    right: 87.5%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-21.ant-col-rtl {
+    right: auto;
+    left: 87.5%;
+  }
+  .ant-col-xxl-offset-21.ant-col-rtl {
+    margin-right: 87.5%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-22.ant-col-rtl {
+    right: 91.66666667%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-22.ant-col-rtl {
+    right: auto;
+    left: 91.66666667%;
+  }
+  .ant-col-xxl-offset-22.ant-col-rtl {
+    margin-right: 91.66666667%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-23.ant-col-rtl {
+    right: 95.83333333%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-23.ant-col-rtl {
+    right: auto;
+    left: 95.83333333%;
+  }
+  .ant-col-xxl-offset-23.ant-col-rtl {
+    margin-right: 95.83333333%;
+    margin-left: 0;
+  }
+  .ant-col-xxl-push-24.ant-col-rtl {
+    right: 100%;
+    left: auto;
+  }
+  .ant-col-xxl-pull-24.ant-col-rtl {
+    right: auto;
+    left: 100%;
+  }
+  .ant-col-xxl-offset-24.ant-col-rtl {
+    margin-right: 100%;
+    margin-left: 0;
+  }
+}
+.ant-row-rtl {
+  direction: rtl;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-carousel {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+.ant-carousel .slick-slider {
+  position: relative;
+  display: block;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-touch-callout: none;
+  -ms-touch-action: pan-y;
+  touch-action: pan-y;
+  -webkit-tap-highlight-color: transparent;
+}
+.ant-carousel .slick-list {
+  position: relative;
+  display: block;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.ant-carousel .slick-list:focus {
+  outline: none;
+}
+.ant-carousel .slick-list.dragging {
+  cursor: pointer;
+}
+.ant-carousel .slick-list .slick-slide {
+  pointer-events: none;
+}
+.ant-carousel .slick-list .slick-slide input.ant-radio-input,
+.ant-carousel .slick-list .slick-slide input.ant-checkbox-input {
+  visibility: hidden;
+}
+.ant-carousel .slick-list .slick-slide.slick-active {
+  pointer-events: auto;
+}
+.ant-carousel .slick-list .slick-slide.slick-active input.ant-radio-input,
+.ant-carousel .slick-list .slick-slide.slick-active input.ant-checkbox-input {
+  visibility: visible;
+}
+.ant-carousel .slick-list .slick-slide > div > div {
+  vertical-align: bottom;
+}
+.ant-carousel .slick-slider .slick-track,
+.ant-carousel .slick-slider .slick-list {
+  -webkit-transform: translate3d(0, 0, 0);
+          transform: translate3d(0, 0, 0);
+  -ms-touch-action: pan-y;
+      touch-action: pan-y;
+}
+.ant-carousel .slick-track {
+  position: relative;
+  top: 0;
+  left: 0;
+  display: block;
+}
+.ant-carousel .slick-track::before,
+.ant-carousel .slick-track::after {
+  display: table;
+  content: '';
+}
+.ant-carousel .slick-track::after {
+  clear: both;
+}
+.slick-loading .ant-carousel .slick-track {
+  visibility: hidden;
+}
+.ant-carousel .slick-slide {
+  display: none;
+  float: left;
+  height: 100%;
+  min-height: 1px;
+}
+.ant-carousel .slick-slide img {
+  display: block;
+}
+.ant-carousel .slick-slide.slick-loading img {
+  display: none;
+}
+.ant-carousel .slick-slide.dragging img {
+  pointer-events: none;
+}
+.ant-carousel .slick-initialized .slick-slide {
+  display: block;
+}
+.ant-carousel .slick-loading .slick-slide {
+  visibility: hidden;
+}
+.ant-carousel .slick-vertical .slick-slide {
+  display: block;
+  height: auto;
+}
+.ant-carousel .slick-arrow.slick-hidden {
+  display: none;
+}
+.ant-carousel .slick-prev,
+.ant-carousel .slick-next {
+  position: absolute;
+  top: 50%;
+  display: block;
+  width: 20px;
+  height: 20px;
+  margin-top: -10px;
+  padding: 0;
+  color: transparent;
+  font-size: 0;
+  line-height: 0;
+  background: transparent;
+  border: 0;
+  outline: none;
+  cursor: pointer;
+}
+.ant-carousel .slick-prev:hover,
+.ant-carousel .slick-next:hover,
+.ant-carousel .slick-prev:focus,
+.ant-carousel .slick-next:focus {
+  color: transparent;
+  background: transparent;
+  outline: none;
+}
+.ant-carousel .slick-prev:hover::before,
+.ant-carousel .slick-next:hover::before,
+.ant-carousel .slick-prev:focus::before,
+.ant-carousel .slick-next:focus::before {
+  opacity: 1;
+}
+.ant-carousel .slick-prev.slick-disabled::before,
+.ant-carousel .slick-next.slick-disabled::before {
+  opacity: 0.25;
+}
+.ant-carousel .slick-prev {
+  left: -25px;
+}
+.ant-carousel .slick-prev::before {
+  content: '←';
+}
+.ant-carousel .slick-next {
+  right: -25px;
+}
+.ant-carousel .slick-next::before {
+  content: '→';
+}
+.ant-carousel .slick-dots {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 15;
+  display: -webkit-box !important;
+  display: -ms-flexbox !important;
+  display: flex !important;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  margin-right: 15%;
+  margin-left: 15%;
+  padding-left: 0;
+  list-style: none;
+}
+.ant-carousel .slick-dots-bottom {
+  bottom: 12px;
+}
+.ant-carousel .slick-dots-top {
+  top: 12px;
+}
+.ant-carousel .slick-dots li {
+  position: relative;
+  display: inline-block;
+  -webkit-box-flex: 0;
+      -ms-flex: 0 1 auto;
+          flex: 0 1 auto;
+  -webkit-box-sizing: content-box;
+          box-sizing: content-box;
+  width: 16px;
+  height: 3px;
+  margin: 0 2px;
+  margin-right: 3px;
+  margin-left: 3px;
+  padding: 0;
+  text-align: center;
+  text-indent: -999px;
+  vertical-align: top;
+  -webkit-transition: all 0.5s;
+  transition: all 0.5s;
+}
+.ant-carousel .slick-dots li button {
+  display: block;
+  width: 100%;
+  height: 3px;
+  padding: 0;
+  color: transparent;
+  font-size: 0;
+  background: var(--content_bg);
+  border: 0;
+  border-radius: 1px;
+  outline: none;
+  cursor: pointer;
+  opacity: 0.3;
+  -webkit-transition: all 0.5s;
+  transition: all 0.5s;
+}
+.ant-carousel .slick-dots li button:hover,
+.ant-carousel .slick-dots li button:focus {
+  opacity: 0.75;
+}
+.ant-carousel .slick-dots li.slick-active {
+  width: 24px;
+}
+.ant-carousel .slick-dots li.slick-active button {
+  background: var(--content_bg);
+  opacity: 1;
+}
+.ant-carousel .slick-dots li.slick-active:hover,
+.ant-carousel .slick-dots li.slick-active:focus {
+  opacity: 1;
+}
+.ant-carousel-vertical .slick-dots {
+  top: 50%;
+  bottom: auto;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  width: 3px;
+  height: auto;
+  margin: 0;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+}
+.ant-carousel-vertical .slick-dots-left {
+  right: auto;
+  left: 12px;
+}
+.ant-carousel-vertical .slick-dots-right {
+  right: 12px;
+  left: auto;
+}
+.ant-carousel-vertical .slick-dots li {
+  width: 3px;
+  height: 16px;
+  margin: 4px 2px;
+  vertical-align: baseline;
+}
+.ant-carousel-vertical .slick-dots li button {
+  width: 3px;
+  height: 16px;
+}
+.ant-carousel-vertical .slick-dots li.slick-active {
+  width: 3px;
+  height: 24px;
+}
+.ant-carousel-vertical .slick-dots li.slick-active button {
+  width: 3px;
+  height: 24px;
+}
+.ant-carousel-rtl {
+  direction: rtl;
+}
+.ant-carousel-rtl .ant-carousel .slick-track {
+  right: 0;
+  left: auto;
+}
+.ant-carousel-rtl .ant-carousel .slick-prev {
+  right: -25px;
+  left: auto;
+}
+.ant-carousel-rtl .ant-carousel .slick-prev::before {
+  content: '→';
+}
+.ant-carousel-rtl .ant-carousel .slick-next {
+  right: auto;
+  left: -25px;
+}
+.ant-carousel-rtl .ant-carousel .slick-next::before {
+  content: '←';
+}
+.ant-carousel-rtl.ant-carousel .slick-dots {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: reverse;
+      -ms-flex-direction: row-reverse;
+          flex-direction: row-reverse;
+}
+.ant-carousel-rtl.ant-carousel-vertical .slick-dots {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-cascader {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+.ant-cascader-input.ant-input {
+  position: static;
+  width: 100%;
+  padding-right: 24px;
+  background-color: transparent !important;
+  cursor: pointer;
+}
+.ant-cascader-picker-show-search .ant-cascader-input.ant-input {
+  position: relative;
+}
+.ant-cascader-picker {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  background-color: transparent;
+  border-radius: 2px;
+  outline: 0;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-cascader-picker-with-value .ant-cascader-picker-label {
+  color: transparent;
+}
+.ant-cascader-picker-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+}
+.ant-cascader-picker-disabled .ant-cascader-input {
+  cursor: not-allowed;
+}
+.ant-cascader-picker:focus .ant-cascader-input {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-cascader-picker-borderless .ant-cascader-input {
+  border-color: transparent !important;
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+.ant-cascader-picker-show-search.ant-cascader-picker-focused {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-cascader-picker-label {
+  position: absolute;
+  top: 50%;
+  left: 0;
+  width: 100%;
+  height: 20px;
+  margin-top: -10px;
+  padding: 0 20px 0 12px;
+  overflow: hidden;
+  line-height: 20px;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-cascader-picker-clear {
+  position: absolute;
+  top: 50%;
+  right: 12px;
+  z-index: 2;
+  width: 12px;
+  height: 12px;
+  margin-top: -6px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 12px;
+  line-height: 12px;
+  background: var(--content_bg);
+  cursor: pointer;
+  opacity: 0;
+  -webkit-transition: color 0.3s ease, opacity 0.15s ease;
+  transition: color 0.3s ease, opacity 0.15s ease;
+}
+.ant-cascader-picker-clear:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-cascader-picker:hover .ant-cascader-picker-clear {
+  opacity: 1;
+}
+.ant-cascader-picker-arrow {
+  position: absolute;
+  top: 50%;
+  right: 12px;
+  z-index: 1;
+  width: 12px;
+  height: 12px;
+  margin-top: -6px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 12px;
+  line-height: 12px;
+}
+.ant-cascader-picker-label:hover + .ant-cascader-input:not(.ant-cascader-picker-disabled .ant-cascader-picker-label:hover + .ant-cascader-input) {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-cascader-picker-small .ant-cascader-picker-clear,
+.ant-cascader-picker-small .ant-cascader-picker-arrow {
+  right: 8px;
+}
+.ant-cascader-menus {
+  position: absolute;
+  z-index: 1050;
+  font-size: 14px;
+  white-space: nowrap;
+  background: var(--layout_bg);
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-cascader-menus ul,
+.ant-cascader-menus ol {
+  margin: 0;
+  list-style: none;
+}
+.ant-cascader-menus-empty,
+.ant-cascader-menus-hidden {
+  display: none;
+}
+.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-bottomLeft,
+.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-bottomLeft {
+  -webkit-animation-name: antSlideUpIn;
+          animation-name: antSlideUpIn;
+}
+.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-topLeft,
+.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-topLeft {
+  -webkit-animation-name: antSlideDownIn;
+          animation-name: antSlideDownIn;
+}
+.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-bottomLeft {
+  -webkit-animation-name: antSlideUpOut;
+          animation-name: antSlideUpOut;
+}
+.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-topLeft {
+  -webkit-animation-name: antSlideDownOut;
+          animation-name: antSlideDownOut;
+}
+.ant-cascader-menu {
+  display: inline-block;
+  min-width: 111px;
+  height: 180px;
+  margin: 0;
+  padding: 4px 0;
+  overflow: auto;
+  vertical-align: top;
+  list-style: none;
+  border-right: 1px solid #5a6367;
+  -ms-overflow-style: -ms-autohiding-scrollbar;
+}
+.ant-cascader-menu:first-child {
+  border-radius: 2px 0 0 2px;
+}
+.ant-cascader-menu:last-child {
+  margin-right: -1px;
+  border-right-color: transparent;
+  border-radius: 0 2px 2px 0;
+}
+.ant-cascader-menu:only-child {
+  border-radius: 2px;
+}
+.ant-cascader-menu-item {
+  padding: 5px 12px;
+  overflow: hidden;
+  line-height: 22px;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-cascader-menu-item:hover {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-cascader-menu-item-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-cascader-menu-item-disabled:hover {
+  background: transparent;
+}
+.ant-cascader-menu-empty .ant-cascader-menu-item {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: default;
+  pointer-events: none;
+}
+.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),
+.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {
+  font-weight: 600;
+  background-color: var(--layout_bg);
+}
+.ant-cascader-menu-item-expand {
+  position: relative;
+  padding-right: 24px;
+}
+.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,
+.ant-cascader-menu-item-loading-icon {
+  position: absolute;
+  right: 12px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 10px;
+}
+.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,
+.ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-cascader-menu-item .ant-cascader-menu-item-keyword {
+  color: #a61d24;
+}
+.ant-cascader-picker-rtl .ant-cascader-input.ant-input {
+  padding-right: 11px;
+  padding-left: 24px;
+  text-align: right;
+}
+.ant-cascader-picker-rtl {
+  direction: rtl;
+}
+.ant-cascader-picker-rtl .ant-cascader-picker-label {
+  padding: 0 12px 0 20px;
+  text-align: right;
+}
+.ant-cascader-picker-rtl .ant-cascader-picker-clear {
+  right: auto;
+  left: 12px;
+}
+.ant-cascader-picker-rtl .ant-cascader-picker-arrow {
+  right: auto;
+  left: 12px;
+}
+.ant-cascader-picker-rtl.ant-cascader-picker-small .ant-cascader-picker-clear,
+.ant-cascader-picker-rtl.ant-cascader-picker-small .ant-cascader-picker-arrow {
+  right: auto;
+  left: 8px;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu {
+  direction: rtl;
+  border-right: none;
+  border-left: 1px solid #5a6367;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu:first-child {
+  border-radius: 0 2px 2px 0;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu:last-child {
+  margin-right: 0;
+  margin-left: -1px;
+  border-left-color: transparent;
+  border-radius: 2px 0 0 2px;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu:only-child {
+  border-radius: 2px;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu-item-expand {
+  padding-right: 12px;
+  padding-left: 24px;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,
+.ant-cascader-menu-rtl .ant-cascader-menu-item-loading-icon {
+  right: auto;
+  left: 12px;
+}
+.ant-cascader-menu-rtl .ant-cascader-menu-item-loading-icon {
+  -webkit-transform: scaleY(-1);
+          transform: scaleY(-1);
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-input-affix-wrapper {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  min-width: 0;
+  padding: 4px 11px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-input-affix-wrapper::-moz-placeholder {
+  opacity: 1;
+}
+.ant-input-affix-wrapper::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-affix-wrapper:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-affix-wrapper::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-affix-wrapper::placeholder {
+  color: var(--text_cl);
+}
+.ant-input-affix-wrapper:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input-affix-wrapper:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-input-affix-wrapper:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input-affix-wrapper:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-input-rtl .ant-input-affix-wrapper:hover {
+  border-right-width: 0;
+  border-left-width: 1px !important;
+}
+.ant-input-affix-wrapper:focus,
+.ant-input-affix-wrapper-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-input-rtl .ant-input-affix-wrapper:focus,
+.ant-input-rtl .ant-input-affix-wrapper-focused {
+  border-right-width: 0;
+  border-left-width: 1px !important;
+}
+.ant-input-affix-wrapper-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input-affix-wrapper-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input-affix-wrapper[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input-affix-wrapper[disabled]:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input-affix-wrapper-borderless,
+.ant-input-affix-wrapper-borderless:hover,
+.ant-input-affix-wrapper-borderless:focus,
+.ant-input-affix-wrapper-borderless-focused,
+.ant-input-affix-wrapper-borderless-disabled,
+.ant-input-affix-wrapper-borderless[disabled] {
+  background-color: transparent;
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+textarea.ant-input-affix-wrapper {
+  max-width: 100%;
+  height: auto;
+  min-height: 32px;
+  line-height: 1.5715;
+  vertical-align: bottom;
+  -webkit-transition: all 0.3s, height 0s;
+  transition: all 0.3s, height 0s;
+}
+.ant-input-affix-wrapper-lg {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-input-affix-wrapper-sm {
+  padding: 0px 7px;
+}
+.ant-input-affix-wrapper-rtl {
+  direction: rtl;
+}
+.ant-input-affix-wrapper:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  z-index: 1;
+}
+.ant-input-rtl .ant-input-affix-wrapper:hover {
+  border-right-width: 0;
+  border-left-width: 1px !important;
+}
+.ant-input-search-with-button .ant-input-affix-wrapper:hover {
+  z-index: 0;
+}
+.ant-input-affix-wrapper-focused,
+.ant-input-affix-wrapper:focus {
+  z-index: 1;
+}
+.ant-input-affix-wrapper-disabled .ant-input[disabled] {
+  background: transparent;
+}
+.ant-input-affix-wrapper > input.ant-input {
+  padding: 0;
+  border: none;
+  outline: none;
+}
+.ant-input-affix-wrapper > input.ant-input:focus {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-input-affix-wrapper::before {
+  width: 0;
+  visibility: hidden;
+  content: '\a0';
+}
+.ant-input-prefix,
+.ant-input-suffix {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-input-prefix {
+  margin-right: 4px;
+}
+.ant-input-suffix {
+  margin-left: 4px;
+}
+.ant-input-clear-icon {
+  margin: 0 4px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 12px;
+  vertical-align: -1px;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-input-clear-icon:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-input-clear-icon:active {
+  color: var(--text_cl);
+}
+.ant-input-clear-icon-hidden {
+  visibility: hidden;
+}
+.ant-input-clear-icon:last-child {
+  margin-right: 0;
+}
+.ant-input-affix-wrapper-textarea-with-clear-btn {
+  padding: 0 !important;
+  border: 0 !important;
+}
+.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input-clear-icon {
+  position: absolute;
+  top: 8px;
+  right: 8px;
+  z-index: 1;
+}
+.ant-input {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  font-variant: tabular-nums;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  min-width: 0;
+  padding: 4px 11px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-input::-moz-placeholder {
+  opacity: 1;
+}
+.ant-input::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input::placeholder {
+  color: var(--text_cl);
+}
+.ant-input:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-input:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-input-rtl .ant-input:hover {
+  border-right-width: 0;
+  border-left-width: 1px !important;
+}
+.ant-input:focus,
+.ant-input-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-input-rtl .ant-input:focus,
+.ant-input-rtl .ant-input-focused {
+  border-right-width: 0;
+  border-left-width: 1px !important;
+}
+.ant-input-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input[disabled]:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input-borderless,
+.ant-input-borderless:hover,
+.ant-input-borderless:focus,
+.ant-input-borderless-focused,
+.ant-input-borderless-disabled,
+.ant-input-borderless[disabled] {
+  background-color: transparent;
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+textarea.ant-input {
+  max-width: 100%;
+  height: auto;
+  min-height: 32px;
+  line-height: 1.5715;
+  vertical-align: bottom;
+  -webkit-transition: all 0.3s, height 0s;
+  transition: all 0.3s, height 0s;
+}
+.ant-input-lg {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-input-sm {
+  padding: 0px 7px;
+}
+.ant-input-rtl {
+  direction: rtl;
+}
+.ant-input-group {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: table;
+  width: 100%;
+  border-collapse: separate;
+  border-spacing: 0;
+}
+.ant-input-group[class*='col-'] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-input-group > [class*='col-'] {
+  padding-right: 8px;
+}
+.ant-input-group > [class*='col-']:last-child {
+  padding-right: 0;
+}
+.ant-input-group-addon,
+.ant-input-group-wrap,
+.ant-input-group > .ant-input {
+  display: table-cell;
+}
+.ant-input-group-addon:not(:first-child):not(:last-child),
+.ant-input-group-wrap:not(:first-child):not(:last-child),
+.ant-input-group > .ant-input:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.ant-input-group-addon,
+.ant-input-group-wrap {
+  width: 1px;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.ant-input-group-wrap > * {
+  display: block !important;
+}
+.ant-input-group .ant-input {
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+  text-align: inherit;
+}
+.ant-input-group .ant-input:focus {
+  z-index: 1;
+  border-right-width: 1px;
+}
+.ant-input-group .ant-input:hover {
+  z-index: 1;
+  border-right-width: 1px;
+}
+.ant-input-search-with-button .ant-input-group .ant-input:hover {
+  z-index: 0;
+}
+.ant-input-group-addon {
+  position: relative;
+  padding: 0 11px;
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+  text-align: center;
+  background-color: rgba(255, 255, 255, 0.04);
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-input-group-addon .ant-select {
+  margin: -5px -11px;
+}
+.ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
+  background-color: inherit;
+  border: 1px solid transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-input-group-addon .ant-select-open .ant-select-selector,
+.ant-input-group-addon .ant-select-focused .ant-select-selector {
+  color: var(--menu_selected_bg);
+}
+.ant-input-group > .ant-input:first-child,
+.ant-input-group-addon:first-child {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.ant-input-group > .ant-input:first-child .ant-select .ant-select-selector,
+.ant-input-group-addon:first-child .ant-select .ant-select-selector {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.ant-input-group-addon:first-child {
+  border-right: 0;
+}
+.ant-input-group-addon:last-child {
+  border-left: 0;
+}
+.ant-input-group > .ant-input:last-child,
+.ant-input-group-addon:last-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.ant-input-group > .ant-input:last-child .ant-select .ant-select-selector,
+.ant-input-group-addon:last-child .ant-select .ant-select-selector {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.ant-input-group-lg .ant-input,
+.ant-input-group-lg > .ant-input-group-addon {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-input-group-sm .ant-input,
+.ant-input-group-sm > .ant-input-group-addon {
+  padding: 0px 7px;
+}
+.ant-input-group-lg .ant-select-single .ant-select-selector {
+  height: 40px;
+}
+.ant-input-group-sm .ant-select-single .ant-select-selector {
+  height: 24px;
+}
+.ant-input-group .ant-input-affix-wrapper:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.ant-input-group .ant-input-affix-wrapper:not(:last-child) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:last-child) {
+  border-top-left-radius: 2px;
+  border-bottom-left-radius: 2px;
+}
+.ant-input-group.ant-input-group-compact {
+  display: block;
+}
+.ant-input-group.ant-input-group-compact::before {
+  display: table;
+  content: '';
+}
+.ant-input-group.ant-input-group-compact::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),
+.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),
+.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {
+  border-right-width: 1px;
+}
+.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover,
+.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover,
+.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover {
+  z-index: 1;
+}
+.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus,
+.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus,
+.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus {
+  z-index: 1;
+}
+.ant-input-group.ant-input-group-compact > * {
+  display: inline-block;
+  float: none;
+  vertical-align: top;
+  border-radius: 0;
+}
+.ant-input-group.ant-input-group-compact > .ant-input-affix-wrapper {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-input-group.ant-input-group-compact > .ant-picker-range {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-input-group.ant-input-group-compact > *:not(:last-child) {
+  margin-right: -1px;
+  border-right-width: 1px;
+}
+.ant-input-group.ant-input-group-compact .ant-input {
+  float: none;
+}
+.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector,
+.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input,
+.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input,
+.ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input {
+  border-right-width: 1px;
+  border-radius: 0;
+}
+.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector:hover,
+.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover,
+.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover,
+.ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:hover {
+  z-index: 1;
+}
+.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector:focus,
+.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus,
+.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus,
+.ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:focus {
+  z-index: 1;
+}
+.ant-input-group.ant-input-group-compact > .ant-select-focused {
+  z-index: 1;
+}
+.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-arrow {
+  z-index: 1;
+}
+.ant-input-group.ant-input-group-compact > *:first-child,
+.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector,
+.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input,
+.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {
+  border-top-left-radius: 2px;
+  border-bottom-left-radius: 2px;
+}
+.ant-input-group.ant-input-group-compact > *:last-child,
+.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector,
+.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input,
+.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {
+  border-right-width: 1px;
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input {
+  vertical-align: top;
+}
+.ant-input-group.ant-input-group-compact .ant-input-group-wrapper + .ant-input-group-wrapper {
+  margin-left: -1px;
+}
+.ant-input-group.ant-input-group-compact .ant-input-group-wrapper + .ant-input-group-wrapper .ant-input-affix-wrapper {
+  border-radius: 0;
+}
+.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input-group-addon > .ant-input-search-button {
+  border-radius: 0;
+}
+.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {
+  border-radius: 2px 0 0 2px;
+}
+.ant-input-group > .ant-input-rtl:first-child,
+.ant-input-group-rtl .ant-input-group-addon:first-child {
+  border-radius: 0 2px 2px 0;
+}
+.ant-input-group-rtl .ant-input-group-addon:first-child {
+  border-right: 1px solid var(--border_cl);
+  border-left: 0;
+}
+.ant-input-group-rtl .ant-input-group-addon:last-child {
+  border-right: 0;
+  border-left: 1px solid var(--border_cl);
+}
+.ant-input-group-rtl.ant-input-group > .ant-input:last-child,
+.ant-input-group-rtl.ant-input-group-addon:last-child {
+  border-radius: 2px 0 0 2px;
+}
+.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child) {
+  border-radius: 2px 0 0 2px;
+}
+.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child) {
+  border-radius: 0 2px 2px 0;
+}
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:not(:last-child) {
+  margin-right: 0;
+  margin-left: -1px;
+  border-left-width: 1px;
+}
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:first-child,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {
+  border-radius: 0 2px 2px 0;
+}
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:last-child,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input,
+.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {
+  border-left-width: 1px;
+  border-radius: 2px 0 0 2px;
+}
+.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl + .ant-input-group-wrapper-rtl {
+  margin-right: -1px;
+  margin-left: 0;
+}
+.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {
+  border-radius: 0 2px 2px 0;
+}
+.ant-input-group-wrapper {
+  display: inline-block;
+  width: 100%;
+  text-align: start;
+  vertical-align: top;
+}
+.ant-input-password-icon {
+  color: rgba(255, 255, 255, 0.45);
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-input-password-icon:hover {
+  color: var(--text_cl);
+}
+.ant-input[type='color'] {
+  height: 32px;
+}
+.ant-input[type='color'].ant-input-lg {
+  height: 40px;
+}
+.ant-input[type='color'].ant-input-sm {
+  height: 24px;
+  padding-top: 3px;
+  padding-bottom: 3px;
+}
+.ant-input-textarea-show-count::after {
+  display: block;
+  color: rgba(255, 255, 255, 0.45);
+  text-align: right;
+  content: attr(data-count);
+}
+.ant-input-search .ant-input:hover,
+.ant-input-search .ant-input:focus {
+  border-color: var(--menu_selected_bg);
+}
+.ant-input-search .ant-input:hover + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),
+.ant-input-search .ant-input:focus + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary) {
+  border-left-color: var(--menu_selected_bg);
+}
+.ant-input-search .ant-input-affix-wrapper {
+  border-radius: 0;
+}
+.ant-input-search .ant-input-lg {
+  line-height: 1.5713;
+}
+.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child {
+  left: -1px;
+  padding: 0;
+  border: 0;
+}
+.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button {
+  padding-top: 0;
+  padding-bottom: 0;
+  border-radius: 0 2px 2px 0;
+}
+.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary) {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary).ant-btn-loading::before {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
+.ant-input-search-button {
+  height: 32px;
+}
+.ant-input-search-button:hover,
+.ant-input-search-button:focus {
+  z-index: 1;
+}
+.ant-input-search-large .ant-input-search-button {
+  height: 40px;
+}
+.ant-input-search-small .ant-input-search-button {
+  height: 24px;
+}
+.ant-input-group-wrapper-rtl {
+  direction: rtl;
+}
+.ant-input-group-rtl {
+  direction: rtl;
+}
+.ant-input-affix-wrapper.ant-input-affix-wrapper-rtl > input.ant-input {
+  border: none;
+  outline: none;
+}
+.ant-input-affix-wrapper-rtl .ant-input-prefix {
+  margin: 0 0 0 4px;
+}
+.ant-input-affix-wrapper-rtl .ant-input-suffix {
+  margin: 0 4px 0 0;
+}
+.ant-input-textarea-rtl {
+  direction: rtl;
+}
+.ant-input-textarea-rtl.ant-input-textarea-show-count::after {
+  text-align: left;
+}
+.ant-input-affix-wrapper-rtl .ant-input-clear-icon:last-child {
+  margin-right: 4px;
+  margin-left: 0;
+}
+.ant-input-affix-wrapper-rtl .ant-input-clear-icon {
+  right: auto;
+  left: 8px;
+}
+.ant-input-search-rtl {
+  direction: rtl;
+}
+.ant-input-search-rtl .ant-input:hover + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),
+.ant-input-search-rtl .ant-input:focus + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary) {
+  border-right-color: var(--menu_selected_bg);
+  border-left-color: #cac1c1;
+}
+.ant-input-search-rtl > .ant-input-group > .ant-input-affix-wrapper:hover,
+.ant-input-search-rtl > .ant-input-group > .ant-input-affix-wrapper-focused {
+  border-right-color: var(--menu_selected_bg);
+}
+.ant-input-search-rtl > .ant-input-group > .ant-input-group-addon {
+  right: -1px;
+  left: auto;
+}
+.ant-input-search-rtl > .ant-input-group > .ant-input-group-addon .ant-input-search-button {
+  border-radius: 2px 0 0 2px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+  .ant-input {
+    height: 32px;
+  }
+  .ant-input-lg {
+    height: 40px;
+  }
+  .ant-input-sm {
+    height: 24px;
+  }
+  .ant-input-affix-wrapper > input.ant-input {
+    height: auto;
+  }
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+@-webkit-keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+@keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+.ant-checkbox {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  top: -0.09em;
+  display: inline-block;
+  line-height: 1;
+  white-space: nowrap;
+  vertical-align: middle;
+  outline: none;
+  cursor: pointer;
+}
+.ant-checkbox-wrapper:hover .ant-checkbox-inner,
+.ant-checkbox:hover .ant-checkbox-inner,
+.ant-checkbox-input:focus + .ant-checkbox-inner {
+  border-color: var(--menu_selected_bg);
+}
+.ant-checkbox-checked::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 1px solid var(--menu_selected_bg);
+  border-radius: 2px;
+  visibility: hidden;
+  -webkit-animation: antCheckboxEffect 0.36s ease-in-out;
+          animation: antCheckboxEffect 0.36s ease-in-out;
+  -webkit-animation-fill-mode: backwards;
+          animation-fill-mode: backwards;
+  content: '';
+}
+.ant-checkbox:hover::after,
+.ant-checkbox-wrapper:hover .ant-checkbox::after {
+  visibility: visible;
+}
+.ant-checkbox-inner {
+  position: relative;
+  top: 0;
+  left: 0;
+  display: block;
+  width: 16px;
+  height: 16px;
+  direction: ltr;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  border-collapse: separate;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-checkbox-inner::after {
+  position: absolute;
+  top: 50%;
+  left: 22%;
+  display: table;
+  width: 5.71428571px;
+  height: 9.14285714px;
+  border: 2px solid #fff;
+  border-top: 0;
+  border-left: 0;
+  -webkit-transform: rotate(45deg) scale(0) translate(-50%, -50%);
+          transform: rotate(45deg) scale(0) translate(-50%, -50%);
+  opacity: 0;
+  -webkit-transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;
+  transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;
+  content: ' ';
+}
+.ant-checkbox-input {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  opacity: 0;
+}
+.ant-checkbox-checked .ant-checkbox-inner::after {
+  position: absolute;
+  display: table;
+  border: 2px solid #fff;
+  border-top: 0;
+  border-left: 0;
+  -webkit-transform: rotate(45deg) scale(1) translate(-50%, -50%);
+          transform: rotate(45deg) scale(1) translate(-50%, -50%);
+  opacity: 1;
+  -webkit-transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
+  transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
+  content: ' ';
+}
+.ant-checkbox-checked .ant-checkbox-inner {
+  background-color: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-checkbox-disabled {
+  cursor: not-allowed;
+}
+.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {
+  border-color: rgba(255, 255, 255, 0.3);
+  -webkit-animation-name: none;
+          animation-name: none;
+}
+.ant-checkbox-disabled .ant-checkbox-input {
+  cursor: not-allowed;
+}
+.ant-checkbox-disabled .ant-checkbox-inner {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1 !important;
+}
+.ant-checkbox-disabled .ant-checkbox-inner::after {
+  border-color: rgba(255, 255, 255, 0.08);
+  border-collapse: separate;
+  -webkit-animation-name: none;
+          animation-name: none;
+}
+.ant-checkbox-disabled + span {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-checkbox-disabled:hover::after,
+.ant-checkbox-wrapper:hover .ant-checkbox-disabled::after {
+  visibility: hidden;
+}
+.ant-checkbox-wrapper {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  font-feature-settings: 'tnum', "tnum";
+  display: inline-flex;
+  align-items: center;
+  line-height: unset;
+  cursor: pointer;
+}
+.ant-checkbox-wrapper.ant-checkbox-wrapper-disabled {
+  cursor: not-allowed;
+}
+.ant-checkbox-wrapper + .ant-checkbox-wrapper {
+  margin-left: 8px;
+}
+.ant-checkbox + span {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.ant-checkbox-group {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+}
+.ant-checkbox-group-item {
+  display: inline-block;
+  margin-right: 8px;
+}
+.ant-checkbox-group-item:last-child {
+  margin-right: 0;
+}
+.ant-checkbox-group-item + .ant-checkbox-group-item {
+  margin-left: 0;
+}
+.ant-checkbox-indeterminate .ant-checkbox-inner {
+  background-color: transparent;
+  border-color: #cac1c1;
+}
+.ant-checkbox-indeterminate .ant-checkbox-inner::after {
+  top: 50%;
+  left: 50%;
+  width: 8px;
+  height: 8px;
+  background-color: var(--menu_selected_bg);
+  border: 0;
+  -webkit-transform: translate(-50%, -50%) scale(1);
+          transform: translate(-50%, -50%) scale(1);
+  opacity: 1;
+  content: ' ';
+}
+.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner::after {
+  background-color: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.3);
+}
+.ant-checkbox-rtl {
+  direction: rtl;
+}
+.ant-checkbox-group-rtl .ant-checkbox-group-item {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-checkbox-group-rtl .ant-checkbox-group-item:last-child {
+  margin-left: 0 !important;
+}
+.ant-checkbox-group-rtl .ant-checkbox-group-item + .ant-checkbox-group-item {
+  margin-left: 8px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-collapse {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  background-color: rgba(255, 255, 255, 0.04);
+  border: 1px solid var(--border_cl);
+  border-bottom: 0;
+  border-radius: 2px;
+}
+.ant-collapse > .ant-collapse-item {
+  border-bottom: 1px solid var(--border_cl);
+}
+.ant-collapse > .ant-collapse-item:last-child,
+.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {
+  border-radius: 0 0 2px 2px;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header {
+  position: relative;
+  padding: 12px 16px;
+  padding-left: 40px;
+  color: var(--text_cl);
+  line-height: 1.5715;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header::before {
+  display: table;
+  content: '';
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {
+  color: inherit;
+  font-style: normal;
+  line-height: 0;
+  text-align: center;
+  text-transform: none;
+  vertical-align: -0.125em;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  position: absolute;
+  top: 17px;
+  left: 16px;
+  display: inline-block;
+  font-size: 12px;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow > * {
+  line-height: 1;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+  display: inline-block;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow::before {
+  display: none;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow-icon {
+  display: block;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+  -webkit-transition: -webkit-transform 0.24s;
+  transition: -webkit-transform 0.24s;
+  transition: transform 0.24s;
+  transition: transform 0.24s, -webkit-transform 0.24s;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra {
+  float: right;
+}
+.ant-collapse > .ant-collapse-item > .ant-collapse-header:focus {
+  outline: none;
+}
+.ant-collapse > .ant-collapse-item .ant-collapse-header-collapsible-only {
+  cursor: default;
+}
+.ant-collapse > .ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-header-text {
+  cursor: pointer;
+}
+.ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header {
+  padding-left: 12px;
+}
+.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header {
+  padding: 12px 16px;
+  padding-right: 40px;
+}
+.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {
+  right: 16px;
+  left: auto;
+}
+.ant-collapse-content {
+  color: var(--text_cl);
+  background-color: var(--content_bg);
+  border-top: 1px solid var(--border_cl);
+}
+.ant-collapse-content > .ant-collapse-content-box {
+  padding: 16px;
+}
+.ant-collapse-content-hidden {
+  display: none;
+}
+.ant-collapse-item:last-child > .ant-collapse-content {
+  border-radius: 0 0 2px 2px;
+}
+.ant-collapse-borderless {
+  background-color: rgba(255, 255, 255, 0.04);
+  border: 0;
+}
+.ant-collapse-borderless > .ant-collapse-item {
+  border-bottom: 1px solid var(--border_cl);
+}
+.ant-collapse-borderless > .ant-collapse-item:last-child,
+.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {
+  border-radius: 0;
+}
+.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {
+  background-color: transparent;
+  border-top: 0;
+}
+.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box {
+  padding-top: 4px;
+}
+.ant-collapse-ghost {
+  background-color: transparent;
+  border: 0;
+}
+.ant-collapse-ghost > .ant-collapse-item {
+  border-bottom: 0;
+}
+.ant-collapse-ghost > .ant-collapse-item > .ant-collapse-content {
+  background-color: transparent;
+  border-top: 0;
+}
+.ant-collapse-ghost > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box {
+  padding-top: 12px;
+  padding-bottom: 12px;
+}
+.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header,
+.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-collapse-rtl {
+  direction: rtl;
+}
+.ant-collapse-rtl .ant-collapse > .ant-collapse-item > .ant-collapse-header {
+  padding: 12px 16px;
+  padding-right: 40px;
+}
+.ant-collapse-rtl.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+  -webkit-transform: rotate(180deg);
+          transform: rotate(180deg);
+}
+.ant-collapse-rtl.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra {
+  float: left;
+}
+.ant-collapse-rtl.ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header {
+  padding-right: 12px;
+  padding-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-comment {
+  position: relative;
+  background-color: transparent;
+}
+.ant-comment-inner {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  padding: 16px 0;
+}
+.ant-comment-avatar {
+  position: relative;
+  -ms-flex-negative: 0;
+      flex-shrink: 0;
+  margin-right: 12px;
+  cursor: pointer;
+}
+.ant-comment-avatar img {
+  width: 32px;
+  height: 32px;
+  border-radius: 50%;
+}
+.ant-comment-content {
+  position: relative;
+  -webkit-box-flex: 1;
+      -ms-flex: 1 1 auto;
+          flex: 1 1 auto;
+  min-width: 1px;
+  font-size: 14px;
+  word-wrap: break-word;
+}
+.ant-comment-content-author {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-wrap: wrap;
+      flex-wrap: wrap;
+  -webkit-box-pack: start;
+      -ms-flex-pack: start;
+          justify-content: flex-start;
+  margin-bottom: 4px;
+  font-size: 14px;
+}
+.ant-comment-content-author > a,
+.ant-comment-content-author > span {
+  padding-right: 8px;
+  font-size: 12px;
+  line-height: 18px;
+}
+.ant-comment-content-author-name {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-comment-content-author-name > * {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-comment-content-author-name > *:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-comment-content-author-time {
+  color: rgba(255, 255, 255, 0.3);
+  white-space: nowrap;
+  cursor: auto;
+}
+.ant-comment-content-detail p {
+  margin-bottom: inherit;
+  white-space: pre-wrap;
+}
+.ant-comment-actions {
+  margin-top: 12px;
+  margin-bottom: inherit;
+  padding-left: 0;
+}
+.ant-comment-actions > li {
+  display: inline-block;
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-comment-actions > li > span {
+  margin-right: 10px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 12px;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-comment-actions > li > span:hover {
+  color: rgba(255, 255, 255, 0.65);
+}
+.ant-comment-nested {
+  margin-left: 44px;
+}
+.ant-comment-rtl {
+  direction: rtl;
+}
+.ant-comment-rtl .ant-comment-avatar {
+  margin-right: 0;
+  margin-left: 12px;
+}
+.ant-comment-rtl .ant-comment-content-author > a,
+.ant-comment-rtl .ant-comment-content-author > span {
+  padding-right: 0;
+  padding-left: 8px;
+}
+.ant-comment-rtl .ant-comment-actions {
+  padding-right: 0;
+}
+.ant-comment-rtl .ant-comment-actions > li > span {
+  margin-right: 0;
+  margin-left: 10px;
+}
+.ant-comment-rtl .ant-comment-nested {
+  margin-right: 44px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-descriptions-header {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  margin-bottom: 20px;
+}
+.ant-descriptions-title {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  overflow: hidden;
+  color: var(--text_cl);
+  font-weight: bold;
+  font-size: 16px;
+  line-height: 1.5715;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-descriptions-extra {
+  margin-left: auto;
+  color: var(--text_cl);
+  font-size: 14px;
+}
+.ant-descriptions-view {
+  width: 100%;
+  overflow: hidden;
+  border-radius: 2px;
+}
+.ant-descriptions-view table {
+  width: 100%;
+  table-layout: fixed;
+}
+.ant-descriptions-row > th,
+.ant-descriptions-row > td {
+  padding-bottom: 16px;
+}
+.ant-descriptions-row:last-child {
+  border-bottom: none;
+}
+.ant-descriptions-item-label {
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+  line-height: 1.5715;
+  text-align: start;
+}
+.ant-descriptions-item-label::after {
+  content: ':';
+  position: relative;
+  top: -0.5px;
+  margin: 0 8px 0 2px;
+}
+.ant-descriptions-item-label.ant-descriptions-item-no-colon::after {
+  content: ' ';
+}
+.ant-descriptions-item-no-label::after {
+  margin: 0;
+  content: '';
+}
+.ant-descriptions-item-content {
+  display: table-cell;
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+  word-break: break-word;
+  overflow-wrap: break-word;
+}
+.ant-descriptions-item {
+  padding-bottom: 0;
+  vertical-align: top;
+}
+.ant-descriptions-item-container {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-descriptions-item-container .ant-descriptions-item-label,
+.ant-descriptions-item-container .ant-descriptions-item-content {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-align: baseline;
+      -ms-flex-align: baseline;
+          align-items: baseline;
+}
+.ant-descriptions-middle .ant-descriptions-row > th,
+.ant-descriptions-middle .ant-descriptions-row > td {
+  padding-bottom: 12px;
+}
+.ant-descriptions-small .ant-descriptions-row > th,
+.ant-descriptions-small .ant-descriptions-row > td {
+  padding-bottom: 8px;
+}
+.ant-descriptions-bordered .ant-descriptions-view {
+  border: 1px solid #5a6367;
+}
+.ant-descriptions-bordered .ant-descriptions-view > table {
+  table-layout: auto;
+}
+.ant-descriptions-bordered .ant-descriptions-item-label,
+.ant-descriptions-bordered .ant-descriptions-item-content {
+  padding: 16px 24px;
+  border-right: 1px solid #5a6367;
+}
+.ant-descriptions-bordered .ant-descriptions-item-label:last-child,
+.ant-descriptions-bordered .ant-descriptions-item-content:last-child {
+  border-right: none;
+}
+.ant-descriptions-bordered .ant-descriptions-item-label {
+  background-color: rgba(255, 255, 255, 0.04);
+}
+.ant-descriptions-bordered .ant-descriptions-item-label::after {
+  display: none;
+}
+.ant-descriptions-bordered .ant-descriptions-row {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-descriptions-bordered .ant-descriptions-row:last-child {
+  border-bottom: none;
+}
+.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-label,
+.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-content {
+  padding: 12px 24px;
+}
+.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label,
+.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-content {
+  padding: 8px 16px;
+}
+.ant-descriptions-rtl {
+  direction: rtl;
+}
+.ant-descriptions-rtl .ant-descriptions-item-label::after {
+  margin: 0 2px 0 8px;
+}
+.ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-label,
+.ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-content {
+  border-right: none;
+  border-left: 1px solid #5a6367;
+}
+.ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-label:last-child,
+.ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-content:last-child {
+  border-left: none;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-divider {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  border-top: 1px solid rgba(255, 255, 255, 0.12);
+}
+.ant-divider-vertical {
+  position: relative;
+  top: -0.06em;
+  display: inline-block;
+  height: 0.9em;
+  margin: 0 8px;
+  vertical-align: middle;
+  border-top: 0;
+  border-left: 1px solid rgba(255, 255, 255, 0.12);
+}
+.ant-divider-horizontal {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  clear: both;
+  width: 100%;
+  min-width: 100%;
+  margin: 24px 0;
+}
+.ant-divider-horizontal.ant-divider-with-text {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  margin: 16px 0;
+  color: var(--text_cl);
+  font-weight: 500;
+  font-size: 16px;
+  white-space: nowrap;
+  text-align: center;
+  border-top: 0;
+  border-top-color: rgba(255, 255, 255, 0.12);
+}
+.ant-divider-horizontal.ant-divider-with-text::before,
+.ant-divider-horizontal.ant-divider-with-text::after {
+  position: relative;
+  top: 50%;
+  width: 50%;
+  border-top: 1px solid transparent;
+  border-top-color: inherit;
+  border-bottom: 0;
+  -webkit-transform: translateY(50%);
+          transform: translateY(50%);
+  content: '';
+}
+.ant-divider-horizontal.ant-divider-with-text-left::before {
+  top: 50%;
+  width: 5%;
+}
+.ant-divider-horizontal.ant-divider-with-text-left::after {
+  top: 50%;
+  width: 95%;
+}
+.ant-divider-horizontal.ant-divider-with-text-right::before {
+  top: 50%;
+  width: 95%;
+}
+.ant-divider-horizontal.ant-divider-with-text-right::after {
+  top: 50%;
+  width: 5%;
+}
+.ant-divider-inner-text {
+  display: inline-block;
+  padding: 0 1em;
+}
+.ant-divider-dashed {
+  background: none;
+  border-color: rgba(255, 255, 255, 0.12);
+  border-style: dashed;
+  border-width: 1px 0 0;
+}
+.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed {
+  border-top: 0;
+}
+.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before,
+.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after {
+  border-style: dashed none none;
+}
+.ant-divider-vertical.ant-divider-dashed {
+  border-width: 0 0 0 1px;
+}
+.ant-divider-plain.ant-divider-with-text {
+  color: var(--text_cl);
+  font-weight: normal;
+  font-size: 14px;
+}
+.ant-divider-rtl {
+  direction: rtl;
+}
+.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left::before {
+  width: 95%;
+}
+.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left::after {
+  width: 5%;
+}
+.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right::before {
+  width: 5%;
+}
+.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right::after {
+  width: 95%;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-drawer {
+  position: fixed;
+  z-index: 1000;
+  width: 0%;
+  height: 100%;
+  -webkit-transition: height 0s ease 0.3s, width 0s ease 0.3s, -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: height 0s ease 0.3s, width 0s ease 0.3s, -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), height 0s ease 0.3s, width 0s ease 0.3s;
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), height 0s ease 0.3s, width 0s ease 0.3s, -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+}
+.ant-drawer > * {
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+}
+.ant-drawer-content-wrapper {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+}
+.ant-drawer .ant-drawer-content {
+  width: 100%;
+  height: 100%;
+}
+.ant-drawer-left,
+.ant-drawer-right {
+  top: 0;
+  width: 0%;
+  height: 100%;
+}
+.ant-drawer-left .ant-drawer-content-wrapper,
+.ant-drawer-right .ant-drawer-content-wrapper {
+  height: 100%;
+}
+.ant-drawer-left.ant-drawer-open,
+.ant-drawer-right.ant-drawer-open {
+  width: 100%;
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+}
+.ant-drawer-left {
+  left: 0;
+}
+.ant-drawer-left .ant-drawer-content-wrapper {
+  left: 0;
+}
+.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {
+  -webkit-box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.32), 9px 0 28px 0 rgba(0, 0, 0, 0.2), 12px 0 48px 16px rgba(0, 0, 0, 0.12);
+          box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.32), 9px 0 28px 0 rgba(0, 0, 0, 0.2), 12px 0 48px 16px rgba(0, 0, 0, 0.12);
+}
+.ant-drawer-right {
+  right: 0;
+}
+.ant-drawer-right .ant-drawer-content-wrapper {
+  right: 0;
+}
+.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {
+  -webkit-box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03);
+          box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03);
+}
+.ant-drawer-right.ant-drawer-open.no-mask {
+  right: 1px;
+  -webkit-transform: translateX(1px);
+          transform: translateX(1px);
+}
+.ant-drawer-top,
+.ant-drawer-bottom {
+  left: 0;
+  width: 100%;
+  height: 0%;
+}
+.ant-drawer-top .ant-drawer-content-wrapper,
+.ant-drawer-bottom .ant-drawer-content-wrapper {
+  width: 100%;
+}
+.ant-drawer-top.ant-drawer-open,
+.ant-drawer-bottom.ant-drawer-open {
+  height: 100%;
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+}
+.ant-drawer-top {
+  top: 0;
+}
+.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {
+  -webkit-box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.32), 0 9px 28px 0 rgba(0, 0, 0, 0.2), 0 12px 48px 16px rgba(0, 0, 0, 0.12);
+          box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.32), 0 9px 28px 0 rgba(0, 0, 0, 0.2), 0 12px 48px 16px rgba(0, 0, 0, 0.12);
+}
+.ant-drawer-bottom {
+  bottom: 0;
+}
+.ant-drawer-bottom .ant-drawer-content-wrapper {
+  bottom: 0;
+}
+.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {
+  -webkit-box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.32), 0 -9px 28px 0 rgba(0, 0, 0, 0.2), 0 -12px 48px 16px rgba(0, 0, 0, 0.12);
+          box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.32), 0 -9px 28px 0 rgba(0, 0, 0, 0.2), 0 -12px 48px 16px rgba(0, 0, 0, 0.12);
+}
+.ant-drawer-bottom.ant-drawer-open.no-mask {
+  bottom: 1px;
+  -webkit-transform: translateY(1px);
+          transform: translateY(1px);
+}
+.ant-drawer.ant-drawer-open .ant-drawer-mask {
+  height: 100%;
+  opacity: 1;
+  -webkit-transition: none;
+  transition: none;
+  -webkit-animation: antdDrawerFadeIn 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+          animation: antdDrawerFadeIn 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);
+  pointer-events: auto;
+}
+.ant-drawer-title {
+  margin: 0;
+  color: var(--text_cl);
+  font-weight: 500;
+  font-size: 16px;
+  line-height: 22px;
+}
+.ant-drawer-content {
+  position: relative;
+  z-index: 1;
+  overflow: auto;
+  background-color: var(--layout_bg);
+  background-clip: padding-box;
+  border: 0;
+}
+.ant-drawer-close {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 10;
+  display: block;
+  padding: 20px;
+  color: rgba(255, 255, 255, 0.45);
+  font-weight: 700;
+  font-size: 16px;
+  font-style: normal;
+  line-height: 1;
+  text-align: center;
+  text-transform: none;
+  text-decoration: none;
+  background: transparent;
+  border: 0;
+  outline: 0;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  text-rendering: auto;
+}
+.ant-drawer-close:focus,
+.ant-drawer-close:hover {
+  color: rgba(255, 255, 255, 0.75);
+  text-decoration: none;
+}
+.ant-drawer-header-no-title .ant-drawer-close {
+  margin-right: var(--scroll-bar);
+  /* stylelint-disable-next-line function-calc-no-invalid */
+  padding-right: calc(20px - var(--scroll-bar));
+}
+.ant-drawer-header {
+  position: relative;
+  padding: 16px 24px;
+  color: var(--text_cl);
+  background: var(--layout_bg);
+  border-bottom: 1px solid #5a6367;
+  border-radius: 2px 2px 0 0;
+}
+.ant-drawer-header-no-title {
+  color: var(--text_cl);
+  background: var(--layout_bg);
+}
+.ant-drawer-wrapper-body {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+  width: 100%;
+  height: 100%;
+}
+.ant-drawer-body {
+  -webkit-box-flex: 1;
+      -ms-flex-positive: 1;
+          flex-grow: 1;
+  padding: 24px;
+  overflow: auto;
+  font-size: 14px;
+  line-height: 1.5715;
+  word-wrap: break-word;
+}
+.ant-drawer-footer {
+  -ms-flex-negative: 0;
+      flex-shrink: 0;
+  padding: 10px 10px;
+  border-top: 1px solid #5a6367;
+}
+.ant-drawer-mask {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 0;
+  background-color: rgba(0, 0, 0, 0.45);
+  opacity: 0;
+  filter: alpha(opacity=45);
+  -webkit-transition: opacity 0.3s linear, height 0s ease 0.3s;
+  transition: opacity 0.3s linear, height 0s ease 0.3s;
+  pointer-events: none;
+}
+.ant-drawer-open-content {
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-drawer .ant-picker-clear {
+  background: var(--layout_bg);
+}
+@-webkit-keyframes antdDrawerFadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+@keyframes antdDrawerFadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+.ant-drawer .ant-picker-clear,
+.ant-drawer .ant-slider-handle,
+.ant-drawer .ant-anchor-wrapper,
+.ant-drawer .ant-collapse-content,
+.ant-drawer .ant-timeline-item-head,
+.ant-drawer .ant-card {
+  background-color: var(--layout_bg);
+}
+.ant-drawer .ant-transfer-list-header {
+  background: var(--layout_bg);
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-drawer tr.ant-table-expanded-row > td,
+.ant-drawer tr.ant-table-expanded-row:hover > td {
+  background: #272727;
+}
+.ant-drawer .ant-table.ant-table-small thead > tr > th {
+  background-color: var(--layout_bg);
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table {
+  background-color: var(--layout_bg);
+}
+.ant-drawer .ant-table .ant-table-row-expand-icon {
+  border: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table tfoot > tr > th,
+.ant-drawer .ant-table tfoot > tr > td {
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table thead > tr > th {
+  background-color: #272727;
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table tbody > tr > td {
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table tbody > tr > td.ant-table-cell-fix-left,
+.ant-drawer .ant-table tbody > tr > td.ant-table-cell-fix-right {
+  background-color: var(--layout_bg);
+}
+.ant-drawer .ant-table tbody > tr.ant-table-row:hover > td {
+  background: #5a6367;
+}
+.ant-drawer .ant-table.ant-table-bordered .ant-table-title {
+  border: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table.ant-table-bordered thead > tr > th,
+.ant-drawer .ant-table.ant-table-bordered tbody > tr > td,
+.ant-drawer .ant-table.ant-table-bordered tfoot > tr > th,
+.ant-drawer .ant-table.ant-table-bordered tfoot > tr > td {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table.ant-table-bordered .ant-table-cell-fix-right-first::after {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table.ant-table-bordered table thead > tr:not(:last-child) > th {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-drawer .ant-table.ant-table-bordered .ant-table-container {
+  border: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table.ant-table-bordered .ant-table-expanded-row-fixed::after {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table.ant-table-bordered .ant-table-footer {
+  border: 1px solid #3a3a3a;
+}
+.ant-drawer .ant-table .ant-table-filter-trigger-container-open {
+  background-color: #525252;
+}
+.ant-drawer .ant-picker-calendar-full {
+  background-color: var(--layout_bg);
+}
+.ant-drawer .ant-picker-calendar-full .ant-picker-panel {
+  background-color: var(--layout_bg);
+}
+.ant-drawer .ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date {
+  border-top: 2px solid #3a3a3a;
+}
+.ant-drawer .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
+  background-color: var(--layout_bg);
+  border-bottom: 1px solid var(--layout_bg);
+}
+.ant-drawer .ant-badge-count {
+  -webkit-box-shadow: 0 0 0 1px var(--layout_bg);
+          box-shadow: 0 0 0 1px var(--layout_bg);
+}
+.ant-drawer .ant-tree-show-line .ant-tree-switcher {
+  background: var(--layout_bg);
+}
+.ant-drawer-rtl {
+  direction: rtl;
+}
+.ant-drawer-rtl .ant-drawer-close {
+  right: auto;
+  left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-form-item .ant-mentions,
+.ant-form-item textarea.ant-input {
+  height: auto;
+}
+.ant-form-item .ant-upload {
+  background: transparent;
+}
+.ant-form-item .ant-upload.ant-upload-drag {
+  background: rgba(255, 255, 255, 0.04);
+}
+.ant-form-item input[type='radio'],
+.ant-form-item input[type='checkbox'] {
+  width: 14px;
+  height: 14px;
+}
+.ant-form-item .ant-radio-inline,
+.ant-form-item .ant-checkbox-inline {
+  display: inline-block;
+  margin-left: 8px;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.ant-form-item .ant-radio-inline:first-child,
+.ant-form-item .ant-checkbox-inline:first-child {
+  margin-left: 0;
+}
+.ant-form-item .ant-checkbox-vertical,
+.ant-form-item .ant-radio-vertical {
+  display: block;
+}
+.ant-form-item .ant-checkbox-vertical + .ant-checkbox-vertical,
+.ant-form-item .ant-radio-vertical + .ant-radio-vertical {
+  margin-left: 0;
+}
+.ant-form-item .ant-input-number + .ant-form-text {
+  margin-left: 8px;
+}
+.ant-form-item .ant-input-number-handler-wrap {
+  z-index: 2;
+}
+.ant-form-item .ant-select,
+.ant-form-item .ant-cascader-picker {
+  width: 100%;
+}
+.ant-form-item .ant-input-group .ant-select,
+.ant-form-item .ant-input-group .ant-cascader-picker {
+  width: auto;
+}
+.ant-form-inline {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-wrap: wrap;
+      flex-wrap: wrap;
+}
+.ant-form-inline .ant-form-item {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+  margin-right: 16px;
+  margin-bottom: 0;
+}
+.ant-form-inline .ant-form-item-with-help {
+  margin-bottom: 24px;
+}
+.ant-form-inline .ant-form-item > .ant-form-item-label,
+.ant-form-inline .ant-form-item > .ant-form-item-control {
+  display: inline-block;
+  vertical-align: top;
+}
+.ant-form-inline .ant-form-item > .ant-form-item-label {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-form-inline .ant-form-item .ant-form-text {
+  display: inline-block;
+}
+.ant-form-inline .ant-form-item .ant-form-item-has-feedback {
+  display: inline-block;
+}
+.ant-form-horizontal .ant-form-item-label {
+  -webkit-box-flex: 0;
+      -ms-flex-positive: 0;
+          flex-grow: 0;
+}
+.ant-form-horizontal .ant-form-item-control {
+  -webkit-box-flex: 1;
+      -ms-flex: 1 1 0px;
+          flex: 1 1 0;
+}
+.ant-form-vertical .ant-form-item {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-form-vertical .ant-form-item-label > label {
+  height: auto;
+}
+.ant-form-vertical .ant-form-item-label,
+.ant-col-24.ant-form-item-label,
+.ant-col-xl-24.ant-form-item-label {
+  padding: 0 0 8px;
+  line-height: 1.5715;
+  white-space: initial;
+  text-align: left;
+}
+.ant-form-vertical .ant-form-item-label > label,
+.ant-col-24.ant-form-item-label > label,
+.ant-col-xl-24.ant-form-item-label > label {
+  margin: 0;
+}
+.ant-form-vertical .ant-form-item-label > label::after,
+.ant-col-24.ant-form-item-label > label::after,
+.ant-col-xl-24.ant-form-item-label > label::after {
+  display: none;
+}
+.ant-form-rtl.ant-form-vertical .ant-form-item-label,
+.ant-form-rtl.ant-col-24.ant-form-item-label,
+.ant-form-rtl.ant-col-xl-24.ant-form-item-label {
+  text-align: right;
+}
+@media (max-width: 575px) {
+  .ant-form-item .ant-form-item-label {
+    padding: 0 0 8px;
+    line-height: 1.5715;
+    white-space: initial;
+    text-align: left;
+  }
+  .ant-form-item .ant-form-item-label > label {
+    margin: 0;
+  }
+  .ant-form-item .ant-form-item-label > label::after {
+    display: none;
+  }
+  .ant-form-rtl.ant-form-item .ant-form-item-label {
+    text-align: right;
+  }
+  .ant-form .ant-form-item {
+    -ms-flex-wrap: wrap;
+        flex-wrap: wrap;
+  }
+  .ant-form .ant-form-item .ant-form-item-label,
+  .ant-form .ant-form-item .ant-form-item-control {
+    -webkit-box-flex: 0;
+        -ms-flex: 0 0 100%;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .ant-col-xs-24.ant-form-item-label {
+    padding: 0 0 8px;
+    line-height: 1.5715;
+    white-space: initial;
+    text-align: left;
+  }
+  .ant-col-xs-24.ant-form-item-label > label {
+    margin: 0;
+  }
+  .ant-col-xs-24.ant-form-item-label > label::after {
+    display: none;
+  }
+  .ant-form-rtl.ant-col-xs-24.ant-form-item-label {
+    text-align: right;
+  }
+}
+@media (max-width: 767px) {
+  .ant-col-sm-24.ant-form-item-label {
+    padding: 0 0 8px;
+    line-height: 1.5715;
+    white-space: initial;
+    text-align: left;
+  }
+  .ant-col-sm-24.ant-form-item-label > label {
+    margin: 0;
+  }
+  .ant-col-sm-24.ant-form-item-label > label::after {
+    display: none;
+  }
+  .ant-form-rtl.ant-col-sm-24.ant-form-item-label {
+    text-align: right;
+  }
+}
+@media (max-width: 991px) {
+  .ant-col-md-24.ant-form-item-label {
+    padding: 0 0 8px;
+    line-height: 1.5715;
+    white-space: initial;
+    text-align: left;
+  }
+  .ant-col-md-24.ant-form-item-label > label {
+    margin: 0;
+  }
+  .ant-col-md-24.ant-form-item-label > label::after {
+    display: none;
+  }
+  .ant-form-rtl.ant-col-md-24.ant-form-item-label {
+    text-align: right;
+  }
+}
+@media (max-width: 1199px) {
+  .ant-col-lg-24.ant-form-item-label {
+    padding: 0 0 8px;
+    line-height: 1.5715;
+    white-space: initial;
+    text-align: left;
+  }
+  .ant-col-lg-24.ant-form-item-label > label {
+    margin: 0;
+  }
+  .ant-col-lg-24.ant-form-item-label > label::after {
+    display: none;
+  }
+  .ant-form-rtl.ant-col-lg-24.ant-form-item-label {
+    text-align: right;
+  }
+}
+@media (max-width: 1599px) {
+  .ant-col-xl-24.ant-form-item-label {
+    padding: 0 0 8px;
+    line-height: 1.5715;
+    white-space: initial;
+    text-align: left;
+  }
+  .ant-col-xl-24.ant-form-item-label > label {
+    margin: 0;
+  }
+  .ant-col-xl-24.ant-form-item-label > label::after {
+    display: none;
+  }
+  .ant-form-rtl.ant-col-xl-24.ant-form-item-label {
+    text-align: right;
+  }
+}
+.ant-form-item {
+  /* Some non-status related component style is in `components.less` */
+  /* To support leave along ErrorList. We add additional className to handle explain style */
+}
+.ant-form-item-explain.ant-form-item-explain-error {
+  color: #a61d24;
+}
+.ant-form-item-explain.ant-form-item-explain-warning {
+  color: #d89614;
+}
+.ant-form-item-has-feedback .ant-input {
+  padding-right: 24px;
+}
+.ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input-suffix {
+  padding-right: 18px;
+}
+.ant-form-item-has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix {
+  right: 28px;
+}
+.ant-form-item-has-feedback .ant-switch {
+  margin: 2px 0 4px;
+}
+.ant-form-item-has-feedback > .ant-select .ant-select-arrow,
+.ant-form-item-has-feedback > .ant-select .ant-select-clear,
+.ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow,
+.ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-clear {
+  right: 32px;
+}
+.ant-form-item-has-feedback > .ant-select .ant-select-selection-selected-value,
+.ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value {
+  padding-right: 42px;
+}
+.ant-form-item-has-feedback .ant-cascader-picker-arrow {
+  margin-right: 19px;
+}
+.ant-form-item-has-feedback .ant-cascader-picker-clear {
+  right: 32px;
+}
+.ant-form-item-has-feedback .ant-picker {
+  padding-right: 29.2px;
+}
+.ant-form-item-has-feedback .ant-picker-large {
+  padding-right: 29.2px;
+}
+.ant-form-item-has-feedback .ant-picker-small {
+  padding-right: 25.2px;
+}
+.ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon,
+.ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon,
+.ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon,
+.ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon {
+  position: absolute;
+  top: 50%;
+  right: 0;
+  z-index: 1;
+  width: 32px;
+  height: 20px;
+  margin-top: -10px;
+  font-size: 14px;
+  line-height: 20px;
+  text-align: center;
+  visibility: visible;
+  -webkit-animation: zoomIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);
+          animation: zoomIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);
+  pointer-events: none;
+}
+.ant-form-item-has-success.ant-form-item-has-feedback .ant-form-item-children-icon {
+  color: #49aa19;
+  -webkit-animation-name: diffZoomIn1 !important;
+          animation-name: diffZoomIn1 !important;
+}
+.ant-form-item-has-warning .ant-form-item-split {
+  color: #d89614;
+}
+.ant-form-item-has-warning .ant-input,
+.ant-form-item-has-warning .ant-input-affix-wrapper,
+.ant-form-item-has-warning .ant-input:hover,
+.ant-form-item-has-warning .ant-input-affix-wrapper:hover {
+  background-color: transparent;
+  border-color: #d89614;
+}
+.ant-form-item-has-warning .ant-input:focus,
+.ant-form-item-has-warning .ant-input-affix-wrapper:focus,
+.ant-form-item-has-warning .ant-input-focused,
+.ant-form-item-has-warning .ant-input-affix-wrapper-focused {
+  border-color: #d89614;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+          box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+}
+.ant-form-item-has-warning .ant-input-disabled {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+}
+.ant-form-item-has-warning .ant-input-affix-wrapper-disabled {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+}
+.ant-form-item-has-warning .ant-input-affix-wrapper-disabled input:focus {
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+.ant-form-item-has-warning .ant-calendar-picker-open .ant-calendar-picker-input {
+  border-color: #d89614;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+          box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+}
+.ant-form-item-has-warning .ant-input-prefix {
+  color: #d89614;
+}
+.ant-form-item-has-warning .ant-input-group-addon {
+  color: #d89614;
+  border-color: #d89614;
+}
+.ant-form-item-has-warning .has-feedback {
+  color: #d89614;
+}
+.ant-form-item-has-warning.ant-form-item-has-feedback .ant-form-item-children-icon {
+  color: #d89614;
+  -webkit-animation-name: diffZoomIn3 !important;
+          animation-name: diffZoomIn3 !important;
+}
+.ant-form-item-has-warning .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
+  background-color: transparent;
+  border-color: #d89614 !important;
+}
+.ant-form-item-has-warning .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-open .ant-select-selector,
+.ant-form-item-has-warning .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-focused .ant-select-selector {
+  border-color: #d89614;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+          box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+}
+.ant-form-item-has-warning .ant-input-number,
+.ant-form-item-has-warning .ant-picker {
+  background-color: transparent;
+  border-color: #d89614;
+}
+.ant-form-item-has-warning .ant-input-number-focused,
+.ant-form-item-has-warning .ant-picker-focused,
+.ant-form-item-has-warning .ant-input-number:focus,
+.ant-form-item-has-warning .ant-picker:focus {
+  border-color: #d89614;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+          box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+}
+.ant-form-item-has-warning .ant-input-number:not([disabled]):hover,
+.ant-form-item-has-warning .ant-picker:not([disabled]):hover {
+  background-color: transparent;
+  border-color: #d89614;
+}
+.ant-form-item-has-warning .ant-cascader-picker:focus .ant-cascader-input {
+  border-color: #d89614;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+          box-shadow: 0 0 0 2px rgba(216, 150, 20, 0.2);
+}
+.ant-form-item-has-error .ant-form-item-split {
+  color: #a61d24;
+}
+.ant-form-item-has-error .ant-input,
+.ant-form-item-has-error .ant-input-affix-wrapper,
+.ant-form-item-has-error .ant-input:hover,
+.ant-form-item-has-error .ant-input-affix-wrapper:hover {
+  background-color: transparent;
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .ant-input:focus,
+.ant-form-item-has-error .ant-input-affix-wrapper:focus,
+.ant-form-item-has-error .ant-input-focused,
+.ant-form-item-has-error .ant-input-affix-wrapper-focused {
+  border-color: #a61d24;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+          box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+}
+.ant-form-item-has-error .ant-input-disabled {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+}
+.ant-form-item-has-error .ant-input-affix-wrapper-disabled {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+}
+.ant-form-item-has-error .ant-input-affix-wrapper-disabled input:focus {
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+.ant-form-item-has-error .ant-calendar-picker-open .ant-calendar-picker-input {
+  border-color: #a61d24;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+          box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+}
+.ant-form-item-has-error .ant-input-prefix {
+  color: #a61d24;
+}
+.ant-form-item-has-error .ant-input-group-addon {
+  color: #a61d24;
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .has-feedback {
+  color: #a61d24;
+}
+.ant-form-item-has-error.ant-form-item-has-feedback .ant-form-item-children-icon {
+  color: #a61d24;
+  -webkit-animation-name: diffZoomIn2 !important;
+          animation-name: diffZoomIn2 !important;
+}
+.ant-form-item-has-error .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
+  background-color: transparent;
+  border-color: #a61d24 !important;
+}
+.ant-form-item-has-error .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-open .ant-select-selector,
+.ant-form-item-has-error .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-focused .ant-select-selector {
+  border-color: #a61d24;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+          box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+}
+.ant-form-item-has-error .ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
+  border: 0;
+}
+.ant-form-item-has-error .ant-select.ant-select-auto-complete .ant-input:focus {
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .ant-input-number,
+.ant-form-item-has-error .ant-picker {
+  background-color: transparent;
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .ant-input-number-focused,
+.ant-form-item-has-error .ant-picker-focused,
+.ant-form-item-has-error .ant-input-number:focus,
+.ant-form-item-has-error .ant-picker:focus {
+  border-color: #a61d24;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+          box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+}
+.ant-form-item-has-error .ant-input-number:not([disabled]):hover,
+.ant-form-item-has-error .ant-picker:not([disabled]):hover {
+  background-color: transparent;
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .ant-mention-wrapper .ant-mention-editor,
+.ant-form-item-has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover {
+  background-color: transparent;
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor,
+.ant-form-item-has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {
+  border-color: #a61d24;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+          box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+}
+.ant-form-item-has-error .ant-cascader-picker:focus .ant-cascader-input {
+  background-color: transparent;
+  border-color: #a61d24;
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+          box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
+}
+.ant-form-item-has-error .ant-transfer-list {
+  border-color: #a61d24;
+}
+.ant-form-item-has-error .ant-transfer-list-search:not([disabled]) {
+  border-color: #cac1c1;
+}
+.ant-form-item-has-error .ant-transfer-list-search:not([disabled]):hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-form-item-has-error .ant-transfer-list-search:not([disabled]):focus {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-form-item-has-error .ant-radio-button-wrapper {
+  border-color: #a61d24 !important;
+}
+.ant-form-item-has-error .ant-radio-button-wrapper:not(:first-child)::before {
+  background-color: #a61d24;
+}
+.ant-form-item-is-validating.ant-form-item-has-feedback .ant-form-item-children-icon {
+  display: inline-block;
+  color: var(--menu_selected_bg);
+}
+.ant-form {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+.ant-form legend {
+  display: block;
+  width: 100%;
+  margin-bottom: 20px;
+  padding: 0;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 16px;
+  line-height: inherit;
+  border: 0;
+  border-bottom: 1px solid var(--border_cl);
+}
+.ant-form label {
+  font-size: 14px;
+}
+.ant-form input[type='search'] {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.ant-form input[type='radio'],
+.ant-form input[type='checkbox'] {
+  line-height: normal;
+}
+.ant-form input[type='file'] {
+  display: block;
+}
+.ant-form input[type='range'] {
+  display: block;
+  width: 100%;
+}
+.ant-form select[multiple],
+.ant-form select[size] {
+  height: auto;
+}
+.ant-form input[type='file']:focus,
+.ant-form input[type='radio']:focus,
+.ant-form input[type='checkbox']:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.ant-form output {
+  display: block;
+  padding-top: 15px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+}
+.ant-form .ant-form-text {
+  display: inline-block;
+  padding-right: 8px;
+}
+.ant-form-small .ant-form-item-label > label {
+  height: 24px;
+}
+.ant-form-small .ant-form-item-control-input {
+  min-height: 24px;
+}
+.ant-form-large .ant-form-item-label > label {
+  height: 40px;
+}
+.ant-form-large .ant-form-item-control-input {
+  min-height: 40px;
+}
+.ant-form-item {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  margin-bottom: 24px;
+  vertical-align: top;
+}
+.ant-form-item-with-help {
+  margin-bottom: 0;
+}
+.ant-form-item-hidden,
+.ant-form-item-hidden.ant-row {
+  display: none;
+}
+.ant-form-item-label {
+  display: inline-block;
+  -webkit-box-flex: 0;
+      -ms-flex-positive: 0;
+          flex-grow: 0;
+  overflow: hidden;
+  white-space: nowrap;
+  text-align: right;
+  vertical-align: middle;
+}
+.ant-form-item-label-left {
+  text-align: left;
+}
+.ant-form-item-label > label {
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  height: 32px;
+  color: var(--text_cl);
+  font-size: 14px;
+}
+.ant-form-item-label > label > .anticon {
+  font-size: 14px;
+  vertical-align: top;
+}
+.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {
+  display: inline-block;
+  margin-right: 4px;
+  color: #a61d24;
+  font-size: 14px;
+  font-family: SimSun, sans-serif;
+  line-height: 1;
+  content: '*';
+}
+.ant-form-hide-required-mark .ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {
+  display: none;
+}
+.ant-form-item-label > label .ant-form-item-optional {
+  display: inline-block;
+  margin-left: 4px;
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-form-hide-required-mark .ant-form-item-label > label .ant-form-item-optional {
+  display: none;
+}
+.ant-form-item-label > label .ant-form-item-tooltip {
+  -webkit-writing-mode: horizontal-tb;
+      -ms-writing-mode: lr-tb;
+          writing-mode: horizontal-tb;
+  -webkit-margin-start: 4px;
+          margin-inline-start: 4px;
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-form-item-label > label::after {
+  content: ':';
+  position: relative;
+  top: -0.5px;
+  margin: 0 8px 0 2px;
+}
+.ant-form-item-label > label.ant-form-item-no-colon::after {
+  content: ' ';
+}
+.ant-form-item-control {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -webkit-box-flex: 1;
+      -ms-flex-positive: 1;
+          flex-grow: 1;
+}
+.ant-form-item-control:first-child:not([class^='ant-col-']):not([class*=' ant-col-']) {
+  width: 100%;
+}
+.ant-form-item-control-input {
+  position: relative;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  min-height: 32px;
+}
+.ant-form-item-control-input-content {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  max-width: 100%;
+}
+.ant-form-item-explain,
+.ant-form-item-extra {
+  clear: both;
+  min-height: 24px;
+  padding-top: 0px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  line-height: 1.5715;
+  -webkit-transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
+  transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
+}
+.ant-form-item .ant-input-textarea-show-count::after {
+  position: absolute;
+  bottom: -22px;
+  width: 100%;
+}
+.show-help-enter,
+.show-help-appear {
+  -webkit-animation-duration: 0.3s;
+          animation-duration: 0.3s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.show-help-leave {
+  -webkit-animation-duration: 0.3s;
+          animation-duration: 0.3s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.show-help-enter.show-help-enter-active,
+.show-help-appear.show-help-appear-active {
+  -webkit-animation-name: antShowHelpIn;
+          animation-name: antShowHelpIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.show-help-leave.show-help-leave-active {
+  -webkit-animation-name: antShowHelpOut;
+          animation-name: antShowHelpOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+  pointer-events: none;
+}
+.show-help-enter,
+.show-help-appear {
+  opacity: 0;
+  -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+          animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.show-help-leave {
+  -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+          animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+@-webkit-keyframes antShowHelpIn {
+  0% {
+    -webkit-transform: translateY(-5px);
+            transform: translateY(-5px);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateY(0);
+            transform: translateY(0);
+    opacity: 1;
+  }
+}
+@keyframes antShowHelpIn {
+  0% {
+    -webkit-transform: translateY(-5px);
+            transform: translateY(-5px);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform: translateY(0);
+            transform: translateY(0);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antShowHelpOut {
+  to {
+    -webkit-transform: translateY(-5px);
+            transform: translateY(-5px);
+    opacity: 0;
+  }
+}
+@keyframes antShowHelpOut {
+  to {
+    -webkit-transform: translateY(-5px);
+            transform: translateY(-5px);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes diffZoomIn1 {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@keyframes diffZoomIn1 {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@-webkit-keyframes diffZoomIn2 {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@keyframes diffZoomIn2 {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@-webkit-keyframes diffZoomIn3 {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+@keyframes diffZoomIn3 {
+  0% {
+    -webkit-transform: scale(0);
+            transform: scale(0);
+  }
+  100% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+}
+.ant-form-rtl {
+  direction: rtl;
+}
+.ant-form-rtl .ant-form-item-label {
+  text-align: left;
+}
+.ant-form-rtl .ant-form-item-label > label.ant-form-item-required::before {
+  margin-right: 0;
+  margin-left: 4px;
+}
+.ant-form-rtl .ant-form-item-label > label::after {
+  margin: 0 2px 0 8px;
+}
+.ant-form-rtl .ant-form-item-label > label .ant-form-item-optional {
+  margin-right: 4px;
+  margin-left: 0;
+}
+.ant-col-rtl .ant-form-item-control:first-child {
+  width: 100%;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-input {
+  padding-right: 11px;
+  padding-left: 24px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input-suffix {
+  padding-right: 11px;
+  padding-left: 18px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input {
+  padding: 0;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix {
+  right: auto;
+  left: 28px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-input-number {
+  padding-left: 18px;
+}
+.ant-form-rtl .ant-form-item-has-feedback > .ant-select .ant-select-arrow,
+.ant-form-rtl .ant-form-item-has-feedback > .ant-select .ant-select-clear,
+.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow,
+.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-clear {
+  right: auto;
+  left: 32px;
+}
+.ant-form-rtl .ant-form-item-has-feedback > .ant-select .ant-select-selection-selected-value,
+.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value {
+  padding-right: 0;
+  padding-left: 42px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-arrow {
+  margin-right: 0;
+  margin-left: 19px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-clear {
+  right: auto;
+  left: 32px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-picker {
+  padding-right: 11px;
+  padding-left: 29.2px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-picker-large {
+  padding-right: 11px;
+  padding-left: 29.2px;
+}
+.ant-form-rtl .ant-form-item-has-feedback .ant-picker-small {
+  padding-right: 7px;
+  padding-left: 25.2px;
+}
+.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon,
+.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon,
+.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon,
+.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon {
+  right: auto;
+  left: 0;
+}
+.ant-form-rtl.ant-form-inline .ant-form-item {
+  margin-right: 0;
+  margin-left: 16px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-image {
+  position: relative;
+  display: inline-block;
+}
+.ant-image-img {
+  width: 100%;
+  height: auto;
+}
+.ant-image-img-placeholder {
+  background-color: #f5f5f5;
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=);
+  background-repeat: no-repeat;
+  background-position: center center;
+  background-size: 30%;
+}
+.ant-image-placeholder {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
+.ant-image-preview {
+  pointer-events: none;
+  height: 100%;
+  text-align: center;
+}
+.ant-image-preview.zoom-enter,
+.ant-image-preview.zoom-appear {
+  -webkit-transform: none;
+          transform: none;
+  opacity: 0;
+  -webkit-animation-duration: 0.3s;
+          animation-duration: 0.3s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-image-preview-mask {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1000;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.45);
+}
+.ant-image-preview-mask-hidden {
+  display: none;
+}
+.ant-image-preview-wrap {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  overflow: auto;
+  outline: 0;
+  -webkit-overflow-scrolling: touch;
+}
+.ant-image-preview-body {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  overflow: hidden;
+}
+.ant-image-preview-img {
+  max-width: 100%;
+  max-height: 100%;
+  vertical-align: middle;
+  -webkit-transform: scale3d(1, 1, 1);
+          transform: scale3d(1, 1, 1);
+  cursor: -webkit-grab;
+  cursor: grab;
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  transition: -webkit-transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s, -webkit-transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  pointer-events: auto;
+}
+.ant-image-preview-img-wrapper {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  transition: -webkit-transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+  transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s, -webkit-transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
+}
+.ant-image-preview-img-wrapper::before {
+  display: inline-block;
+  width: 1px;
+  height: 50%;
+  margin-right: -1px;
+  content: '';
+}
+.ant-image-preview-moving .ant-image-preview-img {
+  cursor: -webkit-grabbing;
+  cursor: grabbing;
+}
+.ant-image-preview-moving .ant-image-preview-img-wrapper {
+  -webkit-transition-duration: 0s;
+          transition-duration: 0s;
+}
+.ant-image-preview-wrap {
+  z-index: 1080;
+}
+.ant-image-preview-operations {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 1;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: reverse;
+      -ms-flex-direction: row-reverse;
+          flex-direction: row-reverse;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  width: 100%;
+  color: var(--text_cl);
+  list-style: none;
+  background: rgba(0, 0, 0, 0.1);
+  pointer-events: auto;
+}
+.ant-image-preview-operations-operation {
+  margin-left: 12px;
+  padding: 12px;
+  cursor: pointer;
+}
+.ant-image-preview-operations-operation-disabled {
+  color: rgba(255, 255, 255, 0.25);
+  pointer-events: none;
+}
+.ant-image-preview-operations-operation:last-of-type {
+  margin-left: 0;
+}
+.ant-image-preview-operations-icon {
+  font-size: 18px;
+}
+.ant-image-preview-switch-left,
+.ant-image-preview-switch-right {
+  position: absolute;
+  top: 50%;
+  right: 10px;
+  z-index: 1;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  width: 44px;
+  height: 44px;
+  margin-top: -22px;
+  color: var(--text_cl);
+  background: rgba(0, 0, 0, 0.1);
+  border-radius: 50%;
+  cursor: pointer;
+  pointer-events: auto;
+}
+.ant-image-preview-switch-left-disabled,
+.ant-image-preview-switch-right-disabled {
+  color: rgba(255, 255, 255, 0.25);
+  cursor: not-allowed;
+}
+.ant-image-preview-switch-left-disabled > .anticon,
+.ant-image-preview-switch-right-disabled > .anticon {
+  cursor: not-allowed;
+}
+.ant-image-preview-switch-left > .anticon,
+.ant-image-preview-switch-right > .anticon {
+  font-size: 18px;
+}
+.ant-image-preview-switch-left {
+  left: 10px;
+}
+.ant-image-preview-switch-right {
+  right: 10px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-input-number {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  font-variant: tabular-nums;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  width: 100%;
+  min-width: 0;
+  padding: 4px 11px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+  background-color: transparent;
+  background-image: none;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  display: inline-block;
+  width: 90px;
+  margin: 0;
+  padding: 0;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+}
+.ant-input-number::-moz-placeholder {
+  opacity: 1;
+}
+.ant-input-number::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number::placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input-number:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-input-number:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input-number:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-input-number:focus,
+.ant-input-number-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-input-number-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input-number-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input-number[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input-number[disabled]:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input-number-borderless,
+.ant-input-number-borderless:hover,
+.ant-input-number-borderless:focus,
+.ant-input-number-borderless-focused,
+.ant-input-number-borderless-disabled,
+.ant-input-number-borderless[disabled] {
+  background-color: transparent;
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+textarea.ant-input-number {
+  max-width: 100%;
+  height: auto;
+  min-height: 32px;
+  line-height: 1.5715;
+  vertical-align: bottom;
+  -webkit-transition: all 0.3s, height 0s;
+  transition: all 0.3s, height 0s;
+}
+.ant-input-number-lg {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-input-number-sm {
+  padding: 0px 7px;
+}
+.ant-input-number-handler {
+  position: relative;
+  display: block;
+  width: 100%;
+  height: 50%;
+  overflow: hidden;
+  color: rgba(255, 255, 255, 0.45);
+  font-weight: bold;
+  line-height: 0;
+  text-align: center;
+  -webkit-transition: all 0.1s linear;
+  transition: all 0.1s linear;
+}
+.ant-input-number-handler:active {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-input-number-handler:hover .ant-input-number-handler-up-inner,
+.ant-input-number-handler:hover .ant-input-number-handler-down-inner {
+  color: var(--menu_selected_bg);
+}
+.ant-input-number-handler-up-inner,
+.ant-input-number-handler-down-inner {
+  display: inline-block;
+  color: inherit;
+  font-style: normal;
+  line-height: 0;
+  text-align: center;
+  text-transform: none;
+  vertical-align: -0.125em;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  position: absolute;
+  right: 4px;
+  width: 12px;
+  height: 12px;
+  color: rgba(255, 255, 255, 0.45);
+  line-height: 12px;
+  -webkit-transition: all 0.1s linear;
+  transition: all 0.1s linear;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-input-number-handler-up-inner > *,
+.ant-input-number-handler-down-inner > * {
+  line-height: 1;
+}
+.ant-input-number-handler-up-inner svg,
+.ant-input-number-handler-down-inner svg {
+  display: inline-block;
+}
+.ant-input-number-handler-up-inner::before,
+.ant-input-number-handler-down-inner::before {
+  display: none;
+}
+.ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon,
+.ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon,
+.ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon,
+.ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon {
+  display: block;
+}
+.ant-input-number:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-input-number:hover + .ant-form-item-children-icon {
+  opacity: 0;
+  -webkit-transition: opacity 0.24s linear 0.24s;
+  transition: opacity 0.24s linear 0.24s;
+}
+.ant-input-number-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-input-number-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-input-number-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-input-number-disabled .ant-input-number-input {
+  cursor: not-allowed;
+}
+.ant-input-number-disabled .ant-input-number-handler-wrap {
+  display: none;
+}
+.ant-input-number-readonly .ant-input-number-handler-wrap {
+  display: none;
+}
+.ant-input-number-input {
+  width: 100%;
+  height: 30px;
+  padding: 0 11px;
+  text-align: left;
+  background-color: transparent;
+  border: 0;
+  border-radius: 2px;
+  outline: 0;
+  -webkit-transition: all 0.3s linear;
+  transition: all 0.3s linear;
+  -moz-appearance: textfield !important;
+}
+.ant-input-number-input::-moz-placeholder {
+  opacity: 1;
+}
+.ant-input-number-input::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number-input:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number-input::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number-input::placeholder {
+  color: var(--text_cl);
+}
+.ant-input-number-input:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input-number-input:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-input-number-input:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-input-number-input[type='number']::-webkit-inner-spin-button,
+.ant-input-number-input[type='number']::-webkit-outer-spin-button {
+  margin: 0;
+  -webkit-appearance: none;
+}
+.ant-input-number-lg {
+  padding: 0;
+  font-size: 16px;
+}
+.ant-input-number-lg input {
+  height: 38px;
+}
+.ant-input-number-sm {
+  padding: 0;
+}
+.ant-input-number-sm input {
+  height: 22px;
+  padding: 0 7px;
+}
+.ant-input-number-handler-wrap {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 22px;
+  height: 100%;
+  background: var(--content_bg);
+  border-left: 1px solid var(--border_cl);
+  border-radius: 0 2px 2px 0;
+  opacity: 0;
+  -webkit-transition: opacity 0.24s linear 0.1s;
+  transition: opacity 0.24s linear 0.1s;
+}
+.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,
+.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner {
+  min-width: auto;
+  margin-right: 0;
+  font-size: 7px;
+}
+.ant-input-number-handler-wrap:hover .ant-input-number-handler {
+  height: 40%;
+}
+.ant-input-number:hover .ant-input-number-handler-wrap {
+  opacity: 1;
+}
+.ant-input-number-handler-up {
+  border-top-right-radius: 2px;
+  cursor: pointer;
+}
+.ant-input-number-handler-up-inner {
+  top: 50%;
+  margin-top: -5px;
+  text-align: center;
+}
+.ant-input-number-handler-up:hover {
+  height: 60% !important;
+}
+.ant-input-number-handler-down {
+  top: 0;
+  border-top: 1px solid var(--border_cl);
+  border-bottom-right-radius: 2px;
+  cursor: pointer;
+}
+.ant-input-number-handler-down-inner {
+  top: 50%;
+  text-align: center;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+}
+.ant-input-number-handler-down:hover {
+  height: 60% !important;
+}
+.ant-input-number-handler-up-disabled,
+.ant-input-number-handler-down-disabled {
+  cursor: not-allowed;
+}
+.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,
+.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-input-number-rtl {
+  direction: rtl;
+}
+.ant-input-number-rtl .ant-input-number-handler-wrap {
+  right: auto;
+  left: 0;
+  border-right: 1px solid var(--border_cl);
+  border-left: 0;
+  border-radius: 2px 0 0 2px;
+}
+.ant-input-number-rtl .ant-input-number-input {
+  direction: ltr;
+  text-align: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-layout {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  /* fix firefox can't set height smaller than content on flex item */
+  min-height: 0;
+  background: var(--layout_bg);
+}
+.ant-layout,
+.ant-layout * {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+.ant-layout.ant-layout-has-sider {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+          flex-direction: row;
+}
+.ant-layout.ant-layout-has-sider > .ant-layout,
+.ant-layout.ant-layout-has-sider > .ant-layout-content {
+  width: 0;
+}
+.ant-layout-header,
+.ant-layout-footer {
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 auto;
+          flex: 0 0 auto;
+}
+.ant-layout-header {
+  height: 64px;
+  padding: 0 50px;
+  color: var(--text_cl);
+  line-height: 64px;
+  background: var(--menu_bg);
+}
+.ant-layout-footer {
+  padding: 24px 50px;
+  color: var(--text_cl);
+  font-size: 14px;
+  background: #485257;
+}
+.ant-layout-content {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  /* fix firefox can't set height smaller than content on flex item */
+  min-height: 0;
+}
+.ant-layout-sider {
+  position: relative;
+  /* fix firefox can't set width smaller than content on flex item */
+  min-width: 0;
+  background: var(--layout_bg);
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+}
+.ant-layout-sider-children {
+  height: 100%;
+  margin-top: -0.1px;
+  padding-top: 0.1px;
+}
+.ant-layout-sider-has-trigger {
+  padding-bottom: 48px;
+}
+.ant-layout-sider-right {
+  -webkit-box-ordinal-group: 2;
+      -ms-flex-order: 1;
+          order: 1;
+}
+.ant-layout-sider-trigger {
+  position: fixed;
+  bottom: 0;
+  z-index: 1;
+  height: 48px;
+  color: #fff;
+  line-height: 48px;
+  text-align: center;
+  background: var(--menu_bg);
+  cursor: pointer;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+}
+.ant-layout-sider-zero-width > * {
+  overflow: hidden;
+}
+.ant-layout-sider-zero-width-trigger {
+  position: absolute;
+  top: 64px;
+  right: -36px;
+  z-index: 1;
+  width: 36px;
+  height: 42px;
+  color: #fff;
+  font-size: 18px;
+  line-height: 42px;
+  text-align: center;
+  background: var(--layout_bg);
+  border-radius: 0 2px 2px 0;
+  cursor: pointer;
+  -webkit-transition: background 0.3s ease;
+  transition: background 0.3s ease;
+}
+.ant-layout-sider-zero-width-trigger::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: transparent;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  content: '';
+}
+.ant-layout-sider-zero-width-trigger:hover::after {
+  background: rgba(255, 255, 255, 0.1);
+}
+.ant-layout-sider-zero-width-trigger-right {
+  left: -36px;
+  border-radius: 2px 0 0 2px;
+}
+.ant-layout-sider-light {
+  background: #fff;
+}
+.ant-layout-sider-light .ant-layout-sider-trigger {
+  color: var(--text_cl);
+  background: #fff;
+}
+.ant-layout-sider-light .ant-layout-sider-zero-width-trigger {
+  color: var(--text_cl);
+  background: #fff;
+}
+.ant-layout-rtl {
+  direction: rtl;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-list .ant-card {
+  background: transparent;
+}
+.ant-list {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+}
+.ant-list * {
+  outline: none;
+}
+.ant-list-pagination {
+  margin-top: 24px;
+  text-align: right;
+}
+.ant-list-pagination .ant-pagination-options {
+  text-align: left;
+}
+.ant-list-more {
+  margin-top: 12px;
+  text-align: center;
+}
+.ant-list-more button {
+  padding-right: 32px;
+  padding-left: 32px;
+}
+.ant-list-spin {
+  min-height: 40px;
+  text-align: center;
+}
+.ant-list-empty-text {
+  padding: 16px;
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 14px;
+  text-align: center;
+}
+.ant-list-items {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.ant-list-item {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+  padding: 12px 0;
+  color: var(--text_cl);
+}
+.ant-list-item-meta {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+  max-width: 100%;
+}
+.ant-list-item-meta-avatar {
+  margin-right: 16px;
+}
+.ant-list-item-meta-content {
+  -webkit-box-flex: 1;
+      -ms-flex: 1 0;
+          flex: 1 0;
+  width: 0;
+  color: var(--text_cl);
+}
+.ant-list-item-meta-title {
+  margin-bottom: 4px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+}
+.ant-list-item-meta-title > a {
+  color: var(--text_cl);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-list-item-meta-title > a:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-list-item-meta-description {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  line-height: 1.5715;
+}
+.ant-list-item-action {
+  -webkit-box-flex: 0;
+      -ms-flex: 0 0 auto;
+          flex: 0 0 auto;
+  margin-left: 48px;
+  padding: 0;
+  font-size: 0;
+  list-style: none;
+}
+.ant-list-item-action > li {
+  position: relative;
+  display: inline-block;
+  padding: 0 8px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  line-height: 1.5715;
+  text-align: center;
+}
+.ant-list-item-action > li:first-child {
+  padding-left: 0;
+}
+.ant-list-item-action-split {
+  position: absolute;
+  top: 50%;
+  right: 0;
+  width: 1px;
+  height: 14px;
+  margin-top: -7px;
+  background-color: #5a6367;
+}
+.ant-list-header {
+  background: transparent;
+}
+.ant-list-footer {
+  background: transparent;
+}
+.ant-list-header,
+.ant-list-footer {
+  padding-top: 12px;
+  padding-bottom: 12px;
+}
+.ant-list-empty {
+  padding: 16px 0;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 12px;
+  text-align: center;
+}
+.ant-list-split .ant-list-item {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-list-split .ant-list-item:last-child {
+  border-bottom: none;
+}
+.ant-list-split .ant-list-header {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-list-split.ant-list-empty .ant-list-footer {
+  border-top: 1px solid #5a6367;
+}
+.ant-list-loading .ant-list-spin-nested-loading {
+  min-height: 32px;
+}
+.ant-list-split.ant-list-something-after-last-item .ant-spin-container > .ant-list-items > .ant-list-item:last-child {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-list-lg .ant-list-item {
+  padding: 16px 24px;
+}
+.ant-list-sm .ant-list-item {
+  padding: 8px 16px;
+}
+.ant-list-vertical .ant-list-item {
+  -webkit-box-align: initial;
+      -ms-flex-align: initial;
+          align-items: initial;
+}
+.ant-list-vertical .ant-list-item-main {
+  display: block;
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+}
+.ant-list-vertical .ant-list-item-extra {
+  margin-left: 40px;
+}
+.ant-list-vertical .ant-list-item-meta {
+  margin-bottom: 16px;
+}
+.ant-list-vertical .ant-list-item-meta-title {
+  margin-bottom: 12px;
+  color: var(--text_cl);
+  font-size: 16px;
+  line-height: 24px;
+}
+.ant-list-vertical .ant-list-item-action {
+  margin-top: 16px;
+  margin-left: auto;
+}
+.ant-list-vertical .ant-list-item-action > li {
+  padding: 0 16px;
+}
+.ant-list-vertical .ant-list-item-action > li:first-child {
+  padding-left: 0;
+}
+.ant-list-grid .ant-col > .ant-list-item {
+  display: block;
+  max-width: 100%;
+  margin-bottom: 16px;
+  padding-top: 0;
+  padding-bottom: 0;
+  border-bottom: none;
+}
+.ant-list-item-no-flex {
+  display: block;
+}
+.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action {
+  float: right;
+}
+.ant-list-bordered {
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+}
+.ant-list-bordered .ant-list-header {
+  padding-right: 24px;
+  padding-left: 24px;
+}
+.ant-list-bordered .ant-list-footer {
+  padding-right: 24px;
+  padding-left: 24px;
+}
+.ant-list-bordered .ant-list-item {
+  padding-right: 24px;
+  padding-left: 24px;
+}
+.ant-list-bordered .ant-list-pagination {
+  margin: 16px 24px;
+}
+.ant-list-bordered.ant-list-sm .ant-list-item {
+  padding: 8px 16px;
+}
+.ant-list-bordered.ant-list-sm .ant-list-header,
+.ant-list-bordered.ant-list-sm .ant-list-footer {
+  padding: 8px 16px;
+}
+.ant-list-bordered.ant-list-lg .ant-list-item {
+  padding: 16px 24px;
+}
+.ant-list-bordered.ant-list-lg .ant-list-header,
+.ant-list-bordered.ant-list-lg .ant-list-footer {
+  padding: 16px 24px;
+}
+@media screen and (max-width: 768px) {
+  .ant-list-item-action {
+    margin-left: 24px;
+  }
+  .ant-list-vertical .ant-list-item-extra {
+    margin-left: 24px;
+  }
+}
+@media screen and (max-width: 576px) {
+  .ant-list-item {
+    -ms-flex-wrap: wrap;
+        flex-wrap: wrap;
+  }
+  .ant-list-item-action {
+    margin-left: 12px;
+  }
+  .ant-list-vertical .ant-list-item {
+    -ms-flex-wrap: wrap-reverse;
+        flex-wrap: wrap-reverse;
+  }
+  .ant-list-vertical .ant-list-item-main {
+    min-width: 220px;
+  }
+  .ant-list-vertical .ant-list-item-extra {
+    margin: auto auto 16px;
+  }
+}
+.ant-list-rtl {
+  direction: rtl;
+  text-align: right;
+}
+.ant-list-rtl .ReactVirtualized__List .ant-list-item {
+  direction: rtl;
+}
+.ant-list-rtl .ant-list-pagination {
+  text-align: left;
+}
+.ant-list-rtl .ant-list-item-meta-avatar {
+  margin-right: 0;
+  margin-left: 16px;
+}
+.ant-list-rtl .ant-list-item-action {
+  margin-right: 48px;
+  margin-left: 0;
+}
+.ant-list.ant-list-rtl .ant-list-item-action > li:first-child {
+  padding-right: 0;
+  padding-left: 16px;
+}
+.ant-list-rtl .ant-list-item-action-split {
+  right: auto;
+  left: 0;
+}
+.ant-list-rtl.ant-list-vertical .ant-list-item-extra {
+  margin-right: 40px;
+  margin-left: 0;
+}
+.ant-list-rtl.ant-list-vertical .ant-list-item-action {
+  margin-right: auto;
+}
+.ant-list-rtl .ant-list-vertical .ant-list-item-action > li:first-child {
+  padding-right: 0;
+  padding-left: 16px;
+}
+.ant-list-rtl .ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action {
+  float: left;
+}
+@media screen and (max-width: 768px) {
+  .ant-list-rtl .ant-list-item-action {
+    margin-right: 24px;
+    margin-left: 0;
+  }
+  .ant-list-rtl .ant-list-vertical .ant-list-item-extra {
+    margin-right: 24px;
+    margin-left: 0;
+  }
+}
+@media screen and (max-width: 576px) {
+  .ant-list-rtl .ant-list-item-action {
+    margin-right: 22px;
+    margin-left: 0;
+  }
+  .ant-list-rtl.ant-list-vertical .ant-list-item-extra {
+    margin: auto auto 16px;
+  }
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-spin {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  display: none;
+  color: var(--menu_selected_bg);
+  text-align: center;
+  vertical-align: middle;
+  opacity: 0;
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  transition: -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+  transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.ant-spin-spinning {
+  position: static;
+  display: inline-block;
+  opacity: 1;
+}
+.ant-spin-nested-loading {
+  position: relative;
+}
+.ant-spin-nested-loading > div > .ant-spin {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 4;
+  display: block;
+  width: 100%;
+  height: 100%;
+  max-height: 400px;
+}
+.ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin: -10px;
+}
+.ant-spin-nested-loading > div > .ant-spin .ant-spin-text {
+  position: absolute;
+  top: 50%;
+  width: 100%;
+  padding-top: 5px;
+  text-shadow: 0 1px 2px var(--content_bg);
+}
+.ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot {
+  margin-top: -20px;
+}
+.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot {
+  margin: -7px;
+}
+.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text {
+  padding-top: 2px;
+}
+.ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot {
+  margin-top: -17px;
+}
+.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot {
+  margin: -16px;
+}
+.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text {
+  padding-top: 11px;
+}
+.ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot {
+  margin-top: -26px;
+}
+.ant-spin-container {
+  position: relative;
+  -webkit-transition: opacity 0.3s;
+  transition: opacity 0.3s;
+}
+.ant-spin-container::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 10;
+  display: none \9;
+  width: 100%;
+  height: 100%;
+  background: var(--content_bg);
+  opacity: 0;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  content: '';
+  pointer-events: none;
+}
+.ant-spin-blur {
+  clear: both;
+  overflow: hidden;
+  opacity: 0.5;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  pointer-events: none;
+}
+.ant-spin-blur::after {
+  opacity: 0.4;
+  pointer-events: auto;
+}
+.ant-spin-tip {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-spin-dot {
+  position: relative;
+  display: inline-block;
+  font-size: 20px;
+  width: 1em;
+  height: 1em;
+}
+.ant-spin-dot-item {
+  position: absolute;
+  display: block;
+  width: 9px;
+  height: 9px;
+  background-color: var(--menu_selected_bg);
+  border-radius: 100%;
+  -webkit-transform: scale(0.75);
+          transform: scale(0.75);
+  -webkit-transform-origin: 50% 50%;
+          transform-origin: 50% 50%;
+  opacity: 0.3;
+  -webkit-animation: antSpinMove 1s infinite linear alternate;
+          animation: antSpinMove 1s infinite linear alternate;
+}
+.ant-spin-dot-item:nth-child(1) {
+  top: 0;
+  left: 0;
+}
+.ant-spin-dot-item:nth-child(2) {
+  top: 0;
+  right: 0;
+  -webkit-animation-delay: 0.4s;
+          animation-delay: 0.4s;
+}
+.ant-spin-dot-item:nth-child(3) {
+  right: 0;
+  bottom: 0;
+  -webkit-animation-delay: 0.8s;
+          animation-delay: 0.8s;
+}
+.ant-spin-dot-item:nth-child(4) {
+  bottom: 0;
+  left: 0;
+  -webkit-animation-delay: 1.2s;
+          animation-delay: 1.2s;
+}
+.ant-spin-dot-spin {
+  -webkit-transform: rotate(45deg);
+          transform: rotate(45deg);
+  -webkit-animation: antRotate 1.2s infinite linear;
+          animation: antRotate 1.2s infinite linear;
+}
+.ant-spin-sm .ant-spin-dot {
+  font-size: 14px;
+}
+.ant-spin-sm .ant-spin-dot i {
+  width: 6px;
+  height: 6px;
+}
+.ant-spin-lg .ant-spin-dot {
+  font-size: 32px;
+}
+.ant-spin-lg .ant-spin-dot i {
+  width: 14px;
+  height: 14px;
+}
+.ant-spin.ant-spin-show-text .ant-spin-text {
+  display: block;
+}
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+  /* IE10+ */
+  .ant-spin-blur {
+    background: var(--content_bg);
+    opacity: 0.5;
+  }
+}
+@-webkit-keyframes antSpinMove {
+  to {
+    opacity: 1;
+  }
+}
+@keyframes antSpinMove {
+  to {
+    opacity: 1;
+  }
+}
+@-webkit-keyframes antRotate {
+  to {
+    -webkit-transform: rotate(405deg);
+            transform: rotate(405deg);
+  }
+}
+@keyframes antRotate {
+  to {
+    -webkit-transform: rotate(405deg);
+            transform: rotate(405deg);
+  }
+}
+.ant-spin-rtl {
+  direction: rtl;
+}
+.ant-spin-rtl .ant-spin-dot-spin {
+  -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg);
+  -webkit-animation-name: antRotateRtl;
+          animation-name: antRotateRtl;
+}
+@-webkit-keyframes antRotateRtl {
+  to {
+    -webkit-transform: rotate(-405deg);
+            transform: rotate(-405deg);
+  }
+}
+@keyframes antRotateRtl {
+  to {
+    -webkit-transform: rotate(-405deg);
+            transform: rotate(-405deg);
+  }
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-pagination {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+.ant-pagination ul,
+.ant-pagination ol {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.ant-pagination::after {
+  display: block;
+  clear: both;
+  height: 0;
+  overflow: hidden;
+  visibility: hidden;
+  content: ' ';
+}
+.ant-pagination-total-text {
+  display: inline-block;
+  height: 32px;
+  margin-right: 8px;
+  line-height: 30px;
+  vertical-align: middle;
+}
+.ant-pagination-item {
+  display: inline-block;
+  min-width: 32px;
+  height: 32px;
+  margin-right: 8px;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+  line-height: 30px;
+  text-align: center;
+  vertical-align: middle;
+  list-style: none;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  outline: 0;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-pagination-item a {
+  display: block;
+  padding: 0 6px;
+  color: var(--text_cl);
+  -webkit-transition: none;
+  transition: none;
+}
+.ant-pagination-item a:hover {
+  text-decoration: none;
+}
+.ant-pagination-item:focus,
+.ant-pagination-item:hover {
+  border-color: var(--menu_selected_bg);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-pagination-item:focus a,
+.ant-pagination-item:hover a {
+  color: var(--menu_selected_bg);
+}
+.ant-pagination-item-active {
+  font-weight: 500;
+  background: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-pagination-item-active a {
+  color: var(--menu_selected_bg);
+}
+.ant-pagination-item-active:focus,
+.ant-pagination-item-active:hover {
+  border-color: var(--menu_selected_bg);
+}
+.ant-pagination-item-active:focus a,
+.ant-pagination-item-active:hover a {
+  color: var(--menu_selected_bg);
+}
+.ant-pagination-jump-prev,
+.ant-pagination-jump-next {
+  outline: 0;
+}
+.ant-pagination-jump-prev .ant-pagination-item-container,
+.ant-pagination-jump-next .ant-pagination-item-container {
+  position: relative;
+}
+.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {
+  color: var(--menu_selected_bg);
+  font-size: 12px;
+  letter-spacing: -1px;
+  opacity: 0;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+}
+.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg,
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg {
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  margin: auto;
+}
+.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  display: block;
+  margin: auto;
+  color: rgba(255, 255, 255, 0.3);
+  font-family: Arial, Helvetica, sans-serif;
+  letter-spacing: 2px;
+  text-align: center;
+  text-indent: 0.13em;
+  opacity: 1;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+}
+.ant-pagination-jump-prev:focus .ant-pagination-item-link-icon,
+.ant-pagination-jump-next:focus .ant-pagination-item-link-icon,
+.ant-pagination-jump-prev:hover .ant-pagination-item-link-icon,
+.ant-pagination-jump-next:hover .ant-pagination-item-link-icon {
+  opacity: 1;
+}
+.ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis,
+.ant-pagination-jump-next:focus .ant-pagination-item-ellipsis,
+.ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis,
+.ant-pagination-jump-next:hover .ant-pagination-item-ellipsis {
+  opacity: 0;
+}
+.ant-pagination-prev,
+.ant-pagination-jump-prev,
+.ant-pagination-jump-next {
+  margin-right: 8px;
+}
+.ant-pagination-prev,
+.ant-pagination-next,
+.ant-pagination-jump-prev,
+.ant-pagination-jump-next {
+  display: inline-block;
+  min-width: 32px;
+  height: 32px;
+  color: var(--text_cl);
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+  line-height: 32px;
+  text-align: center;
+  vertical-align: middle;
+  list-style: none;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-pagination-prev,
+.ant-pagination-next {
+  font-family: Arial, Helvetica, sans-serif;
+  outline: 0;
+}
+.ant-pagination-prev button,
+.ant-pagination-next button {
+  color: var(--text_cl);
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-pagination-prev:hover button,
+.ant-pagination-next:hover button {
+  border-color: var(--menu_selected_bg);
+}
+.ant-pagination-prev .ant-pagination-item-link,
+.ant-pagination-next .ant-pagination-item-link {
+  display: block;
+  width: 100%;
+  height: 100%;
+  padding: 0;
+  font-size: 12px;
+  text-align: center;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  outline: none;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-pagination-prev:focus .ant-pagination-item-link,
+.ant-pagination-next:focus .ant-pagination-item-link,
+.ant-pagination-prev:hover .ant-pagination-item-link,
+.ant-pagination-next:hover .ant-pagination-item-link {
+  color: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-pagination-disabled,
+.ant-pagination-disabled:hover,
+.ant-pagination-disabled:focus {
+  cursor: not-allowed;
+}
+.ant-pagination-disabled .ant-pagination-item-link,
+.ant-pagination-disabled:hover .ant-pagination-item-link,
+.ant-pagination-disabled:focus .ant-pagination-item-link {
+  color: rgba(255, 255, 255, 0.3);
+  border-color: #cac1c1;
+  cursor: not-allowed;
+}
+.ant-pagination-slash {
+  margin: 0 10px 0 5px;
+}
+.ant-pagination-options {
+  display: inline-block;
+  margin-left: 16px;
+  vertical-align: middle;
+}
+@media all and (-ms-high-contrast: none) {
+  .ant-pagination-options *::-ms-backdrop,
+  .ant-pagination-options {
+    vertical-align: top;
+  }
+}
+.ant-pagination-options-size-changer.ant-select {
+  display: inline-block;
+  width: auto;
+}
+.ant-pagination-options-quick-jumper {
+  display: inline-block;
+  height: 32px;
+  margin-left: 8px;
+  line-height: 32px;
+  vertical-align: top;
+}
+.ant-pagination-options-quick-jumper input {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  min-width: 0;
+  padding: 4px 11px;
+  color: var(--text_cl);
+  font-size: 14px;
+  line-height: 1.5715;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  width: 50px;
+  margin: 0 8px;
+}
+.ant-pagination-options-quick-jumper input::-moz-placeholder {
+  opacity: 1;
+}
+.ant-pagination-options-quick-jumper input::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-pagination-options-quick-jumper input:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-pagination-options-quick-jumper input::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-pagination-options-quick-jumper input::placeholder {
+  color:var(--text_cl);
+}
+.ant-pagination-options-quick-jumper input:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-pagination-options-quick-jumper input:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-pagination-options-quick-jumper input:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-pagination-options-quick-jumper input:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-pagination-options-quick-jumper input:focus,
+.ant-pagination-options-quick-jumper input-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-pagination-options-quick-jumper input-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-pagination-options-quick-jumper input-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-pagination-options-quick-jumper input[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-pagination-options-quick-jumper input[disabled]:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-pagination-options-quick-jumper input-borderless,
+.ant-pagination-options-quick-jumper input-borderless:hover,
+.ant-pagination-options-quick-jumper input-borderless:focus,
+.ant-pagination-options-quick-jumper input-borderless-focused,
+.ant-pagination-options-quick-jumper input-borderless-disabled,
+.ant-pagination-options-quick-jumper input-borderless[disabled] {
+  background-color: transparent;
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+textarea.ant-pagination-options-quick-jumper input {
+  max-width: 100%;
+  height: auto;
+  min-height: 32px;
+  line-height: 1.5715;
+  vertical-align: bottom;
+  -webkit-transition: all 0.3s, height 0s;
+  transition: all 0.3s, height 0s;
+}
+.ant-pagination-options-quick-jumper input-lg {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-pagination-options-quick-jumper input-sm {
+  padding: 0px 7px;
+}
+.ant-pagination-simple .ant-pagination-prev,
+.ant-pagination-simple .ant-pagination-next {
+  height: 24px;
+  line-height: 24px;
+  vertical-align: top;
+}
+.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,
+.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link {
+  height: 24px;
+  background-color: transparent;
+  border: 0;
+}
+.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link::after,
+.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link::after {
+  height: 24px;
+  line-height: 24px;
+}
+.ant-pagination-simple .ant-pagination-simple-pager {
+  display: inline-block;
+  height: 24px;
+  margin-right: 8px;
+}
+.ant-pagination-simple .ant-pagination-simple-pager input {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  height: 100%;
+  margin-right: 8px;
+  padding: 0 6px;
+  text-align: center;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  outline: none;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+.ant-pagination-simple .ant-pagination-simple-pager input:hover {
+  border-color: var(--menu_selected_bg);
+}
+.ant-pagination-simple .ant-pagination-simple-pager input[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  cursor: not-allowed;
+}
+.ant-pagination.mini .ant-pagination-total-text,
+.ant-pagination.mini .ant-pagination-simple-pager {
+  height: 24px;
+  line-height: 24px;
+}
+.ant-pagination.mini .ant-pagination-item {
+  min-width: 24px;
+  height: 24px;
+  margin: 0;
+  line-height: 22px;
+}
+.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {
+  background: transparent;
+  border-color: transparent;
+}
+.ant-pagination.mini .ant-pagination-prev,
+.ant-pagination.mini .ant-pagination-next {
+  min-width: 24px;
+  height: 24px;
+  margin: 0;
+  line-height: 24px;
+}
+.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link,
+.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {
+  background: transparent;
+  border-color: transparent;
+}
+.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link::after,
+.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link::after {
+  height: 24px;
+  line-height: 24px;
+}
+.ant-pagination.mini .ant-pagination-jump-prev,
+.ant-pagination.mini .ant-pagination-jump-next {
+  height: 24px;
+  margin-right: 0;
+  line-height: 24px;
+}
+.ant-pagination.mini .ant-pagination-options {
+  margin-left: 2px;
+}
+.ant-pagination.mini .ant-pagination-options-size-changer {
+  top: 0px;
+}
+.ant-pagination.mini .ant-pagination-options-quick-jumper {
+  height: 24px;
+  line-height: 24px;
+}
+.ant-pagination.mini .ant-pagination-options-quick-jumper input {
+  padding: 0px 7px;
+  width: 44px;
+}
+.ant-pagination.ant-pagination-disabled {
+  cursor: not-allowed;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item {
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  cursor: not-allowed;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item a {
+  color: rgba(255, 255, 255, 0.3);
+  background: transparent;
+  border: none;
+  cursor: not-allowed;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item-active {
+  background: rgba(255, 255, 255, 0.25);
+  border-color: transparent;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a {
+  color: #485257;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item-link {
+  color: rgba(255, 255, 255, 0.3);
+  background: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1;
+  cursor: not-allowed;
+}
+.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link {
+  background: transparent;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item-link-icon {
+  opacity: 0;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-item-ellipsis {
+  opacity: 1;
+}
+.ant-pagination.ant-pagination-disabled .ant-pagination-simple-pager {
+  color: rgba(255, 255, 255, 0.3);
+}
+@media only screen and (max-width: 992px) {
+  .ant-pagination-item-after-jump-prev,
+  .ant-pagination-item-before-jump-next {
+    display: none;
+  }
+}
+@media only screen and (max-width: 576px) {
+  .ant-pagination-options {
+    display: none;
+  }
+}
+.ant-pagination-rtl .ant-pagination-total-text {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-pagination-rtl .ant-pagination-item,
+.ant-pagination-rtl .ant-pagination-prev,
+.ant-pagination-rtl .ant-pagination-jump-prev,
+.ant-pagination-rtl .ant-pagination-jump-next {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-pagination-rtl .ant-pagination-slash {
+  margin: 0 5px 0 10px;
+}
+.ant-pagination-rtl .ant-pagination-options {
+  margin-right: 16px;
+  margin-left: 0;
+}
+.ant-pagination-rtl .ant-pagination-options .ant-pagination-options-size-changer.ant-select {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-pagination-rtl .ant-pagination-options .ant-pagination-options-quick-jumper {
+  margin-left: 0;
+}
+.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager input {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-pagination-rtl.ant-pagination.mini .ant-pagination-options {
+  margin-right: 2px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-mentions {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  font-variant: tabular-nums;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  width: 100%;
+  min-width: 0;
+  padding: 4px 11px;
+  color: var(--text_cl);
+  font-size: 14px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  position: relative;
+  display: inline-block;
+  height: auto;
+  padding: 0;
+  overflow: hidden;
+  line-height: 1.5715;
+  white-space: pre-wrap;
+  vertical-align: bottom;
+}
+.ant-mentions::-moz-placeholder {
+  opacity: 1;
+}
+.ant-mentions::-webkit-input-placeholder {
+  color: var(--text-cl);
+}
+.ant-mentions:-ms-input-placeholder {
+  color: var(--text-cl);
+}
+.ant-mentions::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-mentions::placeholder {
+  color: var(--text_cl);
+}
+.ant-mentions:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-mentions:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-mentions:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-mentions:hover {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+}
+.ant-mentions:focus,
+.ant-mentions-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-mentions-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-mentions-disabled:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-mentions[disabled] {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-mentions[disabled]:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-mentions-borderless,
+.ant-mentions-borderless:hover,
+.ant-mentions-borderless:focus,
+.ant-mentions-borderless-focused,
+.ant-mentions-borderless-disabled,
+.ant-mentions-borderless[disabled] {
+  background-color: transparent;
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+textarea.ant-mentions {
+  max-width: 100%;
+  height: auto;
+  min-height: 32px;
+  line-height: 1.5715;
+  vertical-align: bottom;
+  -webkit-transition: all 0.3s, height 0s;
+  transition: all 0.3s, height 0s;
+}
+.ant-mentions-lg {
+  padding: 6.5px 11px;
+  font-size: 16px;
+}
+.ant-mentions-sm {
+  padding: 0px 7px;
+}
+.ant-mentions-disabled > textarea {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.08);
+  cursor: not-allowed;
+  opacity: 1;
+}
+.ant-mentions-disabled > textarea:hover {
+  border-color: #cac1c1;
+  border-right-width: 1px !important;
+}
+.ant-mentions-focused {
+  border-color: var(--menu_selected_bg);
+  border-right-width: 1px !important;
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-mentions > textarea,
+.ant-mentions-measure {
+  min-height: 30px;
+  margin: 0;
+  padding: 4px 11px;
+  overflow: inherit;
+  overflow-x: hidden;
+  overflow-y: auto;
+  font-weight: inherit;
+  font-size: inherit;
+  font-family: inherit;
+  font-style: inherit;
+  font-variant: inherit;
+  font-size-adjust: inherit;
+  font-stretch: inherit;
+  line-height: inherit;
+  direction: inherit;
+  letter-spacing: inherit;
+  white-space: inherit;
+  text-align: inherit;
+  vertical-align: top;
+  word-wrap: break-word;
+  word-break: inherit;
+  -moz-tab-size: inherit;
+    -o-tab-size: inherit;
+       tab-size: inherit;
+}
+.ant-mentions > textarea {
+  width: 100%;
+  border: none;
+  outline: none;
+  resize: none;
+  background-color: transparent;
+}
+.ant-mentions > textarea::-moz-placeholder {
+  opacity: 1;
+}
+.ant-mentions > textarea::-webkit-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-mentions > textarea:-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-mentions > textarea::-ms-input-placeholder {
+  color: var(--text_cl);
+}
+.ant-mentions > textarea::placeholder {
+  color: var(--text_cl);
+}
+.ant-mentions > textarea:-moz-placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-mentions > textarea:-ms-input-placeholder {
+  text-overflow: ellipsis;
+}
+.ant-mentions > textarea:placeholder-shown {
+  text-overflow: ellipsis;
+}
+.ant-mentions-measure {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: -1;
+  color: transparent;
+  pointer-events: none;
+}
+.ant-mentions-measure > span {
+  display: inline-block;
+  min-height: 1em;
+}
+.ant-mentions-dropdown {
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: absolute;
+  top: -9999px;
+  left: -9999px;
+  z-index: 1050;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  font-size: 14px;
+  font-variant: initial;
+  background-color: var(--layout_bg);
+  border-radius: 2px;
+  outline: none;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-mentions-dropdown-hidden {
+  display: none;
+}
+.ant-mentions-dropdown-menu {
+  max-height: 250px;
+  margin-bottom: 0;
+  padding-left: 0;
+  overflow: auto;
+  list-style: none;
+  outline: none;
+}
+.ant-mentions-dropdown-menu-item {
+  position: relative;
+  display: block;
+  min-width: 100px;
+  padding: 5px 12px;
+  overflow: hidden;
+  color: var(--text_cl);
+  font-weight: normal;
+  line-height: 1.5715;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  cursor: pointer;
+  -webkit-transition: background 0.3s ease;
+  transition: background 0.3s ease;
+}
+.ant-mentions-dropdown-menu-item:hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-mentions-dropdown-menu-item:first-child {
+  border-radius: 2px 2px 0 0;
+}
+.ant-mentions-dropdown-menu-item:last-child {
+  border-radius: 0 0 2px 2px;
+}
+.ant-mentions-dropdown-menu-item-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-mentions-dropdown-menu-item-disabled:hover {
+  color: rgba(255, 255, 255, 0.3);
+  background-color: var(--layout_bg);
+  cursor: not-allowed;
+}
+.ant-mentions-dropdown-menu-item-selected {
+  color: var(--text_cl);
+  font-weight: 600;
+  background-color: rgba(255, 255, 255, 0.04);
+}
+.ant-mentions-dropdown-menu-item-active {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-mentions-rtl {
+  direction: rtl;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-message {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: fixed;
+  top: 8px;
+  left: 0;
+  z-index: 1010;
+  width: 100%;
+  pointer-events: none;
+}
+.ant-message-notice {
+  padding: 8px;
+  text-align: center;
+}
+.ant-message-notice-content {
+  display: inline-block;
+  padding: 10px 16px;
+  background: var(--layout_bg);
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+  pointer-events: all;
+}
+.ant-message-success .anticon {
+  color: #49aa19;
+}
+.ant-message-error .anticon {
+  color: #a61d24;
+}
+.ant-message-warning .anticon {
+  color: #d89614;
+}
+.ant-message-info .anticon,
+.ant-message-loading .anticon {
+  color: var(--menu_selected_bg);
+}
+.ant-message .anticon {
+  position: relative;
+  top: 1px;
+  margin-right: 8px;
+  font-size: 16px;
+}
+.ant-message-notice.move-up-leave.move-up-leave-active {
+  -webkit-animation-name: MessageMoveOut;
+          animation-name: MessageMoveOut;
+  -webkit-animation-duration: 0.3s;
+          animation-duration: 0.3s;
+}
+@-webkit-keyframes MessageMoveOut {
+  0% {
+    max-height: 150px;
+    padding: 8px;
+    opacity: 1;
+  }
+  100% {
+    max-height: 0;
+    padding: 0;
+    opacity: 0;
+  }
+}
+@keyframes MessageMoveOut {
+  0% {
+    max-height: 150px;
+    padding: 8px;
+    opacity: 1;
+  }
+  100% {
+    max-height: 0;
+    padding: 0;
+    opacity: 0;
+  }
+}
+.ant-message-rtl {
+  direction: rtl;
+}
+.ant-message-rtl span {
+  direction: rtl;
+}
+.ant-message-rtl .anticon {
+  margin-right: 0;
+  margin-left: 8px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-modal {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  pointer-events: none;
+  position: relative;
+  top: 100px;
+  width: auto;
+  max-width: calc(100vw - 32px);
+  margin: 0 auto;
+  padding-bottom: 24px;
+}
+.ant-modal.zoom-enter,
+.ant-modal.zoom-appear {
+  -webkit-transform: none;
+          transform: none;
+  opacity: 0;
+  -webkit-animation-duration: 0.3s;
+          animation-duration: 0.3s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-modal-mask {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1000;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.45);
+}
+.ant-modal-mask-hidden {
+  display: none;
+}
+.ant-modal-wrap {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  overflow: auto;
+  outline: 0;
+  -webkit-overflow-scrolling: touch;
+}
+.ant-modal-wrap {
+  z-index: 1000;
+}
+.ant-modal-title {
+  margin: 0;
+  color: var(--text_cl);
+  font-weight: 500;
+  font-size: 16px;
+  line-height: 22px;
+  word-wrap: break-word;
+}
+.ant-modal-content {
+  position: relative;
+  background-color: var(--layout_bg);
+  background-clip: padding-box;
+  border: 0;
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+  pointer-events: auto;
+}
+.ant-modal-close {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 10;
+  padding: 0;
+  color: rgba(255, 255, 255, 0.45);
+  font-weight: 700;
+  line-height: 1;
+  text-decoration: none;
+  background: transparent;
+  border: 0;
+  outline: 0;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-modal-close-x {
+  display: block;
+  width: 56px;
+  height: 56px;
+  font-size: 16px;
+  font-style: normal;
+  line-height: 56px;
+  text-align: center;
+  text-transform: none;
+  text-rendering: auto;
+}
+.ant-modal-close:focus,
+.ant-modal-close:hover {
+  color: rgba(255, 255, 255, 0.75);
+  text-decoration: none;
+}
+.ant-modal-header {
+  padding: 16px 24px;
+  color: var(--text_cl);
+  background: var(--layout_bg);
+  border-bottom: 1px solid #5a6367;
+  border-radius: 2px 2px 0 0;
+}
+.ant-modal-body {
+  padding: 24px;
+  font-size: 14px;
+  line-height: 1.5715;
+  word-wrap: break-word;
+}
+.ant-modal-footer {
+  padding: 10px 16px;
+  text-align: right;
+  background: transparent;
+  border-top: 1px solid #5a6367;
+  border-radius: 0 0 2px 2px;
+}
+.ant-modal-footer button + button {
+  margin-bottom: 0;
+  margin-left: 8px;
+}
+.ant-modal-open {
+  overflow: hidden;
+}
+.ant-modal-centered {
+  text-align: center;
+}
+.ant-modal-centered::before {
+  display: inline-block;
+  width: 0;
+  height: 100%;
+  vertical-align: middle;
+  content: '';
+}
+.ant-modal-centered .ant-modal {
+  top: 0;
+  display: inline-block;
+  text-align: left;
+  vertical-align: middle;
+}
+@media (max-width: 767px) {
+  .ant-modal {
+    max-width: calc(100vw - 16px);
+    margin: 8px auto;
+  }
+  .ant-modal-centered .ant-modal {
+    -webkit-box-flex: 1;
+        -ms-flex: 1;
+            flex: 1;
+  }
+}
+.ant-modal-confirm .ant-modal-header {
+  display: none;
+}
+.ant-modal-confirm .ant-modal-body {
+  padding: 32px 32px 24px;
+}
+.ant-modal-confirm-body-wrapper::before {
+  display: table;
+  content: '';
+}
+.ant-modal-confirm-body-wrapper::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-modal-confirm-body .ant-modal-confirm-title {
+  display: block;
+  overflow: hidden;
+  color: var(--text_cl);
+  font-weight: 500;
+  font-size: 16px;
+  line-height: 1.4;
+}
+.ant-modal-confirm-body .ant-modal-confirm-content {
+  margin-top: 8px;
+  color: var(--text_cl);
+  font-size: 14px;
+}
+.ant-modal-confirm-body > .anticon {
+  float: left;
+  margin-right: 16px;
+  font-size: 22px;
+}
+.ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content {
+  margin-left: 38px;
+}
+.ant-modal-confirm .ant-modal-confirm-btns {
+  float: right;
+  margin-top: 24px;
+}
+.ant-modal-confirm .ant-modal-confirm-btns button + button {
+  margin-bottom: 0;
+  margin-left: 8px;
+}
+.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {
+  color: #a61d24;
+}
+.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon,
+.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon {
+  color: #d89614;
+}
+.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {
+  color: var(--menu_selected_bg);
+}
+.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {
+  color: #49aa19;
+}
+.ant-modal .ant-picker-clear,
+.ant-modal .ant-slider-handle,
+.ant-modal .ant-anchor-wrapper,
+.ant-modal .ant-collapse-content,
+.ant-modal .ant-timeline-item-head,
+.ant-modal .ant-card {
+  background-color: var(--layout_bg);
+}
+.ant-modal .ant-transfer-list-header {
+  background: var(--layout_bg);
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-modal .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-modal tr.ant-table-expanded-row > td,
+.ant-modal tr.ant-table-expanded-row:hover > td {
+  background: #272727;
+}
+.ant-modal .ant-table.ant-table-small thead > tr > th {
+  background-color: var(--layout_bg);
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table {
+  background-color: var(--layout_bg);
+}
+.ant-modal .ant-table .ant-table-row-expand-icon {
+  border: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table tfoot > tr > th,
+.ant-modal .ant-table tfoot > tr > td {
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table thead > tr > th {
+  background-color: #272727;
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table tbody > tr > td {
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table tbody > tr > td.ant-table-cell-fix-left,
+.ant-modal .ant-table tbody > tr > td.ant-table-cell-fix-right {
+  background-color: var(--layout_bg);
+}
+.ant-modal .ant-table tbody > tr.ant-table-row:hover > td {
+  background: #5a6367;
+}
+.ant-modal .ant-table.ant-table-bordered .ant-table-title {
+  border: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table.ant-table-bordered thead > tr > th,
+.ant-modal .ant-table.ant-table-bordered tbody > tr > td,
+.ant-modal .ant-table.ant-table-bordered tfoot > tr > th,
+.ant-modal .ant-table.ant-table-bordered tfoot > tr > td {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table.ant-table-bordered .ant-table-cell-fix-right-first::after {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table.ant-table-bordered table thead > tr:not(:last-child) > th {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-modal .ant-table.ant-table-bordered .ant-table-container {
+  border: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table.ant-table-bordered .ant-table-expanded-row-fixed::after {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table.ant-table-bordered .ant-table-footer {
+  border: 1px solid #3a3a3a;
+}
+.ant-modal .ant-table .ant-table-filter-trigger-container-open {
+  background-color: #525252;
+}
+.ant-modal .ant-picker-calendar-full {
+  background-color: var(--layout_bg);
+}
+.ant-modal .ant-picker-calendar-full .ant-picker-panel {
+  background-color: var(--layout_bg);
+}
+.ant-modal .ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date {
+  border-top: 2px solid #3a3a3a;
+}
+.ant-modal .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
+  background-color: var(--layout_bg);
+  border-bottom: 1px solid var(--layout_bg);
+}
+.ant-modal .ant-badge-count {
+  -webkit-box-shadow: 0 0 0 1px var(--layout_bg);
+          box-shadow: 0 0 0 1px var(--layout_bg);
+}
+.ant-modal .ant-tree-show-line .ant-tree-switcher {
+  background: var(--layout_bg);
+}
+.ant-modal-wrap-rtl {
+  direction: rtl;
+}
+.ant-modal-wrap-rtl .ant-modal-close {
+  right: initial;
+  left: 0;
+}
+.ant-modal-wrap-rtl .ant-modal-footer {
+  text-align: left;
+}
+.ant-modal-wrap-rtl .ant-modal-footer button + button {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-modal-wrap-rtl .ant-modal-confirm-body {
+  direction: rtl;
+}
+.ant-modal-wrap-rtl .ant-modal-confirm-body > .anticon {
+  float: right;
+  margin-right: 0;
+  margin-left: 16px;
+}
+.ant-modal-wrap-rtl .ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content {
+  margin-right: 38px;
+  margin-left: 0;
+}
+.ant-modal-wrap-rtl .ant-modal-confirm-btns {
+  float: left;
+}
+.ant-modal-wrap-rtl .ant-modal-confirm-btns button + button {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-modal-wrap-rtl.ant-modal-centered .ant-modal {
+  text-align: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-notification .ant-picker-clear,
+.ant-notification .ant-slider-handle,
+.ant-notification .ant-anchor-wrapper,
+.ant-notification .ant-collapse-content,
+.ant-notification .ant-timeline-item-head,
+.ant-notification .ant-card {
+  background-color: var(--layout_bg);
+}
+.ant-notification .ant-transfer-list-header {
+  background: var(--layout_bg);
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-notification .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-notification tr.ant-table-expanded-row > td,
+.ant-notification tr.ant-table-expanded-row:hover > td {
+  background: #272727;
+}
+.ant-notification .ant-table.ant-table-small thead > tr > th {
+  background-color: var(--layout_bg);
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table {
+  background-color: var(--layout_bg);
+}
+.ant-notification .ant-table .ant-table-row-expand-icon {
+  border: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table tfoot > tr > th,
+.ant-notification .ant-table tfoot > tr > td {
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table thead > tr > th {
+  background-color: #272727;
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table tbody > tr > td {
+  border-bottom: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table tbody > tr > td.ant-table-cell-fix-left,
+.ant-notification .ant-table tbody > tr > td.ant-table-cell-fix-right {
+  background-color: var(--layout_bg);
+}
+.ant-notification .ant-table tbody > tr.ant-table-row:hover > td {
+  background: #5a6367;
+}
+.ant-notification .ant-table.ant-table-bordered .ant-table-title {
+  border: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table.ant-table-bordered thead > tr > th,
+.ant-notification .ant-table.ant-table-bordered tbody > tr > td,
+.ant-notification .ant-table.ant-table-bordered tfoot > tr > th,
+.ant-notification .ant-table.ant-table-bordered tfoot > tr > td {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table.ant-table-bordered .ant-table-cell-fix-right-first::after {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table.ant-table-bordered table thead > tr:not(:last-child) > th {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-notification .ant-table.ant-table-bordered .ant-table-container {
+  border: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table.ant-table-bordered .ant-table-expanded-row-fixed::after {
+  border-right: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table.ant-table-bordered .ant-table-footer {
+  border: 1px solid #3a3a3a;
+}
+.ant-notification .ant-table .ant-table-filter-trigger-container-open {
+  background-color: #525252;
+}
+.ant-notification .ant-picker-calendar-full {
+  background-color: var(--layout_bg);
+}
+.ant-notification .ant-picker-calendar-full .ant-picker-panel {
+  background-color: var(--layout_bg);
+}
+.ant-notification .ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date {
+  border-top: 2px solid #3a3a3a;
+}
+.ant-notification .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
+  background-color: var(--layout_bg);
+  border-bottom: 1px solid var(--layout_bg);
+}
+.ant-notification .ant-badge-count {
+  -webkit-box-shadow: 0 0 0 1px var(--layout_bg);
+          box-shadow: 0 0 0 1px var(--layout_bg);
+}
+.ant-notification .ant-tree-show-line .ant-tree-switcher {
+  background: var(--layout_bg);
+}
+.ant-notification {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: fixed;
+  z-index: 1010;
+  margin-right: 24px;
+}
+.ant-notification-topLeft,
+.ant-notification-bottomLeft {
+  margin-right: 0;
+  margin-left: 24px;
+}
+.ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,
+.ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,
+.ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active,
+.ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active {
+  -webkit-animation-name: NotificationLeftFadeIn;
+          animation-name: NotificationLeftFadeIn;
+}
+.ant-notification-close-icon {
+  font-size: 14px;
+  cursor: pointer;
+}
+.ant-notification-hook-holder,
+.ant-notification-notice {
+  position: relative;
+  width: 384px;
+  max-width: calc(100vw - 24px * 2);
+  margin-bottom: 16px;
+  margin-left: auto;
+  overflow: hidden;
+  word-wrap: break-word;
+  background: var(--layout_bg);
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-notification-topLeft .ant-notification-hook-holder,
+.ant-notification-topLeft .ant-notification-notice,
+.ant-notification-bottomLeft .ant-notification-hook-holder,
+.ant-notification-bottomLeft .ant-notification-notice {
+  margin-right: auto;
+  margin-left: 0;
+}
+.ant-notification-hook-holder > .ant-notification-notice {
+  margin-bottom: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-notification-notice {
+  padding: 16px 24px;
+  line-height: 1.5715;
+}
+.ant-notification-notice-message {
+  margin-bottom: 8px;
+  color: var(--text_cl);
+  font-size: 16px;
+  line-height: 24px;
+}
+.ant-notification-notice-message-single-line-auto-margin {
+  display: block;
+  width: calc(384px - 24px * 2 - 24px - 48px - 100%);
+  max-width: 4px;
+  background-color: transparent;
+  pointer-events: none;
+}
+.ant-notification-notice-message-single-line-auto-margin::before {
+  display: block;
+  content: '';
+}
+.ant-notification-notice-description {
+  font-size: 14px;
+}
+.ant-notification-notice-closable .ant-notification-notice-message {
+  padding-right: 24px;
+}
+.ant-notification-notice-with-icon .ant-notification-notice-message {
+  margin-bottom: 4px;
+  margin-left: 48px;
+  font-size: 16px;
+}
+.ant-notification-notice-with-icon .ant-notification-notice-description {
+  margin-left: 48px;
+  font-size: 14px;
+}
+.ant-notification-notice-icon {
+  position: absolute;
+  margin-left: 4px;
+  font-size: 24px;
+  line-height: 24px;
+}
+.anticon.ant-notification-notice-icon-success {
+  color: #49aa19;
+}
+.anticon.ant-notification-notice-icon-info {
+  color: var(--menu_selected_bg);
+}
+.anticon.ant-notification-notice-icon-warning {
+  color: #d89614;
+}
+.anticon.ant-notification-notice-icon-error {
+  color: #a61d24;
+}
+.ant-notification-notice-close {
+  position: absolute;
+  top: 16px;
+  right: 22px;
+  color: rgba(255, 255, 255, 0.45);
+  outline: none;
+}
+.ant-notification-notice-close:hover {
+  color: var(--text_cl);
+}
+.ant-notification-notice-btn {
+  float: right;
+  margin-top: 16px;
+}
+.ant-notification .notification-fade-effect {
+  -webkit-animation-duration: 0.24s;
+          animation-duration: 0.24s;
+  -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+          animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+}
+.ant-notification-fade-enter,
+.ant-notification-fade-appear {
+  opacity: 0;
+  -webkit-animation-duration: 0.24s;
+          animation-duration: 0.24s;
+  -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+          animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.ant-notification-fade-leave {
+  -webkit-animation-duration: 0.24s;
+          animation-duration: 0.24s;
+  -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+          animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-duration: 0.2s;
+          animation-duration: 0.2s;
+  -webkit-animation-play-state: paused;
+          animation-play-state: paused;
+}
+.ant-notification-fade-enter.ant-notification-fade-enter-active,
+.ant-notification-fade-appear.ant-notification-fade-appear-active {
+  -webkit-animation-name: NotificationFadeIn;
+          animation-name: NotificationFadeIn;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+.ant-notification-fade-leave.ant-notification-fade-leave-active {
+  -webkit-animation-name: NotificationFadeOut;
+          animation-name: NotificationFadeOut;
+  -webkit-animation-play-state: running;
+          animation-play-state: running;
+}
+@-webkit-keyframes NotificationFadeIn {
+  0% {
+    left: 384px;
+    opacity: 0;
+  }
+  100% {
+    left: 0;
+    opacity: 1;
+  }
+}
+@keyframes NotificationFadeIn {
+  0% {
+    left: 384px;
+    opacity: 0;
+  }
+  100% {
+    left: 0;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes NotificationLeftFadeIn {
+  0% {
+    right: 384px;
+    opacity: 0;
+  }
+  100% {
+    right: 0;
+    opacity: 1;
+  }
+}
+@keyframes NotificationLeftFadeIn {
+  0% {
+    right: 384px;
+    opacity: 0;
+  }
+  100% {
+    right: 0;
+    opacity: 1;
+  }
+}
+@-webkit-keyframes NotificationFadeOut {
+  0% {
+    max-height: 150px;
+    margin-bottom: 16px;
+    padding-top: 16px;
+    padding-bottom: 16px;
+    opacity: 1;
+  }
+  100% {
+    max-height: 0;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
+    opacity: 0;
+  }
+}
+@keyframes NotificationFadeOut {
+  0% {
+    max-height: 150px;
+    margin-bottom: 16px;
+    padding-top: 16px;
+    padding-bottom: 16px;
+    opacity: 1;
+  }
+  100% {
+    max-height: 0;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
+    opacity: 0;
+  }
+}
+.ant-notification-rtl {
+  direction: rtl;
+}
+.ant-notification-rtl .ant-notification-notice-closable .ant-notification-notice-message {
+  padding-right: 0;
+  padding-left: 24px;
+}
+.ant-notification-rtl .ant-notification-notice-with-icon .ant-notification-notice-message {
+  margin-right: 48px;
+  margin-left: 0;
+}
+.ant-notification-rtl .ant-notification-notice-with-icon .ant-notification-notice-description {
+  margin-right: 48px;
+  margin-left: 0;
+}
+.ant-notification-rtl .ant-notification-notice-icon {
+  margin-right: 4px;
+  margin-left: 0;
+}
+.ant-notification-rtl .ant-notification-notice-close {
+  right: auto;
+  left: 22px;
+}
+.ant-notification-rtl .ant-notification-notice-btn {
+  float: left;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-page-header {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  padding: 16px 24px;
+  background-color: var(--content_bg);
+}
+.ant-page-header-ghost {
+  background-color: transparent;
+}
+.ant-page-header.has-breadcrumb {
+  padding-top: 12px;
+}
+.ant-page-header.has-footer {
+  padding-bottom: 0;
+}
+.ant-page-header-back {
+  margin-right: 16px;
+  font-size: 16px;
+  line-height: 1;
+}
+.ant-page-header-back-button {
+  color: var(--menu_selected_bg);
+  text-decoration: none;
+  outline: none;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  color: inherit;
+  cursor: pointer;
+}
+.ant-page-header-back-button:focus,
+.ant-page-header-back-button:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-page-header-back-button:active {
+  color: #388ed3;
+}
+.ant-page-header .ant-divider-vertical {
+  height: 14px;
+  margin: 0 12px;
+  vertical-align: middle;
+}
+.ant-breadcrumb + .ant-page-header-heading {
+  margin-top: 8px;
+}
+.ant-page-header-heading {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: justify;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+}
+.ant-page-header-heading-left {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  margin: 4px 0;
+  overflow: hidden;
+}
+.ant-page-header-heading-title {
+  margin-right: 12px;
+  margin-bottom: 0;
+  color: var(--text_cl);
+  font-weight: 600;
+  font-size: 20px;
+  line-height: 32px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-page-header-heading .ant-avatar {
+  margin-right: 12px;
+}
+.ant-page-header-heading-sub-title {
+  margin-right: 12px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  line-height: 1.5715;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-page-header-heading-extra {
+  margin: 4px 0;
+  white-space: nowrap;
+}
+.ant-page-header-heading-extra > * {
+  margin-left: 12px;
+  white-space: unset;
+}
+.ant-page-header-heading-extra > *:first-child {
+  margin-left: 0;
+}
+.ant-page-header-content {
+  padding-top: 12px;
+}
+.ant-page-header-footer {
+  margin-top: 16px;
+}
+.ant-page-header-footer .ant-tabs > .ant-tabs-nav {
+  margin: 0;
+}
+.ant-page-header-footer .ant-tabs > .ant-tabs-nav::before {
+  border: none;
+}
+.ant-page-header-footer .ant-tabs .ant-tabs-tab {
+  padding: 8px 0;
+  font-size: 16px;
+}
+.ant-page-header-compact .ant-page-header-heading {
+  -ms-flex-wrap: wrap;
+      flex-wrap: wrap;
+}
+.ant-page-header-rtl {
+  direction: rtl;
+}
+.ant-page-header-rtl .ant-page-header-back {
+  float: right;
+  margin-right: 0;
+  margin-left: 16px;
+}
+.ant-page-header-rtl .ant-page-header-heading-title {
+  margin-right: 0;
+  margin-left: 12px;
+}
+.ant-page-header-rtl .ant-page-header-heading .ant-avatar {
+  margin-right: 0;
+  margin-left: 12px;
+}
+.ant-page-header-rtl .ant-page-header-heading-sub-title {
+  float: right;
+  margin-right: 0;
+  margin-left: 12px;
+}
+.ant-page-header-rtl .ant-page-header-heading-tags {
+  float: right;
+}
+.ant-page-header-rtl .ant-page-header-heading-extra {
+  float: left;
+}
+.ant-page-header-rtl .ant-page-header-heading-extra > * {
+  margin-right: 12px;
+  margin-left: 0;
+}
+.ant-page-header-rtl .ant-page-header-heading-extra > *:first-child {
+  margin-right: 0;
+}
+.ant-page-header-rtl .ant-page-header-footer .ant-tabs-bar .ant-tabs-nav {
+  float: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-popconfirm {
+  z-index: 1060;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-progress {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+}
+.ant-progress-line {
+  position: relative;
+  width: 100%;
+  font-size: 14px;
+}
+.ant-progress-steps {
+  display: inline-block;
+}
+.ant-progress-steps-outer {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+          flex-direction: row;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-progress-steps-item {
+  -ms-flex-negative: 0;
+      flex-shrink: 0;
+  min-width: 2px;
+  margin-right: 2px;
+  background: rgba(255, 255, 255, 0.08);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-progress-steps-item-active {
+  background: var(--menu_selected_bg);
+}
+.ant-progress-small.ant-progress-line,
+.ant-progress-small.ant-progress-line .ant-progress-text .anticon {
+  font-size: 12px;
+}
+.ant-progress-outer {
+  display: inline-block;
+  width: 100%;
+  margin-right: 0;
+  padding-right: 0;
+}
+.ant-progress-show-info .ant-progress-outer {
+  margin-right: calc(-2em - 8px);
+  padding-right: calc(2em + 8px);
+}
+.ant-progress-inner {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  overflow: hidden;
+  vertical-align: middle;
+  background-color: rgba(255, 255, 255, 0.08);
+  border-radius: 100px;
+}
+.ant-progress-circle-trail {
+  stroke: rgba(255, 255, 255, 0.08);
+}
+.ant-progress-circle-path {
+  -webkit-animation: ant-progress-appear 0.3s;
+          animation: ant-progress-appear 0.3s;
+}
+.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+  stroke: var(--menu_selected_bg);
+}
+.ant-progress-success-bg,
+.ant-progress-bg {
+  position: relative;
+  background-color: var(--menu_selected_bg);
+  border-radius: 100px;
+  -webkit-transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s;
+  transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s;
+}
+.ant-progress-success-bg {
+  position: absolute;
+  top: 0;
+  left: 0;
+  background-color: #49aa19;
+}
+.ant-progress-text {
+  display: inline-block;
+  width: 2em;
+  margin-left: 8px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 1em;
+  line-height: 1;
+  white-space: nowrap;
+  text-align: left;
+  vertical-align: middle;
+  word-break: normal;
+}
+.ant-progress-text .anticon {
+  font-size: 14px;
+}
+.ant-progress-status-active .ant-progress-bg::before {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: var(--content_bg);
+  border-radius: 10px;
+  opacity: 0;
+  -webkit-animation: ant-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite;
+          animation: ant-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite;
+  content: '';
+}
+.ant-progress-status-exception .ant-progress-bg {
+  background-color: #a61d24;
+}
+.ant-progress-status-exception .ant-progress-text {
+  color: #a61d24;
+}
+.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+  stroke: #a61d24;
+}
+.ant-progress-status-success .ant-progress-bg {
+  background-color: #49aa19;
+}
+.ant-progress-status-success .ant-progress-text {
+  color: #49aa19;
+}
+.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+  stroke: #49aa19;
+}
+.ant-progress-circle .ant-progress-inner {
+  position: relative;
+  line-height: 1;
+  background-color: transparent;
+}
+.ant-progress-circle .ant-progress-text {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 1em;
+  line-height: 1;
+  white-space: normal;
+  text-align: center;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+}
+.ant-progress-circle .ant-progress-text .anticon {
+  font-size: 1.16666667em;
+}
+.ant-progress-circle.ant-progress-status-exception .ant-progress-text {
+  color: #a61d24;
+}
+.ant-progress-circle.ant-progress-status-success .ant-progress-text {
+  color: #49aa19;
+}
+@-webkit-keyframes ant-progress-active {
+  0% {
+    width: 0;
+    opacity: 0.1;
+  }
+  20% {
+    width: 0;
+    opacity: 0.5;
+  }
+  100% {
+    width: 100%;
+    opacity: 0;
+  }
+}
+@keyframes ant-progress-active {
+  0% {
+    width: 0;
+    opacity: 0.1;
+  }
+  20% {
+    width: 0;
+    opacity: 0.5;
+  }
+  100% {
+    width: 100%;
+    opacity: 0;
+  }
+}
+.ant-progress-rtl {
+  direction: rtl;
+}
+.ant-progress-rtl.ant-progress-show-info .ant-progress-outer {
+  margin-right: 0;
+  margin-left: calc(-2em - 8px);
+  padding-right: 0;
+  padding-left: calc(2em + 8px);
+}
+.ant-progress-rtl .ant-progress-success-bg {
+  right: 0;
+  left: auto;
+}
+.ant-progress-rtl.ant-progress-line .ant-progress-text,
+.ant-progress-rtl.ant-progress-steps .ant-progress-text {
+  margin-right: 8px;
+  margin-left: 0;
+  text-align: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-rate {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+  margin: 0;
+  padding: 0;
+  color: #d8bd14;
+  font-size: 20px;
+  line-height: unset;
+  list-style: none;
+  outline: none;
+}
+.ant-rate-disabled .ant-rate-star {
+  cursor: default;
+}
+.ant-rate-disabled .ant-rate-star:hover {
+  -webkit-transform: scale(1);
+          transform: scale(1);
+}
+.ant-rate-star {
+  position: relative;
+  display: inline-block;
+  color: inherit;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-rate-star:not(:last-child) {
+  margin-right: 8px;
+}
+.ant-rate-star > div:focus {
+  outline: 0;
+}
+.ant-rate-star > div:hover,
+.ant-rate-star > div:focus {
+  -webkit-transform: scale(1.1);
+          transform: scale(1.1);
+}
+.ant-rate-star-first,
+.ant-rate-star-second {
+  color: rgba(255, 255, 255, 0.12);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-rate-star-first .anticon,
+.ant-rate-star-second .anticon {
+  vertical-align: middle;
+}
+.ant-rate-star-first {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 50%;
+  height: 100%;
+  overflow: hidden;
+  opacity: 0;
+}
+.ant-rate-star-half .ant-rate-star-first,
+.ant-rate-star-half .ant-rate-star-second {
+  opacity: 1;
+}
+.ant-rate-star-half .ant-rate-star-first,
+.ant-rate-star-full .ant-rate-star-second {
+  color: inherit;
+}
+.ant-rate-text {
+  display: inline-block;
+  margin: 0 8px;
+  font-size: 14px;
+}
+.ant-rate-rtl {
+  direction: rtl;
+}
+.ant-rate-rtl .ant-rate-star:not(:last-child) {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-rate-rtl .ant-rate-star-first {
+  right: 0;
+  left: auto;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-result {
+  padding: 48px 32px;
+}
+.ant-result-success .ant-result-icon > .anticon {
+  color: #49aa19;
+}
+.ant-result-error .ant-result-icon > .anticon {
+  color: #a61d24;
+}
+.ant-result-info .ant-result-icon > .anticon {
+  color: var(--menu_selected_bg);
+}
+.ant-result-warning .ant-result-icon > .anticon {
+  color: #d89614;
+}
+.ant-result-image {
+  width: 250px;
+  height: 295px;
+  margin: auto;
+}
+.ant-result-icon {
+  margin-bottom: 24px;
+  text-align: center;
+}
+.ant-result-icon > .anticon {
+  font-size: 72px;
+}
+.ant-result-title {
+  color: var(--text_cl);
+  font-size: 24px;
+  line-height: 1.8;
+  text-align: center;
+}
+.ant-result-subtitle {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+  line-height: 1.6;
+  text-align: center;
+}
+.ant-result-extra {
+  margin: 24px 0 0 0;
+  text-align: center;
+}
+.ant-result-extra > * {
+  margin-right: 8px;
+}
+.ant-result-extra > *:last-child {
+  margin-right: 0;
+}
+.ant-result-content {
+  margin-top: 24px;
+  padding: 24px 40px;
+  background-color: rgba(255, 255, 255, 0.04);
+}
+.ant-result-rtl {
+  direction: rtl;
+}
+.ant-result-rtl .ant-result-extra > * {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-result-rtl .ant-result-extra > *:last-child {
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-skeleton {
+  display: table;
+  width: 100%;
+}
+.ant-skeleton-header {
+  display: table-cell;
+  padding-right: 16px;
+  vertical-align: top;
+}
+.ant-skeleton-header .ant-skeleton-avatar {
+  display: inline-block;
+  vertical-align: top;
+  background: rgba(190, 190, 190, 0.2);
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+}
+.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-header .ant-skeleton-avatar-lg {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+}
+.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-header .ant-skeleton-avatar-sm {
+  width: 24px;
+  height: 24px;
+  line-height: 24px;
+}
+.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-content {
+  display: table-cell;
+  width: 100%;
+  vertical-align: top;
+}
+.ant-skeleton-content .ant-skeleton-title {
+  width: 100%;
+  height: 16px;
+  margin-top: 16px;
+  background: rgba(190, 190, 190, 0.2);
+  border-radius: 4px;
+}
+.ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {
+  margin-top: 24px;
+}
+.ant-skeleton-content .ant-skeleton-paragraph {
+  padding: 0;
+}
+.ant-skeleton-content .ant-skeleton-paragraph > li {
+  width: 100%;
+  height: 16px;
+  list-style: none;
+  background: rgba(190, 190, 190, 0.2);
+  border-radius: 4px;
+}
+.ant-skeleton-content .ant-skeleton-paragraph > li:last-child:not(:first-child):not(:nth-child(2)) {
+  width: 61%;
+}
+.ant-skeleton-content .ant-skeleton-paragraph > li + li {
+  margin-top: 16px;
+}
+.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title {
+  margin-top: 12px;
+}
+.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {
+  margin-top: 28px;
+}
+.ant-skeleton-round .ant-skeleton-content .ant-skeleton-title,
+.ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph > li {
+  border-radius: 100px;
+}
+.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title,
+.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {
+  background: -webkit-gradient(linear, left top, right top, color-stop(25%, rgba(190, 190, 190, 0.2)), color-stop(37%, rgba(255, 255, 255, 0.16)), color-stop(63%, rgba(190, 190, 190, 0.2)));
+  background: linear-gradient(90deg, rgba(190, 190, 190, 0.2) 25%, rgba(255, 255, 255, 0.16) 37%, rgba(190, 190, 190, 0.2) 63%);
+  background-size: 400% 100%;
+  -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+          animation: ant-skeleton-loading 1.4s ease infinite;
+}
+.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {
+  background: -webkit-gradient(linear, left top, right top, color-stop(25%, rgba(190, 190, 190, 0.2)), color-stop(37%, rgba(255, 255, 255, 0.16)), color-stop(63%, rgba(190, 190, 190, 0.2)));
+  background: linear-gradient(90deg, rgba(190, 190, 190, 0.2) 25%, rgba(255, 255, 255, 0.16) 37%, rgba(190, 190, 190, 0.2) 63%);
+  background-size: 400% 100%;
+  -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+          animation: ant-skeleton-loading 1.4s ease infinite;
+}
+.ant-skeleton.ant-skeleton-active .ant-skeleton-button {
+  background: -webkit-gradient(linear, left top, right top, color-stop(25%, rgba(190, 190, 190, 0.2)), color-stop(37%, rgba(255, 255, 255, 0.16)), color-stop(63%, rgba(190, 190, 190, 0.2)));
+  background: linear-gradient(90deg, rgba(190, 190, 190, 0.2) 25%, rgba(255, 255, 255, 0.16) 37%, rgba(190, 190, 190, 0.2) 63%);
+  background-size: 400% 100%;
+  -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+          animation: ant-skeleton-loading 1.4s ease infinite;
+}
+.ant-skeleton.ant-skeleton-active .ant-skeleton-input {
+  background: -webkit-gradient(linear, left top, right top, color-stop(25%, rgba(190, 190, 190, 0.2)), color-stop(37%, rgba(255, 255, 255, 0.16)), color-stop(63%, rgba(190, 190, 190, 0.2)));
+  background: linear-gradient(90deg, rgba(190, 190, 190, 0.2) 25%, rgba(255, 255, 255, 0.16) 37%, rgba(190, 190, 190, 0.2) 63%);
+  background-size: 400% 100%;
+  -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+          animation: ant-skeleton-loading 1.4s ease infinite;
+}
+.ant-skeleton.ant-skeleton-active .ant-skeleton-image {
+  background: -webkit-gradient(linear, left top, right top, color-stop(25%, rgba(190, 190, 190, 0.2)), color-stop(37%, rgba(255, 255, 255, 0.16)), color-stop(63%, rgba(190, 190, 190, 0.2)));
+  background: linear-gradient(90deg, rgba(190, 190, 190, 0.2) 25%, rgba(255, 255, 255, 0.16) 37%, rgba(190, 190, 190, 0.2) 63%);
+  background-size: 400% 100%;
+  -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+          animation: ant-skeleton-loading 1.4s ease infinite;
+}
+.ant-skeleton-element {
+  display: inline-block;
+  width: auto;
+}
+.ant-skeleton-element .ant-skeleton-button {
+  display: inline-block;
+  vertical-align: top;
+  background: rgba(190, 190, 190, 0.2);
+  border-radius: 2px;
+  width: 64px;
+  height: 32px;
+  line-height: 32px;
+}
+.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle {
+  width: 32px;
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round {
+  border-radius: 32px;
+}
+.ant-skeleton-element .ant-skeleton-button-lg {
+  width: 80px;
+  height: 40px;
+  line-height: 40px;
+}
+.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-circle {
+  width: 40px;
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-round {
+  border-radius: 40px;
+}
+.ant-skeleton-element .ant-skeleton-button-sm {
+  width: 48px;
+  height: 24px;
+  line-height: 24px;
+}
+.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-circle {
+  width: 24px;
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-round {
+  border-radius: 24px;
+}
+.ant-skeleton-element .ant-skeleton-avatar {
+  display: inline-block;
+  vertical-align: top;
+  background: rgba(190, 190, 190, 0.2);
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+}
+.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-avatar-lg {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+}
+.ant-skeleton-element .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-avatar-sm {
+  width: 24px;
+  height: 24px;
+  line-height: 24px;
+}
+.ant-skeleton-element .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-input {
+  display: inline-block;
+  vertical-align: top;
+  background: rgba(190, 190, 190, 0.2);
+  width: 100%;
+  height: 32px;
+  line-height: 32px;
+}
+.ant-skeleton-element .ant-skeleton-input-lg {
+  width: 100%;
+  height: 40px;
+  line-height: 40px;
+}
+.ant-skeleton-element .ant-skeleton-input-sm {
+  width: 100%;
+  height: 24px;
+  line-height: 24px;
+}
+.ant-skeleton-element .ant-skeleton-image {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  vertical-align: top;
+  background: rgba(190, 190, 190, 0.2);
+  width: 96px;
+  height: 96px;
+  line-height: 96px;
+}
+.ant-skeleton-element .ant-skeleton-image.ant-skeleton-image-circle {
+  border-radius: 50%;
+}
+.ant-skeleton-element .ant-skeleton-image-path {
+  fill: #bfbfbf;
+}
+.ant-skeleton-element .ant-skeleton-image-svg {
+  width: 48px;
+  height: 48px;
+  line-height: 48px;
+  max-width: 192px;
+  max-height: 192px;
+}
+.ant-skeleton-element .ant-skeleton-image-svg.ant-skeleton-image-circle {
+  border-radius: 50%;
+}
+@-webkit-keyframes ant-skeleton-loading {
+  0% {
+    background-position: 100% 50%;
+  }
+  100% {
+    background-position: 0 50%;
+  }
+}
+@keyframes ant-skeleton-loading {
+  0% {
+    background-position: 100% 50%;
+  }
+  100% {
+    background-position: 0 50%;
+  }
+}
+.ant-skeleton-rtl {
+  direction: rtl;
+}
+.ant-skeleton-rtl .ant-skeleton-header {
+  padding-right: 0;
+  padding-left: 16px;
+}
+.ant-skeleton-rtl.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title,
+.ant-skeleton-rtl.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {
+  -webkit-animation-name: ant-skeleton-loading-rtl;
+          animation-name: ant-skeleton-loading-rtl;
+}
+.ant-skeleton-rtl.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {
+  -webkit-animation-name: ant-skeleton-loading-rtl;
+          animation-name: ant-skeleton-loading-rtl;
+}
+@-webkit-keyframes ant-skeleton-loading-rtl {
+  0% {
+    background-position: 0% 50%;
+  }
+  100% {
+    background-position: 100% 50%;
+  }
+}
+@keyframes ant-skeleton-loading-rtl {
+  0% {
+    background-position: 0% 50%;
+  }
+  100% {
+    background-position: 100% 50%;
+  }
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-slider {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  height: 12px;
+  margin: 10px 6px 10px;
+  padding: 4px 0;
+  cursor: pointer;
+  -ms-touch-action: none;
+      touch-action: none;
+}
+.ant-slider-vertical {
+  width: 12px;
+  height: 100%;
+  margin: 6px 10px;
+  padding: 0 4px;
+}
+.ant-slider-vertical .ant-slider-rail {
+  width: 4px;
+  height: 100%;
+}
+.ant-slider-vertical .ant-slider-track {
+  width: 4px;
+}
+.ant-slider-vertical .ant-slider-handle {
+  margin-top: -6px;
+  margin-left: -5px;
+}
+.ant-slider-vertical .ant-slider-mark {
+  top: 0;
+  left: 12px;
+  width: 18px;
+  height: 100%;
+}
+.ant-slider-vertical .ant-slider-mark-text {
+  left: 4px;
+  white-space: nowrap;
+}
+.ant-slider-vertical .ant-slider-step {
+  width: 4px;
+  height: 100%;
+}
+.ant-slider-vertical .ant-slider-dot {
+  top: auto;
+  left: 2px;
+  margin-bottom: -4px;
+}
+.ant-slider-tooltip .ant-tooltip-inner {
+  min-width: unset;
+}
+.ant-slider-rtl.ant-slider-vertical .ant-slider-handle {
+  margin-right: -5px;
+  margin-left: 0;
+}
+.ant-slider-rtl.ant-slider-vertical .ant-slider-mark {
+  right: 12px;
+  left: auto;
+}
+.ant-slider-rtl.ant-slider-vertical .ant-slider-mark-text {
+  right: 4px;
+  left: auto;
+}
+.ant-slider-rtl.ant-slider-vertical .ant-slider-dot {
+  right: 2px;
+  left: auto;
+}
+.ant-slider-with-marks {
+  margin-bottom: 28px;
+}
+.ant-slider-rail {
+  position: absolute;
+  width: 100%;
+  height: 4px;
+  background-color: var(--content_bg);
+  border-radius: 2px;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+}
+.ant-slider-track {
+  position: absolute;
+  height: 4px;
+  background-color: #153450;
+  border-radius: 2px;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+}
+.ant-slider-handle {
+  position: absolute;
+  width: 14px;
+  height: 14px;
+  margin-top: -5px;
+  background-color: var(--content_bg);
+  border: solid 2px #153450;
+  border-radius: 50%;
+  -webkit-box-shadow: 0;
+          box-shadow: 0;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s, -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
+  transition: border-color 0.3s, -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
+  transition: border-color 0.3s, box-shadow 0.6s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
+  transition: border-color 0.3s, box-shadow 0.6s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
+}
+.ant-slider-handle-dragging.ant-slider-handle-dragging.ant-slider-handle-dragging {
+  border-color: #4697e3;
+  -webkit-box-shadow: 0 0 0 5px rgba(23, 125, 220, 0.12);
+          box-shadow: 0 0 0 5px rgba(23, 125, 220, 0.12);
+}
+.ant-slider-handle:focus {
+  border-color: #4697e3;
+  outline: none;
+  -webkit-box-shadow: 0 0 0 5px rgba(23, 125, 220, 0.12);
+          box-shadow: 0 0 0 5px rgba(23, 125, 220, 0.12);
+}
+.ant-slider-handle.ant-tooltip-open {
+  border-color: var(--menu_selected_bg);
+}
+.ant-slider:hover .ant-slider-rail {
+  background-color: #cac1c1;
+}
+.ant-slider:hover .ant-slider-track {
+  background-color: #16436e;
+}
+.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
+  border-color: #16436e;
+}
+.ant-slider-mark {
+  position: absolute;
+  top: 14px;
+  left: 0;
+  width: 100%;
+  font-size: 14px;
+}
+.ant-slider-mark-text {
+  position: absolute;
+  display: inline-block;
+  color: rgba(255, 255, 255, 0.45);
+  text-align: center;
+  word-break: keep-all;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-slider-mark-text-active {
+  color: var(--text_cl);
+}
+.ant-slider-step {
+  position: absolute;
+  width: 100%;
+  height: 4px;
+  background: transparent;
+}
+.ant-slider-dot {
+  position: absolute;
+  top: -2px;
+  width: 8px;
+  height: 8px;
+  margin-left: -4px;
+  background-color: var(--content_bg);
+  border: 2px solid #5a6367;
+  border-radius: 50%;
+  cursor: pointer;
+}
+.ant-slider-dot:first-child {
+  margin-left: -4px;
+}
+.ant-slider-dot:last-child {
+  margin-left: -4px;
+}
+.ant-slider-dot-active {
+  border-color: #16436e;
+}
+.ant-slider-disabled {
+  cursor: not-allowed;
+}
+.ant-slider-disabled .ant-slider-track {
+  background-color: rgba(255, 255, 255, 0.3) !important;
+}
+.ant-slider-disabled .ant-slider-handle,
+.ant-slider-disabled .ant-slider-dot {
+  background-color: var(--content_bg);
+  border-color: rgba(255, 255, 255, 0.3) !important;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  cursor: not-allowed;
+}
+.ant-slider-disabled .ant-slider-mark-text,
+.ant-slider-disabled .ant-slider-dot {
+  cursor: not-allowed !important;
+}
+.ant-slider-rtl {
+  direction: rtl;
+}
+.ant-slider-rtl .ant-slider-mark {
+  right: 0;
+  left: auto;
+}
+.ant-slider-rtl .ant-slider-dot {
+  margin-right: -4px;
+  margin-left: 0;
+}
+.ant-slider-rtl .ant-slider-dot:first-child {
+  margin-right: -4px;
+  margin-left: 0;
+}
+.ant-slider-rtl .ant-slider-dot:last-child {
+  margin-right: -4px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-space {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+}
+.ant-space-vertical {
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-space-align-center {
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-space-align-start {
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+}
+.ant-space-align-end {
+  -webkit-box-align: end;
+      -ms-flex-align: end;
+          align-items: flex-end;
+}
+.ant-space-align-baseline {
+  -webkit-box-align: baseline;
+      -ms-flex-align: baseline;
+          align-items: baseline;
+}
+.ant-space-item:empty {
+  display: none;
+}
+.ant-space-rtl {
+  direction: rtl;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-statistic {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+}
+.ant-statistic-title {
+  margin-bottom: 4px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+}
+.ant-statistic-content {
+  color: var(--text_cl);
+  font-size: 24px;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+}
+.ant-statistic-content-value {
+  display: inline-block;
+  direction: ltr;
+}
+.ant-statistic-content-prefix,
+.ant-statistic-content-suffix {
+  display: inline-block;
+}
+.ant-statistic-content-prefix {
+  margin-right: 4px;
+}
+.ant-statistic-content-suffix {
+  margin-left: 4px;
+}
+.ant-statistic-rtl {
+  direction: rtl;
+}
+.ant-statistic-rtl .ant-statistic-content-prefix {
+  margin-right: 0;
+  margin-left: 4px;
+}
+.ant-statistic-rtl .ant-statistic-content-suffix {
+  margin-right: 4px;
+  margin-left: 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-steps {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  width: 100%;
+  font-size: 0;
+  text-align: initial;
+}
+.ant-steps-item {
+  position: relative;
+  display: inline-block;
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  overflow: hidden;
+  vertical-align: top;
+}
+.ant-steps-item-container {
+  outline: none;
+}
+.ant-steps-item:last-child {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-tail,
+.ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {
+  display: none;
+}
+.ant-steps-item-icon,
+.ant-steps-item-content {
+  display: inline-block;
+  vertical-align: top;
+}
+.ant-steps-item-icon {
+  width: 32px;
+  height: 32px;
+  margin: 0 8px 0 0;
+  font-size: 16px;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+  line-height: 32px;
+  text-align: center;
+  border: 1px solid rgba(255, 255, 255, 0.3);
+  border-radius: 32px;
+  -webkit-transition: background-color 0.3s, border-color 0.3s;
+  transition: background-color 0.3s, border-color 0.3s;
+}
+.ant-steps-item-icon .ant-steps-icon {
+  position: relative;
+  top: -1px;
+  color: var(--menu_selected_bg);
+  line-height: 1;
+}
+.ant-steps-item-tail {
+  position: absolute;
+  top: 12px;
+  left: 0;
+  width: 100%;
+  padding: 0 10px;
+}
+.ant-steps-item-tail::after {
+  display: inline-block;
+  width: 100%;
+  height: 1px;
+  background: #5a6367;
+  border-radius: 1px;
+  -webkit-transition: background 0.3s;
+  transition: background 0.3s;
+  content: '';
+}
+.ant-steps-item-title {
+  position: relative;
+  display: inline-block;
+  padding-right: 16px;
+  color: var(--text_cl);
+  font-size: 16px;
+  line-height: 32px;
+}
+.ant-steps-item-title::after {
+  position: absolute;
+  top: 16px;
+  left: 100%;
+  display: block;
+  width: 9999px;
+  height: 1px;
+  background: #5a6367;
+  content: '';
+}
+.ant-steps-item-subtitle {
+  display: inline;
+  margin-left: 8px;
+  color: rgba(255, 255, 255, 0.45);
+  font-weight: normal;
+  font-size: 14px;
+}
+.ant-steps-item-description {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+}
+.ant-steps-item-wait .ant-steps-item-icon {
+  background-color: transparent;
+  border-color: rgba(255, 255, 255, 0.3);
+}
+.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {
+  color: rgba(255, 255, 255, 0.3);
+}
+.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+  background: rgba(255, 255, 255, 0.3);
+}
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {
+  background-color: #5a6367;
+}
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after {
+  background-color: #5a6367;
+}
+.ant-steps-item-process .ant-steps-item-icon {
+  background-color: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+  background: var(--menu_selected_bg);
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+  color: var(--text_cl);
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {
+  background-color: #5a6367;
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+  color: var(--text_cl);
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail::after {
+  background-color: #5a6367;
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-icon {
+  background: var(--menu_selected_bg);
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-icon .ant-steps-icon {
+  color: #fff;
+}
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-title {
+  font-weight: 500;
+}
+.ant-steps-item-finish .ant-steps-item-icon {
+  background-color: transparent;
+  border-color: var(--menu_selected_bg);
+}
+.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+  background: var(--menu_selected_bg);
+}
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+  color: var(--text_cl);
+}
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {
+  background-color: var(--menu_selected_bg);
+}
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after {
+  background-color: var(--menu_selected_bg);
+}
+.ant-steps-item-error .ant-steps-item-icon {
+  background-color: transparent;
+  border-color: #a61d24;
+}
+.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {
+  color: #a61d24;
+}
+.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+  background: #a61d24;
+}
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+  color: #a61d24;
+}
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {
+  background-color: #5a6367;
+}
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+  color: #a61d24;
+}
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-tail::after {
+  background-color: #5a6367;
+}
+.ant-steps-item.ant-steps-next-error .ant-steps-item-title::after {
+  background: #a61d24;
+}
+.ant-steps-item-disabled {
+  cursor: not-allowed;
+}
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] {
+  cursor: pointer;
+}
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-title,
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-subtitle,
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-description,
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-icon .ant-steps-icon {
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-title,
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-subtitle,
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-description {
+  color: var(--menu_selected_bg);
+}
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon {
+  border-color: var(--menu_selected_bg);
+}
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon .ant-steps-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+  padding-left: 16px;
+  white-space: nowrap;
+}
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child {
+  padding-left: 0;
+}
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title {
+  padding-right: 0;
+}
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail {
+  display: none;
+}
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description {
+  max-width: 140px;
+  white-space: normal;
+}
+.ant-steps-item-custom > .ant-steps-item-container > .ant-steps-item-icon {
+  height: auto;
+  background: none;
+  border: 0;
+}
+.ant-steps-item-custom > .ant-steps-item-container > .ant-steps-item-icon > .ant-steps-icon {
+  top: 0px;
+  left: 0.5px;
+  width: 32px;
+  height: 32px;
+  font-size: 24px;
+  line-height: 32px;
+}
+.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon {
+  width: auto;
+  background: none;
+}
+.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+  padding-left: 12px;
+}
+.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child {
+  padding-left: 0;
+}
+.ant-steps-small .ant-steps-item-icon {
+  width: 24px;
+  height: 24px;
+  margin: 0 8px 0 0;
+  font-size: 12px;
+  line-height: 24px;
+  text-align: center;
+  border-radius: 24px;
+}
+.ant-steps-small .ant-steps-item-title {
+  padding-right: 12px;
+  font-size: 14px;
+  line-height: 24px;
+}
+.ant-steps-small .ant-steps-item-title::after {
+  top: 12px;
+}
+.ant-steps-small .ant-steps-item-description {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+}
+.ant-steps-small .ant-steps-item-tail {
+  top: 8px;
+}
+.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {
+  width: inherit;
+  height: inherit;
+  line-height: inherit;
+  background: none;
+  border: 0;
+  border-radius: 0;
+}
+.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
+  font-size: 24px;
+  line-height: 24px;
+  -webkit-transform: none;
+          transform: none;
+}
+.ant-steps-vertical {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-steps-vertical > .ant-steps-item {
+  display: block;
+  -webkit-box-flex: 1;
+      -ms-flex: 1 0 auto;
+          flex: 1 0 auto;
+  padding-left: 0;
+  overflow: visible;
+}
+.ant-steps-vertical > .ant-steps-item .ant-steps-item-icon {
+  float: left;
+  margin-right: 16px;
+}
+.ant-steps-vertical > .ant-steps-item .ant-steps-item-content {
+  display: block;
+  min-height: 48px;
+  overflow: hidden;
+}
+.ant-steps-vertical > .ant-steps-item .ant-steps-item-title {
+  line-height: 32px;
+}
+.ant-steps-vertical > .ant-steps-item .ant-steps-item-description {
+  padding-bottom: 12px;
+}
+.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+  position: absolute;
+  top: 0;
+  left: 16px;
+  width: 1px;
+  height: 100%;
+  padding: 38px 0 6px;
+}
+.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail::after {
+  width: 1px;
+  height: 100%;
+}
+.ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail {
+  display: block;
+}
+.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {
+  display: none;
+}
+.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail {
+  position: absolute;
+  top: 0;
+  left: 12px;
+  padding: 30px 0 6px;
+}
+.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title {
+  line-height: 24px;
+}
+.ant-steps-label-vertical .ant-steps-item {
+  overflow: visible;
+}
+.ant-steps-label-vertical .ant-steps-item-tail {
+  margin-left: 58px;
+  padding: 3.5px 24px;
+}
+.ant-steps-label-vertical .ant-steps-item-content {
+  display: block;
+  width: 116px;
+  margin-top: 8px;
+  text-align: center;
+}
+.ant-steps-label-vertical .ant-steps-item-icon {
+  display: inline-block;
+  margin-left: 42px;
+}
+.ant-steps-label-vertical .ant-steps-item-title {
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-steps-label-vertical .ant-steps-item-title::after {
+  display: none;
+}
+.ant-steps-label-vertical .ant-steps-item-subtitle {
+  display: block;
+  margin-bottom: 4px;
+  margin-left: 0;
+  line-height: 1.5715;
+}
+.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon {
+  margin-left: 46px;
+}
+.ant-steps-dot .ant-steps-item-title,
+.ant-steps-dot.ant-steps-small .ant-steps-item-title {
+  line-height: 1.5715;
+}
+.ant-steps-dot .ant-steps-item-tail,
+.ant-steps-dot.ant-steps-small .ant-steps-item-tail {
+  top: 2px;
+  width: 100%;
+  margin: 0 0 0 70px;
+  padding: 0;
+}
+.ant-steps-dot .ant-steps-item-tail::after,
+.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after {
+  width: calc(100% - 20px);
+  height: 3px;
+  margin-left: 12px;
+}
+.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot,
+.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot {
+  left: 2px;
+}
+.ant-steps-dot .ant-steps-item-icon,
+.ant-steps-dot.ant-steps-small .ant-steps-item-icon {
+  width: 8px;
+  height: 8px;
+  margin-left: 67px;
+  padding-right: 0;
+  line-height: 8px;
+  background: transparent;
+  border: 0;
+}
+.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,
+.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {
+  position: relative;
+  float: left;
+  width: 100%;
+  height: 100%;
+  border-radius: 100px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  /* expand hover area */
+}
+.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after,
+.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after {
+  position: absolute;
+  top: -12px;
+  left: -26px;
+  width: 60px;
+  height: 32px;
+  background: rgba(0, 0, 0, 0.001);
+  content: '';
+}
+.ant-steps-dot .ant-steps-item-content,
+.ant-steps-dot.ant-steps-small .ant-steps-item-content {
+  width: 140px;
+}
+.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon,
+.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon {
+  position: relative;
+  top: -1px;
+  width: 10px;
+  height: 10px;
+  line-height: 10px;
+  background: none;
+}
+.ant-steps-dot .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot,
+.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot {
+  left: 0;
+}
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {
+  margin-top: 8px;
+  margin-left: 0;
+  background: none;
+}
+.ant-steps-vertical.ant-steps-dot .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+  top: 2px;
+  left: -9px;
+  margin: 0;
+  padding: 22px 0 4px;
+}
+.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {
+  left: 0;
+}
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-content {
+  width: inherit;
+}
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-item-container .ant-steps-item-icon .ant-steps-icon-dot {
+  left: -2px;
+}
+.ant-steps-navigation {
+  padding-top: 12px;
+}
+.ant-steps-navigation.ant-steps-small .ant-steps-item-container {
+  margin-left: -12px;
+}
+.ant-steps-navigation .ant-steps-item {
+  overflow: visible;
+  text-align: center;
+}
+.ant-steps-navigation .ant-steps-item-container {
+  display: inline-block;
+  height: 100%;
+  margin-left: -16px;
+  padding-bottom: 12px;
+  text-align: left;
+  -webkit-transition: opacity 0.3s;
+  transition: opacity 0.3s;
+}
+.ant-steps-navigation .ant-steps-item-container .ant-steps-item-content {
+  max-width: auto;
+}
+.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title {
+  max-width: 100%;
+  padding-right: 0;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title::after {
+  display: none;
+}
+.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button'] {
+  cursor: pointer;
+}
+.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button']:hover {
+  opacity: 0.85;
+}
+.ant-steps-navigation .ant-steps-item:last-child {
+  -webkit-box-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+}
+.ant-steps-navigation .ant-steps-item:last-child::after {
+  display: none;
+}
+.ant-steps-navigation .ant-steps-item::after {
+  position: absolute;
+  top: 50%;
+  left: 100%;
+  display: inline-block;
+  width: 12px;
+  height: 12px;
+  margin-top: -14px;
+  margin-left: -2px;
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  border-bottom: none;
+  border-left: none;
+  -webkit-transform: rotate(45deg);
+          transform: rotate(45deg);
+  content: '';
+}
+.ant-steps-navigation .ant-steps-item::before {
+  position: absolute;
+  bottom: 0;
+  left: 50%;
+  display: inline-block;
+  width: 0;
+  height: 2px;
+  background-color: var(--menu_selected_bg);
+  -webkit-transition: width 0.3s, left 0.3s;
+  transition: width 0.3s, left 0.3s;
+  -webkit-transition-timing-function: ease-out;
+          transition-timing-function: ease-out;
+  content: '';
+}
+.ant-steps-navigation .ant-steps-item.ant-steps-item-active::before {
+  left: 0;
+  width: 100%;
+}
+@media (max-width: 480px) {
+  .ant-steps-navigation > .ant-steps-item {
+    margin-right: 0 !important;
+  }
+  .ant-steps-navigation > .ant-steps-item::before {
+    display: none;
+  }
+  .ant-steps-navigation > .ant-steps-item.ant-steps-item-active::before {
+    top: 0;
+    right: 0;
+    left: unset;
+    display: block;
+    width: 3px;
+    height: calc(100% - 24px);
+  }
+  .ant-steps-navigation > .ant-steps-item::after {
+    position: relative;
+    top: -2px;
+    left: 50%;
+    display: block;
+    width: 8px;
+    height: 8px;
+    margin-bottom: 8px;
+    text-align: center;
+    -webkit-transform: rotate(135deg);
+            transform: rotate(135deg);
+  }
+  .ant-steps-navigation > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+    visibility: hidden;
+  }
+}
+.ant-steps-rtl {
+  direction: rtl;
+}
+.ant-steps.ant-steps-rtl .ant-steps-item-icon {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-steps-rtl .ant-steps-item-tail {
+  right: 0;
+  left: auto;
+}
+.ant-steps-rtl .ant-steps-item-title {
+  padding-right: 0;
+  padding-left: 16px;
+}
+.ant-steps-rtl .ant-steps-item-title::after {
+  right: 100%;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+  padding-right: 16px;
+  padding-left: 0;
+}
+.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child {
+  padding-right: 0;
+}
+.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title {
+  padding-left: 0;
+}
+.ant-steps-rtl .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
+  right: 0.5px;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-navigation.ant-steps-small .ant-steps-item-container {
+  margin-right: -12px;
+  margin-left: 0;
+}
+.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container {
+  margin-right: -16px;
+  margin-left: 0;
+  text-align: right;
+}
+.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title {
+  padding-left: 0;
+}
+.ant-steps-rtl.ant-steps-navigation .ant-steps-item::after {
+  right: 100%;
+  left: auto;
+  margin-right: -2px;
+  margin-left: 0;
+  -webkit-transform: rotate(225deg);
+          transform: rotate(225deg);
+}
+.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+  padding-right: 12px;
+  padding-left: 0;
+}
+.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child {
+  padding-right: 0;
+}
+.ant-steps-rtl.ant-steps-small .ant-steps-item-title {
+  padding-right: 0;
+  padding-left: 12px;
+}
+.ant-steps-rtl.ant-steps-vertical > .ant-steps-item .ant-steps-item-icon {
+  float: right;
+  margin-right: 0;
+  margin-left: 16px;
+}
+.ant-steps-rtl.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+  right: 16px;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail {
+  right: 12px;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-label-vertical .ant-steps-item-title {
+  padding-left: 0;
+}
+.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail,
+.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail {
+  margin: 0 70px 0 0;
+}
+.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail::after,
+.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after {
+  margin-right: 12px;
+  margin-left: 0;
+}
+.ant-steps-rtl.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot,
+.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot {
+  right: 2px;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon,
+.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon {
+  margin-right: 67px;
+  margin-left: 0;
+}
+.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,
+.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {
+  /* expand hover area */
+}
+.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,
+.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {
+  float: right;
+}
+.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after,
+.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after {
+  right: -26px;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {
+  margin-right: 0;
+  margin-left: 16px;
+}
+.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+  right: -9px;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {
+  right: 0;
+  left: auto;
+}
+.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot {
+  right: -2px;
+  left: auto;
+}
+.ant-steps-with-progress .ant-steps-item {
+  padding-top: 4px;
+}
+.ant-steps-with-progress .ant-steps-item .ant-steps-item-tail {
+  top: 4px !important;
+}
+.ant-steps-with-progress .ant-steps-item-icon {
+  position: relative;
+}
+.ant-steps-with-progress .ant-steps-item-icon .ant-progress {
+  position: absolute;
+  top: -5px;
+  right: -5px;
+  bottom: -5px;
+  left: -5px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-switch {
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  min-width: 44px;
+  height: 22px;
+  line-height: 22px;
+  vertical-align: middle;
+  background-color: rgba(255, 255, 255, 0.3);
+  border: 0;
+  border-radius: 100px;
+  cursor: pointer;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-switch:focus {
+  outline: 0;
+  -webkit-box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1);
+          box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1);
+}
+.ant-switch-checked:focus {
+  -webkit-box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+          box-shadow: 0 0 0 2px rgba(23, 125, 220, 0.2);
+}
+.ant-switch:focus:hover {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-switch-checked {
+  background-color: var(--menu_selected_bg);
+}
+.ant-switch-loading,
+.ant-switch-disabled {
+  cursor: not-allowed;
+  opacity: 0.4;
+}
+.ant-switch-loading *,
+.ant-switch-disabled * {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  cursor: not-allowed;
+}
+.ant-switch-inner {
+  display: block;
+  margin: 0 7px 0 25px;
+  color: #fff;
+  font-size: 12px;
+  -webkit-transition: margin 0.2s;
+  transition: margin 0.2s;
+}
+.ant-switch-checked .ant-switch-inner {
+  margin: 0 25px 0 7px;
+}
+.ant-switch-handle {
+  position: absolute;
+  top: 2px;
+  left: 2px;
+  width: 18px;
+  height: 18px;
+  -webkit-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out;
+}
+.ant-switch-handle::before {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background-color: #fff;
+  border-radius: 9px;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);
+          box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);
+  -webkit-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out;
+  content: '';
+}
+.ant-switch-checked .ant-switch-handle {
+  left: calc(100% - 18px - 2px);
+}
+.ant-switch:not(.ant-switch-disabled):active .ant-switch-handle::before {
+  right: -30%;
+  left: 0;
+}
+.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-handle::before {
+  right: 0;
+  left: -30%;
+}
+.ant-switch-loading-icon {
+  position: relative;
+  top: 2px;
+  color: rgba(0, 0, 0, 0.65);
+  vertical-align: top;
+}
+.ant-switch-checked .ant-switch-loading-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-switch-small {
+  min-width: 28px;
+  height: 16px;
+  line-height: 16px;
+}
+.ant-switch-small .ant-switch-inner {
+  margin: 0 5px 0 18px;
+  font-size: 12px;
+}
+.ant-switch-small .ant-switch-handle {
+  width: 12px;
+  height: 12px;
+}
+.ant-switch-small .ant-switch-loading-icon {
+  top: 1.5px;
+  font-size: 9px;
+}
+.ant-switch-small.ant-switch-checked .ant-switch-inner {
+  margin: 0 18px 0 5px;
+}
+.ant-switch-small.ant-switch-checked .ant-switch-handle {
+  left: calc(100% - 12px - 2px);
+}
+.ant-switch-rtl {
+  direction: rtl;
+}
+.ant-switch-rtl .ant-switch-inner {
+  margin: 0 25px 0 7px;
+}
+.ant-switch-rtl .ant-switch-handle {
+  right: 2px;
+  left: auto;
+}
+.ant-switch-rtl:not(.ant-switch-rtl-disabled):active .ant-switch-handle::before {
+  right: 0;
+  left: -30%;
+}
+.ant-switch-rtl:not(.ant-switch-rtl-disabled):active.ant-switch-checked .ant-switch-handle::before {
+  right: -30%;
+  left: 0;
+}
+.ant-switch-rtl.ant-switch-checked .ant-switch-inner {
+  margin: 0 7px 0 25px;
+}
+.ant-switch-rtl.ant-switch-checked .ant-switch-handle {
+  right: calc(100% - 18px - 2px);
+}
+.ant-switch-rtl.ant-switch-small.ant-switch-checked .ant-switch-handle {
+  right: calc(100% - 12px - 2px);
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-table.ant-table-middle {
+  font-size: 14px;
+}
+.ant-table.ant-table-middle .ant-table-title,
+.ant-table.ant-table-middle .ant-table-footer,
+.ant-table.ant-table-middle .ant-table-thead > tr > th,
+.ant-table.ant-table-middle .ant-table-tbody > tr > td,
+.ant-table.ant-table-middle tfoot > tr > th,
+.ant-table.ant-table-middle tfoot > tr > td {
+  padding: 12px 8px;
+}
+.ant-table.ant-table-middle .ant-table-thead th.ant-table-column-has-sorters {
+  padding: 0;
+}
+.ant-table.ant-table-middle .ant-table-thead .ant-table-filter-column {
+  margin: -12px -8px;
+}
+.ant-table.ant-table-middle .ant-table-thead .ant-table-filter-column-title {
+  padding: 12px 2.3em 12px 8px;
+}
+.ant-table.ant-table-middle .ant-table-thead .ant-table-column-sorters {
+  padding: 12px 8px;
+}
+.ant-table.ant-table-middle .ant-table-expanded-row-fixed {
+  margin: -12px -8px;
+}
+.ant-table.ant-table-middle .ant-table-tbody .ant-table-wrapper:only-child .ant-table {
+  margin: -12px -8px -12px 25px;
+}
+.ant-table.ant-table-small {
+  font-size: 14px;
+}
+.ant-table.ant-table-small .ant-table-title,
+.ant-table.ant-table-small .ant-table-footer,
+.ant-table.ant-table-small .ant-table-thead > tr > th,
+.ant-table.ant-table-small .ant-table-tbody > tr > td,
+.ant-table.ant-table-small tfoot > tr > th,
+.ant-table.ant-table-small tfoot > tr > td {
+  padding: 8px 8px;
+}
+.ant-table.ant-table-small .ant-table-thead th.ant-table-column-has-sorters {
+  padding: 0;
+}
+.ant-table.ant-table-small .ant-table-thead .ant-table-filter-column {
+  margin: -8px -8px;
+}
+.ant-table.ant-table-small .ant-table-thead .ant-table-filter-column-title {
+  padding: 8px 2.3em 8px 8px;
+}
+.ant-table.ant-table-small .ant-table-thead .ant-table-column-sorters {
+  padding: 8px 8px;
+}
+.ant-table.ant-table-small .ant-table-expanded-row-fixed {
+  margin: -8px -8px;
+}
+.ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table {
+  margin: -8px -8px -8px 25px;
+}
+.ant-table-small .ant-table-thead > tr > th {
+  background-color: var(--content_bg);
+}
+.ant-table-small .ant-table-selection-column {
+  width: 46px;
+  min-width: 46px;
+}
+.ant-table.ant-table-bordered > .ant-table-title {
+  border: 1px solid #5a6367;
+  border-bottom: 0;
+}
+.ant-table.ant-table-bordered > .ant-table-container {
+  border: 1px solid #5a6367;
+  border-right: 0;
+  border-bottom: 0;
+}
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > td,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > td,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > td {
+  border-right: 1px solid #5a6367;
+}
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr:not(:last-child) > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr:not(:last-child) > th,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr:not(:last-child) > th {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > .ant-table-cell-fix-right-first::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > .ant-table-cell-fix-right-first::after {
+  border-right: 1px solid #5a6367;
+}
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td > .ant-table-expanded-row-fixed,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed {
+  margin: -16px -17px;
+}
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td > .ant-table-expanded-row-fixed::after,
+.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed::after {
+  position: absolute;
+  top: 0;
+  right: 1px;
+  bottom: 0;
+  border-right: 1px solid #5a6367;
+  content: '';
+}
+.ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-expanded-row > td,
+.ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-placeholder > td {
+  border-right: 0;
+}
+.ant-table.ant-table-bordered.ant-table-middle > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed,
+.ant-table.ant-table-bordered.ant-table-middle > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed {
+  margin: -12px -9px;
+}
+.ant-table.ant-table-bordered.ant-table-small > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed,
+.ant-table.ant-table-bordered.ant-table-small > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed {
+  margin: -8px -9px;
+}
+.ant-table.ant-table-bordered > .ant-table-footer {
+  border: 1px solid #5a6367;
+  border-top: 0;
+}
+.ant-table-cell .ant-table-container:first-child {
+  border-top: 0;
+}
+.ant-table-cell-scrollbar {
+  -webkit-box-shadow: 0 1px 0 1px var(--content_bg);
+          box-shadow: 0 1px 0 1px var(--content_bg);
+}
+.ant-table-wrapper {
+  clear: both;
+  max-width: 100%;
+}
+.ant-table-wrapper::before {
+  display: table;
+  content: '';
+}
+.ant-table-wrapper::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-table {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  z-index: 0;
+  font-size: 14px;
+  background: var(--content_bg);
+  border-radius: 2px;
+}
+.ant-table table {
+  width: 100%;
+  text-align: left;
+  border-radius: 2px 2px 0 0;
+  border-collapse: separate;
+  border-spacing: 0;
+}
+.ant-table-thead > tr > th,
+.ant-table-tbody > tr > td,
+.ant-table tfoot > tr > th,
+.ant-table tfoot > tr > td {
+  position: relative;
+  padding: 16px 16px;
+  overflow-wrap: break-word;
+}
+.ant-table-cell-ellipsis {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  word-break: keep-all;
+}
+.ant-table-cell{
+  background:var(--content_bg);
+}
+.ant-table-cell-ellipsis.ant-table-cell-fix-left-last,
+.ant-table-cell-ellipsis.ant-table-cell-fix-right-first {
+  overflow: visible;
+}
+.ant-table-cell-ellipsis.ant-table-cell-fix-left-last .ant-table-cell-content,
+.ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.ant-table-title {
+  padding: 16px 16px;
+}
+.ant-table-footer {
+  padding: 16px 16px;
+  color: var(--text_cl);
+  background: rgba(255, 255, 255, 0.04);
+}
+.ant-table-thead > tr > th {
+  color: var(--text_cl);
+  font-weight: 500;
+  text-align: left;
+  background: var(--content_bg);
+  border-bottom: 1px solid #5a6367;
+  -webkit-transition: background 0.3s ease;
+  transition: background 0.3s ease;
+}
+.ant-table-thead > tr > th[colspan]:not([colspan='1']) {
+  text-align: center;
+}
+.ant-table-thead > tr:not(:last-child) > th[colspan] {
+  border-bottom: 0;
+}
+.ant-table-tbody > tr > td {
+  border-bottom: 1px solid #5a6367;
+  -webkit-transition: background 0.3s;
+  transition: background 0.3s;
+}
+.ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table {
+  margin: -16px -16px -16px 33px;
+}
+.ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td {
+  border-bottom: 0;
+}
+.ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:first-child,
+.ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:last-child {
+  border-radius: 0;
+}
+.ant-table-tbody > tr.ant-table-row:hover > td {
+  background: var(--content_bg);
+}
+.ant-table-tbody > tr.ant-table-row-selected > td {
+  background: var(--layout_bg);
+  border-color: rgba(0, 0, 0, 0.03);
+}
+.ant-table-tbody > tr.ant-table-row-selected:hover > td {
+  background: #0e161f;
+}
+.ant-table tfoot > tr > th,
+.ant-table tfoot > tr > td {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-table-pagination.ant-pagination {
+  margin: 16px 0;
+}
+.ant-table-pagination {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+.ant-table-pagination-left {
+  -webkit-box-pack: start;
+      -ms-flex-pack: start;
+          justify-content: flex-start;
+}
+.ant-table-pagination-center {
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+}
+.ant-table-pagination-right {
+  -webkit-box-pack: end;
+      -ms-flex-pack: end;
+          justify-content: flex-end;
+}
+.ant-table-thead th.ant-table-column-has-sorters {
+  padding: 0;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-table-thead th.ant-table-column-has-sorters:hover {
+  background: #5a6367;
+}
+.ant-table-thead th.ant-table-column-has-sorters:hover .ant-table-filter-trigger-container {
+  background: #353535;
+}
+.ant-table-thead th.ant-table-column-sort {
+  background: var(--content_bg);
+}
+td.ant-table-column-sort {
+  background: rgba(255, 255, 255, 0.01);
+}
+.ant-table-column-sorters-with-tooltip {
+  display: inline-block;
+  width: 100%;
+}
+.ant-table-column-sorters {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 16px 16px;
+}
+.ant-table-column-sorter {
+  margin-top: 0.15em;
+  margin-bottom: -0.15em;
+  margin-left: 8px;
+  color: #bfbfbf;
+}
+.ant-table-column-sorter-full {
+  margin-top: -0.2em;
+  margin-bottom: 0;
+}
+.ant-table-column-sorter-inner {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-table-column-sorter-up,
+.ant-table-column-sorter-down {
+  font-size: 11px;
+}
+.ant-table-column-sorter-up.active,
+.ant-table-column-sorter-down.active {
+  color: var(--menu_selected_bg);
+}
+.ant-table-column-sorter-up + .ant-table-column-sorter-down {
+  margin-top: -0.3em;
+}
+.ant-table-filter-column {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  margin: -16px -16px;
+}
+.ant-table-filter-column-title {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  padding: 16px 2.3em 16px 16px;
+}
+.ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column {
+  margin: 0;
+}
+.ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column-title {
+  padding: 0 2.3em 0 0;
+}
+.ant-table-filter-trigger-container {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -webkit-box-align: stretch;
+      -ms-flex-align: stretch;
+          align-items: stretch;
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+  cursor: pointer;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+}
+.ant-table-filter-trigger-container-open,
+.ant-table-filter-trigger-container:hover,
+.ant-table-thead th.ant-table-column-has-sorters:hover .ant-table-filter-trigger-container:hover {
+  background: #cac1c1;
+}
+.ant-table-filter-trigger {
+  display: block;
+  width: 2.3em;
+  color: #bfbfbf;
+  font-size: 12px;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-table-filter-trigger .anticon {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+}
+.ant-table-filter-trigger-container-open .ant-table-filter-trigger,
+.ant-table-filter-trigger:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-table-filter-trigger.active {
+  color: var(--menu_selected_bg);
+}
+.ant-table-filter-dropdown {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  min-width: 120px;
+  background-color: var(--layout_bg);
+  border-radius: 2px;
+  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2);
+}
+.ant-table-filter-dropdown .ant-dropdown-menu {
+  max-height: 264px;
+  overflow-x: hidden;
+  border: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.ant-table-filter-dropdown-submenu > ul {
+  max-height: calc(100vh - 130px);
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.ant-table-filter-dropdown .ant-checkbox-wrapper + span,
+.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span {
+  padding-left: 8px;
+}
+.ant-table-filter-dropdown-btns {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: justify;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+  padding: 7px 8px 7px 3px;
+  overflow: hidden;
+  background-color: var(--layout_bg);
+  border-top: 1px solid #5a6367;
+}
+.ant-table .ant-table-selection-col {
+  width: 32px;
+}
+table tr th.ant-table-selection-column,
+table tr td.ant-table-selection-column {
+  padding-right: 8px;
+  padding-left: 8px;
+  text-align: center;
+}
+table tr th.ant-table-selection-column .ant-radio-wrapper,
+table tr td.ant-table-selection-column .ant-radio-wrapper {
+  margin-right: 0;
+}
+.ant-table-selection {
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+}
+.ant-table-selection-extra {
+  position: absolute;
+  top: 0;
+  z-index: 1;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  -webkit-margin-start: 100%;
+          margin-inline-start: 100%;
+  -webkit-padding-start: 4px;
+          padding-inline-start: 4px;
+}
+.ant-table-selection-extra .anticon {
+  color: #bfbfbf;
+  font-size: 10px;
+}
+.ant-table-selection-extra .anticon:hover {
+  color: #a6a6a6;
+}
+.ant-table-expand-icon-col {
+  width: 48px;
+}
+.ant-table-row-expand-icon-cell {
+  text-align: center;
+}
+.ant-table-row-indent {
+  float: left;
+  height: 1px;
+}
+.ant-table-row-expand-icon {
+  color: var(--menu_selected_bg);
+  text-decoration: none;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  position: relative;
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  float: left;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  width: 17px;
+  height: 17px;
+  padding: 0;
+  color: inherit;
+  line-height: 17px;
+  background: transparent;
+  border: 1px solid #5a6367;
+  border-radius: 2px;
+  outline: none;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-table-row-expand-icon:focus,
+.ant-table-row-expand-icon:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-table-row-expand-icon:active {
+  color: #388ed3;
+}
+.ant-table-row-expand-icon:focus,
+.ant-table-row-expand-icon:hover,
+.ant-table-row-expand-icon:active {
+  border-color: currentColor;
+}
+.ant-table-row-expand-icon::before,
+.ant-table-row-expand-icon::after {
+  position: absolute;
+  background: currentColor;
+  -webkit-transition: -webkit-transform 0.3s ease-out;
+  transition: -webkit-transform 0.3s ease-out;
+  transition: transform 0.3s ease-out;
+  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;
+  content: '';
+}
+.ant-table-row-expand-icon::before {
+  top: 7px;
+  right: 3px;
+  left: 3px;
+  height: 1px;
+}
+.ant-table-row-expand-icon::after {
+  top: 3px;
+  bottom: 3px;
+  left: 7px;
+  width: 1px;
+  -webkit-transform: rotate(90deg);
+          transform: rotate(90deg);
+}
+.ant-table-row-expand-icon-collapsed::before {
+  -webkit-transform: rotate(-180deg);
+          transform: rotate(-180deg);
+}
+.ant-table-row-expand-icon-collapsed::after {
+  -webkit-transform: rotate(0deg);
+          transform: rotate(0deg);
+}
+.ant-table-row-expand-icon-spaced {
+  background: transparent;
+  border: 0;
+  visibility: hidden;
+}
+.ant-table-row-expand-icon-spaced::before,
+.ant-table-row-expand-icon-spaced::after {
+  display: none;
+  content: none;
+}
+.ant-table-row-indent + .ant-table-row-expand-icon {
+  margin-top: 2.5005px;
+  margin-right: 8px;
+}
+tr.ant-table-expanded-row > td,
+tr.ant-table-expanded-row:hover > td {
+  background: var(--content_bg);
+}
+tr.ant-table-expanded-row .ant-descriptions-view table {
+  width: auto;
+}
+.ant-table .ant-table-expanded-row-fixed {
+  position: relative;
+  margin: -16px -16px;
+  padding: 16px 16px;
+}
+.ant-table-tbody > tr.ant-table-placeholder {
+  text-align: center;
+}
+.ant-table-empty .ant-table-tbody > tr.ant-table-placeholder {
+  color: var(--text_cl);
+}
+.ant-table-tbody > tr.ant-table-placeholder:hover > td {
+  background: var(--content_bg);
+}
+.ant-table-cell-fix-left,
+.ant-table-cell-fix-right {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+  z-index: 2;
+  background: var(--content_bg);
+}
+.ant-table-cell-fix-left-first::after,
+.ant-table-cell-fix-left-last::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: -1px;
+  width: 30px;
+  -webkit-transform: translateX(100%);
+          transform: translateX(100%);
+  -webkit-transition: -webkit-box-shadow 0.3s;
+  transition: -webkit-box-shadow 0.3s;
+  transition: box-shadow 0.3s;
+  transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
+  content: '';
+  pointer-events: none;
+}
+.ant-table-cell-fix-right-first::after,
+.ant-table-cell-fix-right-last::after {
+  position: absolute;
+  top: 0;
+  bottom: -1px;
+  left: 0;
+  width: 30px;
+  -webkit-transform: translateX(-100%);
+          transform: translateX(-100%);
+  -webkit-transition: -webkit-box-shadow 0.3s;
+  transition: -webkit-box-shadow 0.3s;
+  transition: box-shadow 0.3s;
+  transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
+  content: '';
+  pointer-events: none;
+}
+.ant-table .ant-table-container::before,
+.ant-table .ant-table-container::after {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  width: 30px;
+  -webkit-transition: -webkit-box-shadow 0.3s;
+  transition: -webkit-box-shadow 0.3s;
+  transition: box-shadow 0.3s;
+  transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
+  content: '';
+  pointer-events: none;
+}
+.ant-table .ant-table-container::before {
+  left: 0;
+}
+.ant-table .ant-table-container::after {
+  right: 0;
+}
+.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container {
+  position: relative;
+}
+.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before {
+  -webkit-box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.45);
+          box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.45);
+}
+.ant-table-ping-left .ant-table-cell-fix-left-first::after,
+.ant-table-ping-left .ant-table-cell-fix-left-last::after {
+  -webkit-box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.45);
+          box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.45);
+}
+.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container {
+  position: relative;
+}
+.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after {
+  -webkit-box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.45);
+          box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.45);
+}
+.ant-table-ping-right .ant-table-cell-fix-right-first::after,
+.ant-table-ping-right .ant-table-cell-fix-right-last::after {
+  -webkit-box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.45);
+          box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.45);
+}
+.ant-table-sticky-header {
+  position: -webkit-sticky;
+  position: sticky;
+  z-index: calc(2 + 1);
+}
+.ant-table-sticky-scroll {
+  position: -webkit-sticky;
+  position: sticky;
+  bottom: 0;
+  z-index: calc(2 + 1);
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  background: #fcfcfc;
+  border-top: 1px solid #5a6367;
+  opacity: 0.6;
+}
+.ant-table-sticky-scroll:hover {
+  -webkit-transform-origin: center bottom;
+          transform-origin: center bottom;
+}
+.ant-table-sticky-scroll-bar {
+  height: 8px;
+  background-color: rgba(0, 0, 0, 0.35);
+  border-radius: 4px;
+}
+.ant-table-sticky-scroll-bar:hover {
+  background-color: rgba(0, 0, 0, 0.8);
+}
+.ant-table-sticky-scroll-bar-active {
+  background-color: rgba(0, 0, 0, 0.8);
+}
+@media all and (-ms-high-contrast: none) {
+  .ant-table-ping-left .ant-table-cell-fix-left-last::after {
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+  }
+  .ant-table-ping-right .ant-table-cell-fix-right-first::after {
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+  }
+}
+.ant-table {
+  /* title + table */
+  /* table */
+  /* table + footer */
+}
+.ant-table-title {
+  border-radius: 2px 2px 0 0;
+}
+.ant-table-title + .ant-table-container {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.ant-table-title + .ant-table-container table > thead > tr:first-child th:first-child {
+  border-radius: 0;
+}
+.ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {
+  border-radius: 0;
+}
+.ant-table-container {
+  border-top-left-radius: 2px;
+  border-top-right-radius: 2px;
+}
+.ant-table-container table > thead > tr:first-child th:first-child {
+  border-top-left-radius: 2px;
+}
+.ant-table-container table > thead > tr:first-child th:last-child {
+  border-top-right-radius: 2px;
+}
+.ant-table-footer {
+  border-radius: 0 0 2px 2px;
+}
+.ant-table-wrapper-rtl {
+  direction: rtl;
+}
+.ant-table-rtl {
+  direction: rtl;
+}
+.ant-table-wrapper-rtl .ant-table table {
+  text-align: right;
+}
+.ant-table-wrapper-rtl .ant-table-thead > tr > th[colspan]:not([colspan='1']) {
+  text-align: center;
+}
+.ant-table-wrapper-rtl .ant-table-thead > tr > th {
+  text-align: right;
+}
+.ant-table-tbody > tr .ant-table-wrapper:only-child .ant-table.ant-table-rtl {
+  margin: -16px 33px -16px -16px;
+}
+.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-left {
+  -webkit-box-pack: end;
+      -ms-flex-pack: end;
+          justify-content: flex-end;
+}
+.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-right {
+  -webkit-box-pack: start;
+      -ms-flex-pack: start;
+          justify-content: flex-start;
+}
+.ant-table-wrapper-rtl .ant-table-column-sorter {
+  margin-right: 8px;
+  margin-left: 0;
+}
+.ant-table-wrapper-rtl .ant-table-filter-column-title {
+  padding: 16px 16px 16px 2.3em;
+}
+.ant-table-rtl .ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column-title {
+  padding: 0 0 0 2.3em;
+}
+.ant-table-wrapper-rtl .ant-table-filter-trigger-container {
+  right: auto;
+  left: 0;
+}
+.ant-dropdown-rtl .ant-table-filter-dropdown .ant-checkbox-wrapper + span,
+.ant-dropdown-rtl .ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span,
+.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown .ant-checkbox-wrapper + span,
+.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span {
+  padding-right: 8px;
+  padding-left: 0;
+}
+.ant-table-wrapper-rtl .ant-table-selection {
+  text-align: center;
+}
+.ant-table-wrapper-rtl .ant-table-row-indent {
+  float: right;
+}
+.ant-table-wrapper-rtl .ant-table-row-expand-icon {
+  float: right;
+}
+.ant-table-wrapper-rtl .ant-table-row-indent + .ant-table-row-expand-icon {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-table-wrapper-rtl .ant-table-row-expand-icon::after {
+  -webkit-transform: rotate(-90deg);
+          transform: rotate(-90deg);
+}
+.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::before {
+  -webkit-transform: rotate(180deg);
+          transform: rotate(180deg);
+}
+.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::after {
+  -webkit-transform: rotate(0deg);
+          transform: rotate(0deg);
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-timeline {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.ant-timeline-item {
+  position: relative;
+  margin: 0;
+  padding-bottom: 20px;
+  font-size: 14px;
+  list-style: none;
+}
+.ant-timeline-item-tail {
+  position: absolute;
+  top: 10px;
+  left: 4px;
+  height: calc(100% - 10px);
+  border-left: 2px solid #5a6367;
+}
+.ant-timeline-item-pending .ant-timeline-item-head {
+  font-size: 12px;
+  background-color: transparent;
+}
+.ant-timeline-item-pending .ant-timeline-item-tail {
+  display: none;
+}
+.ant-timeline-item-head {
+  position: absolute;
+  width: 10px;
+  height: 10px;
+  background-color: var(--content_bg);
+  border: 2px solid transparent;
+  border-radius: 100px;
+}
+.ant-timeline-item-head-blue {
+  color: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-timeline-item-head-red {
+  color: #a61d24;
+  border-color: #a61d24;
+}
+.ant-timeline-item-head-green {
+  color: #49aa19;
+  border-color: #49aa19;
+}
+.ant-timeline-item-head-gray {
+  color: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.3);
+}
+.ant-timeline-item-head-custom {
+  position: absolute;
+  top: 5.5px;
+  left: 5px;
+  width: auto;
+  height: auto;
+  margin-top: 0;
+  padding: 3px 1px;
+  line-height: 1;
+  text-align: center;
+  border: 0;
+  border-radius: 0;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+}
+.ant-timeline-item-content {
+  position: relative;
+  top: -7.001px;
+  margin: 0 0 0 26px;
+  word-break: break-word;
+}
+.ant-timeline-item-last > .ant-timeline-item-tail {
+  display: none;
+}
+.ant-timeline-item-last > .ant-timeline-item-content {
+  min-height: 48px;
+}
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail,
+.ant-timeline.ant-timeline-right .ant-timeline-item-tail,
+.ant-timeline.ant-timeline-label .ant-timeline-item-tail,
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,
+.ant-timeline.ant-timeline-right .ant-timeline-item-head,
+.ant-timeline.ant-timeline-label .ant-timeline-item-head,
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,
+.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,
+.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom {
+  left: 50%;
+}
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,
+.ant-timeline.ant-timeline-right .ant-timeline-item-head,
+.ant-timeline.ant-timeline-label .ant-timeline-item-head {
+  margin-left: -4px;
+}
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,
+.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,
+.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom {
+  margin-left: 1px;
+}
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content,
+.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content,
+.ant-timeline.ant-timeline-label .ant-timeline-item-left .ant-timeline-item-content {
+  left: calc(50% - 4px);
+  width: calc(50% - 14px);
+  text-align: left;
+}
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content,
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content,
+.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-content {
+  width: calc(50% - 12px);
+  margin: 0;
+  text-align: right;
+}
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail,
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head,
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom {
+  left: calc(100% - 4px - 2px);
+}
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content {
+  width: calc(100% - 18px);
+}
+.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {
+  display: block;
+  height: calc(100% - 14px);
+  border-left: 2px dotted #5a6367;
+}
+.ant-timeline.ant-timeline-reverse .ant-timeline-item-last .ant-timeline-item-tail {
+  display: none;
+}
+.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {
+  top: 15px;
+  display: block;
+  height: calc(100% - 15px);
+  border-left: 2px dotted #5a6367;
+}
+.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-content {
+  min-height: 48px;
+}
+.ant-timeline.ant-timeline-label .ant-timeline-item-label {
+  position: absolute;
+  top: -7.001px;
+  width: calc(50% - 12px);
+  text-align: right;
+}
+.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-label {
+  left: calc(50% + 14px);
+  width: calc(50% - 14px);
+  text-align: left;
+}
+.ant-timeline-rtl {
+  direction: rtl;
+}
+.ant-timeline-rtl .ant-timeline-item-tail {
+  right: 4px;
+  left: auto;
+  border-right: 2px solid #5a6367;
+  border-left: none;
+}
+.ant-timeline-rtl .ant-timeline-item-head-custom {
+  right: 5px;
+  left: auto;
+  -webkit-transform: translate(50%, -50%);
+          transform: translate(50%, -50%);
+}
+.ant-timeline-rtl .ant-timeline-item-content {
+  margin: 0 18px 0 0;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-tail,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-tail,
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head,
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom {
+  right: 50%;
+  left: auto;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head {
+  margin-right: -4px;
+  margin-left: 0;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom {
+  margin-right: 1px;
+  margin-left: 0;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-left .ant-timeline-item-content {
+  right: calc(50% - 4px);
+  left: auto;
+  text-align: right;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content,
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-content {
+  text-align: left;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head,
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom {
+  right: 0;
+  left: auto;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content {
+  width: 100%;
+  margin-right: 18px;
+  text-align: right;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {
+  border-right: 2px dotted #5a6367;
+  border-left: none;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {
+  border-right: 2px dotted #5a6367;
+  border-left: none;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-label {
+  text-align: left;
+}
+.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-label {
+  right: calc(50% + 14px);
+  text-align: right;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+@-webkit-keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+@keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+.ant-transfer-customize-list .ant-transfer-list {
+  -webkit-box-flex: 1;
+      -ms-flex: 1 1 50%;
+          flex: 1 1 50%;
+  width: auto;
+  height: auto;
+  min-height: 200px;
+}
+.ant-transfer-customize-list .ant-table-wrapper .ant-table-small {
+  border: 0;
+  border-radius: 0;
+}
+.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th {
+  background: var(--content_bg);
+}
+.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content .ant-table-row:last-child td {
+  border-bottom: 1px solid #5a6367;
+}
+.ant-transfer-customize-list .ant-table-wrapper .ant-table-small .ant-table-body {
+  margin: 0;
+}
+.ant-transfer-customize-list .ant-table-wrapper .ant-table-pagination.ant-pagination {
+  margin: 16px 0 4px;
+}
+.ant-transfer-customize-list .ant-input[disabled] {
+  background-color: transparent;
+}
+.ant-transfer {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: stretch;
+      -ms-flex-align: stretch;
+          align-items: stretch;
+}
+.ant-transfer-disabled .ant-transfer-list {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-transfer-list {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  width: 180px;
+  height: 200px;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+}
+.ant-transfer-list-with-pagination {
+  width: 250px;
+  height: auto;
+}
+.ant-transfer-list-search {
+  padding-right: 24px;
+  padding-left: 8px;
+}
+.ant-transfer-list-search-action {
+  position: absolute;
+  top: 12px;
+  right: 12px;
+  bottom: 12px;
+  width: 28px;
+  color: rgba(255, 255, 255, 0.3);
+  line-height: 32px;
+  text-align: center;
+}
+.ant-transfer-list-search-action .anticon {
+  color: rgba(255, 255, 255, 0.3);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-transfer-list-search-action .anticon:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+span.ant-transfer-list-search-action {
+  pointer-events: none;
+}
+.ant-transfer-list-header {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  height: 40px;
+  padding: 8px 12px 9px;
+  color: var(--text_cl);
+  background: var(--content_bg);
+  border-bottom: 1px solid #5a6367;
+  border-radius: 2px 2px 0 0;
+}
+.ant-transfer-list-header > *:not(:last-child) {
+  margin-right: 4px;
+}
+.ant-transfer-list-header > * {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-transfer-list-header-title {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  overflow: hidden;
+  white-space: nowrap;
+  text-align: right;
+  text-overflow: ellipsis;
+}
+.ant-transfer-list-header-dropdown {
+  font-size: 10px;
+  -webkit-transform: translateY(10%);
+          transform: translateY(10%);
+  cursor: pointer;
+}
+.ant-transfer-list-header-dropdown[disabled] {
+  cursor: not-allowed;
+}
+.ant-transfer-list-body {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  overflow: hidden;
+  font-size: 14px;
+}
+.ant-transfer-list-body-search-wrapper {
+  position: relative;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  padding: 12px;
+}
+.ant-transfer-list-content {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  margin: 0;
+  padding: 0;
+  overflow: auto;
+  list-style: none;
+}
+.ant-transfer-list-content-item {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  min-height: 32px;
+  padding: 6px 12px;
+  overflow: hidden;
+  line-height: 20px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-transfer-list-content-item > *:not(:last-child) {
+  margin-right: 8px;
+}
+.ant-transfer-list-content-item > * {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-transfer-list-content-item-text {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-transfer-list-content-item-remove {
+  color: var(--menu_selected_bg);
+  text-decoration: none;
+  outline: none;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  position: relative;
+  color: #cac1c1;
+}
+.ant-transfer-list-content-item-remove:focus,
+.ant-transfer-list-content-item-remove:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-transfer-list-content-item-remove:active {
+  color: #388ed3;
+}
+.ant-transfer-list-content-item-remove::after {
+  position: absolute;
+  top: -6px;
+  right: -50%;
+  bottom: -6px;
+  left: -50%;
+  content: '';
+}
+.ant-transfer-list-content-item-remove:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+  background-color: var(--content_bg);
+  cursor: pointer;
+}
+.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled).ant-transfer-list-content-item-checked:hover {
+  background-color: #0e161f;
+}
+.ant-transfer-list-content-show-remove .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+  background: transparent;
+  cursor: default;
+}
+.ant-transfer-list-content-item-checked {
+  background-color: var(--layout_bg);
+}
+.ant-transfer-list-content-item-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-transfer-list-pagination {
+  padding: 8px 0;
+  text-align: right;
+  border-top: 1px solid #5a6367;
+}
+.ant-transfer-list-body-not-found {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  width: 100%;
+  margin: auto 0;
+  color: rgba(255, 255, 255, 0.3);
+  text-align: center;
+}
+.ant-transfer-list-footer {
+  border-top: 1px solid #5a6367;
+}
+.ant-transfer-operation {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -ms-flex-item-align: center;
+      align-self: center;
+  margin: 0 8px;
+  overflow: hidden;
+  vertical-align: middle;
+}
+.ant-transfer-operation .ant-btn {
+  display: block;
+}
+.ant-transfer-operation .ant-btn:first-child {
+  margin-bottom: 4px;
+}
+.ant-transfer-operation .ant-btn .anticon {
+  font-size: 12px;
+}
+.ant-transfer .ant-empty-image {
+  max-height: -2px;
+}
+.ant-transfer-rtl {
+  direction: rtl;
+}
+.ant-transfer-rtl .ant-transfer-list-search {
+  padding-right: 8px;
+  padding-left: 24px;
+}
+.ant-transfer-rtl .ant-transfer-list-search-action {
+  right: auto;
+  left: 12px;
+}
+.ant-transfer-rtl .ant-transfer-list-header > *:not(:last-child) {
+  margin-right: 0;
+  margin-left: 4px;
+}
+.ant-transfer-rtl .ant-transfer-list-header {
+  right: 0;
+  left: auto;
+}
+.ant-transfer-rtl .ant-transfer-list-header-title {
+  text-align: left;
+}
+.ant-transfer-rtl .ant-transfer-list-content-item > *:not(:last-child) {
+  margin-right: 0;
+  margin-left: 8px;
+}
+.ant-transfer-rtl .ant-transfer-list-pagination {
+  text-align: left;
+}
+.ant-transfer-rtl .ant-transfer-list-footer {
+  right: 0;
+  left: auto;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line::before {
+  top: auto !important;
+  bottom: auto !important;
+  height: 14px !important;
+}
+@-webkit-keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+@keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+.ant-select-tree-checkbox {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  top: -0.09em;
+  display: inline-block;
+  line-height: 1;
+  white-space: nowrap;
+  vertical-align: middle;
+  outline: none;
+  cursor: pointer;
+}
+.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner,
+.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner,
+.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner {
+  border-color: var(--menu_selected_bg);
+}
+.ant-select-tree-checkbox-checked::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 1px solid var(--menu_selected_bg);
+  border-radius: 2px;
+  visibility: hidden;
+  -webkit-animation: antCheckboxEffect 0.36s ease-in-out;
+          animation: antCheckboxEffect 0.36s ease-in-out;
+  -webkit-animation-fill-mode: backwards;
+          animation-fill-mode: backwards;
+  content: '';
+}
+.ant-select-tree-checkbox:hover::after,
+.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox::after {
+  visibility: visible;
+}
+.ant-select-tree-checkbox-inner {
+  position: relative;
+  top: 0;
+  left: 0;
+  display: block;
+  width: 16px;
+  height: 16px;
+  direction: ltr;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  border-collapse: separate;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-select-tree-checkbox-inner::after {
+  position: absolute;
+  top: 50%;
+  left: 22%;
+  display: table;
+  width: 5.71428571px;
+  height: 9.14285714px;
+  border: 2px solid #fff;
+  border-top: 0;
+  border-left: 0;
+  -webkit-transform: rotate(45deg) scale(0) translate(-50%, -50%);
+          transform: rotate(45deg) scale(0) translate(-50%, -50%);
+  opacity: 0;
+  -webkit-transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;
+  transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;
+  content: ' ';
+}
+.ant-select-tree-checkbox-input {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  opacity: 0;
+}
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {
+  position: absolute;
+  display: table;
+  border: 2px solid #fff;
+  border-top: 0;
+  border-left: 0;
+  -webkit-transform: rotate(45deg) scale(1) translate(-50%, -50%);
+          transform: rotate(45deg) scale(1) translate(-50%, -50%);
+  opacity: 1;
+  -webkit-transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
+  transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
+  content: ' ';
+}
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {
+  background-color: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-select-tree-checkbox-disabled {
+  cursor: not-allowed;
+}
+.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {
+  border-color: rgba(255, 255, 255, 0.3);
+  -webkit-animation-name: none;
+          animation-name: none;
+}
+.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input {
+  cursor: not-allowed;
+}
+.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1 !important;
+}
+.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {
+  border-color: rgba(255, 255, 255, 0.08);
+  border-collapse: separate;
+  -webkit-animation-name: none;
+          animation-name: none;
+}
+.ant-select-tree-checkbox-disabled + span {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-select-tree-checkbox-disabled:hover::after,
+.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-disabled::after {
+  visibility: hidden;
+}
+.ant-select-tree-checkbox-wrapper {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+  line-height: unset;
+  cursor: pointer;
+}
+.ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-disabled {
+  cursor: not-allowed;
+}
+.ant-select-tree-checkbox-wrapper + .ant-select-tree-checkbox-wrapper {
+  margin-left: 8px;
+}
+.ant-select-tree-checkbox + span {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.ant-select-tree-checkbox-group {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+}
+.ant-select-tree-checkbox-group-item {
+  display: inline-block;
+  margin-right: 8px;
+}
+.ant-select-tree-checkbox-group-item:last-child {
+  margin-right: 0;
+}
+.ant-select-tree-checkbox-group-item + .ant-select-tree-checkbox-group-item {
+  margin-left: 0;
+}
+.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner {
+  background-color: transparent;
+  border-color: #cac1c1;
+}
+.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after {
+  top: 50%;
+  left: 50%;
+  width: 8px;
+  height: 8px;
+  background-color: var(--menu_selected_bg);
+  border: 0;
+  -webkit-transform: translate(-50%, -50%) scale(1);
+          transform: translate(-50%, -50%) scale(1);
+  opacity: 1;
+  content: ' ';
+}
+.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {
+  background-color: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.3);
+}
+.ant-tree-select-dropdown {
+  padding: 8px 4px 0;
+}
+.ant-tree-select-dropdown-rtl {
+  direction: rtl;
+}
+.ant-tree-select-dropdown .ant-select-tree {
+  border-radius: 0;
+}
+.ant-tree-select-dropdown .ant-select-tree-list-holder-inner {
+  -webkit-box-align: stretch;
+      -ms-flex-align: stretch;
+          align-items: stretch;
+}
+.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode {
+  padding-bottom: 8px;
+}
+.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode .ant-select-tree-node-content-wrapper {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+}
+.ant-select-tree {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  background: transparent;
+  border-radius: 2px;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+}
+.ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused) {
+  background: var(--layout_bg);
+}
+.ant-select-tree-list-holder-inner {
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+}
+.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner {
+  -webkit-box-align: stretch;
+      -ms-flex-align: stretch;
+          align-items: stretch;
+}
+.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-node-content-wrapper {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+}
+.ant-select-tree .ant-select-tree-treenode {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+  padding: 0 0 4px 0;
+  outline: none;
+}
+.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover {
+  background: transparent;
+}
+.ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-select-tree-indent {
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+  white-space: nowrap;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-select-tree-indent-unit {
+  display: inline-block;
+  width: 24px;
+}
+.ant-select-tree-switcher {
+  position: relative;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+  width: 24px;
+  margin: 0;
+  line-height: 24px;
+  text-align: center;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-select-tree-switcher .ant-tree-switcher-icon,
+.ant-select-tree-switcher .ant-select-tree-switcher-icon {
+  display: inline-block;
+  font-size: 10px;
+  vertical-align: baseline;
+}
+.ant-select-tree-switcher .ant-tree-switcher-icon svg,
+.ant-select-tree-switcher .ant-select-tree-switcher-icon svg {
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+.ant-select-tree-switcher-noop {
+  cursor: default;
+}
+.ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg {
+  -webkit-transform: rotate(-90deg);
+          transform: rotate(-90deg);
+}
+.ant-select-tree-switcher-loading-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-select-tree-switcher-leaf-line {
+  z-index: 1;
+  display: inline-block;
+  width: 100%;
+  height: 100%;
+}
+.ant-select-tree-switcher-leaf-line::before {
+  position: absolute;
+  top: 0;
+  bottom: -4px;
+  margin-left: -1px;
+  border-left: 1px solid #d9d9d9;
+  content: ' ';
+}
+.ant-select-tree-switcher-leaf-line::after {
+  position: absolute;
+  width: 10px;
+  height: 14px;
+  margin-left: -1px;
+  border-bottom: 1px solid #d9d9d9;
+  content: ' ';
+}
+.ant-select-tree-checkbox {
+  top: initial;
+  margin: 4px 8px 0 0;
+}
+.ant-select-tree .ant-select-tree-node-content-wrapper {
+  position: relative;
+  z-index: auto;
+  min-height: 24px;
+  margin: 0;
+  padding: 0 4px;
+  color: inherit;
+  line-height: 24px;
+  background: transparent;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: all 0.3s, border 0s, line-height 0s, -webkit-box-shadow 0s;
+  transition: all 0.3s, border 0s, line-height 0s, -webkit-box-shadow 0s;
+  transition: all 0.3s, border 0s, line-height 0s, box-shadow 0s;
+  transition: all 0.3s, border 0s, line-height 0s, box-shadow 0s, -webkit-box-shadow 0s;
+}
+.ant-select-tree .ant-select-tree-node-content-wrapper:hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {
+  background-color: #11263c;
+}
+.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle {
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  line-height: 24px;
+  text-align: center;
+  vertical-align: top;
+}
+.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle:empty {
+  display: none;
+}
+.ant-select-tree-unselectable .ant-select-tree-node-content-wrapper:hover {
+  background-color: transparent;
+}
+.ant-select-tree-node-content-wrapper[draggable='true'] {
+  line-height: 24px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-select-tree-node-content-wrapper[draggable='true'] .ant-tree-drop-indicator {
+  position: absolute;
+  z-index: 1;
+  height: 2px;
+  background-color: var(--menu_selected_bg);
+  border-radius: 1px;
+  pointer-events: none;
+}
+.ant-select-tree-node-content-wrapper[draggable='true'] .ant-tree-drop-indicator::after {
+  position: absolute;
+  top: -3px;
+  left: -6px;
+  width: 8px;
+  height: 8px;
+  background-color: transparent;
+  border: 2px solid var(--menu_selected_bg);
+  border-radius: 50%;
+  content: '';
+}
+.ant-select-tree .ant-select-tree-treenode.drop-container > [draggable] {
+  -webkit-box-shadow: 0 0 0 2px var(--menu_selected_bg);
+          box-shadow: 0 0 0 2px var(--menu_selected_bg);
+}
+.ant-select-tree-show-line .ant-select-tree-indent-unit {
+  position: relative;
+  height: 100%;
+}
+.ant-select-tree-show-line .ant-select-tree-indent-unit::before {
+  position: absolute;
+  top: 0;
+  right: 12px;
+  bottom: -4px;
+  border-right: 1px solid var(--border_cl);
+  content: '';
+}
+.ant-select-tree-show-line .ant-select-tree-indent-unit-end::before {
+  display: none;
+}
+.ant-select-tree-show-line .ant-select-tree-switcher {
+  background: var(--content_bg);
+}
+.ant-select-tree-show-line .ant-select-tree-switcher-line-icon {
+  vertical-align: -0.225em;
+}
+.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg {
+  -webkit-transform: rotate(90deg);
+          transform: rotate(90deg);
+}
+.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher-loading-icon {
+  -webkit-transform: scaleY(-1);
+          transform: scaleY(-1);
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+@-webkit-keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+@keyframes antCheckboxEffect {
+  0% {
+    -webkit-transform: scale(1);
+            transform: scale(1);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1.6);
+            transform: scale(1.6);
+    opacity: 0;
+  }
+}
+.ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line::before {
+  top: auto !important;
+  bottom: auto !important;
+  height: 14px !important;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode {
+  position: relative;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode::before {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 4px;
+  left: 0;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+  content: '';
+  pointer-events: none;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode:hover::before {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode > * {
+  z-index: 1;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher {
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper {
+  border-radius: 0;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover {
+  background: transparent;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected {
+  color: #fff;
+  background: transparent;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before,
+.ant-tree.ant-tree-directory .ant-tree-treenode-selected::before {
+  background: var(--menu_selected_bg);
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher {
+  color: #fff;
+}
+.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper {
+  color: #fff;
+  background: transparent;
+}
+.ant-tree-checkbox {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  position: relative;
+  top: -0.09em;
+  display: inline-block;
+  line-height: 1;
+  white-space: nowrap;
+  vertical-align: middle;
+  outline: none;
+  cursor: pointer;
+}
+.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,
+.ant-tree-checkbox:hover .ant-tree-checkbox-inner,
+.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner {
+  border-color: var(--menu_selected_bg);
+}
+.ant-tree-checkbox-checked::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 1px solid var(--menu_selected_bg);
+  border-radius: 2px;
+  visibility: hidden;
+  -webkit-animation: antCheckboxEffect 0.36s ease-in-out;
+          animation: antCheckboxEffect 0.36s ease-in-out;
+  -webkit-animation-fill-mode: backwards;
+          animation-fill-mode: backwards;
+  content: '';
+}
+.ant-tree-checkbox:hover::after,
+.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox::after {
+  visibility: visible;
+}
+.ant-tree-checkbox-inner {
+  position: relative;
+  top: 0;
+  left: 0;
+  display: block;
+  width: 16px;
+  height: 16px;
+  direction: ltr;
+  background-color: transparent;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+  border-collapse: separate;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-tree-checkbox-inner::after {
+  position: absolute;
+  top: 50%;
+  left: 22%;
+  display: table;
+  width: 5.71428571px;
+  height: 9.14285714px;
+  border: 2px solid #fff;
+  border-top: 0;
+  border-left: 0;
+  -webkit-transform: rotate(45deg) scale(0) translate(-50%, -50%);
+          transform: rotate(45deg) scale(0) translate(-50%, -50%);
+  opacity: 0;
+  -webkit-transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;
+  transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;
+  content: ' ';
+}
+.ant-tree-checkbox-input {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+  opacity: 0;
+}
+.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {
+  position: absolute;
+  display: table;
+  border: 2px solid #fff;
+  border-top: 0;
+  border-left: 0;
+  -webkit-transform: rotate(45deg) scale(1) translate(-50%, -50%);
+          transform: rotate(45deg) scale(1) translate(-50%, -50%);
+  opacity: 1;
+  -webkit-transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
+  transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
+  content: ' ';
+}
+.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
+  background-color: var(--menu_selected_bg);
+  border-color: var(--menu_selected_bg);
+}
+.ant-tree-checkbox-disabled {
+  cursor: not-allowed;
+}
+.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {
+  border-color: rgba(255, 255, 255, 0.3);
+  -webkit-animation-name: none;
+          animation-name: none;
+}
+.ant-tree-checkbox-disabled .ant-tree-checkbox-input {
+  cursor: not-allowed;
+}
+.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {
+  background-color: rgba(255, 255, 255, 0.08);
+  border-color: #cac1c1 !important;
+}
+.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {
+  border-color: rgba(255, 255, 255, 0.08);
+  border-collapse: separate;
+  -webkit-animation-name: none;
+          animation-name: none;
+}
+.ant-tree-checkbox-disabled + span {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-tree-checkbox-disabled:hover::after,
+.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled::after {
+  visibility: hidden;
+}
+.ant-tree-checkbox-wrapper {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+  line-height: unset;
+  cursor: pointer;
+}
+.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled {
+  cursor: not-allowed;
+}
+.ant-tree-checkbox-wrapper + .ant-tree-checkbox-wrapper {
+  margin-left: 8px;
+}
+.ant-tree-checkbox + span {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.ant-tree-checkbox-group {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  display: inline-block;
+}
+.ant-tree-checkbox-group-item {
+  display: inline-block;
+  margin-right: 8px;
+}
+.ant-tree-checkbox-group-item:last-child {
+  margin-right: 0;
+}
+.ant-tree-checkbox-group-item + .ant-tree-checkbox-group-item {
+  margin-left: 0;
+}
+.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner {
+  background-color: transparent;
+  border-color: #cac1c1;
+}
+.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after {
+  top: 50%;
+  left: 50%;
+  width: 8px;
+  height: 8px;
+  background-color: var(--menu_selected_bg);
+  border: 0;
+  -webkit-transform: translate(-50%, -50%) scale(1);
+          transform: translate(-50%, -50%) scale(1);
+  opacity: 1;
+  content: ' ';
+}
+.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {
+  background-color: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.3);
+}
+.ant-tree {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  background: transparent;
+  border-radius: 2px;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+}
+.ant-tree-focused:not(:hover):not(.ant-tree-active-focused) {
+  background: var(--layout_bg);
+}
+.ant-tree-list-holder-inner {
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+}
+.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner {
+  -webkit-box-align: stretch;
+      -ms-flex-align: stretch;
+          align-items: stretch;
+}
+.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+}
+.ant-tree .ant-tree-treenode {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: flex-start;
+  padding: 0 0 4px 0;
+  outline: none;
+}
+.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover {
+  background: transparent;
+}
+.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper {
+  background: rgba(255, 255, 255, 0.08);
+}
+.ant-tree-indent {
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+  white-space: nowrap;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-tree-indent-unit {
+  display: inline-block;
+  width: 24px;
+}
+.ant-tree-switcher {
+  position: relative;
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+  -ms-flex-item-align: stretch;
+      align-self: stretch;
+  width: 24px;
+  margin: 0;
+  line-height: 24px;
+  text-align: center;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-tree-switcher .ant-tree-switcher-icon,
+.ant-tree-switcher .ant-select-tree-switcher-icon {
+  display: inline-block;
+  font-size: 10px;
+  vertical-align: baseline;
+}
+.ant-tree-switcher .ant-tree-switcher-icon svg,
+.ant-tree-switcher .ant-select-tree-switcher-icon svg {
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+.ant-tree-switcher-noop {
+  cursor: default;
+}
+.ant-tree-switcher_close .ant-tree-switcher-icon svg {
+  -webkit-transform: rotate(-90deg);
+          transform: rotate(-90deg);
+}
+.ant-tree-switcher-loading-icon {
+  color: var(--menu_selected_bg);
+}
+.ant-tree-switcher-leaf-line {
+  z-index: 1;
+  display: inline-block;
+  width: 100%;
+  height: 100%;
+}
+.ant-tree-switcher-leaf-line::before {
+  position: absolute;
+  top: 0;
+  bottom: -4px;
+  margin-left: -1px;
+  border-left: 1px solid #d9d9d9;
+  content: ' ';
+}
+.ant-tree-switcher-leaf-line::after {
+  position: absolute;
+  width: 10px;
+  height: 14px;
+  margin-left: -1px;
+  border-bottom: 1px solid #d9d9d9;
+  content: ' ';
+}
+.ant-tree-checkbox {
+  top: initial;
+  margin: 4px 8px 0 0;
+}
+.ant-tree .ant-tree-node-content-wrapper {
+  position: relative;
+  z-index: auto;
+  min-height: 24px;
+  margin: 0;
+  padding: 0 4px;
+  color: inherit;
+  line-height: 24px;
+  background: transparent;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: all 0.3s, border 0s, line-height 0s, -webkit-box-shadow 0s;
+  transition: all 0.3s, border 0s, line-height 0s, -webkit-box-shadow 0s;
+  transition: all 0.3s, border 0s, line-height 0s, box-shadow 0s;
+  transition: all 0.3s, border 0s, line-height 0s, box-shadow 0s, -webkit-box-shadow 0s;
+}
+.ant-tree .ant-tree-node-content-wrapper:hover {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected {
+  background-color: #11263c;
+}
+.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle {
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  line-height: 24px;
+  text-align: center;
+  vertical-align: top;
+}
+.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty {
+  display: none;
+}
+.ant-tree-unselectable .ant-tree-node-content-wrapper:hover {
+  background-color: transparent;
+}
+.ant-tree-node-content-wrapper[draggable='true'] {
+  line-height: 24px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.ant-tree-node-content-wrapper[draggable='true'] .ant-tree-drop-indicator {
+  position: absolute;
+  z-index: 1;
+  height: 2px;
+  background-color: var(--menu_selected_bg);
+  border-radius: 1px;
+  pointer-events: none;
+}
+.ant-tree-node-content-wrapper[draggable='true'] .ant-tree-drop-indicator::after {
+  position: absolute;
+  top: -3px;
+  left: -6px;
+  width: 8px;
+  height: 8px;
+  background-color: transparent;
+  border: 2px solid var(--menu_selected_bg);
+  border-radius: 50%;
+  content: '';
+}
+.ant-tree .ant-tree-treenode.drop-container > [draggable] {
+  -webkit-box-shadow: 0 0 0 2px var(--menu_selected_bg);
+          box-shadow: 0 0 0 2px var(--menu_selected_bg);
+}
+.ant-tree-show-line .ant-tree-indent-unit {
+  position: relative;
+  height: 100%;
+}
+.ant-tree-show-line .ant-tree-indent-unit::before {
+  position: absolute;
+  top: 0;
+  right: 12px;
+  bottom: -4px;
+  border-right: 1px solid var(--border_cl);
+  content: '';
+}
+.ant-tree-show-line .ant-tree-indent-unit-end::before {
+  display: none;
+}
+.ant-tree-show-line .ant-tree-switcher {
+  background: var(--content_bg);
+}
+.ant-tree-show-line .ant-tree-switcher-line-icon {
+  vertical-align: -0.225em;
+}
+.ant-tree-rtl {
+  direction: rtl;
+}
+.ant-tree-rtl .ant-tree-node-content-wrapper[draggable='true'] .ant-tree-drop-indicator::after {
+  right: -6px;
+  left: unset;
+}
+.ant-tree .ant-tree-treenode-rtl {
+  direction: rtl;
+}
+.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg {
+  -webkit-transform: rotate(90deg);
+          transform: rotate(90deg);
+}
+.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit::before {
+  right: auto;
+  left: -13px;
+  border-right: none;
+  border-left: 1px solid var(--border_cl);
+}
+.ant-tree-rtl.ant-tree-checkbox {
+  margin: 4px 0 0 8px;
+}
+.ant-tree-select-dropdown-rtl .ant-select-tree-checkbox {
+  margin: 4px 0 0 8px;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-typography {
+  color: var(--text_cl);
+  overflow-wrap: break-word;
+}
+.ant-typography.ant-typography-secondary {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-typography.ant-typography-success {
+  color: #49aa19;
+}
+.ant-typography.ant-typography-warning {
+  color: #d89614;
+}
+.ant-typography.ant-typography-danger {
+  color: #a61d24;
+}
+a.ant-typography.ant-typography-danger:active,
+a.ant-typography.ant-typography-danger:focus,
+a.ant-typography.ant-typography-danger:hover {
+  color: #b33b3d;
+}
+.ant-typography.ant-typography-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+div.ant-typography,
+.ant-typography p {
+  margin-bottom: 1em;
+}
+h1.ant-typography,
+.ant-typography h1 {
+  margin-bottom: 0.5em;
+  color: var(--text_cl);
+  font-weight: 600;
+  font-size: 38px;
+  line-height: 1.23;
+}
+h2.ant-typography,
+.ant-typography h2 {
+  margin-bottom: 0.5em;
+  color: var(--text_cl);
+  font-weight: 600;
+  font-size: 30px;
+  line-height: 1.35;
+}
+h3.ant-typography,
+.ant-typography h3 {
+  margin-bottom: 0.5em;
+  color: var(--text_cl);
+  font-weight: 600;
+  font-size: 24px;
+  line-height: 1.35;
+}
+h4.ant-typography,
+.ant-typography h4 {
+  margin-bottom: 0.5em;
+  color: var(--text_cl);
+  font-weight: 600;
+  font-size: 20px;
+  line-height: 1.4;
+}
+h5.ant-typography,
+.ant-typography h5 {
+  margin-bottom: 0.5em;
+  color: var(--text_cl);
+  font-weight: 600;
+  font-size: 16px;
+  line-height: 1.5;
+}
+.ant-typography + h1.ant-typography,
+.ant-typography + h2.ant-typography,
+.ant-typography + h3.ant-typography,
+.ant-typography + h4.ant-typography,
+.ant-typography + h5.ant-typography {
+  margin-top: 1.2em;
+}
+.ant-typography div + h1,
+.ant-typography ul + h1,
+.ant-typography li + h1,
+.ant-typography p + h1,
+.ant-typography h1 + h1,
+.ant-typography h2 + h1,
+.ant-typography h3 + h1,
+.ant-typography h4 + h1,
+.ant-typography h5 + h1,
+.ant-typography div + h2,
+.ant-typography ul + h2,
+.ant-typography li + h2,
+.ant-typography p + h2,
+.ant-typography h1 + h2,
+.ant-typography h2 + h2,
+.ant-typography h3 + h2,
+.ant-typography h4 + h2,
+.ant-typography h5 + h2,
+.ant-typography div + h3,
+.ant-typography ul + h3,
+.ant-typography li + h3,
+.ant-typography p + h3,
+.ant-typography h1 + h3,
+.ant-typography h2 + h3,
+.ant-typography h3 + h3,
+.ant-typography h4 + h3,
+.ant-typography h5 + h3,
+.ant-typography div + h4,
+.ant-typography ul + h4,
+.ant-typography li + h4,
+.ant-typography p + h4,
+.ant-typography h1 + h4,
+.ant-typography h2 + h4,
+.ant-typography h3 + h4,
+.ant-typography h4 + h4,
+.ant-typography h5 + h4,
+.ant-typography div + h5,
+.ant-typography ul + h5,
+.ant-typography li + h5,
+.ant-typography p + h5,
+.ant-typography h1 + h5,
+.ant-typography h2 + h5,
+.ant-typography h3 + h5,
+.ant-typography h4 + h5,
+.ant-typography h5 + h5 {
+  margin-top: 1.2em;
+}
+a.ant-typography-ellipsis,
+span.ant-typography-ellipsis {
+  display: inline-block;
+}
+a.ant-typography,
+.ant-typography a {
+  color: var(--menu_selected_bg);
+  outline: none;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  text-decoration: none;
+}
+a.ant-typography:focus,
+.ant-typography a:focus,
+a.ant-typography:hover,
+.ant-typography a:hover {
+  color: var(--menu_selected_bg);
+}
+a.ant-typography:active,
+.ant-typography a:active {
+  color: #388ed3;
+}
+a.ant-typography:active,
+.ant-typography a:active,
+a.ant-typography:hover,
+.ant-typography a:hover {
+  text-decoration: none;
+}
+a.ant-typography[disabled],
+.ant-typography a[disabled],
+a.ant-typography.ant-typography-disabled,
+.ant-typography a.ant-typography-disabled {
+  color: rgba(255, 255, 255, 0.3);
+  cursor: not-allowed;
+}
+a.ant-typography[disabled]:active,
+.ant-typography a[disabled]:active,
+a.ant-typography.ant-typography-disabled:active,
+.ant-typography a.ant-typography-disabled:active,
+a.ant-typography[disabled]:hover,
+.ant-typography a[disabled]:hover,
+a.ant-typography.ant-typography-disabled:hover,
+.ant-typography a.ant-typography-disabled:hover {
+  color: rgba(255, 255, 255, 0.3);
+}
+a.ant-typography[disabled]:active,
+.ant-typography a[disabled]:active,
+a.ant-typography.ant-typography-disabled:active,
+.ant-typography a.ant-typography-disabled:active {
+  pointer-events: none;
+}
+.ant-typography code {
+  margin: 0 0.2em;
+  padding: 0.2em 0.4em 0.1em;
+  font-size: 85%;
+  background: rgba(150, 150, 150, 0.1);
+  border: 1px solid rgba(100, 100, 100, 0.2);
+  border-radius: 3px;
+}
+.ant-typography kbd {
+  margin: 0 0.2em;
+  padding: 0.15em 0.4em 0.1em;
+  font-size: 90%;
+  background: rgba(150, 150, 150, 0.06);
+  border: 1px solid rgba(100, 100, 100, 0.2);
+  border-bottom-width: 2px;
+  border-radius: 3px;
+}
+.ant-typography mark {
+  padding: 0;
+  background-color: #594214;
+}
+.ant-typography u,
+.ant-typography ins {
+  text-decoration: underline;
+  -webkit-text-decoration-skip: ink;
+          text-decoration-skip-ink: auto;
+}
+.ant-typography s,
+.ant-typography del {
+  text-decoration: line-through;
+}
+.ant-typography strong {
+  font-weight: 600;
+}
+.ant-typography-expand,
+.ant-typography-edit,
+.ant-typography-copy {
+  color: var(--menu_selected_bg);
+  text-decoration: none;
+  outline: none;
+  cursor: pointer;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  margin-left: 4px;
+}
+.ant-typography-expand:focus,
+.ant-typography-edit:focus,
+.ant-typography-copy:focus,
+.ant-typography-expand:hover,
+.ant-typography-edit:hover,
+.ant-typography-copy:hover {
+  color: var(--menu_selected_bg);
+}
+.ant-typography-expand:active,
+.ant-typography-edit:active,
+.ant-typography-copy:active {
+  color: #388ed3;
+}
+.ant-typography-copy-success,
+.ant-typography-copy-success:hover,
+.ant-typography-copy-success:focus {
+  color: #49aa19;
+}
+.ant-typography-edit-content {
+  position: relative;
+}
+div.ant-typography-edit-content {
+  left: -12px;
+  margin-top: -5px;
+  margin-bottom: calc(1em - 4px - 1px);
+}
+.ant-typography-edit-content-confirm {
+  position: absolute;
+  right: 10px;
+  bottom: 8px;
+  color: rgba(255, 255, 255, 0.45);
+  pointer-events: none;
+}
+.ant-typography-edit-content textarea {
+  -moz-transition: none;
+}
+.ant-typography ul,
+.ant-typography ol {
+  margin: 0 0 1em 0;
+  padding: 0;
+}
+.ant-typography ul li,
+.ant-typography ol li {
+  margin: 0 0 0 20px;
+  padding: 0 0 0 4px;
+}
+.ant-typography ul {
+  list-style-type: circle;
+}
+.ant-typography ul ul {
+  list-style-type: disc;
+}
+.ant-typography ol {
+  list-style-type: decimal;
+}
+.ant-typography pre,
+.ant-typography blockquote {
+  margin: 1em 0;
+}
+.ant-typography pre {
+  padding: 0.4em 0.6em;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+  background: rgba(150, 150, 150, 0.1);
+  border: 1px solid rgba(100, 100, 100, 0.2);
+  border-radius: 3px;
+}
+.ant-typography pre code {
+  display: inline;
+  margin: 0;
+  padding: 0;
+  font-size: inherit;
+  font-family: inherit;
+  background: transparent;
+  border: 0;
+}
+.ant-typography blockquote {
+  padding: 0 0 0 0.6em;
+  border-left: 4px solid rgba(100, 100, 100, 0.2);
+  opacity: 0.85;
+}
+.ant-typography-ellipsis-single-line {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+a.ant-typography-ellipsis-single-line,
+span.ant-typography-ellipsis-single-line {
+  vertical-align: bottom;
+}
+.ant-typography-ellipsis-multiple-line {
+  display: -webkit-box;
+  -webkit-line-clamp: 3;
+  /*! autoprefixer: ignore next */
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+}
+.ant-typography-rtl {
+  direction: rtl;
+}
+.ant-typography-rtl .ant-typography-expand,
+.ant-typography-rtl .ant-typography-edit,
+.ant-typography-rtl .ant-typography-copy {
+  margin-right: 4px;
+  margin-left: 0;
+}
+.ant-typography-rtl .ant-typography-expand {
+  float: left;
+}
+div.ant-typography-edit-content.ant-typography-rtl {
+  right: -12px;
+  left: auto;
+}
+.ant-typography-rtl .ant-typography-edit-content-confirm {
+  right: auto;
+  left: 10px;
+}
+.ant-typography-rtl.ant-typography ul li,
+.ant-typography-rtl.ant-typography ol li {
+  margin: 0 20px 0 0;
+  padding: 0 4px 0 0;
+}
+
+/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
+/* stylelint-disable no-duplicate-selectors */
+/* stylelint-disable */
+/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
+.ant-upload {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5715;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  outline: 0;
+}
+.ant-upload p {
+  margin: 0;
+}
+.ant-upload-btn {
+  display: block;
+  width: 100%;
+  outline: none;
+}
+.ant-upload input[type='file'] {
+  cursor: pointer;
+}
+.ant-upload.ant-upload-select {
+  display: inline-block;
+}
+.ant-upload.ant-upload-disabled {
+  cursor: not-allowed;
+}
+.ant-upload.ant-upload-select-picture-card {
+  width: 104px;
+  height: 104px;
+  margin-right: 8px;
+  margin-bottom: 8px;
+  text-align: center;
+  vertical-align: top;
+  background-color: rgba(255, 255, 255, 0.04);
+  border: 1px dashed #cac1c1;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+.ant-upload.ant-upload-select-picture-card > .ant-upload {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  height: 100%;
+  text-align: center;
+}
+.ant-upload.ant-upload-select-picture-card:hover {
+  border-color: var(--menu_selected_bg);
+}
+.ant-upload-disabled.ant-upload.ant-upload-select-picture-card:hover {
+  border-color: #cac1c1;
+}
+.ant-upload.ant-upload-drag {
+  position: relative;
+  width: 100%;
+  height: 100%;
+  text-align: center;
+  background: rgba(255, 255, 255, 0.04);
+  border: 1px dashed #cac1c1;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+.ant-upload.ant-upload-drag .ant-upload {
+  padding: 16px 0;
+}
+.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {
+  border-color: #388ed3;
+}
+.ant-upload.ant-upload-drag.ant-upload-disabled {
+  cursor: not-allowed;
+}
+.ant-upload.ant-upload-drag .ant-upload-btn {
+  display: table;
+  height: 100%;
+}
+.ant-upload.ant-upload-drag .ant-upload-drag-container {
+  display: table-cell;
+  vertical-align: middle;
+}
+.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {
+  border-color: var(--menu_selected_bg);
+}
+.ant-upload.ant-upload-drag p.ant-upload-drag-icon {
+  margin-bottom: 20px;
+}
+.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {
+  color: var(--menu_selected_bg);
+  font-size: 48px;
+}
+.ant-upload.ant-upload-drag p.ant-upload-text {
+  margin: 0 0 4px;
+  color: var(--text_cl);
+  font-size: 16px;
+}
+.ant-upload.ant-upload-drag p.ant-upload-hint {
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+}
+.ant-upload.ant-upload-drag .anticon-plus {
+  color: rgba(255, 255, 255, 0.3);
+  font-size: 30px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-upload.ant-upload-drag .anticon-plus:hover {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-upload.ant-upload-drag:hover .anticon-plus {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-upload-picture-card-wrapper {
+  display: inline-block;
+  width: 100%;
+}
+.ant-upload-picture-card-wrapper::before {
+  display: table;
+  content: '';
+}
+.ant-upload-picture-card-wrapper::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-upload-list {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  color: var(--text_cl);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  list-style: none;
+  -webkit-font-feature-settings: 'tnum';
+          font-feature-settings: 'tnum';
+  line-height: 1.5715;
+}
+.ant-upload-list::before {
+  display: table;
+  content: '';
+}
+.ant-upload-list::after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ant-upload-list-item {
+  position: relative;
+  height: 22.001px;
+  margin-top: 8px;
+  font-size: 14px;
+}
+.ant-upload-list-item-name {
+  display: inline-block;
+  width: 100%;
+  padding-left: 22px;
+  overflow: hidden;
+  line-height: 1.5715;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.ant-upload-list-item-card-actions {
+  position: absolute;
+  right: 0;
+}
+.ant-upload-list-item-card-actions-btn {
+  opacity: 0;
+}
+.ant-upload-list-item-card-actions-btn.ant-btn-sm {
+  height: 20px;
+  line-height: 1;
+}
+.ant-upload-list-item-card-actions.picture {
+  top: 22px;
+  line-height: 0;
+}
+.ant-upload-list-item-card-actions-btn:focus,
+.ant-upload-list-item-card-actions.picture .ant-upload-list-item-card-actions-btn {
+  opacity: 1;
+}
+.ant-upload-list-item-card-actions .anticon {
+  color: rgba(255, 255, 255, 0.45);
+}
+.ant-upload-list-item-info {
+  height: 100%;
+  padding: 0 4px;
+  -webkit-transition: background-color 0.3s;
+  transition: background-color 0.3s;
+}
+.ant-upload-list-item-info > span {
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+.ant-upload-list-item-info .anticon-loading .anticon,
+.ant-upload-list-item-info .ant-upload-text-icon .anticon {
+  position: absolute;
+  top: 5px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 14px;
+}
+.ant-upload-list-item .anticon-close {
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  color: rgba(255, 255, 255, 0.45);
+  font-size: 10px;
+  line-height: 0;
+  cursor: pointer;
+  opacity: 0;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-upload-list-item .anticon-close:hover {
+  color: var(--text_cl);
+}
+.ant-upload-list-item:hover .ant-upload-list-item-info {
+  background-color: rgba(255, 255, 255, 0.08);
+}
+.ant-upload-list-item:hover .anticon-close {
+  opacity: 1;
+}
+.ant-upload-list-item:hover .ant-upload-list-item-card-actions-btn {
+  opacity: 1;
+}
+.ant-upload-list-item-error,
+.ant-upload-list-item-error .ant-upload-text-icon > .anticon,
+.ant-upload-list-item-error .ant-upload-list-item-name {
+  color: #a61d24;
+}
+.ant-upload-list-item-error .ant-upload-list-item-card-actions .anticon {
+  color: #a61d24;
+}
+.ant-upload-list-item-error .ant-upload-list-item-card-actions-btn {
+  opacity: 1;
+}
+.ant-upload-list-item-progress {
+  position: absolute;
+  bottom: -12px;
+  width: 100%;
+  padding-left: 26px;
+  font-size: 14px;
+  line-height: 0;
+}
+.ant-upload-list-picture .ant-upload-list-item,
+.ant-upload-list-picture-card .ant-upload-list-item {
+  position: relative;
+  height: 66px;
+  padding: 8px;
+  border: 1px solid var(--border_cl);
+  border-radius: 2px;
+}
+.ant-upload-list-picture .ant-upload-list-item:hover,
+.ant-upload-list-picture-card .ant-upload-list-item:hover {
+  background: transparent;
+}
+.ant-upload-list-picture .ant-upload-list-item-error,
+.ant-upload-list-picture-card .ant-upload-list-item-error {
+  border-color: #a61d24;
+}
+.ant-upload-list-picture .ant-upload-list-item-info,
+.ant-upload-list-picture-card .ant-upload-list-item-info {
+  padding: 0;
+}
+.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info,
+.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {
+  background: transparent;
+}
+.ant-upload-list-picture .ant-upload-list-item-uploading,
+.ant-upload-list-picture-card .ant-upload-list-item-uploading {
+  border-style: dashed;
+}
+.ant-upload-list-picture .ant-upload-list-item-thumbnail,
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail {
+  width: 48px;
+  height: 48px;
+  line-height: 54px;
+  text-align: center;
+  opacity: 0.8;
+}
+.ant-upload-list-picture .ant-upload-list-item-thumbnail .anticon,
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail .anticon {
+  font-size: 26px;
+}
+.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'],
+.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {
+  fill: #e6d9d8;
+}
+.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'],
+.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {
+  fill: #a61d24;
+}
+.ant-upload-list-picture .ant-upload-list-item-icon,
+.ant-upload-list-picture-card .ant-upload-list-item-icon {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  font-size: 26px;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+}
+.ant-upload-list-picture .ant-upload-list-item-icon .anticon,
+.ant-upload-list-picture-card .ant-upload-list-item-icon .anticon {
+  font-size: 26px;
+}
+.ant-upload-list-picture .ant-upload-list-item-image,
+.ant-upload-list-picture-card .ant-upload-list-item-image {
+  max-width: 100%;
+}
+.ant-upload-list-picture .ant-upload-list-item-thumbnail img,
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img {
+  display: block;
+  width: 48px;
+  height: 48px;
+  overflow: hidden;
+}
+.ant-upload-list-picture .ant-upload-list-item-name,
+.ant-upload-list-picture-card .ant-upload-list-item-name {
+  display: inline-block;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  max-width: 100%;
+  margin: 0 0 0 8px;
+  padding-right: 8px;
+  padding-left: 48px;
+  overflow: hidden;
+  line-height: 44px;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name,
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name {
+  line-height: 28px;
+}
+.ant-upload-list-picture .ant-upload-list-item-progress,
+.ant-upload-list-picture-card .ant-upload-list-item-progress {
+  bottom: 14px;
+  width: calc(100% - 24px);
+  margin-top: 0;
+  padding-left: 56px;
+}
+.ant-upload-list-picture .anticon-close,
+.ant-upload-list-picture-card .anticon-close {
+  position: absolute;
+  top: 8px;
+  right: 8px;
+  line-height: 1;
+  opacity: 1;
+}
+.ant-upload-list-picture-card-container {
+  display: inline-block;
+  width: 104px;
+  height: 104px;
+  margin: 0 8px 8px 0;
+  vertical-align: top;
+}
+.ant-upload-list-picture-card.ant-upload-list::after {
+  display: none;
+}
+.ant-upload-list-picture-card .ant-upload-list-item {
+  height: 100%;
+  margin: 0;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-info {
+  position: relative;
+  height: 100%;
+  overflow: hidden;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-info::before {
+  position: absolute;
+  z-index: 1;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  opacity: 0;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  content: ' ';
+}
+.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info::before {
+  opacity: 1;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-actions {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  z-index: 10;
+  white-space: nowrap;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  opacity: 0;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye,
+.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download,
+.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {
+  z-index: 10;
+  width: 16px;
+  margin: 0 4px;
+  color: var(--text_cl);
+  font-size: 16px;
+  cursor: pointer;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover,
+.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover,
+.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {
+  color: #fff;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-info:hover + .ant-upload-list-item-actions,
+.ant-upload-list-picture-card .ant-upload-list-item-actions:hover {
+  opacity: 1;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail,
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img {
+  position: static;
+  display: block;
+  width: 100%;
+  height: 100%;
+  -o-object-fit: contain;
+     object-fit: contain;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-name {
+  display: none;
+  margin: 8px 0 0;
+  padding: 0;
+  line-height: 1.5715;
+  text-align: center;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-file + .ant-upload-list-item-name {
+  position: absolute;
+  bottom: 10px;
+  display: block;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {
+  background-color: rgba(255, 255, 255, 0.04);
+}
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info {
+  height: auto;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info::before,
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye,
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete {
+  display: none;
+}
+.ant-upload-list-picture-card .ant-upload-list-item-progress {
+  bottom: 32px;
+  width: calc(100% - 14px);
+  padding-left: 0;
+}
+.ant-upload-list-text-container,
+.ant-upload-list-picture-container {
+  -webkit-transition: opacity 0.3s, height 0.3s;
+  transition: opacity 0.3s, height 0.3s;
+}
+.ant-upload-list-text-container::before,
+.ant-upload-list-picture-container::before {
+  display: table;
+  width: 0;
+  height: 0;
+  content: '';
+}
+.ant-upload-list-text-container .ant-upload-span,
+.ant-upload-list-picture-container .ant-upload-span {
+  display: block;
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+}
+.ant-upload-list-text .ant-upload-span,
+.ant-upload-list-picture .ant-upload-span {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+.ant-upload-list-text .ant-upload-span > *,
+.ant-upload-list-picture .ant-upload-span > * {
+  -webkit-box-flex: 0;
+      -ms-flex: none;
+          flex: none;
+}
+.ant-upload-list-text .ant-upload-list-item-name,
+.ant-upload-list-picture .ant-upload-list-item-name {
+  -webkit-box-flex: 1;
+      -ms-flex: auto;
+          flex: auto;
+  padding: 0 8px;
+}
+.ant-upload-list-text .ant-upload-list-item-card-actions,
+.ant-upload-list-picture .ant-upload-list-item-card-actions {
+  position: static;
+}
+.ant-upload-list-text .ant-upload-text-icon .anticon {
+  position: static;
+}
+.ant-upload-list .ant-upload-animate-inline-appear,
+.ant-upload-list .ant-upload-animate-inline-enter,
+.ant-upload-list .ant-upload-animate-inline-leave {
+  -webkit-animation-duration: 0.3s;
+          animation-duration: 0.3s;
+  -webkit-animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+          animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);
+}
+.ant-upload-list .ant-upload-animate-inline-appear,
+.ant-upload-list .ant-upload-animate-inline-enter {
+  -webkit-animation-name: uploadAnimateInlineIn;
+          animation-name: uploadAnimateInlineIn;
+}
+.ant-upload-list .ant-upload-animate-inline-leave {
+  -webkit-animation-name: uploadAnimateInlineOut;
+          animation-name: uploadAnimateInlineOut;
+}
+@-webkit-keyframes uploadAnimateInlineIn {
+  from {
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+  }
+}
+@keyframes uploadAnimateInlineIn {
+  from {
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+  }
+}
+@-webkit-keyframes uploadAnimateInlineOut {
+  to {
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+  }
+}
+@keyframes uploadAnimateInlineOut {
+  to {
+    width: 0;
+    height: 0;
+    margin: 0;
+    padding: 0;
+    opacity: 0;
+  }
+}
+.ant-upload-rtl {
+  direction: rtl;
+}
+.ant-upload-rtl.ant-upload.ant-upload-select-picture-card {
+  margin-right: auto;
+  margin-left: 8px;
+}
+.ant-upload-list-rtl {
+  direction: rtl;
+}
+.ant-upload-list-rtl .ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-1 {
+  padding-right: 22px;
+  padding-left: 14px;
+}
+.ant-upload-list-rtl .ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-2 {
+  padding-right: 22px;
+  padding-left: 28px;
+}
+.ant-upload-list-rtl .ant-upload-list-item-name {
+  padding-right: 22px;
+  padding-left: 0;
+}
+.ant-upload-list-rtl .ant-upload-list-item-name-icon-count-1 {
+  padding-left: 14px;
+}
+.ant-upload-list-rtl .ant-upload-list-item-card-actions {
+  right: auto;
+  left: 0;
+}
+.ant-upload-list-rtl .ant-upload-list-item-card-actions .anticon {
+  padding-right: 0;
+  padding-left: 5px;
+}
+.ant-upload-list-rtl .ant-upload-list-item-info {
+  padding: 0 4px 0 12px;
+}
+.ant-upload-list-rtl .ant-upload-list-item .anticon-close {
+  right: auto;
+  left: 4px;
+}
+.ant-upload-list-rtl .ant-upload-list-item-error .ant-upload-list-item-card-actions .anticon {
+  padding-right: 0;
+  padding-left: 5px;
+}
+.ant-upload-list-rtl .ant-upload-list-item-progress {
+  padding-right: 26px;
+  padding-left: 0;
+}
+.ant-upload-list-picture .ant-upload-list-item-info,
+.ant-upload-list-picture-card .ant-upload-list-item-info {
+  padding: 0;
+}
+.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-thumbnail,
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-thumbnail {
+  right: 8px;
+  left: auto;
+}
+.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-icon,
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-icon {
+  right: 50%;
+  left: auto;
+  -webkit-transform: translate(50%, -50%);
+          transform: translate(50%, -50%);
+}
+.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-name,
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-name {
+  margin: 0 8px 0 0;
+  padding-right: 48px;
+  padding-left: 8px;
+}
+.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-name-icon-count-1,
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-1 {
+  padding-right: 48px;
+  padding-left: 18px;
+}
+.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-name-icon-count-2,
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-2 {
+  padding-right: 48px;
+  padding-left: 36px;
+}
+.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-progress,
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-progress {
+  padding-right: 0;
+  padding-left: 0;
+}
+.ant-upload-list-rtl.ant-upload-list-picture .anticon-close,
+.ant-upload-list-rtl.ant-upload-list-picture-card .anticon-close {
+  right: auto;
+  left: 8px;
+}
+.ant-upload-list-rtl .ant-upload-list-picture-card-container {
+  margin: 0 0 8px 8px;
+}
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-actions {
+  right: 50%;
+  left: auto;
+  -webkit-transform: translate(50%, -50%);
+          transform: translate(50%, -50%);
+}
+.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-file + .ant-upload-list-item-name {
+  margin: 8px 0 0;
+  padding: 0;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0);
+  background-color: #ddd;
+  background: #bfbdbd;
+}
+:hover::-webkit-scrollbar-thumb {
+  background:#bfbdbd;
+  -webkit-box-shadow: inset 0 0 6px #bfbdbd;
+}
+.customListModel .ant-modal-body .content .right .rightTitleLeft > span{
+  color:var(--menu_selected_bg);
+}

+ 37 - 0
public/nginx_dev_server.conf

@@ -0,0 +1,37 @@
+ #dev服务代理打包文件
+#  server {
+#         listen     80;
+#         server_name game.zsjyx.cn;
+#         root /app/game-manage/devhtml;
+#         index index.html;
+#         location / {
+#             try_files $uri /index.html;
+#         }
+#         location /login {
+#              try_files $uri /index.html;
+#         }
+#          location /game {
+#             try_files $uri /game/index.html;
+#         }
+#          location /gamePlayer {
+#             try_files $uri /gamePlayer/index.html;
+#         }
+#          location /pay {
+#             try_files $uri /pay/index.html;
+#         }
+#          location /order {
+#             try_files $uri /order/index.html;
+#         }
+#         location /extension {
+#             try_files $uri /extension/index.html;
+#         }
+#          location /404 {
+#             try_files $uri /404/index.html;
+#         }
+#     }
+ server {
+        listen     80;
+        server_name qw.zsjyx.cn;
+        root /app/qc-EnterpriseWeChat/devhtml;
+        index index.html;
+    }

+ 7 - 0
public/nginx_pro_server.conf

@@ -0,0 +1,7 @@
+ #pro服务代理打包文件
+     server {
+        listen     80;
+        server_name qw.zsjyx.cn;
+        root /app/qc-EnterpriseWeChat/prohtml;
+        index index.html;
+    }

BIN
public/qclogo.png


+ 227 - 0
scripts/build.js

@@ -0,0 +1,227 @@
+"use strict";
+const { postOss } = require("../config/oss");
+// Do this as the first thing so that any code reading it knows the right env.
+process.env.BABEL_ENV = "production";
+process.env.NODE_ENV = "production";
+
+// Makes the script crash on unhandled rejections instead of silently
+// ignoring them. In the future, promise rejections that are not handled will
+// terminate the Node.js process with a non-zero exit code.
+process.on("unhandledRejection", (err) => {
+  throw err;
+});
+
+// Ensure environment variables are read.
+require("../config/env");
+
+const path = require("path");
+const chalk = require("react-dev-utils/chalk");
+const fs = require("fs-extra");
+const bfj = require("bfj");
+const webpack = require("webpack");
+const configFactory = require("../config/webpack.config");
+const paths = require("../config/paths");
+const checkRequiredFiles = require("react-dev-utils/checkRequiredFiles");
+const formatWebpackMessages = require("react-dev-utils/formatWebpackMessages");
+const printHostingInstructions = require("react-dev-utils/printHostingInstructions");
+const FileSizeReporter = require("react-dev-utils/FileSizeReporter");
+const printBuildError = require("react-dev-utils/printBuildError");
+const buildOrDev = require("./extend");
+
+const measureFileSizesBeforeBuild =
+  FileSizeReporter.measureFileSizesBeforeBuild;
+const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;
+const useYarn = fs.existsSync(paths.yarnLockFile);
+
+// These sizes are pretty large. We'll warn for bundles exceeding them.
+const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
+const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
+
+const isInteractive = process.stdout.isTTY;
+
+// Warn and crash if required files are missing
+// if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
+//   process.exit(1);
+// }
+
+const argv = process.argv.slice(2);
+const writeStatsJson = argv.indexOf("--stats") !== -1;
+// Generate configuration
+async function fn() {
+  let params = await buildOrDev();
+  const config = configFactory("production", params);
+  // We require that you explicitly set browsers and do not fall back to
+  // browserslist defaults.
+  const { checkBrowsers } = require("react-dev-utils/browsersHelper");
+  checkBrowsers(paths.appPath, isInteractive)
+    .then(() => {
+      // First, read the current file sizes in build directory.
+      // This lets us display how much they changed later.
+      return measureFileSizesBeforeBuild(paths.appBuild);
+    })
+    .then((previousFileSizes) => {
+      // Remove all content but keep the directory so that
+      // if you're in it, you don't end up in Trash
+      fs.emptyDirSync(paths.appBuild);
+      // Merge with the public folder
+      copyPublicFolder();
+      // Start the webpack build
+      return build(previousFileSizes);
+    })
+    .then(
+      ({ stats, previousFileSizes, warnings }) => {
+        // fs.copyFileSync(path.join(__dirname,'../src/public/antd.dark.css'),paths.appBuild+'/static/antd.dark.css')
+        if (warnings.length) {
+          console.log(chalk.yellow("Compiled with warnings.\n"));
+          console.log(warnings.join("\n\n"));
+          console.log(
+            "\nSearch for the " +
+              chalk.underline(chalk.yellow("keywords")) +
+              " to learn more about each warning."
+          );
+          console.log(
+            "To ignore, add " +
+              chalk.cyan("// eslint-disable-next-line") +
+              " to the line before.\n"
+          );
+        } else {
+          console.log(chalk.green("Compiled successfully.\n"));
+        }
+
+        console.log("File sizes after gzip:\n");
+        printFileSizesAfterBuild(
+          stats,
+          previousFileSizes,
+          paths.appBuild,
+          WARN_AFTER_BUNDLE_GZIP_SIZE,
+          WARN_AFTER_CHUNK_GZIP_SIZE
+        );
+
+        const appPackage = require(paths.appPackageJson);
+        const publicUrl = paths.publicUrlOrPath;
+        const publicPath = config.output.publicPath;
+        const buildFolder = path.relative(process.cwd(), paths.appBuild);
+        printHostingInstructions(
+          appPackage,
+          publicUrl,
+          publicPath,
+          buildFolder,
+          useYarn
+        );
+        if(argv.includes('-p')){
+          console.log("线上环境打包完成")
+          // postOss("zx-web-enterprisewechat-pro","../proDist");
+        }else{
+          console.log("测试环境打包完成")
+          // postOss("zx-web-enterprisewechat-dev","../devDist");
+        }
+      },
+      (err) => {
+        const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === "true";
+        if (tscCompileOnError) {
+          console.log(
+            chalk.yellow(
+              "Compiled with the following type errors (you may want to check these before deploying your app):\n"
+            )
+          );
+          printBuildError(err);
+        } else {
+          console.log(chalk.red("Failed to compile.\n"));
+          printBuildError(err);
+          process.exit(1);
+        }
+      }
+    )
+    .catch((err) => {
+      if (err && err.message) {
+        console.log(err.message);
+      }
+      process.exit(1);
+    });
+
+  // Create the production build and print the deployment instructions.
+  function build(previousFileSizes) {
+    console.log("Creating an optimized production build...");
+    // console.log('config===>',config)
+    const compiler = webpack(config);
+    return new Promise((resolve, reject) => {
+      compiler.run((err, stats) => {
+        // console.log('stats===>',stats)
+        let messages;
+        if (err) {
+          if (!err.message) {
+            return reject(err);
+          }
+
+          let errMessage = err.message;
+
+          // Add additional information for postcss errors
+          if (Object.prototype.hasOwnProperty.call(err, "postcssNode")) {
+            errMessage +=
+              "\nCompileError: Begins at CSS selector " +
+              err["postcssNode"].selector;
+          }
+
+          messages = formatWebpackMessages({
+            errors: [errMessage],
+            warnings: [],
+          });
+        } else {
+          messages = formatWebpackMessages(
+            stats.toJson({ all: false, warnings: true, errors: true })
+          );
+        }
+        if (messages.errors.length) {
+          // Only keep the first error. Others are often indicative
+          // of the same problem, but confuse the reader with noise.
+          if (messages.errors.length > 1) {
+            messages.errors.length = 1;
+          }
+          return reject(new Error(messages.errors.join("\n\n")));
+        }
+        if (
+          process.env.CI &&
+          (typeof process.env.CI !== "string" ||
+            process.env.CI.toLowerCase() !== "false") &&
+          messages.warnings.length
+        ) {
+          // Ignore sourcemap warnings in CI builds. See #8227 for more info.
+          const filteredWarnings = messages.warnings.filter(
+            (w) => !/Failed to parse source map/.test(w)
+          );
+          if (filteredWarnings.length) {
+            console.log(
+              chalk.yellow(
+                "\nTreating warnings as errors because process.env.CI = true.\n" +
+                  "Most CI servers set it automatically.\n"
+              )
+            );
+            return reject(new Error(filteredWarnings.join("\n\n")));
+          }
+        }
+
+        const resolveArgs = {
+          stats,
+          previousFileSizes,
+          warnings: messages.warnings,
+        };
+
+        if (writeStatsJson) {
+          return bfj
+            .write(paths.appBuild + "/bundle-stats.json", stats.toJson())
+            .then(() => resolve(resolveArgs))
+            .catch((error) => reject(new Error(error)));
+        }
+        return resolve(resolveArgs);
+      });
+    });
+  }
+
+  function copyPublicFolder() {
+    fs.copySync(paths.appPublic, paths.appBuild, {
+      dereference: true,
+      filter: (file) => file !== paths.appHtml,
+    });
+  }
+}
+fn();

+ 98 - 0
scripts/extend.js

@@ -0,0 +1,98 @@
+const program = require("commander");
+const tools = require("./tools");
+const HtmlWebpackPlugin = require("html-webpack-plugin");
+const paths = require("../config/paths");
+const myConfig = require("../src/global");
+program
+  .version("0.1.0")
+  .usage("[options] <file ...>")
+  .option("-b, --build", "是否是打包输出到dist")
+  .option("-a, --all", "是否操作全部")
+  .option("-d, --dev", "开发")
+  .option("-p, --pro", "生成")
+  .option("-n, --nginx", "打包到nginx")
+  .option("-m, --map", "线上环境是否生成map文件")
+  .parse(process.argv);
+
+async function buildOrDev() {
+  let isEnvProduction = process.env.NODE_ENV === "production";
+  let params = {
+    configEntry: {},
+    htmls: null,
+    isNginx: program.nginx ? program.nginx : false,
+    CONFIG: program.pro //dev和pro区别配置
+      ? myConfig.pro //生成
+      : myConfig.dev, //开发
+  };
+  let targetProject;
+  if (program.all) {
+    // 读取pages下面所有构建文件
+    let allFiles = await tools.getAllBuildFile();
+    targetProject = Array.isArray(allFiles) ? allFiles : ["login"];
+  } else {
+    if (program["_name"] === "build") {
+      targetProject = program.args;
+    } else {
+      targetProject = [...new Set([...program.args, "login", "404"])];
+    }
+  }
+  if (program["_name"] === "build") {
+    if(!program.map){
+      process.env.GENERATE_SOURCEMAP ='false'
+    }
+    console.log(
+      "启动打包===>",
+      program.pro ? "线上" : "测试",
+      program.nginx ? "打包到nginx" : "打包到项目目录下",
+      program.map ? '生成MAP文件':'不生成MAP文件'
+    );
+  } else {
+    console.log(
+      "启动本地环境===>",
+      program.pro ? "线上" : "测试",
+      program.nginx ? "打包到nginx" : "打包到项目目录下"
+    );
+  }
+  console.log(targetProject);
+  /* 设定入口文件 */
+  targetProject.forEach((item) => {
+    params.configEntry[item] =
+      paths.appPath + "/src/pages/" + item + "/entry/index.tsx";
+  });
+  /* 设定html输出 */
+  params.htmls = targetProject.map((item) => {
+    /* https://www.webpackjs.com/plugins/html-webpack-plugin/ */
+    return new HtmlWebpackPlugin(
+      Object.assign(
+        {},
+        {
+          inject: true,
+          title: item,
+          filename:item !== 'login'? `${item}/index.html`:`index.html`, //HashRouter路由将login的HTML单独拿出来放在主目录下
+          // filename:`${item}/index.html`, //BrowserRouter路由多入口
+          template: paths.appPath + "/build/index.html",
+          chunks: [item],
+        },
+        isEnvProduction
+          ? {
+              minify: {
+                removeComments: true,
+                collapseWhitespace: true,
+                removeRedundantAttributes: true,
+                useShortDoctype: true,
+                removeEmptyAttributes: true,
+                removeStyleLinkTypeAttributes: true,
+                keepClosingSlash: true,
+                minifyJS: true,
+                minifyCSS: true,
+                minifyURLs: true,
+              },
+            }
+          : undefined
+      )
+    );
+  });
+  return params;
+}
+
+module.exports = buildOrDev;

+ 159 - 0
scripts/start.js

@@ -0,0 +1,159 @@
+"use strict";
+
+// Do this as the first thing so that any code reading it knows the right env.
+process.env.BABEL_ENV = "development";
+process.env.NODE_ENV = "development";
+
+// Makes the script crash on unhandled rejections instead of silently
+// ignoring them. In the future, promise rejections that are not handled will
+// terminate the Node.js process with a non-zero exit code.
+process.on("unhandledRejection", (err) => {
+  throw err;
+});
+
+// Ensure environment variables are read.
+require("../config/env");
+
+const fs = require("fs");
+const chalk = require("react-dev-utils/chalk");
+const webpack = require("webpack");
+const WebpackDevServer = require("webpack-dev-server");
+const clearConsole = require("react-dev-utils/clearConsole");
+const checkRequiredFiles = require("react-dev-utils/checkRequiredFiles");
+const {
+  choosePort,
+  createCompiler,
+  prepareProxy,
+  prepareUrls,
+} = require("react-dev-utils/WebpackDevServerUtils");
+const openBrowser = require("react-dev-utils/openBrowser");
+const semver = require("semver");
+const paths = require("../config/paths");
+const configFactory = require("../config/webpack.config");
+const createDevServerConfig = require("../config/webpackDevServer.config");
+const getClientEnvironment = require("../config/env");
+const react = require(require.resolve("react", { paths: [paths.appPath] }));
+
+const env = getClientEnvironment(paths.publicUrlOrPath.slice(0, -1));
+const useYarn = fs.existsSync(paths.yarnLockFile);
+const isInteractive = process.stdout.isTTY;
+
+
+
+
+// Warn and crash if required files are missing
+// if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
+//   process.exit(1);
+// }
+
+// Tools like Cloud9 rely on this.
+const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
+const HOST = process.env.HOST || "0.0.0.0";
+
+if (process.env.HOST) {
+  console.log(
+    chalk.cyan(
+      `Attempting to bind to HOST environment variable: ${chalk.yellow(
+        chalk.bold(process.env.HOST)
+      )}`
+    )
+  );
+  console.log(
+    `If this was unintentional, check that you haven't mistakenly set it in your shell.`
+  );
+  console.log(
+    `Learn more here: ${chalk.yellow("https://cra.link/advanced-config")}`
+  );
+  console.log();
+}
+
+// We require that you explicitly set browsers and do not fall back to
+// browserslist defaults.
+const { checkBrowsers } = require("react-dev-utils/browsersHelper");
+const buildOrDev = require("./extend");
+checkBrowsers(paths.appPath, isInteractive)
+  .then(() => {
+    // We attempt to use the default port but if it is busy, we offer the user to
+    // run on a different port. `choosePort()` Promise resolves to the next free port.
+    return choosePort(HOST, DEFAULT_PORT);
+  })
+  .then(async (port) => {
+    if (port == null) {
+      // We have not found a port.
+      return;
+    }
+    let params =await buildOrDev()
+    const config = configFactory("development",params);
+    const protocol = process.env.HTTPS === "true" ? "https" : "http";
+    const appName = require(paths.appPackageJson).name;
+
+    const useTypeScript = fs.existsSync(paths.appTsConfig);
+    const urls = prepareUrls(
+      protocol,
+      HOST,
+      port,
+      paths.publicUrlOrPath.slice(0, -1)
+    );
+    // Create a webpack compiler that is configured with custom messages.
+    const compiler = createCompiler({
+      appName,
+      config,
+      urls,
+      useYarn,
+      useTypeScript,
+      webpack,
+    });
+    // Load proxy config
+    const proxySetting = require(paths.appPackageJson).proxy;
+    const proxyConfig = prepareProxy(
+      proxySetting,
+      paths.appPublic,
+      paths.publicUrlOrPath
+    );
+    // Serve webpack assets generated by the compiler over a web server.
+    const serverConfig = {
+      ...createDevServerConfig(proxyConfig, urls.lanUrlForConfig,params.configEntry),
+      host: HOST,
+      port,
+    };
+    const devServer = new WebpackDevServer(serverConfig, compiler);
+    // Launch WebpackDevServer.
+    devServer.startCallback(() => {
+      if (isInteractive) {
+        clearConsole();
+      }
+
+      if (env.raw.FAST_REFRESH && semver.lt(react.version, "16.10.0")) {
+        console.log(
+          chalk.yellow(
+            `Fast Refresh requires React 16.10 or higher. You are using React ${react.version}.`
+          )
+        );
+      }
+
+      console.log(chalk.cyan("Starting the development server...\n"));
+      openBrowser(urls.localUrlForBrowser);
+    });
+
+    ["SIGINT", "SIGTERM"].forEach(function (sig) {
+      process.on(sig, function () {
+        devServer.close();
+        process.exit();
+      });
+    });
+
+    
+    if (process.env.CI !== "true") {
+      // Gracefully exit when stdin ends
+      process.stdin.on("end", function () {
+        devServer.close();
+        process.exit();
+      });
+    }
+  })
+  .catch((err) => {
+    if (err && err.message) {
+      console.log(err.message);
+    }
+    process.exit(1);
+  });

+ 52 - 0
scripts/test.js

@@ -0,0 +1,52 @@
+'use strict';
+
+// Do this as the first thing so that any code reading it knows the right env.
+process.env.BABEL_ENV = 'test';
+process.env.NODE_ENV = 'test';
+process.env.PUBLIC_URL = '';
+
+// Makes the script crash on unhandled rejections instead of silently
+// ignoring them. In the future, promise rejections that are not handled will
+// terminate the Node.js process with a non-zero exit code.
+process.on('unhandledRejection', err => {
+  throw err;
+});
+
+// Ensure environment variables are read.
+require('../config/env');
+
+const jest = require('jest');
+const execSync = require('child_process').execSync;
+let argv = process.argv.slice(2);
+
+function isInGitRepository() {
+  try {
+    execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
+    return true;
+  } catch (e) {
+    return false;
+  }
+}
+
+function isInMercurialRepository() {
+  try {
+    execSync('hg --cwd . root', { stdio: 'ignore' });
+    return true;
+  } catch (e) {
+    return false;
+  }
+}
+
+// Watch unless on CI or explicitly running all tests
+if (
+  !process.env.CI &&
+  argv.indexOf('--watchAll') === -1 &&
+  argv.indexOf('--watchAll=false') === -1
+) {
+  // https://github.com/facebook/create-react-app/issues/5210
+  const hasSourceControl = isInGitRepository() || isInMercurialRepository();
+  argv.push(hasSourceControl ? '--watch' : '--watchAll');
+}
+
+
+jest.run(argv);

+ 50 - 0
scripts/tools.js

@@ -0,0 +1,50 @@
+var fs = require("fs");
+
+var distDir = "./dist";
+
+let fordel = (file, path, name) => {
+  if (file.includes("_" + name)) {
+    fs.unlink(path, err => {
+      if (err) {
+        console.error(err, `delete ${file} fail`);
+        return;
+      }
+      console.log(file, "deleted");
+    });
+  }
+};
+
+var delOldFiles = function(name) {
+  //打包时删除旧文件
+  fs.readdir(distDir, function(err, files) {
+    if (err) return console.log(err, "err");
+    files.forEach(function(file) {
+      if (file === "css" || file === "js") {
+        fs.readdir(`${distDir}/${file}`, function(err, ifiles) {
+          if (err) return console.log(err, "err");
+          ifiles.forEach(function(ifile) {
+            fordel(ifile,`${distDir}/${file}/${ifile}`,name)
+          });
+        });
+      }
+      fordel(file,`${distDir}/${file}`,name)
+    });
+  });
+};
+
+var getAllBuildFile = () => {
+  //读取目录,排除目录中不需要的文件返回新的数组
+  return new Promise((resolve, reject) => {
+    fs.readdir("./src/pages", function(err, files) {
+      if (err) {
+        reject(err);
+      }
+      resolve(files.filter(fileName => fileName[0] !== "."));
+    });
+  });
+};
+
+module.exports = {
+  delOldFiles: delOldFiles,
+  getAllBuildFile: getAllBuildFile
+};

+ 108 - 0
src/API/global.ts

@@ -0,0 +1,108 @@
+import request from "@/utils/request";
+let { api, imgApi, weApi } = process.env.CONFIG;
+
+
+
+/**获取企微列表*/
+export async function api_corpUser_allOfUser(userId: string) {
+    return request({ url: `/corpUser/allOfUser/${userId}` })
+}
+/** 获取组员及组员账号列表 */
+export async function getAdAccountAllOfMember() {
+    return request({ url: api + '/erp/user/subUserWithSelf' })
+}
+
+/**创建通用分组*/
+export async function api_post_common_group_create(data: any) {
+    return request({
+        url: '/corp/common/group/create',
+        method: 'POST',
+        data
+    })
+}
+/**删除通用分组*/
+export async function api_post_common_group_delete(data: any) {
+    return request({
+        url: '/corp/common/group/delete',
+        method: 'DELETE',
+        params: data
+    })
+}
+/**查询通用分组*/
+export async function api_get_common_group_list(data: any) {
+    return request({
+        url: '/corp/common/group/list',
+        method: 'GET',
+        params: data
+    })
+}
+/**通用分组枚举*/
+export async function api_get_common_group_type_enym(data: any) {
+    return request({
+        url: '/corp/common/group/type/enum',
+        method: 'GET',
+    })
+}
+/**更新通用分组*/
+export async function api_patch_common_group_update(data: any) {
+    return request({
+        url: '/corp/common/group/update',
+        method: 'PATCH',
+        params: data
+    })
+}
+/**获取企业下的标签列表全部*/
+export async function api_get_external_tag_group_list(params: { corpId: string }) {
+    return request({
+        url: '/corp/external/tag/group/list',
+        method: 'GET',
+        params
+    })
+}
+
+/**获取背景图ID列表*/
+export async function api_get_img_typeList() {
+    return request({
+        url: imgApi + '/img/typeList',
+        method: 'GET',
+    })
+}
+/**获取背景图对应列表*/
+export async function api_post_img_list(data: {
+    id: string,
+    page: string,
+    pageSize: string
+}) {
+    return request({
+        url: imgApi + '/img/list',
+        method: 'POST',
+        data
+    })
+}
+
+/**
+ * 获取Appid列表
+ * @param data 
+ * @returns 
+ */
+export async function getAppIdListApi(data: { pageNum: number, pageSize: number, appId: string }) {
+    return request({
+        url: '/sys/app/listOfPage',
+        method: 'POST',
+        data
+    })
+}
+/**游戏列表*/
+export async function api_get_gameList() {
+    return request({
+        url: weApi + '/gameRole/gameList',
+        method: 'GET',
+    })
+}
+/**游戏列表*/
+export async function api_get_gameServerList(gameId: string | number) {
+    return request({
+        url: weApi + `/gameRole/serverList/${gameId}`,
+        method: 'GET',
+    })
+}

+ 31 - 0
src/API/index.ts

@@ -0,0 +1,31 @@
+import request from "@/utils/request";
+let { api } = process.env.CONFIG;
+
+/**获取用户信息 */
+export async function loginUserInfo() {
+  return request({ url: api + "/erp/user/loginUserInfo" })
+}
+
+/**获取菜单路由*/
+export async function getMenu(): Promise<any> {
+  return request({
+    url: api + "/erp/menu/getRouters",
+    method: "PUT",
+    data: ["corp_operations"]
+  })
+}
+
+/**退出登录*/
+export async function outLogin() {
+  return request({
+    url: api + '/erp/user/logout',
+    method: 'DELETE'
+  })
+}
+// 选择公司
+export async function selectCompanyApi(companyId: number) {
+  return request({
+    url: api + `/erp/user/chooseCompany/${companyId}`,
+    method: 'PUT'
+  })
+}

+ 31 - 0
src/Hoc/HocError.tsx

@@ -0,0 +1,31 @@
+import React, { Component } from 'react'
+const xhh = require('@/public/xhh.jpeg')
+/**错误边界捕获*/
+function HocError(Element: any) {
+    return class ErrorBoundary extends Component<any> {
+        constructor(props:any){
+            super(props)
+        }
+        state = { hasError: false }
+        static getDerivedStateFromError(error: any) {
+            return { hasError: true }
+        }
+        componentDidCatch(...err: any) {
+            // 你同样可以将错误日志上报给服务器
+            console.log(...err);
+        }
+        render() {
+            let { hasError } = this.state
+            if (hasError) {
+                return <>
+                    <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', flexFlow: 'column', height: '100%', background: '#fff' }}>
+                        <div style={{ fontSize: 25 }}>恭喜你发现了一个BUG,请保护BUG现场,钉钉联系沈武!</div>
+                        <img src={xhh} />
+                    </div>
+                </>
+            }
+            return <Element {...this.props} />
+        }
+    }
+}
+export default HocError

+ 172 - 0
src/Hoc/HocWaterFallBox.tsx

@@ -0,0 +1,172 @@
+import React, { useEffect, useReducer, useRef } from 'react'
+// import { useModel } from 'umi'
+
+interface State {
+    childrenDivs: Element[],//实例
+    children?: JSX.Element[],//jsxElement
+    configs?: { w: number, h: number, t: number, l: number }[],//配置
+    size?: number,//屏幕宽度
+    newColumn?: number//本次展示列数
+}
+interface Action {
+    type: 'addRef' | 'children' | 'configs' | 'size' | 'newColumn',
+    params?: any,
+}
+function reducer(state: State, action: Action) {
+    let { type, params } = action
+    switch (type) {
+        case 'addRef':
+            let arr = state.childrenDivs
+            arr[params.index] = params.ref//替换指定位置的实例
+            arr = arr?.filter((item: Element) => { return item })//清空空实例
+            return { ...state, childrenDivs: arr }
+        case 'children':
+            return { ...state, children: params.children }
+        case 'configs':
+            if (JSON.stringify(params.configs) === JSON.stringify(state.configs)) {//传入的配置和老配置一样不更新
+                return { ...state }
+            }
+            return { ...state, configs: params.configs }
+        case 'newColumn':
+            return { ...state, newColumn: params.newColumn }
+        case 'size':
+            return { ...state, size: params.size }
+        default:
+            return { ...state }
+    }
+}
+/**
+ *  
+ **高阶函数处理瀑布流传入JSX.ELEMENT
+* @example
+ *<HocWaterFallBox>
+ *   <div>//必要的div包裹,缺少会报错
+ *     {
+ *       getData?.data?.items?.map((item: any, index: number) => {
+ *         return <div key={item.id} className={action.id === item.id ?{...}:{...}}>//必要的div包裹,缺少会报错,不要在此div设置统一className,此处className只在配置选中需求时JS控制添加,当盒子存在className不会做样式更新处理更新注意!
+ *             <Img src='...' /> //要渲染的盒子模型
+ *            </div>
+ *        })
+ *      }
+ *   </div>
+ *</HocWaterFallBox>  
+ * @param {number} column 一行展示多少列,column和childrenWidth二选一,设置了column自动计算子元素的宽度
+ * @param {number} childrenWidth 默认子元素宽度300,可自行设置支持number,设置了子元素宽列就以宽度计算
+ * @param {number}  width 容器宽默认100%,可自行设置支持number
+ * @param {number} margin 子元素左右间隔默认20px,可自行设置支持number,底部间隔默认为0
+ * @param  { JSX.Element} props JSX.Element
+ * @return { JSX.Element} JSX.Element
+ */
+function HocWaterFallBox(props: { children: JSX.Element, childrenWidth?: number, width?: number, margin?: number, column?: number }) {
+    const { childrenWidth = 300, width, margin = 20, column } = props
+    const [state, dispatch] = useReducer(reducer, { childrenDivs: [], children: null, configs: [] })
+    // let { collapsed } = useModel('@@initialState', model => ({ collapsed: model?.initialState?.collapsed }))
+    let div: { current: HTMLDivElement | null } = useRef(null)
+    let { childrenDivs, configs, children, size, newColumn } = state
+    //监听浏览器宽度变化
+    useEffect(() => {
+        window.onresize = function () {
+            dispatch({ type: 'size', params: { size: document.body.scrollWidth } })
+        }
+        return () => {
+            window.onresize = null
+        }
+    }, [])
+    //计算配置
+    useEffect(() => {
+        let children = props?.children?.props?.children
+        let bodyWidth: number = 0//父容器的宽
+        let newColumn: number = column ? column : 0 //列
+        let allW: number = 0//统一宽
+        let childConfg: { w: number, h: number, t: number, l: number }[] = []//每个children的样式配置
+        let allH: number[] = []//全部列的高
+        let time: any = null//定时器
+        function set() {
+            if (div?.current) {//计算容器宽和列
+                bodyWidth = width ? width : div?.current?.clientWidth//容器宽有自定义就使用自定义没有就计算当前容器的宽
+                if (newColumn) {//假如自定义了列数执行
+                    allW = (bodyWidth - (newColumn - 1) * margin) / newColumn//计算所有children的宽
+                } else {//否则走自定义children宽逻辑
+                    if (bodyWidth <= childrenWidth) {//假如容器宽小于等于渲染元素的宽退出操作避免报错
+                        return
+                    }
+                    newColumn = Math.floor((bodyWidth - childrenWidth) / (childrenWidth + margin)) + 1//计算列
+                }
+            }
+            childrenDivs.forEach((child: Element, index: number) => {//循环拿到的实例
+                let w = allW ? allW : child?.clientWidth || 0//children的宽,自定义列就走计算的宽,没有就计算实例的宽,初始为0
+                let h = child?.scrollHeight || 0//children的高,从实例计算,初始为0
+                let t = 0//children的top值初始为0
+                let l = 0//children的left值初始为0
+                if (index < newColumn) {//假如下标小于列的值为第一行逻辑
+                    allH.push(h)//添加第一行所有children的高
+                    l = index === 0 ? 0 : (allW ? allW : childrenWidth) * index + margin * index//计算第一行每个children的left值
+                } else {//否则不是第一行走以下逻辑
+                    let minH: number = Math.min(...allH)//取当前最小高度的children的值
+                    let eq = allH.indexOf(minH)//取当前最小高度children的位置
+                    allH[eq] = allH[eq] + h + margin//更新列的高
+                    t = minH ? minH + margin : 0//设置当前children的top
+                    l = eq === 0 ? 0 : (allW ? allW : childrenWidth) * eq + margin * eq//设置当前children的left值
+                }
+                childConfg.push({ w, h, t, l })//向配置中添加本次计算
+            })
+            dispatch({ type: 'configs', params: { configs: childConfg } })//存放本次计算的所有children配置
+            dispatch({ type: 'newColumn', params: { newColumn: newColumn } })//存放本次计算的列值
+        }
+        if (childrenDivs?.length === children?.length) {//假如获取到实例的个数和本次传入的jsxElement个数相等表示已经全部取得实例可以进行计算
+            time = setTimeout(() => { //设置定时器,避免渲染过慢导致获取相应的数据不正确
+                set()
+            }, 200)
+        }
+        return () => {//每次卸载清除定时器以免内存泄漏
+            time = null
+            clearTimeout(time)
+        }
+    }, [childrenDivs, div, childrenWidth, width, column, margin, size])//此处依赖值变化需要更新计算
+    /**处理结果 */
+    useEffect(() => {
+        let childrens: JSX.Element[] = props?.children?.props?.children || []
+        let allH: number[] = []//全部列的高
+        let newChild: { [name: string]: string }[] = []
+        let oldChild: { [name: string]: string }[] = []
+        childrens?.map((child: any) => {
+            newChild.push({ key: child?.key, style: child?.props?.style })
+        })
+        state?.children?.props?.children?.map((child: any) => {
+            oldChild.push({ key: child?.key.replace(/(\/.*)|(")/ig, ''), style: child?.props?.style })
+        })
+        if (JSON.stringify(newChild) === JSON.stringify(oldChild)) {
+            return
+        }
+        if (!props?.children?.props?.children) {//当没拿到全部数据不处理
+            return
+        }
+        let configss = configs
+        if (configss.every((item: { w: number, h: number, t: number, l: number }) => item.l === 0) && configss.length > 0) {//配置没有处理完不处理
+            return
+        }
+        configss?.forEach((conf: { h: number }, index: number) => {//计算全部列的高
+            allH[index % newColumn] = allH.length === newColumn ? allH[index % newColumn] + conf.h + margin : conf.h + margin
+        })
+        let children = React.cloneElement(//创建新的JSX.ELEMENT
+            props.children,
+            {
+                children: React.Children.map(childrens, (child: JSX.Element, index: number) => {
+                    return React.cloneElement(
+                        child,
+                        {
+                            style: { width: configss[index]?.w || childrenWidth, position: 'absolute', left: configss[index]?.l, top: configss[index]?.t,  },
+                            ref: (ref: HTMLDivElement) => { dispatch({ type: 'addRef', params: { index, ref } }) },
+                            key: JSON.stringify(child.key)
+                        },
+                    )
+                }),
+                ref: div,
+                style: { width: width || '100%', position: 'relative', height: allH.length > 0 ? Math.max(...allH) : '100%' },
+            },
+        )
+        dispatch({ type: 'children', params: { children } })
+    }, [props.children, configs, newColumn])
+    return children
+}
+export default HocWaterFallBox

+ 118 - 0
src/Hoc/WebSocket.ts

@@ -0,0 +1,118 @@
+
+class WebSocketService {
+  private static instance: WebSocketService;
+  private websocket: WebSocket;
+  private reconnectInterval?: NodeJS.Timeout;
+  private heartbeatInterval?: NodeJS.Timeout;
+  private url: string;
+  private openJson: string
+
+  private constructor(url: string, openJson: string) {
+    this.url = url;
+    this.openJson = openJson;
+    this.websocket = new WebSocket(url);
+    // 首次连接
+    this.websocket.onopen = () => {
+      console.log('WebSocket===>建立链接');
+      sessionStorage.setItem("isOutPage", "0")
+      this.clearReconnectInterval();//关闭重连
+      this.stopHeartbeat();//关闭心跳
+      if (openJson) {//首次握手请求数据
+        if(this.websocket.readyState === 1){
+          console.log("首次请求====>", this.openJson,this.websocket.readyState)
+          this.websocket?.send(this.openJson)
+        }
+      }
+      this.startHeartbeat();//开启心跳
+    };
+    //关闭服务
+    this.websocket.onclose = () => {
+      console.log('WebSocket===>服务中断', sessionStorage.getItem("isOutPage"), sessionStorage.getItem("isOutPage") == "1" ? "不需要重连" : "当前页面需要重连===>");
+      this.stopHeartbeat();
+      this.clearReconnectInterval();//关闭重连
+      // if(sessionStorage.getItem("isOutPage")  && sessionStorage.getItem("isOutPage") == "0"){
+      //   console.log("当前页面需要重连===>")
+      //   this.reconnect();
+      // }
+    };
+  }
+  //获取实例
+  public static getInstance(url: string, openJson: string): WebSocketService {
+    if (!WebSocketService.instance ) {
+      console.log("new WebSocketService")
+      WebSocketService.instance = new WebSocketService(url, openJson);
+    }
+    if( WebSocketService.instance.websocket.readyState !== 1){
+      WebSocketService.instance.connect();
+    }
+    return WebSocketService.instance;
+  }
+  //重连
+  public connect(): void {
+    if (this.websocket.readyState === WebSocket.OPEN) return;
+    this.websocket = new WebSocket(this.url);
+    this.websocket.onopen = () => {
+      console.log('WebSocket===>建立链接');
+      sessionStorage.setItem("isOutPage", "0")
+      this.clearReconnectInterval();//关闭重连
+      this.stopHeartbeat();//关闭心跳
+      if (this.openJson) {//首次握手请求数据
+        if(this.websocket.readyState === 1){
+          console.log("首次请求====>", this.openJson,this.websocket.readyState)
+          this.websocket?.send(this.openJson)
+        }
+      }
+      this.startHeartbeat();//开启心跳
+    };
+    this.websocket.onclose = () => {
+      console.log('WebSocket===>服务中断', sessionStorage.getItem("isOutPage"), sessionStorage.getItem("isOutPage") == "1" ? "不需要重连" : "当前页面需要重连===>");
+      this.stopHeartbeat();
+      this.clearReconnectInterval();//关闭重连
+      // if(sessionStorage.getItem("isOutPage")  && sessionStorage.getItem("isOutPage") == "0"){
+      //   this.reconnect();
+      // }
+    };
+  }
+  // 重连定时
+  public reconnect(): void {
+    console.log('this===>', this)
+    this.clearReconnectInterval();
+    this.reconnectInterval = setInterval(() => {
+      console.log('WebSocket 重连====>');
+      this.connect();
+    }, 10000);
+  }
+  // 清除重连
+  private clearReconnectInterval(): void {
+    if (this.reconnectInterval) {
+      clearInterval(this.reconnectInterval);
+      this.reconnectInterval = undefined;
+    }
+  }
+  // 开启心跳
+  private startHeartbeat(): void {
+    this.stopHeartbeat();
+    this.heartbeatInterval = setInterval(() => {
+      this.websocket?.send('heartbeat');
+    }, 1000*60);
+  }
+  // 关闭心跳
+  private stopHeartbeat(): void {
+    if (this.heartbeatInterval) {
+      clearInterval(this.heartbeatInterval);
+      this.heartbeatInterval = undefined;
+    }
+  }
+  // 发送消息
+  public send(message: string): void {
+    if (this.websocket.readyState === WebSocket.OPEN) {
+      this.websocket.send(message);
+    } else {
+      console.log('WebSocket不在线无法发送消息');
+    }
+  }
+  public getWebsocket(): WebSocket {
+    return this.websocket;
+  }
+}
+export default WebSocketService

+ 62 - 0
src/Hook/useAjax.tsx

@@ -0,0 +1,62 @@
+import { App } from 'antd'
+import { useState } from 'react'
+export interface AjaxPromise {
+    /**请求*/
+    run: (params?: any) => Promise<any>,
+    /**执行上次的请求*/
+    refresh: () => Promise<any>,
+    /** 修改data */
+    mutate: (data: any) => void
+    /**清空data*/
+    initData: () => void,
+    /**loding状态*/
+    loading: boolean,
+    /**data数据*/
+    data: any,
+}
+/**
+ * ajax封装方法 hook 方法不要使用在非页面中
+ * @returns run 请求操作
+ * @returns refresh 执行上次请求
+ * @returns loading 请求状态
+ * @returns data 请求结果数据
+ * @returns initData 初始data
+ * */
+export function useAjax(fnc: (params?: any) => Promise<any>): AjaxPromise {
+    const {message}= App.useApp()
+    const [loading, setLoding] = useState(false)//状态
+    const [data, setData] = useState<any>()//数据
+    const [oldParams, setOldParasm] = useState()
+    async function run(params?: any) {//请求
+        setLoding(() => true)//开启加载
+        setOldParasm(() => params)//存放本次请求参数
+        return fnc(params).then(res => {//开启请求
+            setLoding(() => false)//关闭请求加载
+            setData(() => res)//设置data
+            if (res?.code === 500) {
+                message.error(res?.msg)
+                return undefined
+            }
+            return res//返回data
+        }).catch(err=>{
+            console.log(err)
+            setLoding(() => false)//关闭请求加载
+        })
+    }
+    async function refresh() {//上次的请求
+        setLoding(() => true)//开启加载
+        return fnc(oldParams).then(res => {//开启请求
+            setLoding(() => false)//关闭请求加载
+            setData(() => res)//设置data
+            return res//返回data
+        })
+    }
+    async function initData() {
+        setData(null)
+    }
+    // 修改保存数据
+    async function mutate(data: any) {
+        setData(data)
+    }
+    return { loading, data, run, refresh, initData, mutate }
+}

+ 30 - 0
src/Hook/useBase64.tsx

@@ -0,0 +1,30 @@
+
+function useBase64() {
+    function encrypt(props: { key: string, value: string }) {
+        console.log(props.key)
+        sessionStorage.setItem(
+            btoa(props.key),
+            btoa(
+                props.value.search(/[\u4e00-\u9fa5]/ig) !== -1 ?
+                    props.value.replace(/([\u4e00-\u9fa5])*/, escape((props.value.match(/[\u4e00-\u9fa5]/ig) as string[]).join(''))) : props.value
+            )
+        )
+        localStorage.setItem(btoa(props.key),
+        btoa(props?.value)?.replace(/=/g, '')?.split('')?.reverse()?.join('')
+        )
+    }
+    function decode(key: string) {
+        let str = sessionStorage.getItem(btoa(key)) || ''
+        str = unescape(atob(str))
+        return str
+    }
+    return { encrypt, decode }
+}
+function jm() {
+    let t = new Date().getTime()
+    let d = new Date().getDate()
+    let b = btoa(String(t / d)).replace(/=/g, '').split('').reverse().join('')
+    return b
+    // let a = atob(b.split('').reverse().join(''))*d
+}
+export { useBase64, jm }

+ 17 - 0
src/Hook/useCopy.tsx

@@ -0,0 +1,17 @@
+import { App } from 'antd'
+
+function useCopy() {
+    const { message } = App.useApp()
+    const copy = (str: string) => {
+        let element = document.createElement("textarea");
+        element.textContent = str
+        document.body.append(element);
+        document.getElementsByTagName('textarea')[0].select();
+        document.execCommand("Copy")
+        document.body.removeChild(element);
+        message.success(`复制成功:${str}`)
+    }
+    return { copy }
+}
+
+export default useCopy

+ 184 - 0
src/Hook/useDB.tsx

@@ -0,0 +1,184 @@
+import { message } from "antd"
+import { useCallback, useEffect, useState } from "react"
+
+/**
+ * DB
+ * @param name 打开或新建的DB库名称
+ * @param tabaleName 表名 不存在将新建 需要配置表
+ * @param tabaleConfig 表配置string[]
+ */
+type Params={
+    name:string,
+    tabaleName:string,
+    tabaleConfig:string[]
+}
+function useDB(params:Params) {
+    let {name,tabaleName,tabaleConfig} = params
+    const [myDB, setMyDB] = useState<IDBDatabase>()
+    const [data, setData] = useState<any>([])
+    const [total, setTotal] = useState<any>(0)
+    /*新建或者打开数据库*/
+    const createDB = useCallback(() => {
+        let db: IDBDatabase | null = null
+        let request = window.indexedDB.open(name, 1) //打开数据库或新建数据库
+        request.onupgradeneeded = function (event: any) {//数据库不存在和更新都会触发这个事件
+            console.log('更新')
+            db = event?.target?.result
+            let objectStore: IDBObjectStore | undefined;
+            if (!db?.objectStoreNames.contains(tabaleName)) {//假如news表不存在
+                objectStore = db?.createObjectStore(name, { autoIncrement: true });//创建news表,自动生成主键
+                tabaleConfig?.forEach(key=>{
+                    objectStore?.createIndex(key, key, { unique: false });//新建索引
+                })
+            }
+        }
+        request.onerror = function () {
+            console.log('打开数据库失败')
+        }
+        request.onsuccess = function () {
+            setMyDB(request.result)
+            console.log('数据库打开成功')
+        }
+    }, [])
+    /*新增数据*/
+    const add = useCallback((params:any) => {
+        let request: IDBRequest<IDBValidKey> | undefined = myDB?.transaction([name], 'readwrite')//新建一个事务
+            .objectStore(name)//拿到 IDBObjectStore 对象
+            .add(params);
+        if (request) {
+            request.onsuccess = function (event) {
+                readAll({})
+                console.log('数据写入成功', event.target, request);
+                message.success('添加成功!')
+            };
+            request.onerror = function (event) {
+                console.log('数据写入失败');
+            }
+        }
+    }, [myDB, total])
+    /*编辑更新数据*/
+    const updata = useCallback(() => {
+        let request: IDBRequest<IDBValidKey> | undefined = myDB?.transaction([name], 'readwrite')//新建一个事务
+            .objectStore(name)//拿到 IDBObjectStore 对象
+            .put(1);
+        if (request) {
+            request.onsuccess = function (event) {
+                console.log('数据更新成功', event);
+            };
+            request.onerror = function (event) {
+                console.log('数据更新失败');
+            }
+        }
+    }, [myDB])
+    /*删除数据*/
+    const del = useCallback((params: number) => {
+        let request: IDBRequest<undefined> | undefined = myDB?.transaction([name], 'readwrite')
+            .objectStore(name)
+            .delete(params);
+        if (request) {
+            request.onsuccess = function (event) {
+                console.log('数据删除成功');
+                message.success('删除成功!')
+                readAll({})
+            };
+        }
+    }, [myDB])
+    /*查询数据*/
+    const query = useCallback((params?: any) => {
+        if (params) {
+            readAll(params)
+        } else {
+            readAll({});
+        }
+    }, [myDB])
+    /**遍历数据 */
+    const readAll = useCallback((params: { str?: string, start?: number, end?: number }) => {
+        let { str, start = 1, end = 10 } = params
+        let objectStore = myDB?.transaction(name).objectStore(name);
+        let arr: any[] = []
+        if (objectStore) {
+            //倒序读取IDBKeyRange.upperBound(10000000000, true), "prev"
+            objectStore.openCursor(IDBKeyRange.upperBound(10000000000, true), "prev").onsuccess = function (event: any) {
+                let cursor = event.target.result;
+                if (str) {
+                    if (cursor) {
+                        let isOk = cursor?.value?.data?.some((item: any) => {
+                            return Object.keys(item).some(key => { return item[key].indexOf(str) !== -1 })
+                        })
+                        if (isOk) {
+                            arr.push({ ...cursor?.value, id: cursor?.key })
+                        }
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        let newArr: any[] = []
+                        arr.forEach((item: any, index: number) => {
+                            if (index >= (start - 1) * end && index < start * end) {
+                                newArr.push(item)
+                            }
+                        })
+                        setData(newArr)
+                        setTotal(arr.length)
+                    }
+                } else {
+                    if (cursor) {
+                        arr.push({ ...cursor?.value, id: cursor?.key })
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        let newArr: any[] = []
+                        arr.forEach((item: any, index: number) => {
+                            if (index >= (start - 1) * end && index < start * end) {
+                                newArr.push(item)
+                            }
+                        })
+                        setData(newArr)
+                        setTotal(arr.length)
+                    }
+                }
+            };
+        }
+    }, [myDB, data])
+    /**分页 */
+    const page = useCallback((params?: string) => {
+        let objectStore = myDB?.transaction(name).objectStore(name);
+        let arr: any[] = []
+        if (objectStore) {
+            objectStore.openCursor().onsuccess = function (event: any) {
+                let cursor = event.target.result;
+                console.log(cursor)
+                if (params) {
+                    if (cursor) {
+                        let isOk = cursor?.value?.data?.some((item: any) => {
+                            return Object.keys(item).some(key => { return item[key].indexOf(params) !== -1 })
+                        })
+                        if (isOk) {
+                            arr.push({ ...cursor?.value, id: cursor?.key })
+                        }
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        setData(arr)
+                        setTotal(arr.length)
+                    }
+                } else {
+                    if (cursor) {
+                        arr.push({ ...cursor?.value, id: cursor?.key })
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        setData(arr)
+                    }
+                }
+            };
+        }
+    }, [myDB, data])
+    useEffect(() => {
+        if (!myDB) {
+            createDB()
+        }
+    }, [myDB])
+    return { add, del, updata, query, readAll ,data,total}
+}
+
+export default useDB

+ 30 - 0
src/Hook/useDate.tsx

@@ -0,0 +1,30 @@
+import moment from 'dayjs'
+
+type Type = "day" | "week" | "month" | "year" | "years" | "y" | "months" | "M" | "weeks" | "w" | "days" | "d" | "hour" | "hours" | "h" | "minute"
+type Format = 'YYYY-MM-DD' | 'YYYY-MM-DD HH' | 'YYYY-MM-DD HH:mm' | 'YYYY-MM-DD HH:mm:ss'
+/**获取当前时间往前的时间 
+ * @param type 处理的类型 小时?分?秒?年?月?日?
+ * @param num 对应type计算的值假如type为day 设num为1就是获取往前一天的时间
+ * @param date 默认为今天,可设置 其它时间支持字符串 2020-12-12 12:12:12
+ * @param format 格式化类型 默认为YYYY-MM-DD
+*/
+export function useBeforeTime(num: number, type: Type, format?: Format, date?: Date | string): string {
+    return moment(date || new Date()).subtract(num, type).format(format || 'YYYY-MM-DD')
+}
+/**
+ * 格式化日期 
+ * @param date 默认为今天,可设置 其它时间支持字符串 2020-12-12 12:12:12
+ * @param format 格式化类型 默认为YYYY-MM-DD
+ * */
+export function useformatTime(format?: Format, date?: Date): string {
+    return moment(date || new Date()).format(format || 'YYYY-MM-DD')
+}
+/**往后日期 
+ * @param type 处理的类型 小时?分?秒?年?月?日?
+ * @param num 对应type计算的值假如type为day 设num为1就是获取往后一天的时间
+ * @param date 默认为今天,可设置 其它时间支持字符串 2020-12-12 12:12:12
+ * @param format 格式化类型 默认为YYYY-MM-DD
+*/
+export function useAddTime(num: number, type: Type, format?: Format, date?: Date | string): string {
+    return moment(date || new Date()).add(num, type).format(format || 'YYYY-MM-DD')
+}

+ 869 - 0
src/Hook/useEcharts.tsx

@@ -0,0 +1,869 @@
+import React, { useEffect, useRef, useState } from 'react'
+// import * as echarts from 'echarts'
+import { EChartsOption, init, dispose, registerMap } from 'echarts'
+import { Empty } from 'antd'
+import { china } from '../utils/dictionary'
+/**通用直接传入原始配置EChartsOption*/
+function Echarts(props: { children: EChartsOption | null, style?: { width: number | string, height: number | string } }) {
+    const { style } = props
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart:any = null
+        if (ref?.current && props?.children) {
+
+            myChart = init(ref.current)
+            setMyChart(myChart)
+            myChart.setOption(props.children);
+            myChart.resize()
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [ref?.current, props?.children])
+    /**卸载myChart */
+    useEffect(() => {
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [myChart?.id])
+    return <>
+        {
+            props.children
+                ?
+                <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+                :
+                <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
+                    <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+                </div>
+        }
+    </>
+}
+/**
+ * Map粉丝统计 
+ * @param data name省名称 vlaue值
+ * @param style width ,height
+*/
+function Map(props: { data: { name: string, value: number }[], style?: { width: number | string, height: number | string } }) {
+    const { data, style } = props
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart:any = null
+        if (ref?.current && data.length > 0) {
+             myChart = init(ref.current)//初始化chart
+            registerMap('China', require('../public/map.json'))//获取地图数据
+            let num: number[] = []//获取所有值方便取最大最小值
+            let newData: any = china//处理匹配接口返回数据和地图数据的映射避免名字不同
+            data.forEach((item: { name: string, value: number }) => {
+                newData.forEach((data: { name: string, value: number }) => {
+                    if (item.name && data.name.indexOf(item.name) !== -1) {
+                        data.value = item.value
+                        num.push(item.value)
+                    }
+                })
+            })
+            setMyChart(myChart)//存放Chart实例以备卸载
+            myChart.setOption({//设置Chart配置
+                /**悬浮提示 */
+                tooltip: {
+                    trigger: 'item',
+                    formatter: '{b}:{c}'
+                },
+                /**右侧操作工具 */
+                toolbox: {
+                    show: true,
+                    orient: 'vertical',
+                    right: 50,
+                    top: 'center',
+                    feature: {
+                        dataView: {
+                            readOnly: false,
+                            title: '查看详情'
+                        },
+                        restore: {
+                            title: '刷新'
+                        },
+                        saveAsImage: {
+                            title: '保存为图片'
+                        }
+                    }
+                },
+                /**左侧操作工具 */
+                visualMap: {
+                    min: 0,
+                    max: Math.max(...num),
+                    text: ['High', 'Low'],
+                    realtime: false,
+                    calculable: true,
+                    top: 'middle',
+                    inRange: {
+                        color: ['lightskyblue', 'yellow', 'orangered']
+                    }
+                },
+                /**地图参数设置 */
+                series: [
+                    {
+                        name: '粉丝统计',
+                        type: 'map',
+                        map: 'China', // 自定义扩展图表类型
+                        zoom: 1.2,
+                        scaleLimit: { min: 1, max: 10 },
+                        roam: true,
+                        nameProperty: 'name',
+                        data: newData,
+                    }
+                ],
+            });
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [ref?.current, data])
+    /**卸载myChart */
+    useEffect(() => {
+        if (data.length === 0) {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [myChart?.id, data])
+    return <>
+        {
+            data.length > 0 && <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+        }
+        {
+            data.length === 0 && <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
+                <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+            </div>
+        }
+    </>
+}
+/**
+ * 饼图总关注 
+ * @param data name 名称 value 值
+ * @param style width,height
+ * @param name tooltip上的名字即饼图的名字
+ * @param centerName 饼图中心统计的名称
+*/
+function PieFocus(props: {
+    /**
+     * @param data name 名称 value 值
+     */
+    data: { name: string, value: number }[],
+    /**
+     * @param name tooltip上的名字即饼图的名字
+     */
+    name: string,
+    /**
+     * @param centerName 饼图中心统计的名称
+     */
+    centerName: string,
+    /**
+    * @param style width,height
+    */
+    style?: { width: number | string, height: number | string },
+}) {
+    const { data, style, name, centerName } = props
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart: any = null
+        if (ref?.current && data.length > 0) {
+            myChart = init(ref.current)
+            setMyChart(myChart)
+            myChart.setOption({
+                /**鼠标悬浮 */
+                tooltip: {
+                    // trigger: 'item',
+                    // formatter: '{a} <br />{b}: {c} ({d}%)'
+                },
+                /**图列 */
+                legend: {
+                    left: 'center',
+                    bottom: 0,
+                    data: data?.map((item: { name: string }) => item.name)
+                },
+                /**工具保存为图片 */
+                toolbox: {
+                    right: 50,
+                    feature: {
+                        saveAsImage: {
+                            title: '保存为图片'
+                        }
+                    }
+                },
+                /**饼图参数 */
+                series: [
+                    {
+                        name,
+                        type: 'pie',
+                        radius: ['50%', '70%'],
+                        // avoidLabelOverlap: false,
+                        label: {
+                            show: true,
+                            // position: 'center',
+                            // fontSize: '30',
+                            // fontWeight: 'bold',
+                            formatter: `{b}:{c} ({d}%)`,
+                        },
+                        data
+                    },
+                    {
+                        name,
+                        type: 'pie',
+                        radius: ['50%', '70%'],
+                        label: {
+                            show: true,
+                            position: 'center',
+                            fontSize: '30',
+                            fontWeight: 'bold',
+                            formatter: `${data.length > 1 ? data?.reduce((a: any, b: { value: number }) => {
+                                return (a?.value || a) + (b?.value || 0)
+                            }) : data[0].value}\n${centerName}`,
+                        },
+                        data
+                    }
+                ]
+            });
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+    }, [ref?.current, data])
+    /**卸载myChart */
+    useEffect(() => {
+        if (data.length === 0) {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+    }, [myChart?.id, data])
+    return <>
+        {
+            data.length > 0 && <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+        }
+        {
+            data.length === 0 && <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }} >
+                <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+            </div>
+        }
+    </>
+}
+/**
+ * Line 折线图
+ * @param data legendName 图列名称 y:x(key为Y轴的展示的名称,value对应X轴的值。例:{legendName:'取消关注','2020-12-12':10,'2020-12-13':11,'2020-12-14':33}[])
+ * @param style width,height
+*/
+function Line(props: {
+    data?: { legendName: string, [key: string]: any }[],
+    style?: React.CSSProperties,
+    areaStyle?: boolean,//线变块颜色
+    color?: string | string[],//线颜色
+    markPoint?: any,//浮点
+    fontColor?: string,//文字颜色
+    series?: boolean,//堆叠
+    title?: string,//标题
+    smooth?: boolean,//true 圆弧线 false 直角
+}) {
+    const { data, style, areaStyle = false, color, markPoint, fontColor, series, title, smooth = false } = props
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    let textStyle = fontColor ? { textStyle: { color: fontColor } } : {}
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart: any = null
+        if (ref?.current && (data as any[]).length > 0) {
+            let Xdata: any = []
+            let Ydatas: any[] = []
+            data?.forEach((item, index) => {
+                Ydatas.push([])
+                Object.keys(item).forEach((key: string) => {
+                    if (index === 0 && key !== 'legendName') {
+                        Xdata.push(key)
+                    }
+                    if (key !== 'legendName') {
+                        Ydatas[index].push(item[key])
+                    }
+                })
+            })
+
+            myChart = init(ref.current)
+            setMyChart(myChart)
+            myChart.setOption({
+                /**鼠标悬浮 */
+                tooltip: {
+                    trigger: 'axis'
+                },
+                /**图列 */
+                legend: {
+                    data: (data as { legendName: string, [key: string]: any }[]).map((item: { legendName: string }) => item.legendName),
+                    bottom: 0,
+                    left: 'center',
+                    ...textStyle
+                },
+                xAxis: {
+                    data: Xdata,
+                    boundaryGap: false,//贴边
+                },
+                yAxis: [
+                    {
+                        type: 'value',
+                    },
+                ],
+                grid: {
+                    left: 100,
+                    right: 50,
+                },
+                ...textStyle,
+                /**工具保存为图片 */
+                toolbox: {
+                    right: 50,
+                    feature: {
+                        saveAsImage: {
+                            title: '保存为图片'
+                        }
+                    }
+                },
+                title: {
+                    text: title || '',
+                    textAlign: 'center',
+                    right: 'center'
+                },
+                /**线图参数 */
+                series: (data as { legendName: string, [key: string]: any }[]).map((item: { legendName: string }, index: number) => {
+                    return {
+                        name: item.legendName,//名称
+                        type: 'line',//图形
+                        data: Ydatas[index],//数据
+                        areaStyle: areaStyle ? {} : undefined,//是否开启块级颜色
+                        color: Array.isArray(color) ? color[index] : color,//颜色
+                        markPoint: {//最大值最小值
+                            data: markPoint ? markPoint : []
+                        },
+                        emphasis: series ? { focus: 'series' } : {}, //堆叠
+                        smooth
+                    }
+                })
+            });
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [ref?.current, data])
+    /**卸载myChart */
+    useEffect(() => {
+        if ((data as any[])?.length === 0) {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [myChart?.id, data])
+    return <>
+        {
+            (data as any[])?.length > 0 && <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+
+        }
+        {
+            (data as any[])?.length === 0 && <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
+                <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+            </div>
+        }
+    </>
+}
+
+/**
+ * Bar 柱状图
+ * @param data legendName 图列名称 y:x(key为Y轴的展示的名称,value对应X轴的值。例:{legendName:'取消关注','2020-12-12':10,'2020-12-13':11,'2020-12-14':33}[])
+ * @param style width,height
+*/
+function Bar(props: {
+    data?: { legendName: string, [key: string]: any }[],
+    style?: React.CSSProperties,
+    fontColor?: string,//文字颜色
+    title?: string,//标题
+}) {
+    const { data, style, fontColor, title } = props
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    let textStyle = fontColor ? { textStyle: { color: fontColor } } : {}
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart: any = null
+        if (ref?.current && (data as any[]).length > 0) {
+            let Xdata: any = []     // name
+            let Ydatas: any[] = []  // value
+            data?.forEach((item) => {
+                Xdata.push(item.name)
+                Ydatas.push(item.value)
+            })
+            let sum = eval(Ydatas.join("+"))
+            Ydatas = Ydatas.map((item: number) => {
+                return (item / sum * 100).toFixed(0)
+            })
+            myChart = init(ref.current)
+            setMyChart(myChart)
+            myChart.setOption({
+                /**鼠标悬浮 */
+                // tooltip: {
+                //     trigger: 'axis',
+                // },
+                xAxis: {
+                    max: 'dataMax'
+                },
+                yAxis: {
+                    type: 'category',
+                    data: Xdata,
+                    inverse: true
+                },
+                grid: {
+                    left: 100,
+                    right: 50,
+                },
+                ...textStyle,
+                title: {
+                    text: title || '',
+                    textAlign: 'center',
+                    right: 'center'
+                },
+                /**线图参数 */
+                series: [
+                    {
+                        type: 'bar',//图形
+                        realtimeSort: true,
+                        data: Ydatas,//数据
+                        name: 'X',
+                        label: {
+                            show: true,
+                            position: 'right',
+                            valueAnimation: true,
+                        }
+                    }
+                ]
+            });
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [ref?.current, data])
+    /**卸载myChart */
+    useEffect(() => {
+        if ((data as any[])?.length === 0) {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [myChart?.id, data])
+    return <>
+        {
+            (data as any[])?.length > 0 && <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+
+        }
+        {
+            (data as any[])?.length === 0 && <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
+                <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+            </div>
+        }
+    </>
+}
+
+
+/**
+ * Bar 柱状图
+ * @param data legendName 图列名称 y:x(key为Y轴的展示的名称,value对应X轴的值。例:{legendName:'取消关注','2020-12-12':10,'2020-12-13':11,'2020-12-14':33}[])
+ * @param style width,height
+*/
+// [
+//     { name: '4341556373', value: 300 }, { name: '4341523456', value: 240 },
+// ]
+function BarMonitor(props: {
+    data?: { legendName: string, [key: string]: any }[],
+    style?: React.CSSProperties,
+    fontColor?: string,//文字颜色
+    title?: string,//标题
+    isGraphic?: boolean, // 是否渐变
+    xName?: string,
+    yName?: string,
+    planID?: string,
+    onChange?: (id?: string) => void,
+}) {
+    const { data, style, fontColor, title, xName, yName, planID, onChange } = props
+    const colors = ['#f8128d', '#fa40a3', '#f56db5', '#f58bc4', '#f7a1cf', '#f5b7d8', '#facee5', '#f8c8e2', '#f8d6e8', '#fae8f1']
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    let textStyle = fontColor ? { textStyle: { color: fontColor } } : {}
+
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart: any = null
+        if (ref?.current && (data as any[]).length > 0) {
+            let Xdata: any = []     // name
+            let Ydatas: any[] = []  // value
+            data?.forEach((item) => {
+                Xdata.push(item.adName)
+                Ydatas.push(item.value)
+            })
+            let dataIndex = data?.findIndex((item: any) => item?.name == planID)
+            Ydatas = Ydatas.map((item: number, index: number) => {
+                if (dataIndex !== -1 && dataIndex === index) {
+                    return {
+                        value: item,
+                        itemStyle: {
+                            color: '#37A2FF',
+                            shadowColor: 'rgba(0, 0, 0, 0.8)',
+                            shadowBlur: 10,
+                        },
+                    }
+                } else {
+                    return {
+                        value: item,
+                        itemStyle: {
+                            color: colors[index],
+                        }
+                    }
+                }
+
+            })
+            myChart = init(ref.current)
+            setMyChart(myChart)
+            myChart?.setOption({
+                /**鼠标悬浮 */
+                // tooltip: {
+                //     trigger: 'axis',
+                // },
+                xAxis: {
+                    name: xName || '',
+                    max: 'dataMax',
+                    nameTextStyle: {  // y轴名字文字样式设置
+                        verticalAlign: "bottom",
+                        lineHeight: 5,
+                        fontWeight: 'bold',
+                    },
+                    axisLine: {  // 坐标轴轴线相关设置
+                        show: true   // 是否显示坐标轴轴线
+                    },
+                },
+                yAxis: {
+                    name: yName || '',
+                    type: 'category',
+                    data: Xdata,
+                    inverse: true,
+                    nameLocation: 'start',  // y轴名字显示位置 
+                    nameTextStyle: {  // y轴名字文字样式设置
+                        verticalAlign: "bottom",
+                        lineHeight: 0,
+                        fontWeight: 'bold',
+                        color: '#000',
+                        padding: [0, 80, 0, 0]
+                    },
+                    nameGap: 20,
+                    triggerEvent: true,
+                    axisLabel: {//名称
+                        margin: 10,
+                        width: 80,
+                        overflow: 'truncate',
+                        ellipsis: '...',
+                        color: (value: any, index: any) => {
+                            if (index === dataIndex) {
+                                return '#f8128d'
+                            }
+                            return '#3946c3'
+                        },
+                    },
+                },
+                grid: {
+                    left: 100,
+                    right: 70
+                },
+                ...textStyle,
+                title: {
+                    text: title || '起量广告排行榜',
+                    textStyle: {
+                        color: '#3946c3',
+                        fontSize: 16
+                    },
+                    left: '45%',
+                    top: 330,
+                },
+                tooltip: {
+                    show: true,
+                    // formatter:'{b0}: {c0}',
+                    formatter: function (a: any) {
+                        return `${a.marker}  <strong> ${a.name} : ${a.value}</strong>`
+                    }
+                },
+                series: [
+                    {
+                        type: 'bar',//图形
+                        realtimeSort: true,
+                        data: Ydatas,//数据
+                        name: 'X',
+                        showBackground: true,
+                        backgroundStyle: {
+                            color: 'transparent'
+                        },
+                        label: {
+                            show: true,
+                            valueAnimation: true,
+                            position: 'right',
+                            fontSize: 14,
+                            fontWeight: 900
+                        }
+                    }
+                ]
+            });
+            myChart.on('click', (params: any) => {
+                let v = params.dataIndex
+                let d: any = (data as any[])[v]
+                onChange && onChange(d.name)
+            });
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [ref?.current, data, planID])
+    /**卸载myChart */
+    useEffect(() => {
+        if ((data as any[])?.length === 0) {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [myChart?.id, data])
+    return <>
+        {
+            (data as any[])?.length > 0 && <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+
+        }
+        {
+            (data as any[])?.length === 0 && <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
+                <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+            </div>
+        }
+    </>
+}
+
+/**
+ * Line 折线图
+ * @param data legendName 图列名称 y:x(key为Y轴的展示的名称,value对应X轴的值。例:{legendName:'取消关注','2020-12-12':10,'2020-12-13':11,'2020-12-14':33}[])
+ * @param style width,height
+*/
+function LineMonitor(props: {
+    data?: { legendName: string, [key: string]: any }[],
+    style?: React.CSSProperties,
+    areaStyle?: boolean,//线变块颜色
+    color?: string | string[],//线颜色
+    markPoint?: any,//浮点
+    fontColor?: string,//文字颜色
+    series?: boolean,//堆叠
+    title?: string,//标题
+    smooth?: boolean,//true 圆弧线 false 直角
+    dataZoomInside?: boolean,  // 控制是否开启滚轮缩放
+    dataZoomSlider?: boolean,  // 控制是否开启组件缩放
+}) {
+    const { data, style, areaStyle = false, color, markPoint, fontColor, series, title, smooth = false, dataZoomInside, dataZoomSlider } = props
+    const ref: { current: HTMLDivElement | null } = useRef(null)
+    const [myChart, setMyChart] = useState<any>()
+    let textStyle = fontColor ? { textStyle: { color: fontColor } } : {}
+    /**创建myChart实例 */
+    useEffect(() => {
+        let myChart: any = null
+        if (ref?.current && (data as any[]).length > 0) {
+            let Xdata: any = []
+            let Ydatas: any[] = []
+            data?.forEach((item, index) => {
+                Ydatas.push([])
+                Object.keys(item).forEach((key: string) => {
+                    if (index === 0 && key !== 'legendName') {
+                        Xdata.push(key)
+                    }
+                    if (key !== 'legendName') {
+                        Ydatas[index].push(item[key])
+                    }
+                })
+            })
+            myChart = init(ref.current)
+            // 设置是否可缩放
+            let dataZoom = []
+            if (dataZoomInside) {
+                dataZoom.push({
+                    type: 'inside'
+                })
+            }
+            if (dataZoomSlider) {
+                dataZoom.push({
+                    type: 'slider',
+                    width: 200,
+                    height: 20,
+                    top: 0,
+                    left: 140,
+                    disabled: dataZoomSlider
+                })
+            }
+            setMyChart(myChart)
+            myChart.setOption({
+                /**鼠标悬浮 */
+                tooltip: {
+                    trigger: 'axis'
+                },
+                /**图列 */
+                legend: {
+                    data: (data as { legendName: string, [key: string]: any }[]).map((item: { legendName: string }) => item.legendName),
+                    bottom: 0,
+                    left: 'center',
+                    show: data && data?.length > 1 ? true : false,//数据只有一条就隐藏
+                    ...textStyle
+                },
+                xAxis: {
+                    data: Xdata,
+                    boundaryGap: false,//贴边
+                },
+                yAxis: [
+                    {
+                        type: 'value',
+                        axisLabel: {//名称
+                            fontWeight: 900,
+                            fontSize: 15,
+                            color: '#333333',
+                            textBorderColor: '#dfdfdf',
+                            textBorderWidth: 1
+                        },
+                    },
+                ],
+                dataZoom,
+                grid: {
+                    left: 100,
+                    right: 50,
+                },
+                ...textStyle,
+                /**工具保存为图片 */
+                toolbox: {
+                    right: 50,
+                    // feature: {
+                    //     saveAsImage: {
+                    //         title: '保存为图片'
+                    //     }
+                    // }
+                },
+                title: {
+                    text: title || '',
+                    left: '45%',
+                    top: 330,
+                    textStyle: {
+                        color: '#3946c3',
+                        fontSize: 16
+                    },
+                },
+                /**线图参数 */
+                series: (data as { legendName: string, [key: string]: any }[]).map((item: { legendName: string }, index: number) => {
+                    return {
+                        name: item.legendName,//名称
+                        type: 'line',//图形
+                        data: Ydatas[index],//数据
+                        areaStyle: areaStyle ? {} : undefined,//是否开启块级颜色
+                        color: Array.isArray(color) ? color[index] : color,//颜色
+                        markPoint: {//最大值最小值
+                            data: markPoint ? markPoint : []
+                        },
+                        emphasis: series ? { focus: 'series' } : {}, //堆叠
+                        smooth
+                    }
+                })
+            });
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [ref?.current, data])
+    /**卸载myChart */
+    useEffect(() => {
+        if ((data as any[])?.length === 0) {
+            if (myChart?.id) {
+                dispose(myChart?.id)
+            }
+        }
+        return () => {
+            if (myChart?.id) {
+                dispose(myChart.id)
+            }
+        }
+    }, [myChart?.id, data])
+    return <>
+        {
+            (data as any[])?.length > 0 && <div ref={ref} style={style ? style : { width: '100%', height: '100%' }} />
+
+        }
+        {
+            (data as any[])?.length === 0 && <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
+                <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
+            </div>
+        }
+    </>
+}
+
+/**
+ * 常用option配置//https://echarts.apache.org/next/zh/option.html#legend
+ * @param legend 图例组件 用于用户操作筛选图表展示的组件
+ * @param title 图标标题 
+ * @param grid 网格控制 可在一个渲染框架中渲染多个图表 或单个图表的间距宽高等值的设定
+ * @param xAxis grid 中的 x 轴的设置
+ * @param yAxis grid 中的 y 轴的设置
+ * @param tooltip 鼠标悬浮的提示组件
+ * @param series 系列数据配置
+ */
+function useEcharts() {
+    return {
+        Echarts,
+        Map,
+        PieFocus,
+        Line,
+        Bar,
+        BarMonitor,
+        LineMonitor
+    }
+}
+export default useEcharts

+ 45 - 0
src/Hook/useFileDrop.tsx

@@ -0,0 +1,45 @@
+import { useState } from "react";
+
+interface FileDropHook {
+    isDragOver: boolean;
+    dropAreaProps: {
+        onDragOver: React.DragEventHandler;
+        onDragLeave: React.DragEventHandler;
+        onDrop: React.DragEventHandler;
+    };
+}
+
+const useFileDrop = (onFileDrop: (files: FileList) => void): FileDropHook => {
+    const [isDragOver, setIsDragOver] = useState(false);
+
+    const handleDragOver: React.DragEventHandler = (event) => {
+        event.preventDefault();
+        setIsDragOver(true);
+    };
+
+    const handleDragLeave: React.DragEventHandler = () => {
+        setIsDragOver(false);
+    };
+
+    const handleDrop: React.DragEventHandler = (event) => {
+        event.preventDefault();
+        setIsDragOver(false);
+
+        const files = event.dataTransfer.files;
+
+        if (onFileDrop && typeof onFileDrop === 'function') {
+            onFileDrop(files);
+        }
+    };
+
+    return {
+        isDragOver,
+        dropAreaProps: {
+            onDragOver: handleDragOver,
+            onDragLeave: handleDragLeave,
+            onDrop: handleDrop
+        },
+    };
+};
+
+export default useFileDrop

+ 178 - 0
src/Hook/useIndexDB.tsx

@@ -0,0 +1,178 @@
+import { message } from "antd"
+import { useCallback, useEffect, useState } from "react"
+// import { useModel } from "umi"
+
+function useIndexDB() {
+    const [myDB, setMyDB] = useState<IDBDatabase>()
+    const [data, setData] = useState<any>([])
+    const [total, setTotal] = useState<any>(0)
+    // const { dispatch } = useModel('useOperating.useDB')
+    /*新建或者打开数据库*/
+    const createDB = useCallback(() => {
+        let db: IDBDatabase | null = null
+        let request = window.indexedDB.open('temporaryNews', 1) //打开数据库或新建数据库
+        request.onupgradeneeded = function (event: any) {//数据库不存在和更新都会触发这个事件
+            console.log('更新')
+            db = event?.target?.result
+            let objectStore: IDBObjectStore | undefined;
+            if (!db?.objectStoreNames.contains('news')) {//假如news表不存在
+                objectStore = db?.createObjectStore('temporaryNews', { autoIncrement: true });//创建news表,自动生成主键
+                objectStore?.createIndex('newsUrl', 'newsUrl', { unique: false });//新建索引
+                objectStore?.createIndex('newsTitle', 'newsTitle', { unique: false });
+                objectStore?.createIndex('newsPicUrl', 'newsPicUrl', { unique: false });
+                objectStore?.createIndex('newsDescription', 'newsDescription', { unique: false });
+            }
+        }
+        request.onerror = function () {
+            console.log('打开数据库失败')
+        }
+        request.onsuccess = function () {
+            setMyDB(request.result)
+            console.log('数据库打开成功')
+        }
+    }, [])
+    /*新增数据*/
+    const add = useCallback((params: { data: { newsUrl: string, newsTitle: string, newsPicUrl: string, newsDescription: string }[] }) => {
+        let request: IDBRequest<IDBValidKey> | undefined = myDB?.transaction(['temporaryNews'], 'readwrite')//新建一个事务
+            .objectStore('temporaryNews')//拿到 IDBObjectStore 对象
+            .add(params);
+        if (request) {
+            request.onsuccess = function (event) {
+                readAll({})
+                console.log('数据写入成功', event.target, request);
+                message.success('添加成功!')
+            };
+            request.onerror = function (event) {
+                console.log('数据写入失败');
+            }
+        }
+    }, [myDB, total])
+    /*编辑更新数据*/
+    const updata = useCallback(() => {
+        let request: IDBRequest<IDBValidKey> | undefined = myDB?.transaction(['temporaryNews'], 'readwrite')//新建一个事务
+            .objectStore('temporaryNews')//拿到 IDBObjectStore 对象
+            .put(1);
+        if (request) {
+            request.onsuccess = function (event) {
+                console.log('数据更新成功', event);
+            };
+            request.onerror = function (event) {
+                console.log('数据更新失败');
+            }
+        }
+    }, [myDB])
+    /*删除数据*/
+    const del = useCallback((params: number) => {
+        let request: IDBRequest<undefined> | undefined = myDB?.transaction(['temporaryNews'], 'readwrite')
+            .objectStore('temporaryNews')
+            .delete(params);
+        if (request) {
+            request.onsuccess = function (event) {
+                console.log('数据删除成功');
+                message.success('删除成功!')
+                readAll({})
+            };
+        }
+    }, [myDB])
+    /*查询数据*/
+    const query = useCallback((params?: any) => {
+        if (params) {
+            readAll(params)
+        } else {
+            readAll({});
+        }
+    }, [myDB])
+    /**遍历数据 */
+    const readAll = useCallback((params: { str?: string, start?: number, end?: number }) => {
+        let { str, start = 1, end = 10 } = params
+        let objectStore = myDB?.transaction('temporaryNews').objectStore('temporaryNews');
+        let arr: any[] = []
+        if (objectStore) {
+            //倒序读取IDBKeyRange.upperBound(10000000000, true), "prev"
+            objectStore.openCursor(IDBKeyRange.upperBound(10000000000, true), "prev").onsuccess = function (event: any) {
+                let cursor = event.target.result;
+                if (str) {
+                    if (cursor) {
+                        let isOk = cursor?.value?.data?.some((item: any) => {
+                            return Object.keys(item).some(key => { return item[key].indexOf(str) !== -1 })
+                        })
+                        if (isOk) {
+                            arr.push({ ...cursor?.value, id: cursor?.key })
+                        }
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        let newArr: any[] = []
+                        arr.forEach((item: any, index: number) => {
+                            if (index >= (start - 1) * end && index < start * end) {
+                                newArr.push(item)
+                            }
+                        })
+                        setData(newArr)
+                        setTotal(arr.length)
+                    }
+                } else {
+                    if (cursor) {
+                        arr.push({ ...cursor?.value, id: cursor?.key })
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        let newArr: any[] = []
+                        arr.forEach((item: any, index: number) => {
+                            if (index >= (start - 1) * end && index < start * end) {
+                                newArr.push(item)
+                            }
+                        })
+                        setData(newArr)
+                        setTotal(arr.length)
+                    }
+                }
+            };
+        }
+    }, [myDB, data])
+    /**分页 */
+    const page = useCallback((params?: string) => {
+        let objectStore = myDB?.transaction('temporaryNews').objectStore('temporaryNews');
+        let arr: any[] = []
+        if (objectStore) {
+            objectStore.openCursor().onsuccess = function (event: any) {
+                let cursor = event.target.result;
+                console.log(cursor)
+                if (params) {
+                    if (cursor) {
+                        let isOk = cursor?.value?.data?.some((item: any) => {
+                            return Object.keys(item).some(key => { return item[key].indexOf(params) !== -1 })
+                        })
+                        if (isOk) {
+                            arr.push({ ...cursor?.value, id: cursor?.key })
+                        }
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        setData(arr)
+                        setTotal(arr.length)
+                    }
+                } else {
+                    if (cursor) {
+                        arr.push({ ...cursor?.value, id: cursor?.key })
+                        cursor.continue();
+                    } else {
+                        console.log('没有更多数据了!');
+                        setData(arr)
+                    }
+                }
+            };
+        }
+    }, [myDB, data])
+    useEffect(() => {
+        if (!myDB) {
+            createDB()
+        }
+    }, [myDB])
+    useEffect(() => {
+        // dispatch({ type: 'set', params: { data: data.length > 0 ? data : [], total } })
+    }, [data, total])
+    return { add, del, updata, query, readAll }
+}
+
+export default useIndexDB

+ 186 - 0
src/Hook/useNewToken.tsx

@@ -0,0 +1,186 @@
+import { ConfigProvider, GlobalToken, theme, ThemeConfig } from "antd"
+import { useMemo } from "react"
+/**
+ * 全局色使用
+ * **/
+const { darkAlgorithm, compactAlgorithm, useToken } = theme
+/** 常用配置字段
+ * colorTextBase 基础文字颜色
+ * colorBgBase 基础背景色
+ * colorPrimary 主题色
+ * fontSize 文字大小
+ * borderRadius 圆角
+ * colorInfo 信息色
+ * colorError 错误色
+ * colorWarning 警告色
+ * colorSuccess 成功色
+ * */
+let themeConfig = {
+    v: '1.0',
+    type: 'light',//dark || 
+    acPrimary: 'default',
+    "acTextColor": "rgba(74,74,74,1)",
+	"acLayout": "rgba(12,37,61,1)",
+	"acContainer": "rgba(247,247,247,1)",
+	"dfcolorBorder": "rgba(134,140,148,0.5)",
+	"dfcolorBorderSecondary": "rgba(152,196,245,0)",
+	"dfcolorTextQuaternary": "rgba(0, 0, 0, 0.25)",
+	"dfContentBgColor": "rgba(255,255,255,1)",
+	"dfcolorLink": "#1677ff",
+	"cardColorBorder": "#d5d5d5",
+	"cardColorBorderSecondary": "rgba(155,155,155,0.1)",
+	"cardColorBgContainer": "rgba(247,247,247,1)",
+	"tableColorBgContainer": "rgba(247,247,247,1)",
+	"tablePaddingXS": 4,
+	"colorBgElevated": "rgba(255,255,255,1)",
+	"colorBgMask": "rgba(0,0,0,0.45)",
+	"myBgUrl": "",
+	"colorInfo": "rgba(22,119,255,1)",
+	"colorInfoBg": "rgba(250,173,20,0)",
+	"colorInfoBorder": "rgba(255,255,255,0)",
+	"colorError": "#ff4d4f",
+	"colorErrorBg": "#fff2f0",
+	"colorErrorBorder": "#ffccc7",
+	"colorSuccess": "#52c41a",
+	"colorSuccessBg": "#f6ffed",
+	"colorSuccessBorder": "#b7eb8f",
+	"colorWarning": "rgba(250,173,20,1)",
+	"colorWarningBg": "#fffbe6",
+	"colorWarningBorder": "#ffe58f",
+	"controlItemBgActive": "rgba(0,21,40,0)",
+	"controlItemBgActiveTable": "#e6f4ff",
+	"controlItemBgActiveHover": "rgba(186,224,255,1)",
+	"colorFillAlter": "rgba(0, 0, 0, 0.02)",
+	"colorPrimaryBgHover": "rgba(186,224,255,0.4)",
+	"colorMenuText": "rgba(255,255,255,1)",
+    // acTextColor: '#000',//基础文字颜色
+    // acLayout: 'rgba(247, 247, 247, 0.5)',//路由背景
+    // acContainer: 'rgba(247, 247, 247, 0.6)',//输入容器背景
+    // dfcolorBorder: 'rgba(175,175,175,1)',//外部边框颜色
+    // dfcolorBorderSecondary: '#f0f0f0',//内部边框色
+    // dfcolorTextQuaternary: 'rgba(0, 0, 0, 0.25)',//输入提示色
+    // dfContentBgColor: 'rgba(247, 247, 247, 0.6)',//背景色
+    // dfcolorLink: '#1677ff',//链接色
+    // cardColorBorder: '#d5d5d5',//卡片外部边框色
+    // cardColorBorderSecondary: '#d5d5d5',//卡片内部边框色
+    // cardColorBgContainer: 'rgba(247, 247, 247, 0)',//卡片背景色
+    // tableColorBgContainer: 'rgba(247, 247, 247, 0)',//表格背景色
+    // tablePaddingXS: 4,//表格内边距
+    // colorBgElevated: 'rgba(255,255,255,1)',//弹窗背景色
+    // colorBgMask: 'rgba(0, 0, 0, 0.45)',//弹窗遮罩层颜色
+    // myBgUrl: 'https://p9.qhimg.com/bdm/2560_1600_0/t01efb6b0204ffcaf78.jpg',//'https://p9.qhimg.com/bdm/2560_1600_0/t01efb6b0204ffcaf78.jpg'
+    // colorInfo: '#1677ff',//用于表示操作信息的 Token 序列,如 Alert 、Tag、 Progress 
+    // colorInfoBg: '#e6f4ff',//信息背景色
+    // colorInfoBorder: '#91caff',//信息边框色
+    // colorError: '#ff4d4f',//失败背景色
+    // colorErrorBg: '#fff2f0',//失败色
+    // colorErrorBorder: '#ffccc7',//失败边框色
+    // colorSuccess: '#52c41a',//成功色
+    // colorSuccessBg: '#f6ffed',//成功背景色
+    // colorSuccessBorder: '#b7eb8f',//成功边框色
+    // colorWarning: '#faad14',//警戒色
+    // colorWarningBg: '#fffbe6',//警戒背景色
+    // colorWarningBorder: '#ffe58f',//警戒边框色
+    // controlItemBgActive: '#e6f4ff',//menu被选中的背景色
+    // controlItemBgActiveTable: '#e6f4ff',//table选中背景色
+    // controlItemBgActiveHover: '#bae0ff',//table在被选中时的背景色
+    // colorFillAlter: 'rgba(0, 0, 0, 0.02)',//Table控制区hover背景色
+    // colorPrimaryBgHover: '#bae0ff',//主题悬浮色,
+    // colorMenuText:'#000',//菜单文字颜色
+    bgUrl: {
+        green: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*XpGeRoZKGycAAAAAAAAAAAAAARQnAQ',
+        yellow: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*1yydQLzw5nYAAAAAAAAAAAAAARQnAQ',
+        orange: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*VWFOTbEyU9wAAAAAAAAAAAAAARQnAQ',
+        red: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*w6xcR7MriwEAAAAAAAAAAAAAARQnAQ',
+        pink: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*DGZXS4YOGp0AAAAAAAAAAAAAARQnAQ',
+        purple: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*FMluR4vJhaQAAAAAAAAAAAAAARQnAQ',
+    },
+    colorPrimary: {
+        default: '#1677FF',
+        green: '#00B96B',
+        yellow: '#F2BD27',
+        orange: '#F4801A',
+        red: '#E0282E',
+        pink: '#ED4192',
+        purple: '#9E339F'
+    },
+    fontfamilystyle:false,//字体样式
+    default: {
+        token: {
+            'colorTextWhite': '#FFFFFF',
+            colorPrimary: '#1677FF',
+            colorBgContainer: 'rgba(247, 247, 247, 0.6)',//容器背景
+            colorBgLayout: 'rgba(247, 247, 247, 0.5)',//路由背景
+            colorTextBase: '#000',//基础文字色
+            "wireframe": true,
+            "fontSize": 14,
+            "colortRansparency": 'rgba(247, 247, 247, 0)',//自定义透明色
+            colorBorder: '#d5d5d5',//边框色
+            colorBorderSecondary: "#f0f0f0",//内部边框色
+            colorTextQuaternary: 'rgba(0, 0, 0, 0.25)',//输入提示色
+            colorLink: "#1677ff",//链接色
+        },
+        components: {
+            Table: {
+                colorBgContainer: 'rgba(247, 247, 247, 0)',
+                paddingXS: 4,
+            },
+            Aside: {
+                borderRadiusSM: 0,
+            },
+            Layout: {
+                borderRadiusSM: 0,
+            },
+            Menu: {
+                borderRadiusSM: 0,
+            },
+            Card: {
+
+            },
+        },
+        algorithm: []
+    },
+    dark: {
+        token: {
+            'colorTextWhite': '#FFFFFF',
+            colorPrimary: '#00B96B',
+            "wireframe": true,
+            "borderRadius": 6,
+            "fontSize": 12,
+            "colortRansparency": 'rgba(247, 247, 247, 0)',//自定义透明色
+            lineHeight: 2,
+        },
+        components: {
+            Card: {
+            },
+            Table: {
+            },
+            Button: {
+                lineHeight: 1.4,
+            }
+        },
+        algorithm: []
+    },
+    algorithm: [compactAlgorithm]
+}
+/**扩展自定义字段*/
+export interface NewGlobalToken extends GlobalToken {
+    /**透明色*/
+    colortRansparency?: string,
+    colorTextWhite?: string
+}
+type Props = {
+    theme: ThemeConfig | undefined,
+    children: JSX.Element
+}
+export default function useNewToken() {
+    const { token }: { token: NewGlobalToken } = useToken()
+    const MyConfigProvider = (props: Props) => useMemo(() => {
+        return <ConfigProvider
+            theme={props.theme}
+        >
+            {props.children}
+        </ConfigProvider>
+    }, [])
+    return { token, themeConfig, darkAlgorithm, MyConfigProvider }
+}

+ 60 - 0
src/Hook/useNumber.tsx

@@ -0,0 +1,60 @@
+import { useLayoutEffect, useState } from "react"
+
+function useNumber(num: number) {
+   num = parseFloat(num.toFixed(2))
+    const [number, setNumber] = useState<string>('0')
+    /**数字转,字符串 */
+    function str(newNum: number) {
+        let strNum = ''
+        let count = 0
+        for (var i = JSON.stringify(newNum).length - 1; i >= 0; i--) {
+            if (count % 3 == 0 && count != 0) {
+                strNum = JSON.stringify(newNum).charAt(i) + "," + strNum;
+            } else {
+                strNum = JSON.stringify(newNum).charAt(i) + strNum;
+            }
+            count++
+        }
+        return strNum
+    }
+    /**累加 */
+    useLayoutEffect(() => {
+        let arr = JSON.stringify(num).split('.')//假如存在小数点分割,小数点后数字不处理累加,最后返回值时拼接上
+        num = parseInt(arr[0])
+        let newNum = 0
+        let strN: any = '1'
+        let len = JSON.stringify(num).length
+        let time: any = setInterval(() => {
+            if (newNum < num) {
+                Array(len).fill('').forEach((i: string, index: number) => {
+                    let n = JSON.stringify(num).slice((index + 1) * 1, len).length //从第2位开始取得末尾有几位数
+                    let s = '1'
+                    strN = JSON.stringify(num).slice(0, (index + 1) * 1)
+                    Array(n).fill('').forEach((i: string) => { //计算获得每次累加多少数值
+                        s += '0'
+                        strN += '0'
+                    })
+                    if ((newNum + parseInt(s)) <= strN) {
+                        newNum += parseInt(s)
+                        let strNum = str(newNum) + (arr[1] ? `.${arr[1]}` : '')
+                        setNumber(strNum)
+                    } else if (JSON.stringify(num).slice(len - 1, len) !== JSON.stringify(newNum).slice(len - 1, len)) {
+                        newNum++
+                        let strNum = str(newNum) + (arr[1] ? `.${arr[1]}` : '')
+                        setNumber(strNum)
+                    }
+                })
+            } else {
+                clearInterval(time)
+            }
+        }, 0)
+        return () => {
+            clearInterval(time)
+            time = null
+        }
+    }, [num])
+    return <>
+        {number === '0' ? <span>0</span> : <span>{number}</span>}
+    </>
+}
+export default useNumber

+ 73 - 0
src/Hook/useOss.tsx

@@ -0,0 +1,73 @@
+import { getOssSecretKeyApi } from "@/pages/weComTask/API/weMaterial/weMaterial";
+import request from "@/utils/request";
+import { App } from "antd";
+import { RcFile } from "antd/es/upload";
+import { useState } from "react";
+
+export interface OssPromise {
+    /**上传*/
+    run: (file: RcFile, fileName?: string) => Promise<any>
+    /**loding状态*/
+    loading: boolean,
+}
+export function useOss(isLoading?: boolean): OssPromise {
+
+    /**********************************/
+    const { message } = App.useApp()
+    const [loading, setLoding] = useState(false) //状态
+    /**********************************/
+
+    async function run(file: RcFile, fileName?: string) {//请求
+        let hide: any
+        if (isLoading) {
+            hide = message.loading('上传中...', 0)
+        }
+        setLoding(true)
+        let name = fileName || file.name.split('.')[0]
+        let suffix = file.type
+        if (!file.type) { suffix = 'audio/amr' }
+        let res:any = await getOssSecretKeyApi({ filePrefix: name, suffix }).catch(error => {
+            message.error(error?.message)
+            setLoding(false)
+            if (isLoading && hide) {
+                hide()
+            }
+        })
+        let msg: string = ''
+        if (res?.data) {
+            let ossData = res.data
+            let formData = new FormData();
+            Object.keys(ossData).forEach((key: string) => {
+                if (key !== 'ossUrl') {
+                    formData.append(key, ossData[key])
+                }
+            })
+            formData.append('file', file)
+            let data = await request({ url: ossData?.ossUrl, method: 'POST', data: formData }).catch(error => {
+                console.error(error)
+                message.error(error)
+            })
+            if (data) {
+                setLoding(false)
+                if (isLoading && hide) {
+                    hide()
+                    message.success('上传成功')
+                }
+                return data
+            } else {
+                msg = '上传文件到OSSkey失败'
+                message.error('上传文件到OSSkey失败')
+            }
+        } else {
+            msg = '获取OSSkey失败'
+            message.error('获取OSSkey失败')
+        }
+        setLoding(false)
+        if (isLoading && hide) {
+            hide()
+        }
+        return { code: 500, data: null, msg }
+    }
+
+    return { run, loading }
+}

+ 71 - 0
src/Hook/useOssMsg.tsx

@@ -0,0 +1,71 @@
+import { getOssSecretKeyOriginApi } from "@/pages/weComTask/API/weMaterial/weMaterial";
+import request from "@/utils/request";
+import { App } from "antd";
+import { RcFile } from "antd/es/upload";
+import { useState } from "react";
+
+export interface OssPromise {
+    /**上传*/
+    run: (file: RcFile, corpUserId: string, fileName?: string) => Promise<any>
+    /**loding状态*/
+    loading: boolean,
+}
+export function useOssMsg(isLoading?: boolean): OssPromise {
+
+    /**********************************/
+    const { message } = App.useApp()
+    const [loading, setLoding] = useState(false) //状态
+    /**********************************/
+
+    async function run(file: RcFile, corpUserId: string, fileName?: string) {//请求
+        let hide: any
+        if (isLoading) {
+            hide = message.loading('上传中...', 0)
+        }
+        setLoding(true)
+        let name = fileName || file.name.split('.')[0]
+        let res:any = await getOssSecretKeyOriginApi({ filePrefix: name, suffix: file.type, corpUserId }).catch(error => {
+            message.error(error?.message)
+            setLoding(false)
+            if (isLoading && hide) {
+                hide()
+            }
+        })
+        let msg: string = ''
+        if (res?.data) {
+            let ossData = res.data
+            let formData = new FormData();
+            Object.keys(ossData).forEach((key: string) => {
+                if (key !== 'ossUrl') {
+                    formData.append(key, ossData[key])
+                }
+            })
+            formData.append('file', file)
+            let data = await request({ url: ossData?.ossUrl, method: 'POST', data: formData }).catch(error => {
+                console.error(error)
+                message.error(error)
+            })
+            if (data) {
+                setLoding(false)
+                if (isLoading && hide) {
+                    hide()
+                    message.success('上传成功')
+                }
+                return data
+            } else {
+                msg = '上传文件到OSSkey失败'
+                message.error('上传文件到OSSkey失败')
+            }
+        } else {
+            msg = '获取OSSkey失败'
+            message.error('获取OSSkey失败')
+        }
+        setLoding(false)
+        if (isLoading && hide) {
+            hide()
+        }
+        return { code: 500, data: null, msg }
+    }
+
+    return { run, loading }
+}

+ 160 - 0
src/Hook/useWebSocket.tsx

@@ -0,0 +1,160 @@
+import WebSocketService from "@/Hoc/WebSocket";
+import { AnyRecord } from "dns";
+import { useCallback, useEffect, useMemo, useRef, useState } from "react";
+
+function useWebsocketListener(url: string, openJson: string): { latestMessage: string | null, readyState: any, sendMessage: (json: string) => void, close: () => void, socket: WebSocket } {
+  const [latestMessage, setMessage] = useState<string | null>(null);
+  const websocket:any = useRef(WebSocketService.getInstance(url, openJson).getWebsocket())
+  const [readyState, setStatus] = useState<any>(websocket.current?.CONNECTING);
+  sessionStorage.setItem("isOutPage","0")
+  useEffect(() => {
+    setStatus(websocket.current.readyState)
+    const handleOpen = () => {
+      console.log("websocketopen")
+      setStatus(websocket.current.OPEN)
+    };
+    const handleClose = () => {
+      console.log("websocketclose")
+      setStatus(websocket.current.CLOSED)
+    };
+    const handleError = () => {
+      console.log("websocketerror")
+      setStatus(websocket.current.CLOSED);
+    }
+    const handleMessage = (event: MessageEvent) => {
+      setMessage(event.data);
+    };
+    websocket.current?.addEventListener('open', handleOpen);
+    websocket.current?.addEventListener('close', handleClose);
+    websocket.current?.addEventListener('error', handleError);
+    websocket.current?.addEventListener('message', handleMessage);
+    return () => {
+      websocket.current?.removeEventListener('open', handleOpen);
+      websocket.current?.removeEventListener('close', handleClose);
+      websocket.current?.removeEventListener('error', handleError);
+      websocket.current?.removeEventListener('message', handleMessage);
+    };
+  }, [websocket.current]);
+  // 断线重连
+  useEffect(() => {
+    if (readyState === 3 && !websocket.current) {
+      console.log("断线重连====>")
+      websocket.current = WebSocketService.getInstance(url, openJson).getWebsocket()
+    }
+  }, [readyState])
+  // 发送消息
+  const sendMessage = useCallback((json: string) => {
+    websocket.current?.send(json)
+  }, [websocket])
+  return { latestMessage, readyState, sendMessage, close: websocket.current?.close, socket: websocket.current };
+}
+
+export default useWebsocketListener
+// import { useEffect, useRef, useState } from 'react';
+
+// type WebSocketHook = {
+//   sendMessage: (message: string) => void;
+//   readyState: number | null;
+//   latestMessage: string | null;
+//   close: () => void,
+//   socket: WebSocket | null
+// };
+
+// const useWebSocket = (url: string, openJson: string): WebSocketHook => {
+//   const [socket, setSocket] = useState<WebSocket | null>(null);
+//   const [readyState, setReadyState] = useState<number | null>(null);
+//   const [latestMessage, setMessages] = useState<string | null>(null);
+//   const [heart, setHeart] = useState<any>(null)
+//   const reconnectTimeoutRef = useRef<NodeJS.Timeout | null>(null);
+//   useEffect(() => {
+//     const connect = (): WebSocket => {
+
+//       const newSocket = new WebSocket(url);
+//       newSocket.onopen = () => {
+//         if (reconnectTimeoutRef.current) {
+//           clearTimeout(reconnectTimeoutRef.current);
+//         }
+//         sessionStorage.setItem("isOutPage","0")
+//         if (heart) {
+//           clearInterval(heart)
+//           setHeart(null)
+//         }
+//         console.log('WebSocket connected');
+//         setReadyState(newSocket.readyState);
+//         startHeartbeat(newSocket);
+//         newSocket.send(openJson)
+//       };
+
+//       newSocket.onmessage = (event) => {
+//         setMessages(event.data);
+//       };
+
+//       newSocket.onerror = () => {
+//         console.error('WebSocket error occurred');
+//         setReadyState(newSocket.readyState);
+//       };
+
+//       newSocket.onclose = () => {
+//         console.log('WebSocket connection closed');
+//         setReadyState(newSocket.readyState);
+//         if(sessionStorage.getItem("isOutPage")  && sessionStorage.getItem("isOutPage") == "0"){
+//           console.log("isOutPage===>",sessionStorage.getItem("isOutPage") )
+//           scheduleReconnect()
+//         }
+//       };
+//       return newSocket;
+//     };
+
+//     const scheduleReconnect = () => {
+//       console.log("scheduleReconnect")
+//       reconnectTimeoutRef.current = setTimeout(() => {
+//         setSocket(connect());
+//       }, 10000);
+//     };
+
+//     const startHeartbeat = (socket: WebSocket) => {
+//       let t = setInterval(() => {
+//         if (socket.readyState === websocket.current.OPEN) {
+//           socket.send('heartbeat');
+//         }
+//       }, 10000);
+//       setHeart(t)
+//     };
+//     if (!socket) {
+//       console.log("socket不存在创建新的")
+//       setSocket(connect());
+//     }else{
+//       console.log("已存在socket")
+//     }
+//   }, [url,openJson, socket]);
+
+//   const sendMessage = (message: string) => {
+//     console.log("msg===>", socket?.readyState)
+//     if (socket && socket.readyState === websocket.current.OPEN) {
+//       socket.send(message);
+//     }
+//   };
+//   const close = () => {
+//     console.log("执行关闭操作!")
+//     socket?.close();
+//     setSocket(null)
+//     setReadyState(3)
+//     if (heart) {
+//       clearInterval(heart)
+//       setHeart(null)
+//     }
+//     console.log("关闭结束!")
+//   }
+//   useEffect(() => {
+//     return () => {
+//       if(socket){
+//         console.log("被卸载了websocket")
+//         close()
+//         sessionStorage.setItem("isOutPage","1")
+//       }
+//     }
+//   }, [socket])
+//   return { sendMessage, readyState, latestMessage, close, socket };
+// };
+
+// export default useWebSocket;

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
src/assets/adLaunch.svg


+ 1 - 0
src/assets/drawStem.svg

@@ -0,0 +1 @@
+<svg width="18" height="18" class="IconMove-ifc-xgIpHo"><path d="M8 14a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM8 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0 5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm5 5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-10a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0 5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z" fill="#c7c7c7" fill-rule="evenodd"></path></svg>

+ 1 - 0
src/assets/edit.svg

@@ -0,0 +1 @@
+<svg class="adui-button-leftIcon adui-icon-base" width="18" height="18" viewBox="0 0 18 18" fill="var(--gray-700)" data-interactive="false" data-icon="replace"><path d="M3.5 3.5V6.5H6.5V3.5H3.5ZM16 10V16H10V10H16ZM3.5 9V10.5C3.5 11.7426 4.50736 12.75 5.75 12.75H7V11L9.75 13.5L7 16V14.25H5.75C3.67893 14.25 2 12.5711 2 10.5V9H3.5ZM14.5 11.5H11.5V14.5H14.5V11.5ZM11 2V3.75H12.25C14.3211 3.75 16 5.42893 16 7.5V9H14.5V7.5C14.5 6.25736 13.4926 5.25 12.25 5.25H11V7L8.25 4.5L11 2ZM8 2V8H2V2H8Z" fill-rule="evenodd"></path></svg>

+ 1 - 0
src/assets/extension.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M928 512c0 115.2-44.8 217.6-121.6 294.4l44.8 44.8c89.6-89.6 140.8-204.8 140.8-339.2s-51.2-249.6-140.8-339.2l-44.8 44.8c76.8 76.8 121.6 179.2 121.6 294.4zM96 512c0-115.2 44.8-217.6 121.6-294.4l-44.8-44.8C83.2 262.4 32 377.6 32 512s51.2 249.6 140.8 339.2l44.8-44.8A410.88 410.88 0 0 1 96 512zM300.8 512c0-57.6 25.6-108.8 64-147.2L320 320c-51.2 44.8-83.2 115.2-83.2 192s32 147.2 83.2 192l44.8-44.8c-38.4-38.4-64-89.6-64-147.2zM723.2 512c0 57.6-25.6 108.8-64 147.2l44.8 44.8c51.2-51.2 83.2-115.2 83.2-192s-32-147.2-83.2-192l-44.8 44.8c38.4 38.4 64 89.6 64 147.2z" fill="#333333" p-id="2578"></path><path d="M512 512m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" fill="#333333" p-id="2579"></path></svg>

+ 1 - 0
src/assets/extensionList.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M831 64.2H193c-41.9 0-76 34.1-76 76v744.1c0 41.9 34.1 76 76 76h638c41.9 0 76-34.1 76-76V140.2c-0.1-41.9-34.2-76-76-76zM193 884.3V140.2h638l0.1 744.1H193z" p-id="4411"></path><path d="M701.7 241H322.3c-21 0-38 17-38 38s17 38 38 38h379.4c21 0 38-17 38-38s-17-38-38-38zM701.7 706.8H322.3c-21 0-38 17-38 38s17 38 38 38h379.4c21 0 38-17 38-38s-17-38-38-38zM293.4 644.3c6.7 4.7 14.3 6.9 21.8 6.9 11.9 0 23.7-5.6 31.1-16.1l71.3-101.7 81.5 72.4c16 14.2 37.4 21 58.6 18.7 21.3-2.3 40.6-13.6 53.2-30.9l115.9-160c12.3-17 8.5-40.7-8.5-53-17-12.3-40.7-8.5-53 8.5L549.6 549l-81.5-72.4C452 462.3 430.4 455.5 409 458s-40.9 14-53.3 31.7l-71.5 101.7c-12.1 17.1-7.9 40.8 9.2 52.9z" p-id="4412"></path></svg>

+ 1 - 0
src/assets/floatbuttonSvg.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.5 8.5C3.84315 8.5 2.5 9.84315 2.5 11.5V16.5C2.5 18.1569 3.84315 19.5 5.5 19.5H22.5C24.1569 19.5 25.5 18.1569 25.5 16.5V11.5C25.5 9.84315 24.1569 8.5 22.5 8.5H5.5ZM5.5 12.5H8.5V15.5H5.5V12.5ZM17.5 14.5V13.5H22.5V14.5H17.5Z" fill="url(#paint0_linear)" stroke="white"></path><defs><linearGradient id="paint0_linear" x1="24.3537" y1="18.9707" x2="24.3537" y2="9.55829" gradientUnits="userSpaceOnUse"><stop stop-color="#999999"></stop><stop offset="1" stop-color="#737373"></stop></linearGradient></defs></svg>

+ 1 - 0
src/assets/followAcc.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><path d="M21 7a3 3 0 013 3v8a3 3 0 01-3 3H7a3 3 0 01-3-3v-8a3 3 0 013-3h14zm-9.603 8.08h-1.256C7.981 15.08 7 16.84 7 18.3v.194c0 .28.216.506.492.506h6.516a.49.49 0 00.492-.5v-.2c0-1.46-1.5-3.3-3.103-3.22zM18.242 10h-.484a.496.496 0 00-.508.491v1.758l-1.759.001c-.234 0-.44.18-.483.417l-.008.09v.485c0 .287.22.508.491.508l1.759-.001v1.76c0 .234.18.44.417.483l.09.008h.485c.287 0 .508-.22.508-.491v-1.76l1.759.001c.234 0 .44-.18.483-.417l.008-.09v-.485a.496.496 0 00-.491-.508l-1.759-.001v-1.758c0-.234-.18-.44-.417-.483l-.09-.008zm-7.414 0a2 2 0 00-2.005 1.996 2 2 0 002.005 1.996 2 2 0 002.005-1.996A2 2 0 0010.828 10z" fill="url(#a)" fill-rule="nonzero"></path></svg>

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
src/assets/gameList.svg


+ 1 - 0
src/assets/ghIcon.svg

@@ -0,0 +1 @@
+<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.52659 10.2918C5.91359 9.56524 5.41666 8.20791 5.41666 7.25774V5.83298C5.41666 3.99223 6.91279 2.5 8.74999 2.5C10.5909 2.5 12.0833 3.99415 12.0833 5.83351V7.25849C12.0833 8.20775 11.5841 9.56905 10.9734 10.293L10.6721 10.6501C10.1809 11.2325 10.3343 11.9737 11.0213 12.3088L15.7382 14.6096C16.251 14.8597 16.6667 15.521 16.6667 16.0962V16.668C16.6667 17.1275 16.2909 17.5 15.8321 17.5H1.66785C1.20696 17.5 0.833328 17.1298 0.833328 16.668V16.0962C0.833328 15.5253 1.24845 14.8599 1.76174 14.6094L6.4787 12.3076C7.16281 11.9738 7.32188 11.2344 6.82787 10.6489L6.52659 10.2918ZM16.875 8.95833H19.1667V10.2083H16.875V12.5H15.625V10.2083H13.3333V9.58333V8.95833H15.625V6.66667H16.875V8.95833Z"></path></svg>

+ 1 - 0
src/assets/img.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><path d="M19.5 6A2.5 2.5 0 0122 8.5v11a2.5 2.5 0 01-2.5 2.5h-11A2.5 2.5 0 016 19.5v-11A2.5 2.5 0 018.5 6h11zm-2.657 8.156a1 1 0 00-1.347.006l-4.22 3.881a.5.5 0 01-.643.03l-2.731-2.087a.25.25 0 00-.402.199V19.5a1 1 0 001 1h11a1 1 0 001-1v-1.82a.5.5 0 00-.165-.371zM11 9.5a1.5 1.5 0 100 3 1.5 1.5 0 000-3z" fill="url(#a)" fill-rule="nonzero"></path></svg>

+ 1 - 0
src/assets/imgText.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#8F8F8F" offset="0%"></stop><stop stop-color="#666" offset="100%"></stop></linearGradient><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="b"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><g fill="none" fill-rule="nonzero"><rect fill="url(#a)" opacity=".4" x="16" y="7" width="3" height="3" rx="1"></rect><rect fill="url(#a)" opacity=".6" x="11" y="6" width="4" height="4" rx=".75"></rect><path d="M18.375 19.75a1.875 1.875 0 110 3.75 1.875 1.875 0 010-3.75zm-7.25 0a1.875 1.875 0 110 3.75 1.875 1.875 0 010-3.75zM8.576 6.5a.5.5 0 01.494.418L9.75 11h10.597a1 1 0 01.99 1.141l-.653 4.571A1.5 1.5 0 0119.199 18h-8.907a1.5 1.5 0 01-1.484-1.277L7.5 8h-2a.5.5 0 01-.5-.5V7a.5.5 0 01.5-.5h3.076z" fill="url(#b)"></path></g></svg>

+ 1 - 0
src/assets/jumpLink.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><path d="M21 7a3 3 0 013 3v8a3 3 0 01-3 3H7a3 3 0 01-3-3v-8a3 3 0 013-3h14zm-4.857 2a2.857 2.857 0 00-2.857 2.857v4.286a1.429 1.429 0 11-1.429-1.429v-1.428a2.857 2.857 0 102.857 2.857v-4.286a1.429 1.429 0 111.429 1.429v1.428a2.857 2.857 0 100-5.714z" fill="url(#a)" fill-rule="nonzero"></path></svg>

+ 1 - 0
src/assets/launch.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><defs><style type="text/css"></style></defs><path d="M938.666667 725.333333a42.666667 42.666667 0 0 1 0 85.333334h-384v128a42.666667 42.666667 0 0 1-85.333334 0v-128H85.333333a42.666667 42.666667 0 0 1 0-85.333334h853.333334zM854.954667 42.666667C924.501333 42.666667 981.333333 91.648 981.333333 151.509333v464.213334c0 13.354667-12.672 24.277333-28.16 24.277333H70.826667c-15.488 0-28.16-10.922667-28.16-24.32V151.552C42.666667 91.648 99.498667 42.666667 169.045333 42.666667h685.909334zM377.344 213.333333c-20.053333 0.938667-34.048 11.733333-41.088 31.914667l-78.848 212.608c0 0.938667-0.469333 1.877333-1.408 3.285333v10.794667c0.938667 16.426667 10.24 24.405333 27.52 24.405333 14.037333 0 23.808-6.101333 28.970667-18.304l12.117333-36.608h107.349333l10.752 36.608c4.181333 12.202667 13.525333 18.304 28.928 18.304 17.28 0 26.581333-7.509333 27.52-22.997333a66.133333 66.133333 0 0 1-3.242666-15.488L419.84 245.248c-8.874667-20.181333-23.338667-30.976-42.496-31.914667z m253.866667 4.224h-65.28c-18.218667 1.877333-28.032 11.733333-28.970667 29.098667v220.586667c0 18.304 10.24 27.690667 30.336 28.629333h66.773333c84.48-4.224 128.810667-49.28 133.930667-136.106667-3.754667-90.581333-49.493333-137.984-136.746667-142.208z m-1.365334 53.504c50.389333 0.938667 76.544 30.037333 77.482667 87.296-2.816 54.912-27.093333 83.072-72.832 84.010667h-39.68V271.061333z m-252.032 3.285334l36.394667 113.109333H341.418667l36.394666-113.109333z" p-id="1276"></path></svg>

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
src/assets/logo.svg


+ 1 - 0
src/assets/material.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><defs><style type="text/css"></style></defs><path d="M154.545231 366.355692c-48.64-21.031385-48.482462-55.138462 0-76.20923l269.745231-116.81477a253.715692 253.715692 0 0 1 176.206769 0l269.745231 116.775385c48.64 21.031385 48.482462 55.138462 0 76.248615l-269.745231 116.775385a254.306462 254.306462 0 0 1-176.206769 0z m18.235077 99.997539l251.510154 108.859077a254.148923 254.148923 0 0 0 176.206769 0l251.510154-108.859077 18.235077 7.876923c48.64 21.031385 48.482462 55.138462 0 76.248615l-269.745231 116.775385a253.991385 253.991385 0 0 1-176.206769 0l-269.745231-116.775385c-48.64-21.031385-48.482462-55.138462 0-76.209231z m0 184.162461l251.510154 108.819693a253.833846 253.833846 0 0 0 176.206769 0l251.510154-108.819693 18.235077 7.876923c48.64 21.031385 48.482462 55.138462 0 76.209231l-269.705847 116.932923a254.148923 254.148923 0 0 1-176.206769 0l-269.745231-116.775384c-48.64-21.031385-48.482462-55.138462 0-76.209231z" p-id="13650"></path></svg>

+ 1 - 0
src/assets/media.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M857.92 875.584H763.52a32 32 0 0 1 0-64h94.464c20.224 0 36.736-17.344 36.736-38.656V207.424c0-21.312-16.512-38.656-36.736-38.656H170.752c-20.224 0-36.736 17.344-36.736 38.656v565.504c0 21.312 16.448 38.656 36.736 38.656h384.256a32 32 0 0 1 0 64H170.752c-55.552 0-100.736-46.08-100.736-102.656V207.424c0-56.64 45.184-102.656 100.736-102.656h687.168c55.552 0 100.736 46.08 100.736 102.656v565.504c0 56.576-45.184 102.656-100.736 102.656z" p-id="5392"></path><path d="M397.76 374.464c0-35.2 24.96-49.6 55.424-32l200.32 115.712c30.528 17.6 30.528 46.4 0 64l-200.32 115.712c-30.464 17.6-55.424 3.2-55.424-32V374.464z" p-id="5393"></path></svg>

+ 1 - 0
src/assets/msg.svg

@@ -0,0 +1 @@
+<svg t="1681800818785" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16824" width="100%" height="100%"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="currentColor" p-id="16825" data-spm-anchor-id="a313x.7781069.0.i8" class="selected"></path><path d="M455.936 819.2c-11.52 0-20.8896-10.2912-20.8896-22.9376V658.432l24.4224-33.3824c0.512-0.768 0.8704-1.4848 1.3312-2.048l250.4704-305.9712-293.632 282.6752-29.696 32.256-168.448-46.592a20.7872 20.7872 0 0 1-8.192-5.376 23.7568 23.7568 0 0 1-4.3008-6.5024c-5.12-11.3152-0.9728-25.1904 9.3696-30.7712l521.3696-284.3136A19.712 19.712 0 0 1 747.0592 256c8.0384 0 15.2064 4.864 18.7392 12.6976a25.6 25.6 0 0 1 1.8944 14.5408l-73.1136 438.1696c-1.8944 10.8544-10.5472 18.8416-20.6336 18.8416h-1.1776a20.4288 20.4288 0 0 1-6.2976-1.024l-189.6448-65.3312v122.3168c0 12.6976-9.3696 22.9888-20.8896 22.9888z" fill="#FFFFFF" p-id="16826"></path></svg>

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
src/assets/position.svg


+ 1 - 0
src/assets/rocket.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1640337291163" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24697" xmlns:xlink="http://www.w3.org/1999/xlink" width="26" height="26"><defs><style type="text/css"></style></defs><path d="M175.9 686z" p-id="24698"></path><path d="M694.9 412.6L483 535.7l66.4 72.7 148.5-192.9c0.6-1.1 0.2-2.4-0.8-3-0.7-0.3-1.6-0.3-2.2 0.1z" fill="#4887C7" p-id="24699"></path><path d="M463.9 574.6c0 27.3 22.1 49.4 49.4 49.4s49.4-22.1 49.4-49.4-22.1-49.4-49.4-49.4c-27.3-0.1-49.4 22.1-49.4 49.4z" fill="#4887C7" p-id="24700"></path><path d="M264.8 327.4l-69.9-69.9C369 83.1 651.3 82.3 826.3 255.7L756.8 326c-136.5-134.9-356.3-134.3-492 1.4z" fill="#EDB019" p-id="24701"></path><path d="M194.9 890.7C20 716.1 19.8 432.8 194.4 257.9l0.5-0.5 69.9 69.9c-136.2 136.2-136.2 357.1 0 493.3l-69.9 70.1z" fill="#81BE00" p-id="24702"></path><path d="M828.1 890.7l-69.9-69.9c136.2-136.2 136.2-357.1 0-493.3l-1.4-1.4 69.5-70.3c175.8 173.6 177.6 456.9 4 632.7-0.8 0.7-1.5 1.4-2.2 2.2z" fill="#D22422" p-id="24703"></path><path d="M500.5 258.7h22v37.2h-22v-37.2z m-156.2 47.8l19-11 18.6 32.2-19 11-18.6-32.2zM232.9 425.9l11-19 32.2 18.6-11 19-32.2-18.6z m-36.7 137.2h37.2v22h-37.2v-22z m36.7 159.1l32.2-18.6 11 19-32.2 18.6-11-19zM641 327.7l18.6-32.2 19 11-18.6 32.2-19-11z m105.9 97.8l32.2-18.6 11 19-32.2 18.6-11-19z m42.7 137.6h37.2v22h-37.2v-22z m-42.7 159.5l11-19 32.2 18.6-11 19-32.2-18.6z" fill="#4887C7" p-id="24704"></path></svg>

+ 1 - 0
src/assets/sliderImgSvg.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><path d="M19.5 6A2.5 2.5 0 0122 8.5v11a2.5 2.5 0 01-2.5 2.5h-11A2.5 2.5 0 016 19.5v-11A2.5 2.5 0 018.5 6h11zm-3.905 8.082l-.099.08-4.22 3.881a.5.5 0 01-.567.077l-.076-.048-2.731-2.086a.25.25 0 00-.395.142l-.007.057V19.5a1 1 0 00.883.993l.117.007h11a1 1 0 00.993-.883l.007-.117v-1.82a.5.5 0 00-.107-.31l-.058-.061-3.492-3.153a1 1 0 00-1.248-.074zM24 9a2 2 0 012 2v6a2 2 0 01-2 2h-1v-1.5h1a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5h-1V9h1zM5 9v1.5H4a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h1V19H4a2 2 0 01-2-2v-6a2 2 0 012-2h1zm6 .5a1.5 1.5 0 100 3 1.5 1.5 0 000-3z" fill="url(#a)" fill-rule="nonzero"></path></svg>

+ 1 - 0
src/assets/text.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="canvas_gradient_common"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><path d="M8.5 6h11A2.5 2.5 0 0122 8.5v11a2.5 2.5 0 01-2.5 2.5h-11A2.5 2.5 0 016 19.5v-11A2.5 2.5 0 018.5 6zm1 3.5V11h9V9.5h-9zM12 17v1.5h4V17h-4zm-2.5-6v1.5h.75l.375-1.5H9.5zm9 0h-1.125l.375 1.5h.75V11zm-5.25 0v6h1.5v-6h-1.5z" fill="url(#a)" fill-rule="nonzero"></path></svg>

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
src/assets/topNullBack.svg


+ 1 - 0
src/assets/topimg.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M19.5 6A2.5 2.5 0 0122 8.5v11a2.5 2.5 0 01-2.5 2.5h-11A2.5 2.5 0 016 19.5v-11A2.5 2.5 0 018.5 6h11zm-2.657 8.156a1 1 0 00-1.347.006l-4.22 3.881a.5.5 0 01-.643.03l-2.731-2.087a.25.25 0 00-.402.199V19.5a1 1 0 001 1h11a1 1 0 001-1v-1.82a.5.5 0 00-.165-.371zM11 9.5a1.5 1.5 0 100 3 1.5 1.5 0 000-3z" fill="url(#a)" fill-rule="nonzero"></path><path d="M5.25 1a.75.75 0 010 1.5h-2.5a.75.75 0 010-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 010-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5z" fill="#C7C7C7"></path></g></svg>

+ 1 - 0
src/assets/topslider.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M19.5 6A2.5 2.5 0 0122 8.5v11a2.5 2.5 0 01-2.5 2.5h-11A2.5 2.5 0 016 19.5v-11A2.5 2.5 0 018.5 6h11zm-3.905 8.082l-.099.08-4.22 3.881a.5.5 0 01-.567.077l-.076-.048-2.731-2.086a.25.25 0 00-.395.142l-.007.057V19.5a1 1 0 00.883.993l.117.007h11a1 1 0 00.993-.883l.007-.117v-1.82a.5.5 0 00-.107-.31l-.058-.061-3.492-3.153a1 1 0 00-1.248-.074zM24 9a2 2 0 012 2v6a2 2 0 01-2 2h-1v-1.5h1a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5h-1V9h1zM5 9v1.5H4a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h1V19H4a2 2 0 01-2-2v-6a2 2 0 012-2h1zm6 .5a1.5 1.5 0 100 3 1.5 1.5 0 000-3z" fill="url(#a)" fill-rule="nonzero"></path><path d="M5.25 1a.75.75 0 010 1.5h-2.5a.75.75 0 010-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 010-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5z" fill="#C7C7C7"></path></g></svg>

+ 1 - 0
src/assets/topvideo.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M16.5 8A1.5 1.5 0 0118 9.5v2.25l4.2-3.15a.5.5 0 01.8.4v10a.5.5 0 01-.8.4L18 16.25v2.25a1.5 1.5 0 01-1.5 1.5h-10A1.5 1.5 0 015 18.5v-9A1.5 1.5 0 016.5 8h10z" fill="url(#a)" fill-rule="nonzero"></path><path d="M5.25 1a.75.75 0 010 1.5h-2.5a.75.75 0 010-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 010-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5zm5 0a.75.75 0 110 1.5h-2.5a.75.75 0 110-1.5h2.5z" fill="#C7C7C7"></path></g></svg>

+ 1 - 0
src/assets/wxAutoSvg.svg

@@ -0,0 +1 @@
+<svg width="28" height="28" viewBox="0 0 28 28"><defs><linearGradient x1="50%" y1="99.707%" x2="50%" y2="5.583%" id="a"><stop stop-color="#999" offset="0%"></stop><stop stop-color="#737373" offset="100%"></stop></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M6.5 7h15c1.38 0 2.5 1.343 2.5 3v8c0 1.657-1.12 3-2.5 3h-15C5.12 21 4 19.657 4 18v-8c0-1.657 1.12-3 2.5-3z" fill="url(#a)" fill-rule="nonzero"></path><path d="M14 9.5c2.485 0 4.5 1.833 4.5 4.093s-2.015 4.093-4.5 4.093c-.496 0-.974-.073-1.42-.208-.002.01-.434.24-1.296.69a.367.367 0 01-.533-.378l.025-.178c.1-.685.151-1.026.155-1.026-.88-.747-1.431-1.811-1.431-2.993 0-2.26 2.015-4.093 4.5-4.093zM11.75 13a.75.75 0 100 1.5.75.75 0 000-1.5zM14 13a.75.75 0 100 1.5.75.75 0 000-1.5zm2.25 0a.75.75 0 100 1.5.75.75 0 000-1.5z" fill="#FFF"></path></g></svg>

+ 36 - 0
src/components/ColorPicker/index.less

@@ -0,0 +1,36 @@
+.color {
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+}
+// .swatch{
+//     padding: 5px;
+//     background: #fff;
+//     border-radius: 1px;
+//     box-shadow: 0 0 0 1px rgba(0,0,0,.1);
+//     display: inline-block;
+//     cursor: pointer;
+//     margin-top: 8px;
+// } 
+.colorPicker{
+    position: relative;
+}
+.popover{
+    position: absolute;
+    top: 45px;
+    left: 0;
+    z-index: 100;
+    .cover{
+        position: fixed;
+        top: 0;
+        left: 0;
+        bottom: 0;
+        right: 0;
+    }
+    .sketchPicker{
+        position: absolute;
+    }
+}
+.swatch .color{
+    // border: 1px solid rgb(199, 199, 199);
+}

+ 62 - 0
src/components/ColorPicker/index.tsx

@@ -0,0 +1,62 @@
+import React, { useCallback, useEffect, useState } from "react"
+import { SketchPicker } from 'react-color'
+import style from './index.less'
+type props = {
+    onColor: (color: string) => void,
+    defaultColor?: string,
+    value?: string,
+    type?: 'rgba'
+}
+
+const ColorPicker = (props: props) => {
+    let { onColor, defaultColor = "conic-gradient(red, yellow, lime, aqua, blue, magenta, red)", value, type } = props
+    const [displayColorPicker, setDisplayColorPicker] = useState<boolean>(false)
+    const [color, setColor] = useState<any>(defaultColor)
+
+    const handleClick = useCallback(() => {
+        setDisplayColorPicker(!displayColorPicker)
+    }, [])
+
+    const handleClose = useCallback(() => {
+        setDisplayColorPicker(false)
+    }, [])
+
+    const handleChange = useCallback((e: any) => {
+        let hex = e.hex
+        let {r,g,b,a} = e.rgb
+        let rgba = `rgba(${r},${g},${b},${a})`
+        setColor(type === 'rgba' ? rgba : hex)
+        onColor(type === 'rgba' ? rgba : hex)
+    }, [color, type])
+
+    useEffect(() => {
+        onColor(color)
+    }, [])
+
+    useEffect(() => {
+        if (value) {
+            setColor(value)
+            onColor(value)
+        }
+    }, [value])
+    useEffect(()=>{
+        console.log('defaultColor',defaultColor)
+        setColor(defaultColor)
+    },[defaultColor])
+    return <>
+        <div className={style.colorPicker}>
+            <div className={style.swatch} onClick={handleClick}>
+                <div className={style.color} style={{ background: color }} />
+            </div>
+            {
+                displayColorPicker ? <div className={style.popover}>
+                    <div className={style.cover} onClick={handleClose} />
+                    <SketchPicker color={color} onChange={handleChange} className={style.sketchPicker} />
+                </div> : null
+            }
+
+        </div>
+    </>
+}
+
+export default React.memo(ColorPicker)

+ 22 - 0
src/components/ColorPicker1/index.less

@@ -0,0 +1,22 @@
+.swatch{
+    padding: 5px;
+    background: #fff;
+    border-radius: 1px;
+    box-shadow: 0 0 0 1px rgba(0,0,0,.1);
+    display: inline-block;
+    cursor: pointer;
+    margin-top: 8px;
+    border-radius: 4px;
+    .color{
+        width: 20px;
+        height: 20px;
+        border-radius: 2px;
+        border: 1px solid rgb(199, 199, 199);
+    }
+} 
+.sketchPicker{
+    border-radius: 0 !important;
+    box-shadow: none !important;
+    padding: 0 !important;
+    color: #000000;
+}

+ 34 - 0
src/components/ColorPicker1/index.tsx

@@ -0,0 +1,34 @@
+import { Tooltip } from "antd"
+import React from "react"
+import { SketchPicker } from 'react-color'
+import style from './index.less'
+type props = {
+    onColor: (color: string) => void,
+    color?: string,
+    type?: 'rgba'
+}
+
+const ColorPicker = (props: props) => {
+    let { onColor, color = "#000000", type } = props
+
+    return <Tooltip
+        color="#FFF"
+        title={<SketchPicker
+            color={color}
+            presetColors={['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF', '#CBEDBE', '#FFF4D9']}
+            onChange={(e: any) => {
+                let { r, g, b, a } = e.rgb
+                let rgba = `rgba(${r},${g},${b},${a})`
+                onColor(type === 'rgba' ? rgba : e?.hex)
+            }
+            }
+            className={style.sketchPicker}
+        />}
+        trigger='click'>
+        <div className={style.swatch}>
+            <div className={style.color} style={{ backgroundColor: color }} />
+        </div>
+    </Tooltip>
+}
+
+export default React.memo(ColorPicker)

+ 274 - 0
src/components/Cropper/index.tsx

@@ -0,0 +1,274 @@
+import { useCallback, useEffect, useState } from 'react'
+import Cropper from "react-cropper";
+import "cropperjs/dist/cropper.css";
+import { Button, Col, Form, InputNumber, message, Radio, Row, Spin, Upload } from 'antd';
+import Modal from 'antd/lib/modal/Modal';
+import { RcFile } from 'antd/lib/upload';
+import { InboxOutlined } from '@ant-design/icons'
+const { Dragger } = Upload
+import { compressAccurately } from 'image-conversion';
+import { blobToBase64 } from '@/utils/compress'
+
+interface Props {
+    width?: number,//初始裁剪框宽
+    height?: number,//初始裁剪框高
+    imgSize?: {width: number, height: number, size: number},
+    disabled?: boolean, // 是否禁止传入
+    btnName?: string | JSX.Element//按钮名称
+    isChangeCropperSize?: boolean,  // 是否可以改变裁剪框大小
+    isLaunch?: boolean, // 是否是在落地页上传
+    isCropper?: boolean, // 是否需要裁剪
+    isJudgeSize?: boolean,   // 是否判断图片宽高与传入的裁剪框宽高 图片大小需要大于裁剪框大小
+    callback?: (imgData: any) => void//裁剪后图片的数据
+}
+/**图片裁剪
+ * @param width 初始裁剪框宽
+ * @param height 初始高度
+ * @param btnName 按钮名称
+ * @param disabled 是否禁止传入
+ * @param isLaunch 是否是在落地页上传
+ * @param isCropper 是否需要裁剪
+ * @param callback 裁剪后图片的数据的回调函数
+ * @param isJudgeSize 是否判断图片宽高与传入的裁剪框宽高 图片大小需要大于裁剪框大小 需传入width和height
+ */
+export const Demo = (props: Props) => {
+
+    let {  isJudgeSize = false, isChangeCropperSize = false, isLaunch = false, isCropper = false, disabled = false, imgSize } = props
+    const [image, setImage] = useState('');//初始图片
+    const [visible, setVisible] = useState<boolean>(false)
+    const [cropper, setCropper] = useState<any>();//实例
+    const [loading, setLoading] = useState<boolean>(false)
+    const [detail, setDetail] = useState<{ width: number, height: number, rotate: number }>({ width: props?.width || 800, height: props?.height || 800, rotate: 0 });//设置数据
+
+    /**关闭 */
+    const cancel = useCallback(() => {
+        setVisible(false)
+        setCropper(undefined)
+        setImage('')
+    }, [])
+    /**获取裁剪数据*/
+    const getCropData = () => {
+        if (typeof cropper !== "undefined") {
+            props?.callback && props?.callback(cropper.getCroppedCanvas().toDataURL('image/jpeg'))
+            cancel()
+        }
+    };
+    /**数值变化重置实例 */
+    useEffect(() => {
+        if (typeof cropper !== "undefined") {
+            cropper.setData(detail);
+        }
+    }, [cropper, detail]);
+
+    useEffect(() => {
+        if (visible && cropper) {
+            setTimeout(() => {
+                cropper.reset()
+                if (props?.width) {
+                    cropper.setData({ width: props?.width, height: props?.height })
+                }
+            }, 200)
+        }
+    }, [visible, cropper])
+
+    return <Spin spinning={loading}>
+        {
+            <Dragger
+                disabled={disabled}
+                accept="image/*"
+                action="#"
+                showUploadList={false}
+                multiple={true}
+                customRequest={()=>{ }}
+                beforeUpload={(file: RcFile, FileList: RcFile[]): any => {
+                    setLoading(true)
+                    let img: any = new Image();
+                    let _URL = window.URL || window.webkitURL;
+                    img.onload = function (e: any) {
+                        if (isJudgeSize) {
+                            if (!props?.width || !props?.height) {
+                                console.error('请传入"width"与"height"');
+                                setLoading(false)
+                                return 
+                            }else if (props?.width < this.width || props?.height < this.height) {
+                                message.error(`传入的图片大小不符, 图片大小${this.width}*${this.height}, 需要图片大小${props.width}*${props.height}`)
+                                setLoading(false)
+                                return
+                            }
+                        }
+                        
+                        const reader = new FileReader();
+                        reader.onload = async () => {
+                            let size = imgSize?.size || 307200
+                            if (isCropper) {
+                                setImage(reader.result as any);
+                                setLoading(false)
+                            } else {
+                                if (imgSize && (imgSize?.width === 800 || imgSize?.width === 640 || imgSize?.width === 960)) {
+                                    if (imgSize?.width !== this.width || imgSize?.height !== this.height) {
+                                        message.error(`请上传${imgSize?.width} * ${imgSize?.height}尺寸图片`)
+                                        setLoading(false)
+                                        return
+                                    }
+                                } else if (imgSize?.width === 750) {
+                                    if (imgSize?.width !== this.width || this.height > 1536) {
+                                        message.error(`请上传${imgSize?.width} * <1536尺寸图片`)
+                                        setLoading(false)
+                                        return
+                                    }
+                                }
+                                if (size === 307200 && file?.size > size) { // 大于300kb进入压缩
+                                    let bole = await compressAccurately(file, 250)
+                                    if (bole?.size > 300000) {
+                                        bole = await compressAccurately(file, 200)
+                                    }
+                                    if (bole?.size > 300000) {
+                                        bole = await compressAccurately(file, 150)
+                                    }
+                                    if (bole?.size > 300000) {
+                                        bole = await compressAccurately(file, 100)
+                                    }
+                                    let newFile = await blobToBase64(bole)
+                                    message.warning({
+                                        content: '选择的图片大于300KB,图片已压缩',
+                                        duration: 3
+                                    })
+                                    props?.callback && props?.callback(newFile);
+                                    setLoading(false)
+                                    return
+                                } else if (size === 81920 && file?.size > size) {
+                                    let bole = await compressAccurately(file, 80)
+                                    if (bole?.size > 80000) {
+                                        bole = await compressAccurately(file, 60)
+                                    }
+                                    if (bole?.size > 80000) {
+                                        bole = await compressAccurately(file, 40)
+                                    }
+                                    let newFile = await blobToBase64(bole)
+                                    message.warning({
+                                        content: '选择的图片大于80KB,图片已压缩',
+                                        duration: 3
+                                    })
+                                    props?.callback && props?.callback(newFile);
+                                    setLoading(false)
+                                    return
+                                }
+                                props?.callback && props?.callback(reader.result);
+                                setLoading(false)
+                            }
+                        };
+                        reader.readAsDataURL(file);
+                        if (isCropper) {
+                            setLoading(false)
+                            setVisible(true)
+                        }
+                        
+                    }
+                    img.src = _URL.createObjectURL(file);
+                    
+                }}
+            >
+                {
+                    props?.btnName ? props?.btnName : <>
+                        <p className="ant-upload-drag-icon">
+                            <InboxOutlined />
+                        </p>
+                        <p className="ant-upload-text">单击或拖动文件到此区域以上载</p>
+                        <p className="ant-upload-hint">支持jpg,png...</p>
+                    </>
+                }
+            </Dragger>
+        }
+        { visible && <Modal
+            open={visible}
+            onCancel={cancel}
+            width={1000}
+            footer={<div style={{ display: 'flex', justifyContent: 'center' }}>
+                <Button onClick={cancel}>取消</Button>
+                {/* <Button onClick={() => {
+                    cropper.reset()
+                    if (props?.width) {
+                        cropper.setData({ width: props?.width, height: props?.height })
+                    }
+                }}>重置</Button> */}
+                <Button type='primary' onClick={getCropData}>确定</Button>
+            </div>}
+        >
+            <div>
+                <div style={{ width: "100%" }}>
+                    <Row>
+                        <Col span={16}>
+                            <Cropper
+                                style={{ height: 400, width: 600, backgroundImage: `url(${require('@/public/init.png')})`, border: '1px solid #efefef' }}
+                                zoomTo={0.6}
+                                initialAspectRatio={1}
+                                preview=".img-preview"
+                                src={image}
+                                viewMode={0}
+                                guides={true}
+                                rotatable={true}
+                                minCropBoxHeight={10}
+                                minCropBoxWidth={10}
+                                background={false}
+                                responsive={true}
+                                autoCropArea={1}
+                                cropBoxResizable={false}
+                                checkOrientation={false}
+                                onInitialized={(instance: any) => {
+                                    setCropper(instance);
+                                }}
+                            />
+                        </Col>
+                        <Col span={8}>
+                            <Row gutter={[10, 10]}>
+                                <Col span={24} style={{ height: 275 }}>
+                                    <div className="box" style={{ width: "100%", float: "right", overflow: 'hidden' }}>
+                                        <h1>Preview</h1>
+                                        <div
+                                            className="img-preview"
+                                            style={{ width: "100%", float: "left", height: "200px", overflow: 'hidden' }}
+                                        />
+                                    </div>
+                                </Col>
+                                <Col>
+                                    <Form>
+                                        <Form.Item label="裁剪框宽" style={{marginBottom: 0}}>
+                                            <Radio.Group disabled={isChangeCropperSize || isLaunch} onChange={(e)=>{setDetail({...detail, width: e.target.value, height: 800})}} value={detail.width}>
+                                                <Radio value={800}>800</Radio>
+                                                <Radio value={750}>750</Radio>
+                                                <Radio value={640}>640</Radio>
+                                            </Radio.Group>
+                                        </Form.Item>
+                                        <Form.Item label="裁剪框高" style={{marginBottom: 0}}>
+                                            {detail.width === 800 ? <Radio.Group disabled={isChangeCropperSize || isLaunch} onChange={(e)=>{setDetail({...detail, height: e.target.value})}} value={detail.height}>
+                                                <Radio value={800}>800</Radio>
+                                                <Radio value={640}>640</Radio>
+                                                <Radio value={450}>450</Radio>
+                                            </Radio.Group> 
+                                            : detail.width === 640 ? <Radio.Group disabled={isChangeCropperSize || isLaunch} onChange={(e)=>{setDetail({...detail, height: e.target.value})}} value={detail.height}>
+                                                <Radio value={800}>800</Radio>
+                                            </Radio.Group> 
+                                            :
+                                            <InputNumber
+                                                style={{ width: 200 }}
+                                                value={detail.height}
+                                                disabled={isChangeCropperSize ? isChangeCropperSize : isLaunch ? false : false}
+                                                min={1}
+                                                max={1536}
+                                                onChange={(e) => {setDetail({...detail, height: e||0})}}
+                                            />
+                                            }
+                                        </Form.Item>
+                                    
+                                    </Form>
+                                </Col>
+                            </Row>
+                        </Col>
+                    </Row>
+                </div>
+            </div>
+        </Modal>}
+    </Spin>
+};
+
+export default Demo;

+ 190 - 0
src/components/CropperImg/index.tsx

@@ -0,0 +1,190 @@
+import { Button, Col, Form, InputNumber, Modal, Row } from "antd";
+import React, { useEffect, useState } from "react";
+import Cropper from "react-cropper";
+import "cropperjs/dist/cropper.css";
+import { RcFile } from "antd/lib/upload";
+import { dataURLtoFile } from "@/utils/compress";
+import { useDebounce } from "ahooks";
+
+
+interface Props {
+    size?: { width: number, height: number },
+    // 是否不可改变裁剪框大小
+    isEdit?: boolean,
+    file?: RcFile,
+    visible?: boolean,
+    onChange?: (fileList: any[], file: any) => void,
+    onClose?: () => void
+}
+/**
+ * 新投放素材剪切
+ * @param props 
+ */
+const CropperImg: React.FC<Props> = (props) => {
+
+    /**====================== */
+    const { size, isEdit, file, visible, onChange, onClose } = props
+    const [image, setImage] = useState(''); //初始图片
+    const [cropper, setCropper] = useState<any>();//实例
+    const [dragMode] = useState<'none' | 'crop' | 'move'>('none')
+    const [imgSize, setImageSize] = useState<{ width: number, height: number }>({ width: 0, height: 0 })
+    const [detail, setDetail] = useState<{ width: number, height: number, rotate: number }>({ width: 0, height: 0, rotate: 0 }); //设置数据
+
+    /**====================== */
+
+    /** 获取宽高 image */
+    useEffect(() => {
+        if (file) {
+            let img: any = new Image();
+            let _URL = window.URL || window.webkitURL;
+            img.onload = function (e: any) {
+                const reader = new FileReader();
+                if (!isEdit) { // 可更改
+                    let sizeWidth = size?.width || this.width, sizeHeight = size?.height || this.height;
+                    let width = sizeWidth > this.width ? this.width : sizeWidth;
+                    let height = sizeHeight > this.height ? this.height : sizeHeight;
+                    setImageSize({ width: width, height: height })
+                    setDetail({ ...detail, width: width, height: height })
+                } else { // 不可更改
+                    setImageSize({ width: this.width, height: this.height })
+                    if (size?.width && size?.height) {
+                        setDetail({ ...detail, width: size?.width, height: size?.height })
+                    } else {
+                        setDetail({ ...detail, width: this.width, height: this.height })
+                    }
+                }
+
+                reader.onload = async () => {
+                    setImage(reader.result as any);
+                }
+                reader.readAsDataURL(file);
+            }
+            img.src = _URL.createObjectURL(file);
+        }
+    }, [size, isEdit])
+
+    const debouncedValue = useDebounce(detail, { wait: 500 });
+
+    /**数值变化重置实例 */
+    useEffect(() => {
+        if (typeof cropper !== "undefined" && debouncedValue?.width) {
+            console.log(cropper, debouncedValue)
+            cropper.setData(debouncedValue);
+        }
+    }, [cropper, debouncedValue]);
+
+    /** 初始化 */
+    useEffect(() => {
+        if (visible && cropper) {
+            setTimeout(() => {
+                cropper.reset()
+            }, 200)
+        }
+    }, [visible, cropper])
+
+    /**关闭 */
+    const cancel = () => {
+        onClose && onClose()
+        setCropper(undefined)
+        setImage('')
+    }
+
+    const getCropData = async () => {
+        if (typeof cropper !== "undefined") {
+            let newFile = await dataURLtoFile(cropper.getCroppedCanvas().toDataURL('image/jpeg'), file?.name.split('.')[0] + '.jpg')
+            onChange && onChange([{
+                lastModified: newFile.lastModified,
+                // lastModifiedDate: newFile.lastModifiedDate,
+                name: newFile.name,
+                percent: 0,
+                size: newFile.size,
+                thumbUrl: cropper.getCroppedCanvas().toDataURL('image/jpeg'),
+                type: newFile.type,
+                // uid: newFile.uid,
+                originFileObj: newFile
+            }], newFile)
+            setCropper(undefined)
+            setImage('')
+        }
+    }
+
+    return <Modal
+        open={visible}
+        onCancel={cancel}
+        width={1000}
+        footer={<div style={{ display: 'flex', justifyContent: 'center' }}>
+            <Button onClick={cancel}>取消</Button>
+            <Button type='primary' onClick={getCropData}>确定</Button>
+        </div>}
+    >
+        <div style={{ width: "100%" }}>
+            <Row>
+                <Col span={16}>
+                    <Cropper
+                        style={{ height: 450, width: 600, backgroundImage: `url(${require('../../public/init.png')})`, border: '1px solid #efefef' }}
+                        zoomTo={0.6}
+                        initialAspectRatio={1}
+                        preview=".img-preview"
+                        src={image}
+                        viewMode={1}
+                        dragMode={dragMode} // 'crop' 重新设置裁剪框大小 'move' 移动画布
+                        guides={true}
+                        rotatable={true}
+                        minCropBoxHeight={10}
+                        minCropBoxWidth={10}
+                        background={false}
+                        responsive={true}
+                        autoCropArea={1}
+                        cropBoxResizable={false}
+                        zoomable={false} // 图片缩放
+                        movable={false} // 图片移动控制
+                        onInitialized={(instance: any) => {
+                            console.log('instance--->', instance)
+                            setCropper(instance);
+                        }}
+                        crop={() => { }}
+                    />
+                </Col>
+                <Col span={8}>
+                    <Row gutter={[10, 10]}>
+                        <Col span={24} style={{ height: 275 }}>
+                            <div className="box" style={{ width: "100%", float: "right", overflow: 'hidden' }}>
+                                <h1 style={{ marginTop: 0 }}>预览</h1>
+                                <div
+                                    className="img-preview"
+                                    style={{ width: "100%", float: "left", height: "200px", overflow: 'hidden' }}
+                                />
+                            </div>
+                        </Col>
+                        <Col>
+                            <Form>
+                                <Form.Item label="裁剪框宽" style={{ marginBottom: 10 }}>
+                                    <InputNumber
+                                        style={{ width: 200 }}
+                                        value={detail.width}
+                                        min={1}
+                                        max={imgSize.width}
+                                        disabled={isEdit}
+                                        onChange={(e) => { setDetail({ ...detail, width: e || 0 }) }}
+                                    />
+                                </Form.Item>
+                                <Form.Item label="裁剪框高" style={{ marginBottom: 0 }}>
+                                    <InputNumber
+                                        style={{ width: 200 }}
+                                        value={detail.height}
+                                        min={1}
+                                        max={imgSize.height}
+                                        disabled={isEdit}
+                                        onChange={(e) => { setDetail({ ...detail, height: e || 0 }) }}
+                                    />
+                                </Form.Item>
+                            </Form>
+                        </Col>
+                    </Row>
+                </Col>
+            </Row>
+        </div>
+    </Modal>
+}
+
+export default React.memo(CropperImg)

+ 260 - 0
src/components/CustomList/index.less

@@ -0,0 +1,260 @@
+.form {
+  width: 100%;
+  height: 450px;
+
+  .account {
+    padding-top: 20px;
+    box-sizing: border-box;
+
+    .submit {
+      margin-top: 40px;
+    }
+  }
+}
+
+
+// 投放账户添加
+.launchRefresh {
+  .ant-modal-body {
+    padding: 20px;
+  }
+
+  .refBts {
+    margin-bottom: 10px;
+  }
+
+  .refContent {
+    display: flex;
+    justify-content: flex-start;
+    min-height: 100px;
+    border: 1px solid rgb(112, 112, 112);
+
+    &>.left {
+      width: 300px;
+      // background-color: rgba(245, 245, 245, .5);
+      border-right: 1px solid rgb(235, 235, 235);
+      padding: 5px;
+
+      h4 {
+        font-weight: 600;
+      }
+
+      .isp {
+        padding: 10px;
+        background-color: rgba(238, 238, 238, .8);
+        margin-top: 2px;
+        cursor: pointer;
+      }
+
+      .selectServer {
+        background-color: #e6f7ff;
+        color: #1890ff;
+        border-right: 2px solid #1890ff;
+      }
+    }
+
+    &>.right {
+      width: 660px;
+      padding: 10px;
+      box-sizing: border-box;
+      min-height: 450px;
+    }
+  }
+}
+
+.refreshNotice {
+  font-size: 12px;
+  text-align: center;
+  color: #1890ff;
+
+  p {
+    margin-bottom: 0;
+  }
+}
+
+.content {
+  display: flex;
+  justify-content: flex-start;
+  width: 100%;
+  height: 100%;
+
+  .left {
+    width: 60%;
+    display: flex;
+    flex-direction: column;
+
+    .leftSearch {
+      height: 72px;
+      background-color: #fff;
+      box-shadow: inset 0 -1px 0 0 #ebebeb;
+      padding-left: 20px;
+      padding-right: 20px;
+      display: flex;
+      align-items: center;
+      flex: none;
+    }
+
+    .dataList {
+      flex: 1;
+      position: relative;
+      padding: 16px 10px 16px 24px;
+      overflow-y: auto;
+
+      dl:not(:first-child) {
+        margin-top: 12px;
+      }
+
+      dt {
+        padding-left: 8px;
+        height: 40px;
+        line-height: 40px;
+        margin-bottom: 8px;
+        font-weight: 600;
+        border-bottom: 1px solid #ebebeb;
+      }
+
+      dd {
+        display: inline-block;
+        box-sizing: border-box;
+        position: relative;
+        width: 50%;
+        border-radius: 2px;
+        padding-left: 8px;
+        box-sizing: border-box;
+        margin: 0;
+
+        label span {
+          vertical-align: initial;
+          max-width: 100%;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: nowrap;
+        }
+      }
+
+      .checkbox {
+        font-size: 12px;
+
+        .ant-checkbox {
+          transform: scale(.875);
+        }
+      }
+    }
+  }
+
+  .right {
+    width: 40%;
+    background-color: #f2f2f2;
+    box-shadow: inset 1px 0 0 0 #e0e0e0;
+    display: flex;
+    flex-direction: column;
+
+    .rightTitle {
+      flex: none;
+      display: flex;
+      justify-content: space-between;
+      align-items: flex-end;
+      box-sizing: border-box;
+      padding-right: 25px;
+      padding-bottom: 10px;
+      padding-left: 20px;
+      height: 62px;
+    }
+
+    .rightTitleLeft {
+      font-size: 15px;
+      font-weight: 500;
+
+      >span {
+        margin-left: 4px;
+        margin-right: 4px;
+        color: #1890ff;
+        font-weight: 700;
+      }
+    }
+
+    .selectedList {
+      flex: 1;
+      box-sizing: border-box;
+      margin: 0;
+      margin-top: 10px;
+      padding: 0 20px 10px;
+      font-size: 13px;
+      line-height: 36px;
+      cursor: default;
+      overflow-y: auto;
+    }
+
+    .rightOperate {
+      flex: none;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding-right: 28px;
+      height: 72px;
+      background-color: #fafafa;
+      border-top: 1px solid rgba(0, 0, 0, .08);
+      box-shadow: inset 1px 0 0 0 #e0e0e0;
+
+      &>div>button {
+        border-radius: 4px;
+
+        &.confirm {
+          width: 104px;
+          margin-left: 14px;
+        }
+      }
+    }
+  }
+}
+
+li.liDraw {
+  font-size: 13px;
+  width: 100%;
+  position: relative;
+  padding: 0 12px;
+  border-radius: 2px;
+  height: 36px;
+  background-color: #fff;
+  box-shadow: 0 1px 3px 0 rgba(37, 39, 46, 0.08), 0 1px 2px 0 rgba(158, 158, 158, 0.16), 0 0 0 1px #e3e4e6;
+  z-index: 99999;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  box-sizing: border-box;
+
+  .draw {
+    user-select: none;
+    cursor: move;
+    cursor: -webkit-grab;
+    margin-right: 8px;
+
+    &:active {
+      cursor: move;
+      cursor: -webkit-grabbing;
+    }
+  }
+
+  .lileft {
+    display: flex;
+    align-items: center;
+    flex: 1;
+    overflow: hidden;
+
+    >div {
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+  }
+
+  .clear {
+    cursor: pointer;
+    flex: none;
+    width: 15px;
+  }
+
+  &:not(:last-child) {
+    margin-bottom: 8px;
+  }
+}

+ 359 - 0
src/components/CustomList/index.tsx

@@ -0,0 +1,359 @@
+import { CloseOutlined, ColumnWidthOutlined, SearchOutlined } from "@ant-design/icons"
+import { App, Button, Checkbox, Input, InputNumber, Modal, Popover, Space, Spin, Tooltip } from "antd"
+import { useCallback, useEffect, useState } from "react"
+import style from './index.less'
+import { ReactComponent as DrawStem } from '@/assets/drawStem.svg'
+import { arrayMove, SortableContainer, SortableElement, SortableHandle } from "react-sortable-hoc";
+import useNewToken from "@/Hook/useNewToken"
+
+const DragHandle = SortableHandle(() => <DrawStem className={style.draw} />);
+const SortableItem: any = SortableElement(({ item, del, setConfig }: any) => {
+    const [visible, setVisible] = useState<boolean>(false)
+    const [width, setWidth] = useState<number>(item?.width || 0)
+    return <li className={style.liDraw}>
+        <div className={style.lileft}>
+            <DragHandle />
+            <div>{item?.title}</div>
+        </div>
+        <Space style={{ float: 'right', marginRight: 10 }}>
+            <Popover
+                content={
+                    <div>
+                        <InputNumber min={0} max={500} onChange={(value) => {
+                            if (value) {
+                                setWidth(value)
+                            }
+                        }} value={width} size='small' />
+                        <Button type='primary' size='small' onClick={() => {
+                            setConfig({ ...item, width })
+                            setVisible(false)
+                        }}>OK</Button>
+                    </div>
+                }
+                trigger="click"
+                open={visible}
+                placement='left'
+                onOpenChange={(visible) => { setVisible(visible) }}
+            >
+                <Tooltip title='宽度设置'><a><ColumnWidthOutlined /></a></Tooltip>
+            </Popover>
+        </Space>
+        {item?.label !== 'pos_type' && <Tooltip title='删除'><div className={style.clear} onClick={() => { del() }}><a><CloseOutlined /></a></div></Tooltip>}
+    </li>
+});
+/** 外层 */
+const SortableList: any = SortableContainer(({ children }: { children: any }) => (<ul className={style.selectedList}>{children}</ul>));
+
+interface dataProps {
+    title: string,
+    label: string,
+    dataIndex: string,
+    disabled: boolean
+}
+
+interface DataProps {
+    label: string,
+    data: dataProps[],
+    fieldSHow?: {
+        label: string,
+        saveField: string,
+        defaultValue: any[],
+        data: any[]
+    }
+}
+
+/**
+ * 自定义列
+ */
+type customProps = {
+    visible?: boolean,
+    onChange?: (data: any) => void,
+    onClose?: () => void,
+    config: any[],//配置表
+    configName: string,//配置表名称
+    columns: any[],//配置菜单
+    version: string, // 版本号
+    sysFixed?: {
+        left: number,
+        right: number
+    }
+}
+function CustomListModel(props: customProps) {
+    const { visible, onChange, onClose, config, configName, columns, version, sysFixed = { left: 0, right: 1 } } = props
+    // dataA 总数据
+    // 数据开始
+    const { message } = App.useApp();
+    const { token } = useNewToken()
+    const [dataA, setDataA] = useState<DataProps[]>(config)//备份原始数据
+    const [data, setData] = useState<DataProps[]>(config)//变动的数据
+    const [search, setSearch] = useState<string>('')  // 搜索字段
+    const [selectData, setSelectData] = useState<dataProps[]>([])//选择的数据
+    const [serverData, setServerData] = useState<dataProps[]>([])//备份的数据
+    const [fieldData, setFieldData] = useState<any>({})
+    const [fixed, setFixed] = useState<{ left: number, right: number }>(localStorage.getItem(`myAdMonitorConfigFixed${version}_` + configName) ? JSON.parse(localStorage.getItem(`myAdMonitorConfigFixed${version}_` + configName) as any) : { left: sysFixed.left, right: sysFixed.right })
+    // 数据结束
+
+    // 处理表格里列字段展示
+    useEffect(() => {
+        let mySelectFieldData = localStorage.getItem(`myAdFieldConfig${version}_` + configName)
+        let newSelectFieldData: any = {}
+        if (mySelectFieldData) {
+            newSelectFieldData = JSON.parse(mySelectFieldData)
+        }
+        data?.forEach((item) => {
+            if (item?.fieldSHow) {
+                const { saveField, defaultValue } = item?.fieldSHow
+                if (!newSelectFieldData[saveField]) {
+                    newSelectFieldData[saveField] = defaultValue
+                }
+            }
+        })
+        if (Object.keys(newSelectFieldData).length > 0) {
+            setFieldData({ ...newSelectFieldData })
+        }
+    }, [data])
+    // 获取数据
+    useEffect(() => {
+        getUserList()
+    }, [configName])
+    // 获取个人配置
+    const getUserList = () => {
+        let mySelectData = localStorage.getItem(`myAdMonitorConfig${version}_` + configName)
+        if (mySelectData) {//获取自定义配置
+            let newMySelectData = JSON.parse(mySelectData)
+            newMySelectData = newMySelectData.filter((item: any) => item && columns.some(c => c.dataIndex === item.dataIndex))//去除空项,并去除多余不存在的
+            setSelectData(newMySelectData)
+            setServerData(newMySelectData)
+            setListWidth(newMySelectData)
+            localStorage.setItem(`myAdMonitorConfig${version}_` + configName, JSON.stringify(newMySelectData))//重新存下本地,避免更新后数据不对
+        } else {//使用默认配置
+            let newSelectData: any[] = []
+            config?.forEach((item) => {
+                item?.data?.forEach((d: { default: any }) => {
+                    if (d.default) {
+                        newSelectData[d.default - 1] = d
+                    }
+                })
+            })
+            setSelectData(newSelectData)
+            setServerData(newSelectData)
+            setListWidth(newSelectData)
+        }
+    }
+    // 首次赋值默认宽
+    const setListWidth = useCallback((selectData: { [x: string]: any }[]) => {
+        if (selectData?.length === columns?.length && !selectData?.every((item: any) => item.width)) {
+            let newSelectData: any[] = []
+            newSelectData = selectData?.map((item: { [x: string]: any }, index: number) => {
+                item['width'] = columns[index]['width']
+                return item
+            })
+            setSelectData(newSelectData)
+            setServerData(newSelectData)
+        }
+    }, [columns])
+
+    // 搜索 过滤
+    const searchHandle = useCallback((value: string) => {
+        setSearch(value)
+        if (search) {
+            let newData1: any[] = []
+            dataA.forEach((item: DataProps) => {
+                let newData = item.data.filter((listItem: dataProps) => {
+                    if (listItem?.title?.includes(value)) {
+                        return listItem
+                    } else {
+                        return null
+                    }
+                })
+                if (newData?.length > 0) {
+                    newData1.push({ ...item, data: newData })
+                }
+            })
+            setData([...newData1])
+        } else {
+            setData(dataA)
+        }
+    }, [data, dataA, search])
+
+    // 选中数据
+    const selectHandle = useCallback((checked: boolean, data: dataProps) => {
+        if (checked) {
+            setSelectData([...selectData, { ...data }])
+        } else {
+            let newSelectData = selectData.filter((item: dataProps) => {
+                if (item.dataIndex === data.dataIndex) {
+                    return null
+                } else {
+                    return item
+                }
+            })
+            setSelectData(newSelectData)
+        }
+    }, [selectData])
+
+    // 每个大项 全选
+    const checkAllHandle = useCallback((checked: boolean, value: string) => {
+        let oldData = data.find((item: DataProps) => item.label === value)
+        console.log(oldData)
+        if (oldData) {
+            if (checked) {
+                let newSelectData: any[] = selectData?.filter(item => item)
+                oldData.data.forEach((item: dataProps) => {
+                    if (!item.disabled && selectData.findIndex((selsectItem: dataProps) => selsectItem?.dataIndex === item?.dataIndex) === -1) {
+                        newSelectData.push(item)
+                    }
+                })
+                setSelectData([...newSelectData])
+            } else {
+                let newSelectData = selectData.filter((item: dataProps) => {
+                    if (oldData?.data?.some((dataItem: dataProps) => dataItem.dataIndex === 'pos_type' ? false : dataItem?.dataIndex === item.dataIndex)) {
+                        return null
+                    } else {
+                        return item
+                    }
+                })
+                setSelectData(newSelectData)
+            }
+        }
+
+    }, [selectData, data])
+
+    const onSortEnd = ({ oldIndex, newIndex }: { oldIndex: number, newIndex: number }) => {
+        setSelectData(arrayMove(selectData, oldIndex, newIndex))
+    }
+    // 提交
+    const onSubmit = useCallback(() => {
+        if (selectData.length > 0) {
+            localStorage.setItem(`myAdMonitorConfig${version}_` + configName, JSON.stringify(selectData))
+            localStorage.setItem(`myAdMonitorConfigFixed${version}_` + configName, JSON.stringify(fixed))
+            localStorage.setItem(`myAdFieldConfig${version}_` + configName, JSON.stringify(fieldData))
+            message.success('保存成功')
+            onChange && onChange({ selectData, fixed })
+            onClose && onClose()
+        } else {
+            message.error('请选择最少一项!!!')
+        }
+    }, [serverData, selectData, fixed, fieldData])
+    // 恢复默认
+    const defaultConfig = useCallback(() => {
+        localStorage.setItem('REFRESH', new Date().getTime().toString())
+        localStorage.removeItem(`myAdMonitorConfig${version}_` + configName)
+        localStorage.removeItem(`myAdMonitorConfigFixed${version}_` + configName)
+        localStorage.removeItem(`myAdFieldConfig${version}_` + configName)
+        setFixed({ ...sysFixed })
+        getUserList()
+        message.success('恢复默认成功')
+        onChange && onChange('')
+        onClose && onClose()
+    }, [])
+    // 设置悬浮
+    const changeFixed = useCallback((name: string, value: number | null) => {
+        let v = Number(value)
+        if (!isNaN(v)) {
+            setFixed({ ...fixed, [name]: value })
+        }
+    }, [fixed])
+    //取消操作
+    const cancel = () => {
+        setSelectData(serverData)
+        onClose && onClose()
+    }
+    // 设置配置参数
+    const setConfig = useCallback((data: dataProps) => {
+        let newServerData = selectData?.map((item) => {
+            if (item.dataIndex === data.dataIndex) {
+                item = data
+            }
+            return item
+        })
+        setSelectData(newServerData)
+    }, [selectData])
+
+    // 处理显示字段
+    const fieldHandle = (saveField: string, data: any, checked: boolean) => {
+        let newFieldData = JSON.parse(JSON.stringify(fieldData))
+        if (checked) {
+            if (Object.keys(newFieldData).includes(saveField)) {
+                newFieldData[saveField] = [...newFieldData[saveField], data]
+            } else {
+                newFieldData[saveField] = [data]
+            }
+        } else {
+            newFieldData[saveField] = newFieldData[saveField].filter((item: any) => item.key !== data.key && item.type === data.type)
+        }
+        setFieldData(newFieldData)
+    }
+
+    return <Modal
+        title={null}
+        footer={null}
+        open={visible}
+        width={1100}
+        bodyStyle={{
+            height: 660,
+            overflow: 'hidden',
+            padding: 0
+        }}
+        className={style.customListModel}
+        onCancel={cancel}
+        maskClosable={false}
+    >
+        <div className={style.content} style={{ borderTopLeftRadius: token.borderRadius, overflow: 'hidden' }}>
+            <div className={style.left} style={{ borderTopLeftRadius: token.borderRadius, overflow: 'hidden' }}>
+                <div className={style.leftSearch}>
+                    <Input size="small" placeholder="输入关键词,搜索数据指标" onChange={(e) => { searchHandle(e.target.value) }} value={search} prefix={<SearchOutlined style={{ color: '#a3a3a3', fontSize: 18 }} />} allowClear bordered={false} />
+                </div>
+
+                <div className={style.dataList}>
+                    <Spin spinning={false}>
+                        {data?.map((item: DataProps, index: number) => {
+                            return <dl key={index}>
+                                {item?.fieldSHow && <div style={{ backgroundColor: '#f7f7f7' }}>
+                                    <dt style={{ color: '#ff7875' }}>{item.fieldSHow.label}</dt>
+                                    <div style={{ padding: '0 20px', boxSizing: 'border-box' }}>
+                                        {item?.fieldSHow?.data?.map((item1: any, index) => {
+                                            return <dl key={'field' + index}>
+                                                <dt>{item1.label}</dt>
+                                                {item1.data.map((item2: any, index: number) => <dd key={'item2' + index}><Checkbox className={style.checkbox} onChange={(e) => fieldHandle((item.fieldSHow as any).saveField, item2, e.target.checked)} checked={fieldData[(item.fieldSHow as any).saveField]?.some((field: any) => field.key === item2.key && field.type === item2.type)} disabled={fieldData[(item.fieldSHow as any).saveField]?.length > 0 ? fieldData[(item.fieldSHow as any).saveField][0].type === item1.label ? false : true : false}>{item2?.label}</Checkbox></dd>)}
+                                            </dl>
+                                        })}
+                                    </div>
+                                </div>}
+                                <dt>
+                                    <Checkbox onChange={(e) => { checkAllHandle(e.target.checked, item.label) }} className={style.checkbox}>{item.label}</Checkbox>
+                                </dt>
+                                {item.data?.map((listItem: dataProps, listIndex: number) => {
+                                    return <dd key={item.label + listIndex}>
+                                        <Checkbox onChange={(e) => { selectHandle(e.target.checked, listItem) }} disabled={listItem.label === 'pos_type' || listItem?.disabled} checked={selectData.some((selectItem: { dataIndex: string }) => selectItem?.dataIndex === listItem?.dataIndex)} className={style.checkbox}>{listItem?.title}</Checkbox>
+                                    </dd>
+                                })}
+                            </dl>
+                        })}
+                    </Spin>
+                </div>
+            </div>
+            <div className={style.right} style={{ borderTopRightRadius: token.borderRadius, borderBottomRightRadius: token.borderRadius, overflow: 'hidden' }}>
+                <div className={style.rightTitle}>
+                    <div className={style.rightTitleLeft}>已选<span>{selectData?.filter(item => item)?.length}</span>项</div>
+                    <a onClick={defaultConfig} style={{ marginRight: 0 }}>恢复默认</a>
+                </div>
+                <div style={{ display: 'flex', flexFlow: 'row nowarp', padding: '0 25px 0 20px', justifyContent: 'space-between' }}>
+                    <div>左侧固定列数:<InputNumber size='small' style={{ width: 50 }} onChange={(value) => { changeFixed('left', value) }} value={fixed.left} max={100} min={0} /></div>
+                    <div>右侧固定列数:<InputNumber size='small' style={{ width: 50 }} onChange={(value) => { changeFixed('right', value) }} value={fixed.right} max={100} min={0} /></div>
+                </div>
+                <SortableList axis='y' onSortEnd={onSortEnd} useDragHandle>
+                    {selectData.map((item: dataProps, index: number) => <SortableItem key={'li' + index} index={index} item={item} del={() => { selectHandle(false, item) }} setConfig={setConfig} />)}
+                </SortableList>
+                <div className={style.rightOperate}>
+                    <div style={{ margin: '0 auto' }}>
+                        <Button onClick={cancel}>取消</Button>
+                        <Button type='primary' className={style.confirm} loading={false} onClick={() => { onSubmit() }} disabled={selectData?.length === 0}>确认</Button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </Modal>
+}
+
+export default CustomListModel

+ 43 - 0
src/components/DatePicker/index.tsx

@@ -0,0 +1,43 @@
+import React from 'react'
+import { DatePicker, Space } from 'antd';
+import moment from 'dayjs';
+let DatePickers:any = DatePicker
+const { RangePicker }:{RangePicker:any}= DatePickers;
+interface Props {
+    model: 'RangePicker' | 'DatePicker',
+    DatePickerChange: (moment: any, formatString: [string, string] | string) => void,
+    allowClear?: boolean,
+    className?: string,
+    showTime?: boolean,
+    scope?: { num: number, unit: 'day' | 'week' | 'month' | 'year' },//自定义时间跨度
+    date?: any,
+    before?: number,//截止日期以今天为底的前几天填数字
+    isDisabledDate?: boolean,//是否开启时间限制
+    placeholder?: any,
+    style?: { width: number | string }
+}
+
+function DatePickePage(props: Props) {
+    let { model, DatePickerChange, scope, before, isDisabledDate = true, allowClear = false, ...prop } = props
+    const disabledDate = (current: any) => {
+        let tppday = before ? current && current > moment(new Date()).subtract(before, 'day') : current && current > moment().endOf('day') //最晚日期
+        let isScope = false
+        if (scope) {
+            isScope = current && current < moment().subtract(scope?.num, scope?.unit)//可选日期
+        }
+        return tppday || isScope;
+    };
+    return <>
+        <Space direction="vertical" size={12}>
+            {
+                model === 'RangePicker' ?
+                    <RangePicker {...prop} onChange={(mo: any, str: any) => {
+                        DatePickerChange(mo, str)
+                    }} disabledDate={disabledDate} value={props?.date && props?.date?.every((s: string) => s !== '') ? [moment(props.date[0]), moment(props.date[1])] : undefined} allowClear={allowClear} /> :
+                    <DatePickers  onChange={DatePickerChange} {...prop} disabledDate={isDisabledDate ? disabledDate : undefined} allowClear={true} value={props.date ? moment(props.date) : undefined} />
+            }
+        </Space>
+    </>
+}
+export default DatePickePage
+

+ 38 - 0
src/components/Expression/index.less

@@ -0,0 +1,38 @@
+.expression {
+  width: 400px;
+  overflow: hidden;
+  display: flex;
+  position: relative;
+  padding-bottom: 10px;
+  .box {
+    width: 400px;
+    display: flex;
+    flex-flow: row wrap;
+    flex-shrink: 0;
+    transition: all .5s;
+    > span {
+      font-size: 20px;
+      padding: 5px;
+      cursor: pointer;
+    }
+  }
+  .bottom {
+    position: absolute;
+    bottom: 0px;
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+  .yd {
+    width: 10px;
+    height: 10px;
+    border-radius: 50%;
+    background-color: #efefef;
+    margin-right: 5px;
+    cursor: pointer;
+  }
+  .action{
+      background-color: yellowgreen;
+  }
+}

+ 79 - 0
src/components/Expression/index.tsx

@@ -0,0 +1,79 @@
+import { MehOutlined } from '@ant-design/icons'
+import { Popover } from 'antd'
+import style from './index.less'
+import React, { useCallback, useState } from 'react'
+const arr1 = [
+    "😄", "😊", "😃", "😉", "😍", "😘", "😚", "😳", "😁", "😌", "😜", "😝", "😒", "😏",
+    "😓", "😔", "😞", "😖", "😥", "😰", "😨", "😣", "😢", "😭", "😂", "😲", "😱", "😠",
+    "😡", "😪", "😷", "👿", "👽", "❤️", "💔", "💘", "✨", "🌟", "❕", "❔", "💤", "💦",
+    "🎵", "🔥", "💩", "👍", "👎", "👊", "✌️", "👆", "👇", "👉", "👈", "☝️"
+]
+const arr2 = [
+    "💪", "💏", "💑", "👦", "👧", "👩", "👨", "👼", "💀", "👄", "☀", "☔", "☁", "⛄",
+    "🌙", "⚡", "🌊", "🐱", "🐶", "🐭", "🐹", "🐰", "🐺", "🐸", "🐯", "🐨", "🐻", "🐷",
+    "🐮", "🐗", "🐵", "🐴", "🐍", "🐦", "🐔", "🐧", "🐛", "🐙", "🐠", "🐳", "🐬", "🌹",
+    "🌺", "🌴", "🌵", "💝", "🎃", "👻", "🎅", "🎄", "🎁", "🔔", "🎉", "🎈"
+]
+const arr3 = [
+    "💿", "📷", "🎥", "💻", "📺", "☎", "🔓", "🔒", "🔑", "🔨", "💡", "📫", "🛀", "💰",
+    "💣", "🔫", "💊", "🏈", "🏀", "⚽", "⚾", "⛳", "🏆", "👾", "🎤", "🎸", "👙", "👑",
+    "🌂", "👜", "💄", "💍", "💎", "☕", "🍺", "🍻", "🍸", "🍔", "🍟", "🍝", "🍣", "🍜",
+    "🍳", "🍦", "🎂", "🍎", "✈", "🚀", "🚲", "🚄", "⚠", "🏁", "🚹", "🚺"
+]
+const arr4 = ["⭕", "❌", "©", "®", "™"]
+type Props = {
+    getStr: (str: string, range: Range) => void//回调传回选中表情和最后光标位置
+    range: Range//文本光标节点
+}
+function Expression(props: Props) {
+    const [eq, setEq] = useState<number>(0)//当前页
+    const [left, setLeft] = useState<number>(0)//偏移
+    const [isShow, setIsShow] = useState<boolean>(false)//弹窗
+    //显示关闭弹窗
+    const exit = useCallback(() => {
+        setIsShow(!isShow)
+    }, [isShow])
+    //点击表情
+    const handelClick = useCallback((str: string) => {
+        props.getStr(str, props.range)
+        setIsShow(false)
+    }, [props.range])
+    //点击翻页
+    const handelAction = useCallback((eq: number) => {
+        setEq(eq)
+        setLeft(eq * 400)
+    }, [])
+    return <div>
+        <Popover
+            content={
+                <div className={style.expression} >
+                    {
+                        [arr1, arr2, arr3, arr4].map((item: string[], index: number) => {
+                            return <div key={index} className={style.box} style={{ transform: `translateX(-${left}px)` }} >
+                                {
+                                    item.map((em: string, index: number) => {
+                                        return <span key={index} onClick={() => handelClick(em)}>{em}</span>
+                                    })
+                                }
+                            </div>
+                        })
+                    }
+                    <div className={style.bottom}>
+                        {
+                            [0, 1, 2, 3].map((item) => {
+                                return <span className={`${style.yd} ${eq === item ? style.action : undefined}`} key={item} onClick={() => handelAction(item)} />
+                            })
+                        }
+                    </div>
+                </div>
+            }
+            trigger="click"
+            visible={isShow}
+            onVisibleChange={exit}
+        >
+            <MehOutlined onClick={exit} />
+        </Popover>
+    </div>
+}
+
+export default Expression

+ 16 - 0
src/components/HeaderDropdown/index.less

@@ -0,0 +1,16 @@
+// // @import '~antd/es/style/themes/default.less';
+
+// .container > * {
+//   // background-color: @popover-bg;
+//   border-radius: 4px;
+//   // box-shadow: @shadow-1-down;
+// }
+
+// @media screen and (max-width: @screen-xs) {
+//   .container {
+//     width: 100% !important;
+//   }
+//   .container > * {
+//     border-radius: 0 !important;
+//   }
+// }

+ 20 - 0
src/components/HeaderDropdown/index.tsx

@@ -0,0 +1,20 @@
+import { DropDownProps } from 'antd/es/dropdown';
+import { Dropdown } from 'antd';
+import React from 'react';
+import classNames from 'classnames';
+import styles from './index.less';
+
+declare type OverlayFunc = () => React.ReactNode;
+
+export interface HeaderDropdownProps extends Omit<DropDownProps, 'overlay'> {
+  overlayClassName?: string;
+  menu: React.ReactNode | OverlayFunc | any;
+  placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter';
+}
+
+const HeaderDropdown: React.FC<HeaderDropdownProps> = ({ overlayClassName: cls, ...restProps }) => (
+  <Dropdown overlayClassName={classNames(styles.container, cls)} {...restProps} />
+
+);
+
+export default HeaderDropdown;

+ 31 - 0
src/components/LazyImage/index.tsx

@@ -0,0 +1,31 @@
+import React, { useState, useEffect, useRef } from 'react';
+
+const LazyImage: React.FC<React.ImgHTMLAttributes<any>> = ({ src, ...props }) => {
+    const [imageSrc, setImageSrc] = useState<string>();
+    const [hasBeenLoaded, setHasBeenLoaded] = useState(false);
+    const imgRef = useRef(null);
+
+    useEffect(() => {
+        const observer = new IntersectionObserver((entries) => {
+            entries.forEach((entry) => {
+                if (entry.isIntersecting && !hasBeenLoaded) {
+                    setImageSrc(src);
+                    setHasBeenLoaded(true);
+                    observer.unobserve(imgRef.current as any);
+                }
+            });
+        });
+
+        observer.observe(imgRef.current as any);
+
+        return () => {
+            if (imgRef.current) {
+                observer.unobserve(imgRef.current);
+            }
+        };
+    }, [src, hasBeenLoaded]);
+
+    return <img {...props} ref={imgRef} src={imageSrc || require('../../public/avatar.png')} />;
+};
+
+export default React.memo(LazyImage);

+ 21 - 0
src/components/MD5/index.tsx

@@ -0,0 +1,21 @@
+import SparkMD5 from 'spark-md5'
+
+function getMD5(file: File):Promise<string> {
+    return new Promise(rl => {
+        let spark = new SparkMD5();
+        let fileReader = new FileReader();
+        // if (file.size > 1024 * 1024 * 10) {
+        //     var data1 = file.slice(0, 1024 * 1024 * 10); //将文件进行分块 file.slice(start,length)
+        //     fileReader.readAsBinaryString(data1); //将文件读取为二进制码
+        // } else {
+        fileReader.readAsBinaryString(file);
+        // }
+        fileReader.onload = function (e: any) {
+            spark.appendBinary(e.target.result);
+            let md5 = spark.end()
+            rl(md5)
+            // _this.getMd5Checked(md5)
+        }
+    })
+}
+export default getMD5

+ 444 - 0
src/components/MaterialModal/qwTextModal.tsx

@@ -0,0 +1,444 @@
+import { Button, Input, App, Modal, Popover, Radio, Space } from 'antd'
+import React, { useCallback, useEffect, useRef, useState } from 'react'
+import Expression from '@/components/Expression'
+import styles from './text.less'
+import sanitizeHtml from 'sanitize-html';
+import { RadioChangeEvent } from 'antd/lib/radio';
+type Props = {
+    visible: boolean,
+    onCancel: () => void,
+    onOK: (props: any, type?: number) => void
+    defaultData?: any,
+    hdLink?: boolean,
+    fansName?: boolean,
+}
+const sanitizeConf: sanitizeHtml.IOptions = {
+    allowedTags: ['br', 'a'],
+    allowedAttributes: { a: ["href", "_href", "data-miniprogram-appid", "data-miniprogram-path"] },
+    allowedSchemes: ['http', 'https', 'weixin']
+};
+/**文本弹窗 */
+const WxTextModal = React.memo((props: Props) => {
+    const { message } = App.useApp()
+    const { visible, onCancel, onOK, fansName = true, hdLink = true } = props
+    const [value, setValue] = useState<string>('')//存放连接文字
+    const [content, setContent] = useState<string>('')//存放发送文字
+    const [isShow, setIsShow] = useState<boolean>(false)//互动弹窗
+    const [range, setRange] = useState<Range>()//丢失焦点存放焦点位置
+    const [ref, setRef] = useState<any>(null)//存放编辑框的实例
+    const [aLink, setAlink] = useState<string>('')//存放页面链接
+    const [appID, setAppID] = useState<string>('')//存放小程序APPID
+    const [path, setPath] = useState<string>('')//存放小程序路径
+    const [userId, setUserId] = useState<any>(2)//小程序路径插入userID
+    const [textData, setTextData] = useState<any>({ range: null, left: -100, top: -100, text: '' })
+    const [isLink, setIsLink] = useState<boolean>(false)
+    const [isWxLink, setIsWxLink] = useState<boolean>(false)
+    const [isHtml, setIsHtml] = useState<boolean>(false)
+    const text = useRef('');
+    const [phoneType, setPhoneType] = useState<1 | 2 | 3 | 4>(3)
+    /**
+     * 发送处理
+     */
+    const callback = useCallback(() => {
+        if (ref.innerHTML) {
+            console.log(ref.innerHTML)
+            let textContent: any = sanitizeHtml(ref.innerHTML, sanitizeConf);
+            console.log('textContent====>', textContent)
+            textContent = textContent.replace(/&quot;/ig, '"')
+                .replace(/&amp;/ig, '&')
+                .replace(/&lt;/ig, '<')
+                .replace(/&gt;/ig, '>')
+                .replace(/<\s+/g, '<')
+                // .replace(/[\f\n\r\t\v]/g, '<br/>')//将回车变成br
+                .replace(/\&nbsp;(<br>)?/g, '')
+                .replace(/<[/]?myspan[^>]*>/ig, '#')
+                .replace(/#<br>/g, '#')
+                .replace(/<([a-z]+?)(?:\s+?[^>]*?)?>[\s(<br>)]*?<\/\1>/ig, '<br/>')//替换所有空标签或空标签带<br>的标签为<br>
+                .replace(/(\b<div>(<br>)?)|((<br>)?<div>)/ig, '<br/>')//<div>or<br><div>or<div><br>转br
+                .replace(/<\/div>/ig, '')//</div>转‘’
+                .replace(/_href="\s+/ig, '_href="')//清除href头部空格
+                .replace(/href=weixin/ig, 'href="weixin')
+                .replace(/msgmenuid="/ig, 'msgmenuid= "')
+                .replace(/"=""/ig, '')
+                // .replace(/\s+"/ig, '"')//清除href尾部空格
+                .split('<br/>')
+            onOK({
+                textContent: textContent, indexId: props.defaultData?.indexId //textContent.filter((str)=> str!=='') 注释保留空格和换行
+            }, 4)
+        } else {
+            alert('元素获取失败请复制内容刷新页面')
+            message.error('请输入文字')
+        }
+        handleClose()
+    }, [ref])
+    /**
+     * 互动连接文字
+     */
+    const textChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {
+        let v = e.target.value
+        setValue(v)
+    }, [])
+    /**
+     * 互动发送文本
+     */
+    const contentChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
+        let v = e.target.value
+        setContent(v)
+    }, [])
+    /**
+    * 网页小程序连接地址
+    */
+    const aLinkChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
+        let v = e.target.value
+        setAlink(v)
+    }, [])
+    /**
+    * 小程序路径
+    */
+    const pathChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
+        let v = e.target.value
+        setPath(v)
+    }, [])
+    /**
+    * 小程序ID
+    */
+    const appIDChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
+        let v = e.target.value
+        setAppID(v)
+    }, [])
+    /**
+     * 插入表情
+     */
+    const getStr = useCallback((str: string, range: Range) => {
+        if (range) {
+            let selection = window.getSelection()
+            selection?.empty()//清空选择range
+            selection?.addRange(range)//插入新的range
+            document.execCommand('insertHtml', false, str + '&nbsp;');
+        }
+    }, [])
+    /**
+     * 光标丢失记录位置
+     */
+    const onBlur = useCallback(() => {
+        try {
+            let selection = window.getSelection()
+            let range = selection?.getRangeAt(0)
+            setRange(range)
+        } catch (err) {
+        }
+    }, [text])
+    /**
+     * 插入粉丝昵称
+     */
+    const pushName = useCallback(() => {
+        let selection = window.getSelection()
+        selection?.empty()//清空选择range
+        selection?.addRange(range as Range)//插入新的range
+        document.execCommand('insertHtml', false, `#粉丝昵称#`);
+        selection?.collapseToEnd()//光标插入到末尾
+    }, [range])
+    /**
+     * 插入互动链
+     */
+    const pushLink = useCallback(() => {
+        if (!value || !content) {
+            setIsShow(false)
+            return
+        }
+        let selection = window.getSelection()
+        selection?.empty()//清空选择range
+        selection?.addRange(range as Range)//插入新的range
+        if (phoneType === 4) {
+            document.execCommand('insertHtml', false, `<a href="a href=weixin://bizmsgmenu?msgmenucontent=${content}&msgmenuid=+++">${value}</a>`);
+        } else {
+            document.execCommand('insertHtml', false, `<a href='weixin://${phoneType === 1 ? 'kefumenu' : 'bizmsgmenu'}?${phoneType === 1 ? `kefumenucontent=${content}` : `msgmenucontent=${content}`}&${phoneType === 1 ? 'kefumenuid=0' : phoneType === 2 ? `msgmenuid= ` : 'msgmenuid=0'}' >${value}</a>`);
+        }
+        selection?.collapseToEnd()//光标插入到末尾
+        setValue('')
+        setContent('')
+        setIsShow(false)
+    }, [range, value, content, phoneType])
+    /**
+     * 初始光标选中
+     */
+    useEffect(() => {
+        console.log('ref')
+        if (ref) {
+            ref?.focus()
+        }
+    }, [ref])
+    //复制只取纯文本
+    function textPaste(event: any) {
+        event.preventDefault();
+        let text;
+        let clp = (event.originalEvent || event).clipboardData;
+        // 兼容chorme或hotfire
+        text = (clp.getData('text/plain') || clp.getData('text'))
+            .replace(/&quot;/ig, '"')
+            .replace(/&amp;/ig, '&')
+            .replace(/&lt;/ig, '<')
+            .replace(/&gt;/ig, '>')
+            .replace(/<\s+/g, '<')
+            .replace(/href="weixin/ig, 'href=weixin')
+        text = sanitizeHtml(text, sanitizeConf) || "";
+        if (text !== "") {
+            document.execCommand('insertHtml', false, text);
+        }
+    }
+    /**
+     * 编辑默认内容写入
+     */
+    useEffect(() => {
+        console.log('编辑默认内容写入', props?.defaultData?.textContent)
+        if (props?.defaultData?.textContent && ref) {
+            let text = '';
+            if (Array.isArray(props?.defaultData?.textContent)) {
+                props?.defaultData?.textContent?.map((key: any, index: number) => {
+                    key = key.replace(/href="weixin/ig, 'href=weixin')
+                    if (key.indexOf('&lt;') !== -1) {//假如存在就是原文
+                        setIsHtml(true)
+                    }
+                    text += index !== props?.defaultData?.textContent?.length - 1 ? `${key}<br/>` : key
+                })
+            } else {
+                text = `${props?.defaultData?.textContent}`
+            }
+            document.execCommand('insertHtml', true, text);
+        }
+    }, [ref])
+    /**切换文本原文 */
+    const onHtml = useCallback(() => {
+        let str: string = ref.innerHTML
+        str = str.replace(/&quot;/ig, '"').replace(/&amp;/ig, '&').replace(/&lt;/ig, '<').replace(/&gt;/ig, '>').replace(/<\s+/g, '<').replace(/""/ig, '"').replace(/"="/ig, '')
+        if (isHtml) {
+            console.log('str1', str)
+            setIsHtml(false)
+            ref.innerHTML = ''
+            ref.innerHTML = str
+
+        } else {
+            console.log('str2', str)
+            setIsHtml(true)
+            ref.innerHTML = ''
+            ref.innerText = str.replace(/<br[\/]?>/ig, '\n').replace(/&nbsp;/ig, ' ')
+        }
+    }, [ref, text, isHtml])
+    //文本选中
+    let handleSelectText = useCallback((event: React.SyntheticEvent<HTMLPreElement, Event>) => {
+        let selection = window.getSelection ? window.getSelection() : (document.getSelection ? document.getSelection() : ((document as any)?.selection ? (document as any)?.selection.createRange().text : ""))
+        let text = selection.toString() || selection.text
+        if (text) {//存在文本弹窗
+            let range = selection?.getRangeAt(0)
+            let { top, left } = range?.getBoundingClientRect()
+            setTextData({ range, top, left, text })
+        } else {
+            handleClose()//关闭弹窗
+        }
+    }, [])
+    //点击设置连接转换输入,清空连接处理
+    let handleLink = useCallback((type: number) => {
+        console.log('点击设置连接转换输入,清空连接处理')
+        switch (type) {
+            case 1:
+                setIsLink(true)
+                break;
+            case 2:
+                setIsWxLink(true)
+                break;
+            default:
+                let selection = window.getSelection()
+                selection?.empty()//清空选择range
+                selection?.addRange(textData?.range)//插入新的range
+                document.execCommand('unlink')//清除连接
+                selection?.collapseToEnd()//光标插入到末尾
+                handleClose()//关闭弹窗
+                break
+        }
+    }, [textData])
+    //清空数据并关闭弹窗
+    let handleClose = useCallback(() => {
+        console.log('清空数据并关闭弹窗')
+        setTextData({ range: null, left: -100, top: -100, text: '' })
+        setIsWxLink(false)
+        setIsLink(false)
+        setAppID('')
+        setAlink('')
+        setPath('')
+    }, [])
+    //ok插入连接数据
+    let handleOk = useCallback(() => {
+        let selection = window.getSelection()
+        selection?.empty()//清空选择range
+        selection?.addRange(textData?.range)//插入新的range
+        if (isWxLink) {
+            if (aLink && appID && path) {
+                let Apath = path
+                if (userId) {
+                    if (userId === 1 && path && !path.includes('#USER_ID#')) {
+                        Apath = Apath + '#USER_ID#'
+                    } else if (userId === 2 && path && !path.includes('#QC_USER_ID#')) {
+                        Apath = Apath + '#QC_USER_ID#'
+                    }
+                }
+                document.execCommand('insertHTML', true, `<a href='${aLink}' data-miniprogram-appid='${appID}' data-miniprogram-path='${Apath}' >${textData?.text}</a>`);//插入连接
+                selection?.collapseToEnd()
+                handleClose()
+            } else {
+                message.error('请填写完整')
+            }
+        } else {
+            if (aLink && aLink.search(/http[s]?:\/\//ig) !== -1) {//
+                document.execCommand('createLink', false, aLink);//插入连接
+                selection?.collapseToEnd()
+                handleClose()
+            } else {
+                message.error('请填入正确的连接')
+            }
+        }
+    }, [textData, aLink, appID, path, isWxLink, range, userId])
+    //处理选中的文本
+    return <Modal
+        title='编辑文字内容'
+        open={visible}
+        width={1100}
+        onCancel={() => {
+            handleClose()
+            text.current = ''
+            onCancel()
+        }}
+        onOk={callback}
+        destroyOnClose
+    >
+        <div className={styles.box}>
+            <div className={styles.header}>
+                <Space>
+                    <Expression getStr={getStr} range={range as Range} />
+                    {
+                        // fansName && <Button size='small' onClick={pushName}>粉丝昵称</Button>
+                    }
+                    {
+                        hdLink && <Popover
+                            placement="right"
+                            title={'新建互动链'}
+                            visible={isShow}
+                            onVisibleChange={(visible) => { setIsShow(visible) }}
+                            content={<div className={styles.popover}>
+                                <div>
+                                    <label>连接文字:</label>
+                                    <Input.TextArea rows={2} placeholder='互动链显示的文字' onChange={textChange} value={value} />
+                                </div>
+                                <div>
+                                    <label>点击发送:</label>
+                                    <Input placeholder='粉丝点击互动链后,自动向公众号发送的消息' onChange={contentChange} value={content} />
+                                </div>
+                                <div>
+                                    <label>系&nbsp;&nbsp;统:</label>
+                                    <Radio.Group
+                                        onChange={(e: RadioChangeEvent) => {
+                                            setPhoneType(e.target.value)
+                                        }}
+                                        value={phoneType}
+                                    >
+                                        <Radio value={3}>安卓</Radio>
+                                        {/* <Radio value={1}>安卓1</Radio>
+                                        <Radio value={4}>安卓2</Radio>
+                                        <Radio value={2}>苹果</Radio> */}
+
+                                    </Radio.Group>
+                                </div>
+                                <div>
+                                    <label>提&nbsp;&nbsp;示:</label>
+                                    {
+                                        phoneType === 1 ?
+                                            <strong style={{ color: 'red' }}>
+                                                8.0.9——8.0.11(最新版本),共3个版本均可激活48小时互动!<br />
+                                                8.0.7及以下版本,点击新蓝链会跳转空页面,无法激活!<br />
+                                                iOS用户点击新蓝链,系统无法模拟用户回复消息!!!
+                                            </strong>
+                                            :
+                                            phoneType === 3 ?
+                                                <strong>
+                                                    原来的篮字方式无法激活48小时互动但所有机型通用
+                                                </strong>
+                                                : phoneType === 4 ? <strong>
+                                                    安卓用户可以看到,ios看不到
+                                                </strong> : <strong>
+                                                    只对IOS有效
+                                                </strong>
+                                    }
+                                </div>
+                                <Button onClick={pushLink} type='primary'>确定</Button>
+                            </div>}
+                            trigger="click"
+                        >
+                            <Button size='small' >互动链</Button>
+                        </Popover>
+                    }
+                    <Button size='small' onClick={onHtml}>文本转译</Button>
+                </Space>
+            </div>
+            <pre
+                className={styles.editable} //样式
+                onBlur={onBlur}//焦点丢失
+                contentEditable="true"
+                dangerouslySetInnerHTML={{ __html: text.current }}
+                onSelect={handleSelectText}//选中事件
+                ref={(ref: any) => { setRef(ref) }}
+                onKeyDown={(e: React.KeyboardEvent<HTMLPreElement>) => {
+                    if (e.key === 'Enter') {
+                        document.execCommand('insertHTML', false, '\n')
+                        e.preventDefault()
+                    }
+                }}
+                onKeyUp={(e: React.KeyboardEvent<HTMLPreElement>) => {
+                    if (e.key === 'Enter') {
+                        e.preventDefault()
+                    }
+                }}
+                onPaste={textPaste}
+            />
+        </div>
+        <div
+            className={styles.fixed_pop}
+            style={{ left: textData?.left, top: textData?.top + 30, display: textData.left > 0 ? 'flex' : '' }}
+        >
+            <>
+                {isLink && <div className={styles.fixed_pop_link}>
+                    <Input placeholder='输入链接,以http://或https://开头' onChange={aLinkChange} />
+                    <a onClick={handleOk}>✓</a>
+                    <a onClick={handleClose}>×</a>
+                </div>}
+                {
+                    isWxLink && <div className={styles.fixed_pop_wx}>
+                        <span>
+                            <Input placeholder='填写小程序AppID,跳转小程序需与当前公众号绑定关联关系' onChange={appIDChange} />
+                            <Input placeholder='填写小程序路径,例如:pages/index' onChange={pathChange} />
+                            <Input placeholder='备用网页,以http://或https://开头' onChange={aLinkChange} />
+                            <div className={styles.fixed_pop_wx_radio}>
+                                <span>路径插入用户:</span>
+                                <Radio.Group onChange={(e: any) => { setUserId(Number(e.target.value)) }} value={userId} >
+                                    <Radio value={1}>普通用户</Radio>
+                                    <Radio value={2}>趣程用户</Radio>
+                                    <Radio value={0}>否</Radio>
+                                </Radio.Group>
+                            </div>
+                        </span>
+                        <span>
+                            <a onClick={handleOk}>✓</a>
+                            <a onClick={handleClose}>×</a>
+                        </span>
+                    </div>
+
+                }
+                {!isLink && !isWxLink && <>
+                    <span onClick={() => { handleLink(1) }}>设置连接</span>
+                    <span onClick={() => { handleLink(2) }}>设置小程序</span>
+                    <span onClick={() => { handleLink(3) }}>清空连接</span>
+                </>
+                }
+            </>
+        </div>
+    </Modal >
+})
+export default WxTextModal

+ 334 - 0
src/components/MaterialModal/text.less

@@ -0,0 +1,334 @@
+.header {
+  padding: 10px;
+  background-color: #f8f8f8;
+  border-bottom: 1px solid #eee;
+}
+.box {
+  border: 1px solid #eee;
+}
+.editor {
+  height: 150px;
+  overflow-y: scroll;
+  padding: 10px;
+  div {
+    height: 20px;
+  }
+}
+.nickName {
+  color: #f50;
+  border: 1px solid #f50;
+  border-radius: 2px;
+  margin-right: 3px;
+  padding: 1px 5px;
+  font-size: 12px;
+  display: inline-block;
+}
+.popover {
+  width: 500px;
+  > div {
+    display: flex;
+    align-items: center;
+    margin-bottom: 15px;
+    > label {
+      width: 70px;
+      flex-shrink: 0;
+    }
+    .group {
+      margin-bottom: 5px;
+    }
+    input {
+      margin-bottom: 5px;
+    }
+  }
+}
+[contenteditable]:focus {
+  outline: none;
+}
+i {
+  font-style: normal;
+}
+
+.left {
+  width: 100%;
+  box-sizing: border-box;
+  > p {
+    display: flex;
+    justify-content: left;
+    align-items: center;
+    padding: 10px;
+    border-bottom: 1px solid #efefef;
+    font-weight: 500;
+  }
+  .left_ul {
+    // height: calc(100vh - 150px);
+    height: 100%;
+    overflow-y: hidden;
+    > ul {
+      display: flex;
+      flex-flow: column;
+      padding: 10px;
+      overflow-y: hidden;
+      li {
+        position: relative;
+        border: 1px solid #efefef;
+        border-bottom: 0;
+        > p {
+          display: flex;
+          padding: 15px;
+          flex-flow: row;
+          justify-content: space-between;
+          margin-bottom: 0;
+          img {
+            width: 60px;
+            height: 60px;
+            border-radius: 3px;
+            object-fit: cover;
+          }
+        }
+        > div {
+          opacity: 0;
+          display: flex;
+          justify-content: space-between;
+          padding: 0 10px;
+          align-items: center;
+          color: #fff;
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          width: 100%;
+          z-index: 99;
+          height: 30px;
+          background: rgba(0, 0, 0, 0.6);
+          > span {
+            cursor: pointer;
+            > span {
+              margin-right: 10px;
+            }
+          }
+        }
+      }
+      li.last {
+        border-bottom: 1px solid #efefef;
+        > div {
+          > span {
+            > span {
+              &:nth-child(2) {
+                display: none;
+              }
+            }
+          }
+        }
+      }
+      li.first {
+        border: 0;
+        > span {
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          right: 0;
+          height: 30px;
+          background: rgba(0, 0, 0, 0.6);
+          color: #fff;
+          line-height: 30px;
+          padding-left: 10px;
+        }
+        > div {
+          > span {
+            > span {
+              &:nth-child(1) {
+                display: none;
+              }
+            }
+          }
+        }
+        > p {
+          position: relative;
+          width: 100%;
+          height: 0px;
+          padding-top: 40%;
+          border-radius: 2px;
+          margin-bottom: 0;
+          img {
+            position: absolute;
+            left: 0px;
+            top: 0px;
+            width: 100%;
+            height: 100%;
+            object-fit: cover;
+          }
+        }
+      }
+      li:hover {
+        > div {
+          opacity: 1;
+        }
+      }
+      li.action {
+        border: 1px solid rgb(59, 116, 255);
+      }
+    }
+    > span {
+      height: 50px;
+      border: 1px dashed #bbbbbb;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      margin: 0 10px;
+    }
+    > span:hover {
+      border-color: rgb(59, 116, 255);
+      color: rgb(59, 116, 255);
+    }
+  }
+  .msgLeftD {
+    padding: 0 5px;
+    margin-top: 5px;
+    box-sizing: border-box;
+    > div {
+      border: 1px solid #d3d3d3;
+      padding: 5px;
+      box-sizing: border-box;
+      margin-bottom: 8px;
+      > h3 {
+        line-height: 1.5;
+        font-size: 16px;
+        padding: 0 6px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-line-clamp: 1;
+        -webkit-box-orient: vertical;
+        box-sizing: border-box;
+      }
+      > div {
+        display: flex;
+        justify-content: 'flex-start';
+        > p {
+          flex: 1;
+          font-size: 12px;
+          color: #999;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          display: -webkit-box;
+          -webkit-line-clamp: 3;
+          -webkit-box-orient: vertical;
+          padding-right: 5px;
+        }
+        > img {
+          width: 50px;
+          height: 50px;
+          object-fit: cover;
+        }
+      }
+    }
+    > .select {
+      position: relative;
+      border: 1px solid #4abe84;
+      border-radius: 5px;
+      &::after {
+        content: '';
+        width: 5px;
+        height: 12px;
+        position: absolute;
+        right: 6px;
+        bottom: 6px;
+        border: 2px solid #fff;
+        border-top-color: transparent;
+        border-left-color: transparent;
+        transform: rotate(45deg);
+        z-index: 9;
+      }
+      &::before {
+        content: '';
+        position: absolute;
+        right: 0;
+        bottom: 0;
+        border: 17px solid #4abe84;
+        border-top-color: transparent;
+        border-left-color: transparent;
+        z-index: 9;
+      }
+    }
+  }
+}
+.fixed_pop {
+  position: fixed;
+  display: none;
+  min-width: 250px;
+  min-height: 50px;
+  background-color: rgba(0, 0, 0, 0.9);
+  color: #fff;
+  border-radius: 5px;
+  justify-content: space-evenly;
+  align-items: center;
+  transform: translateX(-50%);
+  .fixed_pop_link {
+    display: flex;
+    justify-content: space-between;
+    width: 400px;
+  }
+  .fixed_pop_wx {
+    display: flex;
+    justify-content: space-between;
+    width: 500px;
+    > span {
+      &:first-child {
+        margin: 10px 0;
+      }
+      &:last-child {
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+  input {
+    background-color: transparent;
+    outline: none !important;
+    border: none !important;
+    caret-color: #fff;
+    color: #fff;
+  }
+  a {
+    display: inline-block;
+    font-size: 24px;
+    font-weight: bolder;
+    margin: 0 10px;
+    text-decoration: none;
+    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  }
+  input:focus {
+    border: none !important;
+    box-shadow: none;
+  }
+  > span {
+    cursor: pointer;
+  }
+  &::after {
+    content: '';
+    width: 10px;
+    height: 10px;
+    background-color: rgba(0, 0, 0, 0.9);
+    position: absolute;
+    left: 50%;
+    transform: translateX(-50%);
+    top: -5px;
+    transform: rotate(45deg);
+  }
+}
+.editable {
+  font-family: sans-serif;
+  width: 100%;
+  min-height: 100px;
+  padding: 5px;
+  resize: none;
+}
+
+textarea.editable {
+  font-family: monospace, monospace;
+}
+.fixed_pop_wx_radio {
+  padding-left: 10px;
+  span {
+    color: #fff;
+  }
+}

+ 158 - 0
src/components/TablePro/color.less

@@ -0,0 +1,158 @@
+.color0,
+.color0 > td {
+  background-color: #e1f5fe;
+  color: #000;
+}
+.color0,.color1,.color2,.color3,.color4,.color5,.color6,.color7,.color8,.color9,.color10,.color11,.color12,.color13,.color14,.color15,.color16,.color17,.color18,.color19,.color20,
+.color21,.color22,.color23,.color24,.color25,.color26,.color27,.color28,.color29,.color30 {
+  &:hover{
+    >td {
+      color: #fff;
+    }
+  }
+}
+.color1,
+.color1 > td {
+  background-color: #e8eaf6;
+  color: #000;
+}
+.color2,
+.color2 > td {
+  background-color: #f3e5f5;
+  color: #000;
+}
+.color3,
+.color3 > td {
+  background-color: #fff3e0;
+  color: #000;
+}
+.color4,
+.color4 > td {
+  background-color: #fce4ec;
+  color: #000;
+}
+.color5,
+.color5 > td {
+  background-color: #ffebee;
+  color: #000;
+}
+.color6,
+.color6 > td {
+  background-color: #fffde7;
+  color: #000;
+}
+.color7,
+.color7 > td {
+  background-color: #efebe9;
+  color: #000;
+}
+.color8,
+.color8 > td {
+  background-color: #f0f4c3;
+  color: #000;
+}
+.color9,
+.color9 > td {
+  background-color: #e8f5e9;
+  color: #000;
+}
+.color10,
+.color10 > td {
+  background-color: #e0f2f1;
+  color: #000;
+}
+.color11,
+.color11 > td {
+  background-color: #cfd8dc;
+  color: #000;
+}
+.color12,
+.color12 > td {
+  background-color: #d7ccc8;
+  color: #000;
+}
+.color13,
+.color13 > td {
+  background-color: #ffccbc;
+  color: #000;
+}
+.color14,
+.color14 > td {
+  background-color: #ffecb3;
+  color: #000;
+}
+.color15,
+.color15 > td {
+  background-color: #f0f4c3;
+  color: #000;
+}
+.color16,
+.color16 > td {
+  background-color: #dcedc8;
+  color: #000;
+}
+.color17,
+.color17 > td {
+  background-color: #c8e6c9;
+  color: #000;
+}
+.color18,
+.color18 > td {
+  background-color: #b2dfdb;
+  color: #000;
+}
+.color19,
+.color19 > td {
+  background-color: #b2ebf2;
+  color: #000;
+}
+.color21,
+.color21 > td {
+  background-color: #b3e5fc;
+  color: #000;
+}
+.color22,
+.color22 > td {
+  background-color: #bbdefb;
+  color: #000;
+}
+.color23,
+.color23 > td {
+  background-color: #c5cae9;
+  color: #000;
+}
+.color24,
+.color24 > td {
+  background-color: #d1c4e9;
+  color: #000;
+}
+.color25,
+.color25 > td {
+  background-color: #e1bee7;
+  color: #000;
+}
+.color26,
+.color26 > td {
+  background-color: #f8bbd0;
+  color: #000;
+}
+.color27,
+.color27 > td {
+  background-color: #ffcdd2;
+  color: #000;
+}
+.color28,
+.color28 > td {
+  background-color: #a5d6a7;
+  color: #000;
+}
+.color29,
+.color29 > td {
+  background-color: #ffcc80;
+  color: #000;
+}
+.color20,
+.color20 > td {
+  background-color: #80deea;
+  color: #000;
+}

+ 19 - 0
src/components/TablePro/global.less

@@ -0,0 +1,19 @@
+.header_table_body td {
+    font-weight: 600;
+}
+
+.components-table-resizable-column .react-resizable {
+    position: relative;
+    background-clip: padding-box;
+}
+
+.components-table-resizable-column .react-resizable-handle {
+    position: absolute;
+    width: 10px;
+    height: 100%;
+    bottom: 0;
+    right: -9px;
+    cursor: col-resize;
+    z-index: 1;
+    border-left: white 1px solid;
+}

+ 104 - 0
src/components/TablePro/index.less

@@ -0,0 +1,104 @@
+@import './color.less';
+
+.title {
+    text-align: center;
+    font-weight: bold;
+    padding: 4px 6px 6px;
+    font-size: 16px;
+    margin-bottom: 4px;
+    position: relative;
+}
+
+.cell {
+    text-align: center;
+    background-color: #fafafa;
+    color: rgb(212, 46, 46);
+}
+
+.middle {
+
+    tr,
+    td {
+        font-size: 14px !important;
+    }
+}
+
+.small {
+
+    tr,
+    td {
+        font-size: 13px !important;
+    }
+}
+
+.ranking {
+
+    tr,
+    td {
+        font-size: 14px !important;
+
+        span {
+            font-size: 14px;
+        }
+    }
+
+}
+
+.large {
+
+    tr,
+    td {
+        font-size: 14px !important;
+    }
+}
+
+.item_img {
+    width: 25px;
+    border-radius: 2px;
+    margin-right: 5px;
+    background-color: #efefef;
+}
+
+.blue {
+    background-color: cornflowerblue;
+}
+
+.cardtitle {
+    position: relative;
+    width: 100%;
+    height: 100%;
+
+    .text {
+        width: 100%;
+        height: 100%;
+        text-align: center;
+    }
+
+    .cardTab {
+        position: absolute;
+        width: 400px;
+        height: 100%;
+        top: 0;
+        left: 0;
+    }
+}
+
+
+.unfollow {
+    background-color: #fafafa;
+}
+
+.ant-table-row.expanded>.ant-table-cell {
+    padding: 5px 16px !important;
+}
+
+.ant-table-row.error {
+    background-color: #ffe9e9;
+}
+
+.ellipsisText {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    display: block;
+}

+ 252 - 0
src/components/TablePro/index.tsx

@@ -0,0 +1,252 @@
+import { QuestionCircleOutlined } from "@ant-design/icons";
+import { useDebounceFn, useFullscreen, useLocalStorageState, useMount, useSetState } from "ahooks";
+import { Card, Col, Row, Space, Tooltip } from "antd";
+import React, { useCallback, useEffect, useRef, useState } from "react"
+import style from './index.less'
+import Settings from "./settings";
+import CustomListModel from "@/components/CustomList";
+import NewTable from "./newTable";
+import './global.less'
+
+const log = (text?: any, key?: string) => {
+    console.log(`pro_${key || ''}----->`, text)
+}
+export const DispatchContext = React.createContext<PROAPI.TableContentProps | null>(null);
+export const DispatchHeader = React.createContext<PROAPI.HeaderContentProps | null>(null);
+export const version = '1.0.0'
+
+/**
+ * 升级版表格
+ * @returns 
+ */
+const TablePro: React.FC<PROAPI.TableProProps> = ({
+    configName,
+    config,
+    fixed = { left: 0, right: 0 },
+    title,
+    tips,
+    ajax,
+    czChild,
+    leftChild,
+    size = 'small',
+    className,
+    total,
+    page,
+    pageSize,
+    scroll,
+    dataSource,
+    isZj,
+    totalData = [],
+    summary,
+    showSearch,
+    classScrollName,
+    ...props
+}) => {
+
+    /*********************************************/
+    const ran = Math.ceil(Math.random() * 100)
+    const [lsDataSource, setLsDataSource] = useLocalStorageState<PROAPI.ColumnsTypePro<any>>(`myAdMonitorConfig${version}_` + configName);
+    const [lsFixed] = useLocalStorageState<{ left: number, right: number }>(`myAdMonitorConfigFixed${version}_` + configName);
+    const [state, setState] = useSetState<PROAPI.State>({
+        // 所有配置用key转Object
+        configObj: {},
+        columns: [],
+        // 默认配置
+        defaultColumns: []
+    });
+    const ref = useRef(null)
+    const [isFull, { toggleFull }] = useFullscreen(ref);
+    const [isFullscreen, setIsFullscreen] = useState<boolean>(true);
+    const [visible, setVisible] = useState<boolean>(false)
+    // const { configObj, columns, defaultColumns } = state
+    /*********************************************/
+    console.log("config===>", config)
+    // 首次渲染
+    useMount(() => {
+        log('----mount-----')
+        handleConfig()
+    });
+
+    /**
+     * 处理config成对象 减少后期轮询
+     * 拿到默认Columns
+     */
+    const handleConfig = () => {
+        // log(config)
+        let newColumns: PROAPI.ColumnsTypePro<any> = []
+        let newConfigObj: { [key: string]: PROAPI.ColumnTypePro<any>; } = {}
+        config?.forEach((item: { data: { default: any; dataIndex: string }[] }) => {
+            item?.data?.forEach((d: { default: any, dataIndex: string }) => {
+                newConfigObj[d.dataIndex] = { ...d }
+                if (d.default) {
+                    newColumns[d.default - 1] = d
+                }
+            })
+        })
+        setState({ defaultColumns: newColumns, configObj: newConfigObj })
+        handleColumns(newColumns, newConfigObj, lsDataSource, lsFixed)
+    }
+
+    // 处理columns
+    const handleColumns = (defaultColumns: PROAPI.ColumnsTypePro<any>, configObj: { [key: string]: PROAPI.ColumnTypePro<any>; }, lsDataSource?: PROAPI.ColumnsTypePro<any>, lsFixed?: { left: number, right: number }) => {
+        // log(defaultColumns, 'defaultColumns')
+        // log(configObj, 'configObj')
+        // log(lsDataSource, 'lsDataSource')
+
+        // 使用默认配置
+        let newColumns: PROAPI.ColumnsTypePro<any> = defaultColumns
+        let newFixed: { left: number, right: number } = fixed
+        if (lsFixed) {
+            newFixed = lsFixed
+        }
+        if (lsDataSource) { // 找到了设置的配置
+            newColumns = lsDataSource
+                .filter((item: { dataIndex: string | number; }) => !!item && configObj[item.dataIndex])
+                .map((item: { dataIndex: string | number; width: number }) => {
+                    let column = { ...configObj[item.dataIndex] }
+                    column['width'] = item.width
+                    return column
+                })
+        }
+        // log(newFixed, 'newFixed')
+        newColumns = newColumns.map(item => {
+            if (item?.tips && typeof item.title === 'string') {
+                let column: any = configObj[item.dataIndex]
+                item.title = <Space size={2}>
+                    {column.title}
+                    <Tooltip title={column?.tips} placement='bottom'>
+                        <QuestionCircleOutlined />
+                    </Tooltip>
+                </Space>
+            }
+            return { ...item, key: item.dataIndex }
+        })
+        if (newFixed.left || newFixed.right) {
+            for (let i = 0; i < Math.min(newFixed.left, newColumns.length); i++) {
+                newColumns[i] = { ...newColumns[i], fixed: 'left' };
+            }
+            const arrayLength = newColumns.length;
+            for (let i = Math.max(0, arrayLength - newFixed.right); i < arrayLength; i++) {
+                newColumns[i] = { ...newColumns[i], fixed: 'right' };
+            }
+        }
+        // log(newColumns, 'newColumns')
+        setState({ columns: newColumns })
+    }
+
+
+    useEffect(() => {
+        const contentBodyScroll = (e: any) => {
+            let el = document.querySelector(`.header_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} .ant-table-body`);
+            if (el) {
+                el.scrollLeft = e.target.scrollLeft
+            }
+        }
+        const headerBodyScroll = (e: any) => {
+            let el = document.querySelector(`.content_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} .ant-table-body`);
+            if (el) {
+                el.scrollLeft = e.target.scrollLeft
+            }
+        }
+        if (isZj) {
+            document.querySelector(`.content_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} .ant-table-body`)?.addEventListener('scroll', contentBodyScroll);
+            document.querySelector(`.header_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} .ant-table-body`)?.addEventListener('scroll', headerBodyScroll);
+        }
+        () => {
+            if (isZj) {
+                document.querySelector(`.content_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} .ant-table-body`)?.removeEventListener('scroll', contentBodyScroll);
+                document.querySelector(`.header_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} .ant-table-body`)?.removeEventListener('scroll', headerBodyScroll);
+            }
+        }
+    }, [isZj, ran, classScrollName])
+
+    const { run: runResize } = useDebounceFn((columns) => {
+        if (configName) {
+            let newSelectData: PROAPI.ColumnsTypePro<any> = []
+            state.columns?.forEach((item, index) => {
+                newSelectData.push({ ...JSON.parse(JSON.stringify(state.configObj[item.dataIndex])), width: columns[index]['width'] })
+            })
+            setLsDataSource(newSelectData)
+            if (isZj) { // 有总计需要刷新内容表格
+                handleColumns(state.defaultColumns, state.configObj, newSelectData, lsFixed)
+            }
+        }
+    }, { wait: 200 });
+
+    //拖动宽度设置设置保存
+    const handelResize = useCallback((columns: PROAPI.ColumnTypePro<any>) => {
+        runResize(columns)
+    }, [configName, state.columns])
+    return <>
+        {/* 设置展示参数 */}
+        {visible && <CustomListModel
+            columns={state.columns}
+            sysFixed={fixed}
+            version={version}
+            config={config}
+            configName={configName}
+            visible={visible}
+            onClose={() => { setVisible(false) }}
+            onChange={(value) => {
+                if (value) {
+                    handleColumns(state.defaultColumns, state.configObj, value?.selectData, value?.fixed)
+                } else {
+                    handleColumns(state.defaultColumns, state.configObj)
+                }
+            }}
+        />}
+        <Row gutter={[0, 20]} ref={ref} style={isFull ? { background: '#fff' } : {}}>
+            <Col span={24}>
+                <Card
+                    style={{ borderRadius: 8 }}
+                    styles={{
+                        body: { padding: '5px 10px' },
+                        header: { textAlign: 'left' }
+                    }}
+                >
+                    {title && <div className={style.title}>
+                        <Space><span>{title}</span>{tips && <Tooltip title={tips}><span><QuestionCircleOutlined /></span></Tooltip>}</Space>
+                    </div>}
+                    <Row gutter={[0, 16]}>
+                        <DispatchHeader.Provider value={{ showSearch, setIsFullscreen, isFullscreen, isFull, toggleFull, setVisible, ajax, czChild, leftChild }}>
+                            <Settings />
+                        </DispatchHeader.Provider>
+                        <DispatchContext.Provider value={{ total, page, pageSize, handelResize }}>
+                            <Col span={24}>
+                                <div className={`${style[size]} ${className ? style[className] : ''} `}>
+                                    {
+                                        isZj && <NewTable
+                                            bordered
+                                            columns={state.columns}
+                                            dataSource={totalData?.length > 0 ? [...totalData] : [{ id: 1 }]}
+                                            scroll={scroll ? isFull ? { ...scroll, y: document.body.clientHeight - 300 } : scroll : {}}
+                                            size={size}
+                                            pagination={false}
+                                            className={`all_table header_table_body header_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} ${className ? className : ''}`}
+                                            sortDirections={['ascend', 'descend', null]}
+                                            {...props}
+                                        />
+                                    }
+                                    <NewTable
+                                        showHeader={!isZj}
+                                        sortDirections={['ascend', 'descend', null]}
+                                        bordered
+                                        className={`all_table content_table_body content_table_body${classScrollName ? '_' + classScrollName : ''}_${ran} ${className ? className : ''}`}
+                                        scroll={scroll ? isFull ? { ...scroll, y: document.body.clientHeight - 300 } : scroll : {}}
+                                        columns={state.columns}
+                                        dataSource={dataSource}
+                                        summary={summary}
+                                        pagination={{}}
+                                        {...props}
+                                    />
+                                </div>
+                            </Col>
+                        </DispatchContext.Provider>
+                    </Row>
+                </Card>
+            </Col>
+        </Row>
+    </>
+}
+
+export default React.memo(TablePro)

+ 79 - 0
src/components/TablePro/newTable.tsx

@@ -0,0 +1,79 @@
+import { Table, TableProps, Tag } from "antd"
+import React, { useContext, useEffect, useRef, useState } from "react"
+import { DispatchContext } from ".";
+import { Resizable } from "react-resizable";
+import './global.less'
+
+const ResizableHeader = (props: { [x: string]: any; onResize: any; width: any }) => {
+    const { onResize, width, ...restProps } = props;
+    if (!width) {
+        return <th {...restProps} />
+    }
+    // @ts-ignore
+    return <Resizable width={width} height={0} onResize={onResize} draggableOpts={{ enableUserSelectHack: false }}>
+        {/* @ts-ignore */}
+        <th {...restProps} />
+    </Resizable>
+}
+
+const NewTable: React.FC<TableProps<any>> = ({ columns, pagination, ...props }) => {
+
+    /************************************/
+    const { total, page: current, pageSize, onPaginationChange, handelResize } = useContext(DispatchContext)!;
+    let ww = document.body.clientWidth < 415
+    const colsRef = useRef<any[]>([])
+    const [cols, setCols] = useState<any>(columns)
+    /************************************/
+
+    const components = {
+        header: {
+            cell: ResizableHeader
+        }
+    }
+
+    useEffect(() => {
+        setCols(columns)
+    }, [columns])
+
+    const handleResize = (index: any) => (e: any, { size }: any) => {
+        const nextColumns = [...cols]
+        nextColumns[index] = {
+            ...nextColumns[index],
+            width: size.width
+        }
+        setCols(nextColumns)
+        handelResize && handelResize(nextColumns)
+    }
+    colsRef.current = (cols || []).map((col: any, index: any) => ({
+        ...col,
+        onHeaderCell: (column: any) => ({
+            width: column.width,
+            onResize: handleResize(index)
+        })
+    }))
+    return <div className='components-table-resizable-column'>
+        <Table
+            rowKey={(a: any) => (JSON.stringify(a?.id) || JSON.stringify(a?.key))}
+            size="small"
+            pagination={pagination ? {
+                size: 'small',
+                total,//总共多少条数据,服务器给,设置后分页自动计算页数
+                current,//当前页数,需state控制配合翻页
+                pageSize,
+                defaultCurrent: 1,//默认初始的当前页数
+                defaultPageSize: 20,//默认初始的每页条数
+                pageSizeOptions: ['10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],
+                showTotal: (total) => <Tag color="cyan">总共{total}数据</Tag>,
+                showSizeChanger: true, //手动开启条数筛选器,默认超过50条开启
+                onChange: onPaginationChange, //点击页码或条数筛选时触发获取当前页数和每页条数
+                simple: ww ? true : false,//开启简单分页
+                showLessItems: true
+            } as any : false}
+            components={components}
+            columns={colsRef?.current}
+            {...props}
+        />
+    </div>
+}
+
+export default React.memo(NewTable)

+ 43 - 0
src/components/TablePro/settings.tsx

@@ -0,0 +1,43 @@
+import { FullscreenExitOutlined, FullscreenOutlined, RedoOutlined, SearchOutlined, SettingOutlined } from "@ant-design/icons";
+import { Button, Col, Row, Space, Tooltip } from "antd";
+import React, { useContext } from "react";
+import { DispatchHeader } from ".";
+
+/**
+ * 头部
+ * @returns 
+ */
+const Settings: React.FC = () => {
+
+    /******************************/
+    const { isFullscreen, setIsFullscreen, isFull, toggleFull, setVisible, czChild, leftChild, ajax, showSearch = true } = useContext(DispatchHeader)!;
+    const colData = czChild ? { span: 24 } : { flex: '1 1 150px' }
+    /******************************/
+
+    return <Col span={24}>
+        <Row gutter={[0, 10]} align='bottom'>
+            <Col {...colData}>
+                {isFullscreen && leftChild}
+            </Col>
+            {czChild && <Col flex='1 1 150px'>{czChild}</Col>}
+            <Col flex='0 1 150px'>
+                <Space style={{ float: 'right', marginBottom: 4 }}>
+                    {showSearch && <Button size='small' type='text' style={{ color: '#F56C6C' }} onClick={() => { setIsFullscreen(!isFullscreen) }}>
+                        <Tooltip title={isFullscreen ? '隐藏搜索' : '显示搜索'}><SearchOutlined /></Tooltip>
+                    </Button>}
+                    {ajax && <Button size='small' type='text' style={{ color: '#67C23A' }} onClick={() => { ajax.refresh() }}>
+                        <Tooltip title='刷新'><RedoOutlined /></Tooltip>
+                    </Button>}
+                    <Button size='small' type='text' style={{ color: '#E6A23C' }} onClick={() => { setVisible(true) }}>
+                        <Tooltip title='设置'><SettingOutlined /></Tooltip>
+                    </Button>
+                    <Button type='text' size='small' style={{ color: '#409EFF' }} onClick={toggleFull}>
+                        {<Tooltip title={!isFull ? '全屏' : '退出全屏'}>{!isFull ? <FullscreenOutlined /> : <FullscreenExitOutlined />}</Tooltip>}
+                    </Button>
+                </Space>
+            </Col>
+        </Row>
+    </Col>
+}
+
+export default React.memo(Settings)

+ 55 - 0
src/components/TablePro/typings.d.ts

@@ -0,0 +1,55 @@
+declare namespace PROAPI {
+    type ColumnTypePro<RecordType = unknown> = (ColumnGroupType<RecordType> | ColumnType<RecordType>) & { label: string };
+    type ColumnsTypePro<RecordType = unknown> = ColumnTypePro[];
+    type TableProProps = TableProps<any> & {
+        configName: string;
+        config: any;
+        fixed?: {
+            left: number,
+            right: number
+        };
+        title?: string;
+        tips?: JSX.Element; // 提示
+        czChild?: JSX.Element;
+        leftChild?: JSX.Element;
+        ajax?: any;//接口刷新
+        size?: 'small' | 'middle' | 'large',
+        className?: string,//自定义class
+        total?: number;
+        page?: number,
+        pageSize?: number,
+        scroll?: ({
+            x?: string | number | true | undefined;
+            y?: string | number | undefined;
+        } & {
+            scrollToFirstRowOnChange?: boolean | undefined;
+        }),
+        dataSource?: readonly any[]
+        isZj?: boolean,//是否查总计
+        totalData?: any[]
+        classScrollName?: string
+    };
+    type State = {
+        columns: any[];
+        configObj: { [key: string]: ColumnTypePro<any>; };
+        defaultColumns: any[];
+    };
+    type HeaderContentProps = {
+        isFullscreen: boolean;
+        setIsFullscreen: React.Dispatch<React.SetStateAction<boolean>>;
+        isFull: boolean;
+        toggleFull: () => void;
+        setVisible: React.Dispatch<React.SetStateAction<boolean>>;
+        czChild?: JSX.Element;
+        leftChild?: JSX.Element;
+        ajax?: any; //接口刷新
+        showSearch?:boolean,//是否展示搜索按钮
+    };
+    type TableContentProps = {
+        total?: number;
+        page?: number;
+        pageSize?: number;
+        onPaginationChange?: (page: number, pageSize?: number) => void,
+        handelResize?: (columns: any) => void
+    }
+}

+ 95 - 0
src/components/Tables/index.less

@@ -0,0 +1,95 @@
+.unfollow{
+    background-color: #fafafa;
+}
+
+.ant-table-row.expanded>.ant-table-cell{
+    padding: 5px 16px !important;
+}
+.ant-table-row.error{
+    background-color: #ffe9e9;
+}
+// .react-resizable {
+//     position: relative;
+//   }
+//   .react-resizable-handle {
+//     position: absolute;
+//     width: 20px;
+//     height: 20px;
+//     background-repeat: no-repeat;
+//     background-origin: content-box;
+//     box-sizing: border-box;
+//     background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');
+//     background-position: bottom right;
+//     padding: 0 3px 3px 0;
+//   }
+//   .react-resizable-handle-sw {
+//     bottom: 0;
+//     left: 0;
+//     cursor: sw-resize;
+//     transform: rotate(90deg);
+//   }
+//   .react-resizable-handle-se {
+//     bottom: 0;
+//     right: 0;
+//     cursor: se-resize;
+//   }
+//   .react-resizable-handle-nw {
+//     top: 0;
+//     left: 0;
+//     cursor: nw-resize;
+//     transform: rotate(180deg);
+//   }
+//   .react-resizable-handle-ne {
+//     top: 0;
+//     right: 0;
+//     cursor: ne-resize;
+//     transform: rotate(270deg);
+//   }
+//   .react-resizable-handle-w,
+//   .react-resizable-handle-e {
+//     top: 50%;
+//     margin-top: -10px;
+//     cursor: ew-resize;
+//   }
+//   .react-resizable-handle-w {
+//     left: 0;
+//     transform: rotate(135deg);
+//   }
+//   .react-resizable-handle-e {
+//     right: 0;
+//     transform: rotate(315deg);
+//   }
+//   .react-resizable-handle-n,
+//   .react-resizable-handle-s {
+//     left: 50%;
+//     margin-left: -10px;
+//     cursor: ns-resize;
+//   }
+//   .react-resizable-handle-n {
+//     top: 0;
+//     transform: rotate(225deg);
+//   }
+//   .react-resizable-handle-s {
+//     bottom: 0;
+//     transform: rotate(45deg);
+//   }
+  .ellipsisText{
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      display: block;
+  }
+  .components-table-resizable-column .react-resizable{
+      position: relative;
+      background-clip: padding-box;
+  }
+  .components-table-resizable-column .react-resizable-handle{
+      position:absolute;
+      width: 10px;
+      height: 100%;
+      bottom: 0;
+      right: -9px;
+      cursor:col-resize;
+      z-index: 1;
+      border-left: white 1px solid;
+  }

+ 173 - 0
src/components/Tables/index.tsx

@@ -0,0 +1,173 @@
+import { ReactNode, useEffect, useRef, useState } from 'react'
+import { Table, Tag, message } from 'antd';
+import { Excle } from '@/utils/Excle'
+import style from './index.less'
+import './index.less'
+import { Resizable } from 'react-resizable'
+import { SortOrder } from 'antd/lib/table/interface';
+
+const ResizableHeader = (props: { [x: string]: any; onResize: any; width: any }) => {
+    const { onResize, width, ...restProps } = props;
+    if (!width) {
+        return <th {...restProps} />
+    }
+    // @ts-ignore
+    return <Resizable width={width} height={0} onResize={onResize} draggableOpts={{ enableUserSelectHack: false }}>
+        {/* @ts-ignore */}
+        <th {...restProps} />
+    </Resizable>
+}
+
+interface Props {
+    dataSource: any[],
+    columns: any[],
+    excle?: {
+        fillName: string,//文件名称
+        filter?: string[]//需要排除的数据,输入数据key
+    },
+    total?: number,
+    current?: number,
+    pageSize?: number,
+    rowSelection?: any,//选择
+    onRow?: {//行操作事件
+        onClick?: (event?: any) => void, // 点击行
+        onDoubleClick?: (event?: any) => void,
+        onContextMenu?: (event?: any) => void,
+        onMouseEnter?: (event?: any) => void, // 鼠标移入行
+        onMouseLeave?: (event?: any) => void,
+    }
+    pageChange?: (page: number, pageSize?: number) => void,
+    sizeChange?: (current: number, size?: number) => void,
+    rowClassName?: string | ((record: any, index: any) => string),//样式
+    expandedRowRender?: any,//子table
+    scroll?: { x?: number, y?: number },
+    summary?: (data: readonly any[]) => ReactNode,
+    size?: 'small' | 'middle' | 'large',
+    loading?: boolean,
+    defaultPageSize?: 10 | 20 | 30 | 100,
+    bordered?: boolean,
+    onChange?: (pagination: any, filters: any, sorter: any) => void//服务端排序回调
+    pagination?: boolean,
+    showHeader?: 1,
+    hideOnSinglePage?: boolean,
+    className?: string,
+    handelResize?: (columns: any) => void//当表头被拖动改变宽度时回调设置对应的本地保存
+    sortDirections?: SortOrder[],
+    isShowTotal?: boolean,  // 是否展示总计
+}
+
+function Tables(props: Props) {
+    // //导出数据
+    let { columns, dataSource, excle, total, handelResize, rowSelection, onRow, isShowTotal = true, hideOnSinglePage, rowClassName, className, expandedRowRender, scroll, summary, showHeader, bordered, size = 'small', onChange, sortDirections, pagination, ...prop } = props
+    let handleExcle = () => {
+        if (dataSource.length < 1) {
+            message.error('请先搜索再导出');
+            return
+        }
+        let thName: any = {};
+        let obj = columns;
+        obj.forEach((item: any) => {
+            thName[item.key] = item.title
+        })
+        let fillName = excle?.fillName || ''
+        let filter = excle?.filter || []
+        Excle(thName, dataSource, fillName, filter)
+    }
+    let ww = document.body.clientWidth < 415
+    // 拖动宽逻辑
+    const [cols, setCols] = useState<any>(columns)
+    const colsRef = useRef<any[]>([])
+    const components = {
+        header: {
+            cell: ResizableHeader
+        }
+    }
+    useEffect(() => {
+        setCols(columns)
+    }, [columns])
+    const handleResize = (index: any) => (e: any, { size }: any) => {
+        const nextColumns = [...cols]
+        nextColumns[index] = {
+            ...nextColumns[index],
+            width: size.width
+        }
+        setCols(nextColumns)
+        handelResize && handelResize(nextColumns)
+    }
+    colsRef.current = (cols || []).map((col: any, index: any) => ({
+        ...col,
+        onHeaderCell: (column: any) => ({
+            width: column.width,
+            onResize: handleResize(index)
+        })
+    }))
+    return <div className='components-table-resizable-column'>
+        {
+            excle && <Tag color='#f50' style={{ margin: '10px 0', float: 'right' }} onClick={handleExcle}><a>导出数据</a></Tag>
+        }
+        <Table
+            components={components}
+            columns={colsRef?.current}
+            sortDirections={sortDirections || ['descend', 'ascend', null]}
+            onChange={(pagination, filters, sorter) => {
+                onChange && onChange(pagination, filters, sorter)
+            }}
+            bordered={bordered ? bordered : false}
+            dataSource={dataSource}
+            showHeader={showHeader === 1 ? false : true}
+            scroll={scroll ? { ...scroll, scrollToFirstRowOnChange: true } : undefined}
+            size={size}
+            rowKey={(a: any) => {
+                return (JSON.stringify(a?.id) || JSON.stringify(a?.key))
+            }}
+            rowSelection={rowSelection ? rowSelection : undefined}
+            onRow={record => {
+                return {
+                    onClick: onRow?.onClick && onRow?.onClick.bind('', record) || undefined,
+                }
+            }}
+            summary={summary}
+            className={className}
+            expandable={expandedRowRender ? {
+                defaultExpandedRowKeys: ['0'],
+                expandRowByClick: true, expandedRowRender: (data) => {
+                    return expandedRowRender(data)
+                }
+            } : {}}
+            pagination={
+                {
+                    total: total || 0,//总共多少条数据,服务器给,设置后分页自动计算页数
+                    current: props.current,//当前页数,需state控制配合翻页
+                    pageSize: props?.pageSize,
+                    defaultCurrent: 1,//默认初始的当前页数
+                    defaultPageSize: props?.defaultPageSize || 20,//默认初始的每页条数
+                    pageSizeOptions: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
+                    showTotal: (total) => isShowTotal ? <Tag color="cyan">总共{total}数据</Tag> : null,
+                    showSizeChanger: true, //手动开启条数筛选器,默认超过50条开启
+                    onChange: props.pageChange, //点击页码或条数筛选时触发获取当前页数和每页条数
+                    onShowSizeChange: props.sizeChange,//点击条数筛选器触发
+                    simple: ww ? true : false,//开启简单分页
+                    hideOnSinglePage: hideOnSinglePage ? hideOnSinglePage : false,//只有一页数据隐藏分页
+                    showLessItems: true
+                }
+            }
+            {...prop}
+            {...{
+                rowClassName: typeof rowClassName === 'string' ? (record: any) => {
+                    if (rowClassName && record[rowClassName as string] === 2) {
+                        return style.unfollow
+                    }
+                    if (rowClassName && !record[rowClassName as string]) {
+                        return style.unfollow
+                    }
+                } : rowClassName
+            }
+            }
+        />
+    </div>
+}
+
+export default Tables
+
+
+

+ 129 - 0
src/components/Team/index.less

@@ -0,0 +1,129 @@
+.manage {
+    height: calc(100% - 42px);
+    display: flex;
+    justify-content: flex-start;
+
+    &__left {
+        width: calc(100% - 132px);
+    }
+}
+
+.groupLeft {
+    width: 200px;
+    height: 100%;
+    background-color: #fff;
+
+    &_header {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        height: 50px;
+        border-bottom: 1px solid rgb(236, 236, 236);
+        background-color: #f8f8f8;
+
+        &>div {
+            font-size: 16px;
+            font-weight: 600;
+            padding: 0 10px;
+        }
+    }
+
+    &_content {
+        height: calc(100% - 50px);
+        overflow-y: auto;
+
+        &_item {
+            &>.con {
+                display: flex;
+                justify-content: space-between;
+                align-items: center;
+                padding: 5px 12px;
+                box-sizing: border-box;
+                height: 50px;
+                border-bottom: 1px solid rgb(236, 236, 236);
+                transition: .1s;
+                box-sizing: border-box;
+                cursor: pointer;
+                border-right: 2px solid #fff;
+
+                >.left {
+                    width: calc(100% - 45px);
+
+                    >div {
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        white-space: nowrap;
+                    }
+                }
+
+                >.right {
+                    width: 38px;
+                }
+
+                .title {
+                    color: #000;
+                    font-weight: 500;
+                }
+
+                .subTitle {
+                    font-size: 12px;
+                    color: rgb(122, 122, 122);
+                }
+
+                &:hover {
+                    background-color: #e6f7ff;
+                    border-right-color: #1890ff;
+
+                    .title {
+                        color: #1890ff;
+                    }
+
+                    .subTitle {
+                        color: #1890ff;
+                    }
+                }
+
+                &.select {
+                    background-color: #e6f7ff;
+                    border-right-color: #1890ff;
+
+                    .title {
+                        color: #1890ff;
+                    }
+
+                    .subTitle {
+                        color: #1890ff;
+                    }
+                }
+            }
+
+            &>.edit {
+                padding: 10px 12px;
+                box-sizing: border-box;
+                border-bottom: 1px solid rgb(236, 236, 236);
+
+                // font-size: 12px;
+                .ant-input-affix-wrapper {
+                    border-radius: 4px;
+                }
+            }
+        }
+
+    }
+}
+
+
+.teamMembers {
+    height: 100%;
+    overflow: hidden;
+    background-color: #FFF;
+    width: 200px;
+    display: flex;
+    flex-direction: column;
+
+    .menus {
+        flex: 1 0;
+        overflow: hidden;
+        overflow-y: auto;
+    }
+}

+ 92 - 0
src/components/Team/index.tsx

@@ -0,0 +1,92 @@
+import { Select, Tabs } from "antd"
+import React, { useRef } from "react"
+import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'
+import { useAjax } from "@/Hook/useAjax"
+import style from './index.less'
+import TeamMembers from "./teamMembers"
+import { useSize } from "ahooks"
+import teamStore from '../../store/teamStore'
+import { toJS } from "mobx"
+import { getAdAccountAllOfMember } from "@/API/global"
+
+interface props {
+    children?: React.ReactNode;
+    heightDiffer?: number
+    tabBarExtraContent?: any
+    isShowSelect?: boolean
+}
+
+/**
+ * 组员选择
+ * @param param0 
+ * @returns 
+ */
+const Team: React.FC<props> = ({ children, heightDiffer, tabBarExtraContent, isShowSelect = true }) => {
+
+    /************************/
+    const corpIds = toJS(teamStore.data.corpIds)
+    const active_corpIds = toJS(teamStore.data.active_corpIds)
+    const userId = toJS(teamStore.data.userId)
+    const activeKey = toJS(teamStore.data.activeKey)
+    const showLeft = toJS(teamStore.data.showLeft)
+    const loading = toJS(teamStore.data.loading)
+    const ref = useRef(null)
+    const size = useSize(ref)
+
+    const allOfMember = useAjax(() => getAdAccountAllOfMember())
+    /************************/
+
+    return <div style={{ width: '100%' }}>
+        <div style={{ marginTop: 10, boxSizing: 'border-box', width: '100%', display: 'flex', gap: 10 }}>
+            <Tabs
+                tabBarStyle={{ marginBottom: 1 }}
+                activeKey={activeKey}
+                style={{ width: 150 }}
+                type="card"
+                onChange={(activeKey) => {
+                    if (activeKey !== 'contract') {
+                        teamStore.setActiveKey(activeKey)
+                        if (activeKey === '1') {
+                            teamStore.setUserId(Number(sessionStorage.getItem('userId')))
+                        }
+                    } else {
+                        teamStore.setShowLeft(!showLeft)
+                    }
+                }}
+                items={[
+                    { label: '我的', key: '1' },
+                    { label: '组员', key: '2' },
+                    { label: showLeft ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />, key: 'contract' },
+                ]}
+            />
+            <div style={{ display: 'flex', justifyContent: 'space-between', flex: 1, alignItems: 'center' }}>
+                <div>
+                    {isShowSelect && <Select
+                        loading={loading}
+                        value={active_corpIds}
+                        onChange={(e, option) => {
+                            teamStore.setActiveCorpIds(e)
+                            teamStore.setActiveCorpIdsObj(option)
+                        }}
+                        showSearch
+                        style={{ width: 140 }}
+                        placeholder="选择企业"
+                        filterOption={(input, option) =>
+                            ((option?.label ?? '') as string).toLowerCase().includes(input.toLowerCase())
+                        }
+                        options={corpIds}
+                    />}
+                </div>
+                <div>{tabBarExtraContent}</div>
+            </div>
+        </div>
+        <div className={style.manage} style={{ gap: (!showLeft && activeKey === '2') ? 4 : 0 }}>
+            <div ref={ref}>{!showLeft && activeKey === '2' && <TeamMembers heightDiffer={heightDiffer} allOfMember={allOfMember} onChange={(putUserId) => teamStore.setUserId(putUserId)} value={userId} />}</div>
+            <div className={style.manage__left} style={(showLeft || activeKey === '1') ? { width: '100%' } : { width: `calc(100% - ${size.width || 132}px)` }}>
+                {children}
+            </div>
+        </div>
+    </div>
+}
+
+export default React.memo(Team)

+ 102 - 0
src/components/Team/teamMembers.tsx

@@ -0,0 +1,102 @@
+import { IdcardFilled } from "@ant-design/icons"
+import { Menu, Select, Spin } from "antd"
+import React, { useEffect, useState } from "react"
+import style from './index.less'
+
+interface Props {
+    allOfMember: any
+    onChange?: (id?: number) => void
+    value?: number
+    heightDiffer?: number
+}
+/**
+ * 选择组员左菜单
+ */
+const TeamMembers: React.FC<Props> = ({ onChange, value, allOfMember }) => {
+
+    /*************************/
+    const [userAll, setUserAll] = useState([])
+    const [userId, setUserId] = useState<number>()
+    /*************************/
+
+    useEffect(() => {
+        if (value) {
+            setUserId(value)
+        }
+    }, [value])
+
+    /** 获取组员 */
+    useEffect(() => {
+        getUserAll()
+    }, [])
+
+    const getUserAll = async () => {
+        const res = allOfMember?.data || await allOfMember.run()
+        if (res?.data) {
+            const useAll: any = []
+            res?.data?.forEach((item: { userId: number; nickname: any; }) => {
+                const obj = {
+                    key: item.userId,
+                    label: item.nickname,
+                    icon: <IdcardFilled />,
+                }
+                useAll.push(obj)
+            })
+            if (!value && useAll.length > 0) {
+                setUserId(useAll[0].key)
+                onChange?.(useAll[0].key)
+            }
+            setUserAll(useAll)
+        }
+    }
+
+    /** 初始跳转到自己的名称 */
+    useEffect(() => {
+        if (userAll?.length > 0 && userId) {
+            const topEq = userAll?.findIndex((item: any) => item.key == userId)
+            const em: any = document.getElementById('myMenus')
+            if (em) em.scrollTop = (39) * topEq
+        }
+    }, [userId, userAll])
+
+    return <div className={style.teamMembers}>
+        <Select
+            placeholder='名称搜索'
+            style={{ width: 'calc(100% - 10px)', margin: '4px 5px' }}
+            showSearch
+            value={userId ? Number(userId) : undefined}
+            filterOption={(input: any, option: any) => {
+                return (option!?.children as unknown as string)?.toLowerCase()?.includes(input?.toLowerCase())
+            }}
+            loading={allOfMember.loading}
+            onChange={(value: any) => {
+                if (value) {
+                    setUserId(value)
+                }
+                onChange?.(value)
+            }}
+        >
+            {userAll.map((item: any) => {
+                return <Select.Option value={Number(item.key)} key={item.key}>{item.label}</Select.Option>
+            })}
+        </Select>
+        {/* <Spin className="menus" spinning={allOfMember.loading}>
+           
+        </Spin> */}
+        <div className={style.menus} id='myMenus'>
+            <Menu
+                theme='light'
+                onClick={(e: any) => {
+                    setUserId(e.key ? Number(e.key) : undefined)
+                    onChange?.(e.key)
+                }}
+                selectedKeys={userId ? [userId.toString()] : undefined}
+                mode="inline"
+                items={userAll}
+            />
+        </div>
+    </div>
+}
+
+
+export default React.memo(TeamMembers)

+ 27 - 0
src/components/TimeSlot/Header.tsx

@@ -0,0 +1,27 @@
+import React from 'react';
+import { Typography } from 'antd';
+import { MINUTE_LIST } from './const';
+
+import './global.less';
+
+const Header: React.FC = () => {
+    return (
+        <div className="table_header_wrapper" draggable={false}>
+            <div className="left">
+                <Typography.Text>小时 \ 分钟</Typography.Text>
+            </div>
+            <div className="right">
+                <div className="top">
+                    <div className="before">00:00 - 00:30</div>
+                    <div className="after">00:30 - 00:60</div>
+                </div>
+                <div className="foot">
+                    {MINUTE_LIST.map((item, index) => (
+                        <Typography key={index}>{item}</Typography>
+                    ))}
+                </div>
+            </div>
+        </div>
+    );
+}
+export default React.memo(Header)

+ 196 - 0
src/components/TimeSlot/Thead.tsx

@@ -0,0 +1,196 @@
+import React, { useRef, useState } from "react"
+
+import './global.less';
+import { Button, Space, Tag, Tooltip, Typography } from "antd";
+import { HOUR_LIST, Props, formatData, getInitalFormatList, initTimerPicker } from "./const";
+const INIT_START_POINT = { rowNum: -1, colNum: -1, deselect: false };
+const INIT_END_POINT = { rowNum: -1, colNum: -1 };
+function getRealStartEndPoint(startPoint: { colNum: number, rowNum: number }, endPoint: { colNum: number, rowNum: number }) {
+    let startRowNum = startPoint.rowNum,
+        startColNum = startPoint.colNum,
+        endRowNum = endPoint.rowNum,
+        endColNum = endPoint.colNum;
+    if (startPoint.colNum > endPoint.colNum) {
+        startColNum = endPoint.colNum;
+        endColNum = startPoint.colNum;
+    }
+    if (startPoint.rowNum > endPoint.rowNum) {
+        startRowNum = endPoint.rowNum;
+        endRowNum = startPoint.rowNum;
+    }
+    return {
+        startRowNum,
+        startColNum,
+        endRowNum,
+        endColNum,
+    };
+}
+const getActiveStatus = (data: { each: any, startPoint: any, endPoint: any }) => {
+    const { each, startPoint, endPoint } = data;
+    if (startPoint.rowNum === -1 || endPoint.rowNum === -1) {
+        return each.selected;
+    }
+    const { startRowNum, startColNum, endRowNum, endColNum } = getRealStartEndPoint(startPoint, endPoint);
+    if (each.rowNum >= startRowNum && each.colNum >= startColNum && each.rowNum <= endRowNum && each.colNum <= endColNum) {
+        return !startPoint.deselect;
+    }
+    return each.selected;
+};
+
+const Thead: React.FC<Props> = ({ value, onChange }) => {
+    // console.log('33333', value)
+    const [timerPickered, setTimerPickered] = useState(initTimerPicker(value ? value.split('') : []));
+    const [startPoint, setStartPoint] = useState({ ...INIT_START_POINT });
+    const [endPoint, setEndPoint] = useState({ ...INIT_END_POINT });
+    const endPointRef = useRef(endPoint);
+
+    // console.log('timerPickered--->', timerPickered)
+
+    const updateEndPoint = (point: any) => {
+        endPointRef.current = { ...point };
+        setEndPoint(endPointRef.current);
+    };
+
+    const handleClear = () => {
+        const initData = getInitalFormatList();
+        setTimerPickered(initTimerPicker(initData));
+        setStartPoint({ ...INIT_START_POINT });
+        setEndPoint({ ...INIT_END_POINT });
+        onChange?.();
+    };
+
+    const updateDataList = ({ startPoint, endPoint }: any) => {
+        const dataList = getInitalFormatList();
+        timerPickered.forEach((rows) => {
+            rows.forEach((each: any) => {
+                each.selected = getActiveStatus({
+                    each,
+                    startPoint,
+                    endPoint,
+                });
+                formatData(dataList, each);
+            });
+        });
+        setTimerPickered([...timerPickered]);
+        setStartPoint({ ...INIT_START_POINT });
+        updateEndPoint({ ...INIT_END_POINT });
+        return dataList;
+    };
+
+    const triggerChange = () => {
+        const data = updateDataList({ startPoint, endPoint });
+        onChange?.(data.join(''));
+    };
+
+    const onMouseDown = ({ target: { dataset } }: any) => {
+        const { type, rowNum, colNum, selected } = dataset;
+        if ('time-boxzone' !== type) return;
+        setStartPoint({
+            rowNum: +rowNum,
+            colNum: +colNum,
+            deselect: selected === '1',
+        });
+        updateEndPoint({ rowNum: +rowNum, colNum: +colNum });
+    };
+
+    const onMouseUp = ({ target: { dataset } }: any) => {
+        const { type, rowNum, colNum } = dataset;
+        if (type !== 'time-boxzone') return;
+        if (+rowNum !== endPointRef.current.rowNum || +colNum !== endPointRef.current.colNum) {
+            updateEndPoint({ rowNum: +rowNum, colNum: +colNum });
+        }
+        requestAnimationFrame(() => {
+            triggerChange();
+        });
+    };
+
+    const onMouseOver = ({ target: { dataset } }: any) => {
+        const { type, rowNum, colNum } = dataset;
+        if ('time-boxzone' !== type) return;
+        if (startPoint.colNum === -1) return;
+        endPointRef.current = { rowNum: +rowNum, colNum: +colNum };
+        requestAnimationFrame(() => {
+            updateEndPoint(endPointRef.current);
+        });
+    };
+
+    const onMouseLeave = () => {
+        if (startPoint.rowNum === -1) return;
+        // setTimeout(() => {
+        if (endPointRef.current.colNum === -1) {
+            updateEndPoint({
+                colNum: startPoint.colNum,
+                rowNum: startPoint.rowNum,
+            });
+        }
+        requestAnimationFrame(() => {
+            triggerChange();
+        });
+        // });
+    };
+
+    const Footer = (
+        <div className="footer_wrapper">
+            <Space>
+                <Tag color="#1DA57A">已选</Tag>
+                <Tag>未选</Tag>
+                <Typography.Text type="secondary">可拖动鼠标选择时间段</Typography.Text>
+            </Space>
+            <Button type="link" onClick={handleClear} style={{ paddingLeft: 0, paddingRight: 0 }}>
+                清空
+            </Button>
+        </div>
+    );
+
+    return <div className="thead_wrapper">
+        <div className="thead_wrapper_content">
+            <div className="week_series" draggable={false}>
+                {HOUR_LIST.map(hour => (
+                    <div className="week_series__item" key={hour}>
+                        {hour}点
+                    </div>
+                ))}
+            </div>
+            <div
+                className="time_series"
+                data-type="right-boxzones"
+                onMouseDown={onMouseDown}
+                onMouseUp={onMouseUp}
+                onMouseOver={onMouseOver}
+                onMouseLeave={onMouseLeave}
+            >
+                {timerPickered.map((row, index) => (
+                    <div className="time_series__row" key={index}>
+                        {row.map((each: any, i: number) => (
+                            <Tooltip
+                                destroyTooltipOnHide
+                                mouseEnterDelay={1}
+                                key={`${index}_${i}`}
+                                title={each?.name}
+                                placement="bottom"
+                            >
+                                <div
+                                    key={each?.key}
+                                    draggable={false}
+                                    data-row-num={each?.rowNum}
+                                    data-col-num={each?.colNum}
+                                    data-selected={each?.selected ? '1' : '0'}
+                                    data-type="time-boxzone"
+                                    className={`row_item ${getActiveStatus({
+                                        each,
+                                        startPoint,
+                                        endPoint: endPointRef.current
+                                    }) ? 'isActive' : ''}`}
+                                />
+                            </Tooltip>
+                        ))}
+                    </div>
+                ))}
+            </div>
+        </div>
+        {Footer}
+    </div>
+}
+
+
+export default React.memo(Thead)

+ 107 - 0
src/components/TimeSlot/const.ts

@@ -0,0 +1,107 @@
+type ValueProps = { startTime: string, endTime: string }
+/**
+ * @param value string[]
+ * @param onChange (data: string[]) => void
+ */
+export interface Props {
+    value?: string
+    onChange?: (value?: string) => void
+}
+
+export const TIME_GAP = 5
+export const TIME_LIST = Array(24 * 60 / TIME_GAP).fill('').map((_, index) => index * TIME_GAP)
+
+// 头部分钟间隔展示
+export const MINUTE_LIST = Array.from({ length: 60 / TIME_GAP }, (v, i) => i * TIME_GAP + TIME_GAP);
+
+// 左边小时展示
+export const HOUR_LIST = Array.from({ length: 24 }, (v, i) => i);
+
+export const initTimerPicker = (value: any[] = []) => {
+    const result: any[] = [];
+    let index = 0;
+    HOUR_LIST.forEach((hour, rowNum) => {
+        const list = [];
+        let hourSpan = 0;
+        while (hourSpan < MINUTE_LIST.length) {
+            const curHour = ('00' + hour).slice(-2);
+            const startTime = ('00' + (MINUTE_LIST[hourSpan] - TIME_GAP)).slice(-2);
+            const endTime = ('00' + (MINUTE_LIST[hourSpan])).slice(-2);
+            const time = `${curHour}:${startTime}-${curHour}:${endTime}`;
+            const selected = value[index] === '1';
+            const timerBox = {
+                key: `${hour}_${time}`,
+                name: `${time}`,
+                value: index,
+                rowNum: rowNum + 1,
+                colNum: (index % MINUTE_LIST.length) + 1,
+                selected,
+            };
+            list.push(timerBox);
+            if (!selected) {
+                value[index] = '0';
+            }
+            index++;
+            hourSpan++;
+        }
+        result.push(list);
+    });
+    return result;
+};
+
+export const getInitalFormatList = () => {
+    return new Array(24 * (60 / TIME_GAP)).fill('0');
+}
+
+export function formatData(data: any, timeBox: any) {
+    data[timeBox.value] = timeBox.selected ? '1' : '0';
+    return data;
+}
+
+// 辅助函数:将分钟格式化为时间字符串
+const formatMinutesToTime = (minutes: number): string => {
+    const hours = Math.floor(minutes / 60);
+    const remainingMinutes = minutes % 60;
+
+    const formattedHours = String(hours).padStart(2, '0');
+    const formattedMinutes = String(remainingMinutes).padStart(2, '0');
+
+    return `${formattedHours}:${formattedMinutes}:00`;
+}
+
+
+interface TimeInterval {
+    startTime: string;
+    endTime: string;
+};
+// 将 timeList 转换为时间区间数组
+export const timeListToTimeIntervals = (timeList: string): TimeInterval[] => {
+    const intervals: TimeInterval[] = [];
+    let currentInterval: TimeInterval | null = null;
+
+    for (let i = 0; i < timeList.length; i++) {
+        if (timeList[i] === '1') {
+            if (!currentInterval) {
+                // 如果当前没有正在构建的时间区间,则创建新的时间区间
+                currentInterval = { startTime: formatMinutesToTime(i * 5), endTime: '' };
+            }
+        } else {
+            if (currentInterval) {
+                // 如果当前正在构建的时间区间存在,并且遇到了 0,则表示当前时间区间结束
+                let endTime = formatMinutesToTime(i * 5)
+                currentInterval.endTime = endTime === '24:00:00' ? '23:59:59' : endTime;
+                intervals.push(currentInterval);
+                currentInterval = null; // 重置当前时间区间
+            }
+        }
+    }
+
+    // 处理最后一个时间区间
+    if (currentInterval) {
+        let endTime = formatMinutesToTime(timeList.length * 5);
+        currentInterval.endTime = endTime === '24:00:00' ? '23:59:59' : endTime;
+        intervals.push(currentInterval);
+    }
+
+    return intervals;
+}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff