@dimina-kit/devtools 0.4.0-dev.20260801163345 → 0.4.0-dev.20260824071518

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/main/app/app.js +12 -1
  2. package/dist/main/index.bundle.js +584 -323
  3. package/dist/main/ipc/index.d.ts +1 -0
  4. package/dist/main/ipc/index.js +1 -0
  5. package/dist/main/ipc/session.js +11 -0
  6. package/dist/main/ipc/tooltip.d.ts +13 -0
  7. package/dist/main/ipc/tooltip.js +28 -0
  8. package/dist/main/services/layout/index.d.ts +11 -0
  9. package/dist/main/services/layout/index.js +23 -0
  10. package/dist/main/services/network-forward/frontend-dispatch.js +2 -1
  11. package/dist/main/services/notifications/renderer-notifier.d.ts +2 -0
  12. package/dist/main/services/notifications/renderer-notifier.js +7 -1
  13. package/dist/main/services/simulator-current-page/index.d.ts +5 -3
  14. package/dist/main/services/simulator-current-page/index.js +8 -1
  15. package/dist/main/services/views/clear-console-filter.d.ts +44 -0
  16. package/dist/main/services/views/clear-console-filter.js +86 -0
  17. package/dist/main/services/views/console-filter-test-fixtures.d.ts +94 -0
  18. package/dist/main/services/views/console-filter-test-fixtures.js +82 -0
  19. package/dist/main/services/views/console-filter.d.ts +79 -130
  20. package/dist/main/services/views/console-filter.js +140 -183
  21. package/dist/main/services/views/devtools-tabs.d.ts +24 -4
  22. package/dist/main/services/views/devtools-tabs.js +40 -21
  23. package/dist/main/services/views/host-toolbar-view.js +5 -18
  24. package/dist/main/services/views/native-simulator-devtools-host.js +64 -45
  25. package/dist/main/services/views/native-simulator-view.js +6 -24
  26. package/dist/main/services/views/native-view-tree.d.ts +25 -0
  27. package/dist/main/services/views/native-view-tree.js +69 -0
  28. package/dist/main/services/views/overlay-panels-view.d.ts +27 -4
  29. package/dist/main/services/views/overlay-panels-view.js +138 -109
  30. package/dist/main/services/views/placement-reconciler.d.ts +4 -16
  31. package/dist/main/services/views/placement-reconciler.js +64 -29
  32. package/dist/main/services/views/placement-test-driver.d.ts +26 -0
  33. package/dist/main/services/views/placement-test-driver.js +26 -0
  34. package/dist/main/services/views/view-manager.d.ts +5 -9
  35. package/dist/main/services/views/view-manager.js +7 -1
  36. package/dist/main/services/views/workbench-view.js +27 -20
  37. package/dist/main/services/workbench-coi-server.d.ts +11 -0
  38. package/dist/main/services/workbench-coi-server.js +32 -0
  39. package/dist/main/services/workspace/rebuild-status.d.ts +21 -8
  40. package/dist/main/services/workspace/rebuild-status.js +24 -8
  41. package/dist/main/utils/sender-policy.d.ts +1 -1
  42. package/dist/main/utils/sender-policy.js +6 -1
  43. package/dist/main/utils/theme.d.ts +7 -2
  44. package/dist/main/utils/theme.js +8 -3
  45. package/dist/native-host/container/pageFrame.css +1 -1
  46. package/dist/native-host/render/render.js +1966 -1816
  47. package/dist/native-host/service/service.js +1 -1
  48. package/dist/preload/windows/host-toolbar-runtime.cjs.map +2 -2
  49. package/dist/preload/windows/main.cjs +3176 -14
  50. package/dist/preload/windows/main.cjs.map +4 -4
  51. package/dist/preload/windows/main.css +428 -0
  52. package/dist/preload/windows/main.css.map +7 -0
  53. package/dist/preload/windows/simulator.cjs +5 -2
  54. package/dist/preload/windows/simulator.cjs.map +2 -2
  55. package/dist/preload/windows/simulator.js +5 -2
  56. package/dist/renderer/assets/constants-Bdz0LHdy.js +2 -0
  57. package/dist/renderer/assets/index-CtznrmHR.js +49 -0
  58. package/dist/renderer/assets/{input-xdmfv-eH.js → input-Dmm6nob5.js} +2 -2
  59. package/dist/renderer/assets/ipc-transport-BOg0gR9W.js +9 -0
  60. package/dist/renderer/assets/ipc-transport-DgQhZaE9.css +1 -0
  61. package/dist/renderer/assets/popover-Cd1FEGOX.js +2 -0
  62. package/dist/renderer/assets/select-BaYox7If.js +2 -0
  63. package/dist/renderer/assets/settings-BXvwuFaz.js +2 -0
  64. package/dist/renderer/assets/settings-api-Bo9GbYqs.js +2 -0
  65. package/dist/renderer/assets/settings-tab-bar-Beia6lMr.js +2 -0
  66. package/dist/renderer/assets/tooltip-DfQqK3Sk.js +2 -0
  67. package/dist/renderer/assets/view-api-nn69je7A.js +2 -0
  68. package/dist/renderer/assets/workbenchSettings-oq_EyfKf.js +8 -0
  69. package/dist/renderer/entries/main/index.html +8 -7
  70. package/dist/renderer/entries/popover/index.html +7 -6
  71. package/dist/renderer/entries/settings/index.html +7 -5
  72. package/dist/renderer/entries/tooltip/index.html +20 -0
  73. package/dist/renderer/entries/workbench-settings/index.html +7 -5
  74. package/dist/service-host/sync-impls/menu-button-geometry.js +1 -0
  75. package/dist/shared/ipc-channels.d.ts +11 -0
  76. package/dist/shared/ipc-channels.js +28 -2
  77. package/dist/shared/ipc-schemas.d.ts +19 -0
  78. package/dist/shared/ipc-schemas.js +23 -0
  79. package/dist/shared/simulator-route.d.ts +8 -0
  80. package/dist/shared/simulator-route.js +15 -0
  81. package/dist/shared/types.d.ts +7 -0
  82. package/dist/shared/view-ids.d.ts +2 -0
  83. package/dist/shared/view-ids.js +11 -0
  84. package/dist/simulator/assets/device-shell-CmtM1QxP.js +2 -0
  85. package/dist/simulator/assets/device-shell-iFZo1igL.css +1 -0
  86. package/dist/simulator/assets/{simulator-COIE6R49.js → simulator-CIobn3Mh.js} +6 -6
  87. package/dist/simulator/assets/{simulator-mini-app-BLn7XV8e.js → simulator-mini-app-CRe6n9br.js} +2 -2
  88. package/dist/simulator/assets/simulator-ui-BupATgKo.css +1 -0
  89. package/dist/simulator/assets/simulator-ui-C_cP602X.js +2 -0
  90. package/dist/simulator/simulator.html +3 -2
  91. package/dist/vscode-workbench/assets/__vite-browser-external-Bc1vizTf.js +1 -0
  92. package/dist/vscode-workbench/assets/{dist-oHcwN53f.js → dist-CMfmHflW.js} +3 -3
  93. package/dist/vscode-workbench/assets/{iconv-lite-umd-CLMLpdGm.js → iconv-lite-umd-Bx8CgaZq.js} +1 -1
  94. package/dist/vscode-workbench/assets/{index-BE3UJdoH.js → index-CdG6YWhW.js} +436 -436
  95. package/dist/vscode-workbench/assets/{jschardet-BICW8PLJ.js → jschardet-M0qgd2lN.js} +1 -1
  96. package/dist/vscode-workbench/index.html +21 -1
  97. package/package.json +7 -6
  98. package/dist/main/services/views/destroy-child-view.d.ts +0 -9
  99. package/dist/main/services/views/destroy-child-view.js +0 -23
  100. package/dist/renderer/assets/constants-EAMiwL9_.js +0 -2
  101. package/dist/renderer/assets/index-BBg3YI5b.js +0 -49
  102. package/dist/renderer/assets/ipc-transport-B3EpmfNS.js +0 -9
  103. package/dist/renderer/assets/ipc-transport-Blac3sOj.css +0 -1
  104. package/dist/renderer/assets/popover-B88e2hkg.js +0 -2
  105. package/dist/renderer/assets/select-CD9CJyhI.js +0 -2
  106. package/dist/renderer/assets/settings-44hf0QtO.js +0 -2
  107. package/dist/renderer/assets/settings-api-pJKPuP1M.js +0 -2
  108. package/dist/renderer/assets/workbenchSettings-DKD5U1Ql.js +0 -8
  109. package/dist/simulator/assets/device-shell-Cw7c-IkG.js +0 -2
  110. package/dist/simulator/assets/device-shell-DbC5ccs8.css +0 -1
  111. package/dist/simulator/assets/jsx-runtime-DkKmJyBb.js +0 -2
  112. package/dist/simulator/device-shell/menu-button-geometry.js +0 -18
  113. package/dist/vscode-workbench/assets/__vite-browser-external-BON7qP59.js +0 -1
@@ -1,7 +1,7 @@
1
1
  import { nativeTheme, WebContentsView } from 'electron';
2
2
  import { handleWindowOpenExternal } from '../../windows/navigation-hardening.js';
3
+ import { themeBg } from '../../utils/theme.js';
3
4
  import { VIEW_ID } from '../../../shared/view-ids.js';
4
- import { destroyChildView } from './destroy-child-view.js';
5
5
  /**
6
6
  * Upper bound on how long a hold may defer the workbench attach. A hung or
7
7
  * very slow first compile (or a lost release on some open path) degrades to a
@@ -45,6 +45,14 @@ export function createWorkbenchView(ctx, reconciler) {
45
45
  if (!workbenchView || workbenchView.webContents.isDestroyed())
46
46
  return;
47
47
  const wc = workbenchView.webContents;
48
+ // Keep the WCV surface in sync with the active color scheme: the workbench
49
+ // page can only recolor its own inner #workbench, never the html/body
50
+ // backdrop, so the native surface must follow the theme flip too.
51
+ try {
52
+ if (typeof workbenchView.setBackgroundColor === 'function')
53
+ workbenchView.setBackgroundColor(themeBg());
54
+ }
55
+ catch { /* view/wc gone mid-flip */ }
48
56
  if (typeof wc.executeJavaScript !== 'function')
49
57
  return;
50
58
  const script = `window.__WB_SET_THEME && window.__WB_SET_THEME(${JSON.stringify(workbenchThemeScheme())})`;
@@ -61,6 +69,17 @@ export function createWorkbenchView(ctx, reconciler) {
61
69
  },
62
70
  });
63
71
  workbenchView = view;
72
+ // Paint the WCV surface the themed window background (themeBg(): dark
73
+ // #1a1a1a / light #fafafa) so the boot screen ("booting workbench…") and
74
+ // any layout gap never flash a mismatched white strip before the workbench
75
+ // CSS loads. The workbench is a plain WebContentsView (not a BrowserWindow),
76
+ // so the process-wide installThemeBackgroundSync() never reaches it — match
77
+ // the main window's own backgroundColor here, and re-sync on every theme
78
+ // flip below.
79
+ try {
80
+ view.setBackgroundColor(themeBg());
81
+ }
82
+ catch { /* view not ready for a bg yet */ }
64
83
  // Track devtools theme flips for the lifetime of the workbench view only —
65
84
  // registered here (not at construction) so test electron mocks that omit
66
85
  // `nativeTheme` and never open the editor stay unaffected. Removed in
@@ -76,9 +95,13 @@ export function createWorkbenchView(ctx, reconciler) {
76
95
  view.webContents.setWindowOpenHandler(({ url: target }) => handleWindowOpenExternal(target));
77
96
  }
78
97
  catch { /* stub may lack it */ }
79
- ctx.windows.mainWindow.contentView.addChildView(view);
80
98
  // Hand the workbench the current devtools scheme as a URL query so its very
81
99
  // first paint already matches (the runtime setter only exists post-init).
100
+ // The project identity deliberately does NOT ride this URL: the attach can
101
+ // happen before the open commits a session (the gate self-releases after
102
+ // ATTACH_HOLD_CAP_MS on a slow compile, and the release fires just ahead of
103
+ // the commit), so the page polls it from the COI server's `/__project`
104
+ // instead — see workbench-coi-server.ts.
82
105
  const loadUrl = `${url}index.html?theme=${workbenchThemeScheme()}`;
83
106
  await view.webContents.loadURL(loadUrl).catch((err) => {
84
107
  console.error('[workbench] attachWorkbench — loadURL failed', err);
@@ -140,17 +163,9 @@ export function createWorkbenchView(ctx, reconciler) {
140
163
  nativeTheme.removeListener('updated', pushWorkbenchTheme);
141
164
  workbenchThemeSyncBound = false;
142
165
  }
143
- destroyChildView(ctx.windows.mainWindow, workbenchView);
166
+ reconciler.destroyView(VIEW_ID.workbench, workbenchView);
144
167
  workbenchView = null;
145
- if (attachHeld) {
146
- // A held detach is a project-switch teardown: the renderer published the
147
- // incoming project's placement before the open started, so that desired
148
- // is the ONLY thing the release replay can rebuild the view from — keep
149
- // it (gateHidden hides it while held) and just forget the destroyed
150
- // instance so the rebuilt view is treated as a fresh attach.
151
- reconciler.forgetActual(VIEW_ID.workbench);
152
- }
153
- else {
168
+ if (!attachHeld) {
154
169
  reconciler.deleteBaseDesired(VIEW_ID.workbench);
155
170
  }
156
171
  reconciler.reconcileNow();
@@ -232,14 +247,6 @@ export function createWorkbenchView(ctx, reconciler) {
232
247
  reconciler.registerView(VIEW_ID.workbench, {
233
248
  getView: () => workbenchView,
234
249
  gateHidden: () => !workbenchView && (!workbenchUrl || attachHeld),
235
- beforeAttach: () => {
236
- if (!workbenchView && workbenchUrl && !attachHeld) {
237
- // Lazy-load the workbench; attachWorkbench adds it to the contentView.
238
- void attachWorkbench(workbenchUrl);
239
- return true;
240
- }
241
- return false;
242
- },
243
250
  ensureLazy: (desired) => {
244
251
  if (desired?.placement.visible && !workbenchView && workbenchUrl && !attachHeld)
245
252
  void attachWorkbench(workbenchUrl);
@@ -21,6 +21,17 @@ export interface WorkbenchCoiServerOptions {
21
21
  * for none (built-in `wx*` associations only).
22
22
  */
23
23
  getFileTypes?: () => unknown;
24
+ /**
25
+ * Reads the active project's identity — `appId` (null until the open commits
26
+ * a session) plus its root path — served at `/__project` as the workspace id
27
+ * the editor names its VS Code workspace after. Read per-request, because the
28
+ * editor page can load BEFORE the project commits (see `/__project` below).
29
+ * Omit when the host has no project identity to offer.
30
+ */
31
+ getProjectIdentity?: () => {
32
+ appId: string | null;
33
+ projectPath: string;
34
+ };
24
35
  }
25
36
  export declare function startWorkbenchCoiServer(options: WorkbenchCoiServerOptions): Promise<WorkbenchCoiServer>;
26
37
  //# sourceMappingURL=workbench-coi-server.d.ts.map
@@ -39,6 +39,7 @@ import path from 'node:path';
39
39
  import { readFileBufferWithin, writeFileWithin, statWithin, readdirWithin, mkdirWithin, deleteWithin, renameWithin, SKIP_DIRS, } from '../ipc/project-fs.js';
40
40
  import { handleFsWatchRequest } from './fs-watch-sse.js';
41
41
  import { jsonRes } from './http-json.js';
42
+ import { miniappPartitionKey } from './views/miniapp-partition.js';
42
43
  /** Max `/__fs/write` body; enough to save large source files without OOM. */
43
44
  const MAX_FS_WRITE_BYTES = 32 * 1024 * 1024;
44
45
  const MIME = {
@@ -337,6 +338,21 @@ async function readContributedExtensions(extensionsDir) {
337
338
  }
338
339
  return out;
339
340
  }
341
+ /**
342
+ * The `/__project` workspace id: the miniapp partition key of the active
343
+ * project, or null when there is no committed project identity yet.
344
+ *
345
+ * Reuses `miniappPartitionKey` (the same derivation the per-project Electron
346
+ * session partition uses) so the editor's storage bucket and the runtime's
347
+ * storage partition are named off the same project identity: the `appId`,
348
+ * disambiguated by the project path because `appId` comes from the manifest and
349
+ * two checkouts can declare the same one.
350
+ */
351
+ function workspaceIdOf(identity) {
352
+ if (!identity?.appId)
353
+ return null;
354
+ return miniappPartitionKey(identity.appId, identity.projectPath || null);
355
+ }
340
356
  export async function startWorkbenchCoiServer(options) {
341
357
  const root = path.resolve(options.rootDir);
342
358
  const contribRoot = options.extensionsDir ? path.resolve(options.extensionsDir) : null;
@@ -362,6 +378,22 @@ export async function startWorkbenchCoiServer(options) {
362
378
  jsonRes(res, 200, options.getFileTypes?.() ?? {});
363
379
  return;
364
380
  }
381
+ // Identity of the active project, as the id the editor names its VS Code
382
+ // workspace after. Every project is mirrored at the same constant
383
+ // `file:///workspace` root, and VS Code keys WORKSPACE-scope storage (open
384
+ // editors, view state, explorer expansion) off the workspace identity — so
385
+ // without a distinct id per project, one project's tabs are restored into
386
+ // the next, stranded behind "the file was not found".
387
+ //
388
+ // Served here rather than baked into the editor's load URL because the
389
+ // editor view can attach BEFORE the open commits its session (its attach
390
+ // gate self-releases on a slow compile), when there is no identity to hand
391
+ // it; `null` then tells the page to keep polling, the same way its disk
392
+ // mirror already polls `/__fs` for the project root to appear.
393
+ if (url.pathname === '/__project') {
394
+ jsonRes(res, 200, { workspaceId: workspaceIdOf(options.getProjectIdentity?.()) });
395
+ return;
396
+ }
365
397
  // Host-contributed web extensions: manifest + static files (same-origin so
366
398
  // they satisfy the workbench's COEP require-corp).
367
399
  if (url.pathname.startsWith('/__contrib/')) {
@@ -1,15 +1,28 @@
1
1
  /**
2
- * Decide and emit the post-rebuild status for one watcher rebuild. Style-only
3
- * rebuild fast path: hot-swap the render-host stylesheets in place instead of
4
- * respawning the DeviceShellpage stack / form state / scroll / focus survive
5
- * (no jitter, no focus steal); `hotReload: false` keeps the renderer from bumping
6
- * its reload token (the respawn signal). Falls through to the full reload when
7
- * the swap can't run (no live render guest yet) so an edit is never dropped.
8
- * `getProjectPages` never throws; empty pages are withheld so the renderer keeps
9
- * its previous launch dropdown.
2
+ * Decide and emit the post-rebuild status for one completed rebuild.
3
+ *
4
+ * Explicit rebuild (`info.explicit`the 重新编译 button, via
5
+ * `session.rebuild()`): the renderer's own relaunch drives a hard re-attach
6
+ * once the rebuild IPC resolves, and that re-attach is the run's ONLY
7
+ * reflection. Emitting `hotReload: true` here as well would race a soft
8
+ * reload against it the two arrive through different channels with no
9
+ * ordering guarantee, so the soft reload can land AFTER the hard re-attach
10
+ * and drag the simulator back to the drifted page. The style fast path is a
11
+ * soft-update path too and is skipped for the same reason.
12
+ *
13
+ * Watcher rebuild (explicit absent/false) — style-only fast path: hot-swap the
14
+ * render-host stylesheets in place instead of respawning the DeviceShell —
15
+ * page stack / form state / scroll / focus survive (no jitter, no focus
16
+ * steal); `hotReload: false` keeps the renderer from bumping its reload token
17
+ * (the respawn signal). Falls through to the full reload when the swap can't
18
+ * run (no live render guest yet) so an edit is never dropped.
19
+ *
20
+ * `getProjectPages` never throws; empty pages are withheld so the renderer
21
+ * keeps its previous launch dropdown.
10
22
  */
11
23
  export declare function reportRebuildStatus(info: {
12
24
  styleOnly?: boolean;
25
+ explicit?: boolean;
13
26
  } | undefined, deps: {
14
27
  projectPath: string;
15
28
  repo: {
@@ -1,16 +1,32 @@
1
1
  /**
2
- * Decide and emit the post-rebuild status for one watcher rebuild. Style-only
3
- * rebuild fast path: hot-swap the render-host stylesheets in place instead of
4
- * respawning the DeviceShellpage stack / form state / scroll / focus survive
5
- * (no jitter, no focus steal); `hotReload: false` keeps the renderer from bumping
6
- * its reload token (the respawn signal). Falls through to the full reload when
7
- * the swap can't run (no live render guest yet) so an edit is never dropped.
8
- * `getProjectPages` never throws; empty pages are withheld so the renderer keeps
9
- * its previous launch dropdown.
2
+ * Decide and emit the post-rebuild status for one completed rebuild.
3
+ *
4
+ * Explicit rebuild (`info.explicit`the 重新编译 button, via
5
+ * `session.rebuild()`): the renderer's own relaunch drives a hard re-attach
6
+ * once the rebuild IPC resolves, and that re-attach is the run's ONLY
7
+ * reflection. Emitting `hotReload: true` here as well would race a soft
8
+ * reload against it the two arrive through different channels with no
9
+ * ordering guarantee, so the soft reload can land AFTER the hard re-attach
10
+ * and drag the simulator back to the drifted page. The style fast path is a
11
+ * soft-update path too and is skipped for the same reason.
12
+ *
13
+ * Watcher rebuild (explicit absent/false) — style-only fast path: hot-swap the
14
+ * render-host stylesheets in place instead of respawning the DeviceShell —
15
+ * page stack / form state / scroll / focus survive (no jitter, no focus
16
+ * steal); `hotReload: false` keeps the renderer from bumping its reload token
17
+ * (the respawn signal). Falls through to the full reload when the swap can't
18
+ * run (no live render guest yet) so an edit is never dropped.
19
+ *
20
+ * `getProjectPages` never throws; empty pages are withheld so the renderer
21
+ * keeps its previous launch dropdown.
10
22
  */
11
23
  export function reportRebuildStatus(info, deps) {
12
24
  const { pages } = deps.repo.getProjectPages(deps.projectPath);
13
25
  const pageList = pages.length ? pages : undefined;
26
+ if (info?.explicit) {
27
+ deps.sendStatus('ready', '编译完成', false, pageList);
28
+ return;
29
+ }
14
30
  if (info?.styleOnly && deps.autoReload && deps.refreshSimulatorStyles()) {
15
31
  deps.sendStatus('ready', '样式已热更新', false, pageList);
16
32
  return;
@@ -8,7 +8,7 @@ import type { SenderPolicy } from './ipc-registry.js';
8
8
  * - the main window's renderer
9
9
  * - the optional workbench settings BrowserWindow's renderer (when open)
10
10
  * - the settings overlay view (when open)
11
- * - the popover overlay view (when open)
11
+ * - the popover and tooltip overlay views (when open)
12
12
  *
13
13
  * The simulator webview is intentionally NOT on this list. Anything it
14
14
  * needs from main (currently just the custom-apis bridge — see
@@ -6,7 +6,7 @@
6
6
  * - the main window's renderer
7
7
  * - the optional workbench settings BrowserWindow's renderer (when open)
8
8
  * - the settings overlay view (when open)
9
- * - the popover overlay view (when open)
9
+ * - the popover and tooltip overlay views (when open)
10
10
  *
11
11
  * The simulator webview is intentionally NOT on this list. Anything it
12
12
  * needs from main (currently just the custom-apis bridge — see
@@ -49,6 +49,11 @@ export function createWorkbenchSenderPolicy(ctx) {
49
49
  const popoverViewId = ctx.views.getPopoverWebContentsId();
50
50
  if (popoverViewId != null && sender.id === popoverViewId)
51
51
  return true;
52
+ // Tooltip overlay view. It loads only the bundled local renderer and needs
53
+ // the shared overlay-ready + intrinsic-measurement channels.
54
+ const tooltipViewId = ctx.views.getTooltipWebContentsId();
55
+ if (tooltipViewId != null && sender.id === tooltipViewId)
56
+ return true;
52
57
  // The host-toolbar overlay is DELIBERATELY NOT trusted here. The host loads
53
58
  // arbitrary content into it, so granting it the global white-list would open
54
59
  // all ~72 IpcRegistry channels to that content. Its one channel (the reverse
@@ -14,8 +14,13 @@ export declare function themeBg(): string;
14
14
  * the desk is a neutral grey kept a touch off the window so the light-colored
15
15
  * phone keeps contrast against it in BOTH schemes.
16
16
  *
17
- * Dark: hsl(0 0% 7%) ≈ #121212 (the long-standing desk color unchanged)
18
- * Light: hsl(0 0% 91%) #e8e8e8 (neutral grey; the white phone reads on it)
17
+ * Dark: #282828 | Light: #f7f7f9 both match the renderer's --color-surface-2
18
+ * chrome tone (design.css). Dark is devtools-owned rather than a Cornetto
19
+ * --qd-muted alias: pixel-verified against Figma node 66:1729 at rgb(40,40,40),
20
+ * which doesn't match any Cornetto dark token (--qd-muted is #383838, off by
21
+ * 16 units — confirmed too light against the app's own dark-mode screenshots).
22
+ * Light's #f7f7f9 IS an exact --qd-muted match (verified against node 25:5),
23
+ * so only dark diverges from the Cornetto alias.
19
24
  *
20
25
  * MUST stay equal to the renderer's `--color-sim-bg` (design.css) and the
21
26
  * simulator page's `.device-shell-root` background (device-shell.css): the WCV,
@@ -18,8 +18,13 @@ export function themeBg() {
18
18
  * the desk is a neutral grey kept a touch off the window so the light-colored
19
19
  * phone keeps contrast against it in BOTH schemes.
20
20
  *
21
- * Dark: hsl(0 0% 7%) ≈ #121212 (the long-standing desk color unchanged)
22
- * Light: hsl(0 0% 91%) #e8e8e8 (neutral grey; the white phone reads on it)
21
+ * Dark: #282828 | Light: #f7f7f9 both match the renderer's --color-surface-2
22
+ * chrome tone (design.css). Dark is devtools-owned rather than a Cornetto
23
+ * --qd-muted alias: pixel-verified against Figma node 66:1729 at rgb(40,40,40),
24
+ * which doesn't match any Cornetto dark token (--qd-muted is #383838, off by
25
+ * 16 units — confirmed too light against the app's own dark-mode screenshots).
26
+ * Light's #f7f7f9 IS an exact --qd-muted match (verified against node 25:5),
27
+ * so only dark diverges from the Cornetto alias.
23
28
  *
24
29
  * MUST stay equal to the renderer's `--color-sim-bg` (design.css) and the
25
30
  * simulator page's `.device-shell-root` background (device-shell.css): the WCV,
@@ -27,7 +32,7 @@ export function themeBg() {
27
32
  * never flashes a mismatched strip. Update all three together.
28
33
  */
29
34
  export function simDeskBg() {
30
- return nativeTheme.shouldUseDarkColors ? '#121212' : '#e8e8e8';
35
+ return nativeTheme.shouldUseDarkColors ? '#282828' : '#f7f7f9';
31
36
  }
32
37
  /**
33
38
  * Install a single process-wide listener that keeps every window's native
@@ -1 +1 @@
1
- :root{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;font-size:clamp(.4px,.13333vw,2px)}*{-webkit-tap-highlight-color:transparent;vertical-align:baseline;scrollbar-width:none;outline:none;margin:0;padding:0}::-webkit-scrollbar{width:0;height:0;display:none}img{vertical-align:top;border:none}em,i{font-style:normal}ol,ul{list-style:none}button,h1,h2,h3,h4,h5,h6,input,select{font-family:inherit;font-size:100%}table{border-collapse:collapse;border-spacing:0}a,a:visited{text-decoration:none}body{-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch;font-family:HarmonyOSHans-Light,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:normal;overflow:hidden auto}.dd-page{box-sizing:border-box;min-height:100vh}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url(data:application/octet-stream;base64,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)format("truetype")}.dd-button{box-sizing:border-box;text-align:center;-webkit-tap-highlight-color:transparent;color:#000;background-color:#f8f8f8;border-radius:5px;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;font-size:18px;line-height:2.55556;text-decoration:none;display:block;position:relative;overflow:hidden}.dd-button[hidden]{display:none}.dd-button:after{content:" ";transform-origin:0 0;box-sizing:border-box;border:1px solid #0003;border-radius:10px;width:200%;height:200%;position:absolute;top:0;left:0;transform:scale(.5)}.dd-button[native]{padding-left:0;padding-right:0}.dd-button[native] .dd-button-cover-view-wrapper{border:inherit;border-color:inherit;border-radius:inherit;background-color:inherit}.dd-button[native] .dd-button-cover-view-inner{padding-left:14px;padding-right:14px}.dd-button .dd-cover-view{line-height:inherit;white-space:inherit}.dd-button--default{color:#000;background-color:#f8f8f8}.dd-button--primary{color:#fff;background-color:#1aad19}.dd-button--warn{color:#fff;background-color:#e64340}.dd-button--disabled{color:#fff9}.dd-button--disabled.dd-button--default{color:#0000004d;background-color:#f7f7f7}.dd-button--disabled.dd-button--primary{background-color:#9ed99d}.dd-button--disabled.dd-button--warn{background-color:#ec8b89}.dd-button--primary.dd-button--plain{color:#1aad19;background-color:#0000;border:1px solid #1aad19}.dd-button--primary.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--primary.dd-button--plain:after{border-width:0}.dd-button--default.dd-button--plain{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button--default.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--default.dd-button--plain:after{border-width:0}.dd-button--plain{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--plain:after{border-width:0}.dd-button--plain[native] .dd-button-cover-view-inner{padding:0}.dd-button--warn.dd-button--plain{color:#e64340;background-color:#0000;border:1px solid #e64340}.dd-button--warn.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--warn.dd-button--plain:after{border-width:0}.dd-button--mini{padding:0 1.34em;font-size:13px;line-height:2.3;display:inline-block}.dd-button--mini[native]{padding:0}.dd-button--mini[native] .dd-button-cover-view-inner{padding:0 1.34em}.dd-button--loading:before{content:" ";vertical-align:middle;background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iciIgd2lkdGg9JzEyMHB4JyBoZWlnaHQ9JzEyMHB4JyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJub25lIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjRTlFOUU5JwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSc0Ni41JyB5PSc0MCcgd2lkdGg9JzcnIGhlaWdodD0nMjAnIHJ4PSc1JyByeT0nNScgZmlsbD0nIzk4OTY5NycKICAgICAgICAgIHRyYW5zZm9ybT0ncm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApJz4KICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0naW5kZWZpbml0ZScvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyM5Qjk5OUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjQTNBMUEyJwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNBQkE5QUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCMkIyQjInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCQUI4QjknCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDMkMwQzEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDQkNCQ0InCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEMkQyRDInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEQURBREEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNFMkUyRTInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0Pgo8L3N2Zz4=) 0 0/100% no-repeat;width:18px;height:18px;animation:1s steps(12,end) infinite dd-button-loading-animate;display:inline-block}.dd-button--loading.dd-button--primary{color:#fff9;background-color:#179b16}.dd-button--loading.dd-button--primary.dd-button--plain{color:#1aad19;background-color:#0000}.dd-button--loading.dd-button--default{color:#0009;background-color:#dedede}.dd-button--loading.dd-button--default.dd-button--plain{color:#353535;background-color:#0000}.dd-button--loading.dd-button--warn{color:#fff9;background-color:#ce3c39}.dd-button--loading.dd-button--warn.dd-button--plain{color:#e64340;background-color:#0000}.dd-button--loading[native]:before{content:none}@keyframes dd-button-loading-animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-hover{color:#0009;background-color:#dedede}.button-hover.dd-button--plain{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover.dd-button--primary{color:#fff9;background-color:#179b16}.button-hover.dd-button--primary.dd-button--plain{color:#1aad1999;background-color:#0000;border-color:#1aad1999}.button-hover.dd-button--default{color:#0009;background-color:#dedede}.button-hover.dd-button--default.dd-button--plain{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover.dd-button--warn{color:#fff9;background-color:#ce3c39}.button-hover.dd-button--warn.dd-button--plain{color:#e6434099;background-color:#0000;border-color:#e6434099}.dd-camera{width:100%;display:block;position:relative;overflow:hidden}.dd-camera[hidden]{display:none}.dd-camera-native,.dd-camera-unavailable,.dd-camera-slot{width:100%;height:100%;position:absolute;inset:0}.dd-camera-container{-webkit-overflow-scrolling:touch;overflow:scroll}.dd-camera-container>div{width:101%;height:101%}.dd-camera-unavailable{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-camera-slot{pointer-events:none}.dd-camera-slot *{pointer-events:auto}.dd-camera-native[data-dimina-native-type=native\/camera]{opacity:0;background:0 0!important}.dd-canvas{width:300px;height:150px;display:block;position:relative}.dd-canvas>canvas{width:100%;height:100%;position:absolute;top:0;left:0}.dd-canvas[hidden]{display:none}.dd-canvas-slot{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.dd-canvas-slot *{pointer-events:auto}.dd-checkbox{display:inline-block}.dd-checkbox[hidden]{display:none}.dd-checkbox-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-checkbox-input{appearance:none;text-indent:0;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-checkbox-input-checked{color:#09bb07}.dd-checkbox-input-checked:before{content:"";font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-group{display:block}.dd-checkbox-group[hidden]{display:none}.dd-image{background-repeat:no-repeat;width:320px;height:240px;display:inline-block;overflow:hidden}.dd-image img{width:inherit;height:inherit;pointer-events:none}.dd-image img[src=""],.dd-image img:not([src]){opacity:0}.dd-image[hidden]{display:none}.dd-image-preloader{opacity:0}.dd-image-scale{object-fit:fill;width:100%;height:100%}.dd-image-aspect{object-fit:contain;width:100%;height:100%}.dd-image-fill{object-fit:cover;width:100%;height:100%}.dd-image-width{width:100%;height:auto}.dd-image-height{width:auto;height:100%}.dd-image-top{object-fit:none;object-position:top;width:100%;height:100%}.dd-image-bottom{object-fit:none;object-position:bottom;width:100%;height:100%}.dd-image-center{object-fit:none;object-position:center;width:100%;height:100%}.dd-image-left{object-fit:none;object-position:left;width:100%;height:100%}.dd-image-right{object-fit:none;object-position:right;width:100%;height:100%}.dd-image-top-left{object-fit:none;object-position:top left;width:100%;height:100%}.dd-image-top-right{object-fit:none;object-position:top right;width:100%;height:100%}.dd-image-bottom-left{object-fit:none;object-position:bottom left;width:100%;height:100%}.dd-image-bottom-right{object-fit:none;object-position:bottom right;width:100%;height:100%}.dd-view{display:block}.dd-view[hidden]{display:none}.dd-icon{font:14px/1 weui;font-size:var(--c819827a);color:var(--v3cd4ae3e) .dd-icon [hidden];color-display:none;display:inline-block}[class^=dd-icon-]:before,[class*=dd-icon-]:before{margin:0}.dd-icon-success{color:#09bb07}.dd-icon-success:before{content:""}.dd-icon-info{color:#10aeff}.dd-icon-info:before{content:""}.dd-icon-warn{color:#f76260}.dd-icon-warn:before{content:""}.dd-icon-waiting{color:#10aeff}.dd-icon-waiting:before{content:""}.dd-icon-safe_success{color:#09bb07}.dd-icon-safe_success:before{content:""}.dd-icon-safe_warn{color:#ffbe00}.dd-icon-safe_warn:before{content:""}.dd-icon-success_circle{color:#09bb07}.dd-icon-success_circle:before{content:""}.dd-icon-success_no_circle{color:#09bb07}.dd-icon-success_no_circle:before{content:""}.dd-icon-waiting_circle{color:#10aeff}.dd-icon-waiting_circle:before{content:""}.dd-icon-circle{color:#c9c9c9}.dd-icon-circle:before{content:""}.dd-icon-download{color:#09bb07}.dd-icon-download:before{content:""}.dd-icon-info_circle{color:#09bb07}.dd-icon-info_circle:before{content:""}.dd-icon-cancel{color:#f43530}.dd-icon-cancel:before{content:""}.dd-icon-search{color:#b2b2b2}.dd-icon-search:before{content:""}.dd-icon-clear{color:#b2b2b2}.dd-icon-clear:before{content:""}[class^=dd-icon-]:before,[class*=dd-icon-]:before{box-sizing:border-box}.dd-input-wrapper{width:100%;height:100%;position:relative}.dd-input{appearance:none;width:100%;font-family:inherit;font-size:inherit;color:inherit;height:inherit;text-align:inherit;overflow:inherit;white-space:inherit;text-overflow:inherit;background-color:#0000;border:none;outline:0;margin:0;padding:0;display:block}.dd-input::-webkit-outer-spin-button{appearance:none;margin:0}.dd-input::-webkit-inner-spin-button{appearance:none;margin:0}.dd-input-placeholder{pointer-events:none;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0}.dd-input-placeholder.input-placeholder{color:#0000004d}.dd-input-disabled{opacity:.5}.dd-keyboard-accessory{overflow:auto}.dd-map{width:300px;height:150px;display:block;position:relative;overflow:hidden}.dd-map[hidden]{display:none}.dd-map-native,.dd-map-desktop,.dd-map-slot{width:100%;height:100%;position:absolute;inset:0}.dd-map-container{-webkit-overflow-scrolling:touch;overflow:scroll}.dd-map-container>div{width:101%;height:101%}.dd-map-desktop{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-map-slot{pointer-events:none}.dd-map-slot *{pointer-events:auto}.dd-map-native[data-dimina-native-type=native\/map]{opacity:0;background:0 0!important}.dd-movable-area{width:10px;height:10px;display:block;position:relative}.dd-movable-area[hidden]{display:none}.dd-movable-view{visibility:hidden;cursor:grab;width:10px;height:10px;display:inline-block;position:absolute;top:0;left:0}.dd-movable-view.direction-horizontal{touch-action:pan-y}.dd-movable-view.direction-vertical{touch-action:pan-x}.dd-movable-view.direction-all{touch-action:none}.dd-movable-view.direction-none{touch-action:auto}.dd-movable-view .dd-movable-view-content{all:inherit;visibility:visible;-webkit-overflow-scrolling:touch;transition-property:transform;transition-duration:var(--duration);transform-origin:50%;will-change:transform;backface-visibility:hidden;transition-timing-function:ease-out;top:0;left:0}.dd-movable-view[hidden]{display:none}.dd-navigator{width:auto;height:auto;display:block}.dd-navigator.navigator-hover{opacity:.7;background-color:#0000001a}.dd-navigator[hidden],.dd-open-data[hidden]{display:none}.dd-open-data-avatar{width:100%;height:100%;display:block}.dd-picker-column[data-v-61501610]{flex:1;height:220px;position:relative;overflow:hidden}.dd-picker-column .dd-picker-column-mask[data-v-61501610]{pointer-events:none;z-index:2;background:linear-gradient(#ffffffe6 0%,#fff6 40%,#fff0 50%,#fff6 60%,#ffffffe6 100%);position:absolute;inset:0}.dd-picker-column .dd-picker-column-indicator[data-v-61501610]{pointer-events:none;z-index:1;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;height:44px;margin-top:-22px;position:absolute;top:50%;left:0;right:0}.dd-picker-column .dd-picker-column-content[data-v-61501610]{cursor:grab;padding-top:88px;padding-bottom:88px;position:relative}.dd-picker-column .dd-picker-column-content[data-v-61501610]:active{cursor:grabbing}.dd-picker-column .dd-picker-column-item[data-v-61501610]{text-align:center;color:#333;height:44px;font-size:16px;line-height:44px;transition:color .3s}.dd-picker-column .dd-picker-column-item.dd-picker-column-item-selected[data-v-61501610]{color:#000;font-weight:500}.dd-picker{cursor:pointer;display:block}.dd-picker[hidden]{display:none}.dd-picker-overlay{z-index:1000;background-color:#0009;align-items:flex-end;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.dd-picker-container{background-color:#fff;border-radius:12px 12px 0 0;width:100%;max-height:80vh;animation:.3s slideUp}.dd-picker-header{background-color:#fafafa;border-bottom:1px solid #e5e5e5;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dd-picker-action{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:16px;transition:background-color .2s}.dd-picker-action:hover{background-color:#0000000d}.dd-picker-cancel{color:#999}.dd-picker-confirm{color:#09bb07;font-weight:500}.dd-picker-title{color:#333;font-size:16px;font-weight:500}.dd-picker-body{background-color:#fff;padding:20px 0}.dd-picker-columns{align-items:center;gap:0;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dd-picker-view{display:flex;position:relative;overflow:hidden}.dd-picker-view[hidden]{display:none}.dd-picker-view-column{z-index:0;flex:1;height:100%;position:relative;overflow:hidden}.dd-picker-view-column .dd-picker__mask{transform:translateZ(0)}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__mask{background-color:#0000;background-image:linear-gradient(#fffffff2,#fff9),linear-gradient(#fff9,#fffffff2);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 102px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;height:100%;margin:0 auto;top:0}.dd-picker-view-column .dd-picker__indicator{top:102px}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;pointer-events:none;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__content{width:100%;transition:transform var(--duration) ease-out 0s;cursor:grab;position:absolute;top:0;left:0}.dd-picker-view-column .dd-picker__indicator:before{transform-origin:0 0;border-top:1px solid #e5e5e5;top:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after{transform-origin:0 100%;border-bottom:1px solid #e5e5e5;bottom:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after,.dd-picker-view-column .dd-picker__indicator:before{content:" ";color:#e5e5e5;height:1px;position:absolute;left:0;right:0}.dd-progress{align-items:center;display:flex}.dd-progress[hidden]{display:none}.dd-progress .dd-progress-bar{flex:1;overflow:hidden}.dd-progress .dd-progress-inner-bar{width:0;height:100%}.dd-progress .dd-progress-info{min-width:2em;margin-top:0;margin-bottom:0;margin-left:15px;font-size:16px}.dd-radio{display:inline-block}.dd-radio[hidden]{display:none}.dd-radio-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-radio-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:50%;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-radio-input-checked{background-color:#09bb07;border-color:#09bb07}.dd-radio-input-checked:before{content:"";color:#fff;font:18px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-radio-input-disabled{background-color:#e1e1e1;border-color:#d1d1d1}.dd-radio-input-disabled:before{color:#adadad}.dd-radio-group{display:block}.dd-radio-group[hidden]{display:none}.dd-rich-text{-webkit-user-select:text;user-select:text}.dd-rich-text[hidden],.dd-root-portal-host,.dd-root-portal-content[hidden]{display:none}.dd-scroll-view{width:100%;height:inherit;-webkit-overflow-scrolling:touch;max-height:inherit;position:relative;overflow:auto}.dd-scroll-view[hidden]{display:none}.dd-scroll-view.scroll-x{overflow:auto hidden!important}.dd-scroll-view.scroll-y{overflow:hidden auto!important}.dd-scroll-view.scroll-x.scroll-y{overflow:auto}.dd-scroll-view.scroll-disabled{overflow:hidden!important}.dd-scroll-view.hide-scrollbar{scroll-behavior:smooth;position:relative}.dd-scroll-view.hide-scrollbar::-webkit-scrollbar{width:0;height:0}.dd-slider{margin:10px 18px;padding:0;display:block}.dd-slider[hidden]{display:none}.dd-slider-wrapper{align-items:center;min-height:16px;display:flex}.dd-slider-tap-area{flex:1;padding:8px 0}.dd-slider-handle-wrapper{z-index:0;cursor:pointer;-webkit-tap-highlight-color:transparent;background-color:#e9e9e9;border-radius:5px;height:2px;transition:background-color .3s;position:relative}.dd-slider-track{background-color:#1aad19;border-radius:6px;height:100%;transition:background-color .3s}.dd-slider-handle,.dd-slider-thumb{cursor:grab;border-radius:50%;transition:border-color .3s;position:absolute;top:50%;left:0%}.dd-slider-handle{z-index:3;background-color:#0000;width:28px;height:28px;margin-top:-14px;margin-left:-14px}.dd-slider-thumb{z-index:2;background-color:#fff;width:28px;height:28px;margin-top:-14px;margin-left:-14px;box-shadow:0 0 4px #0003}.dd-slider-step{z-index:1;background:0 0;width:100%;height:2px;position:absolute}.dd-slider-value{color:#888;text-align:center;margin-left:1em;font-size:14px}.dd-slider-disabled .dd-slider-track{background-color:#ccc}.dd-slider-disabled .dd-slider-thumb{background-color:#fff;border-color:#ccc}.dd-swiper{height:150px;display:block}.dd-swiper[hidden]{display:none}.dd-swiper .dd-swiper-wrapper{cursor:grab;width:100%;height:100%;position:relative;overflow:hidden}.dd-swiper .dd-swiper-slides{position:absolute;inset:0}.dd-swiper .dd-swiper-slide-frame{will-change:transform;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.dd-swiper.dd-swiper-skip-hidden .dd-swiper-item{content-visibility:auto;contain-intrinsic-size:100% 100%}.dd-swiper .dd-swiper-dots{font-size:0;position:absolute}.dd-swiper .dd-swiper-dots-horizontal{text-align:center;white-space:nowrap;bottom:10px;left:50%;transform:translate(-50%)}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot{margin-right:8px}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot:last-child{margin-right:0}.dd-swiper .dd-swiper-dots-vertical{text-align:right;top:50%;right:10px;transform:translateY(-50%)}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot{margin-bottom:9px;display:block}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot:last-child{margin-bottom:0}.dd-swiper .dd-swiper-dot{background:#0000004d;border-radius:50%;width:8px;height:8px;transition-property:background-color;transition-timing-function:ease;display:inline-block}.dd-swiper .dd-swiper-dot-active{background-color:#000}.dd-swiper-item{will-change:transform;flex:0 0 100%;width:100%;display:block}.dd-swiper-item[hidden]{display:none}.dd-switch-input{appearance:none;box-sizing:border-box;background-color:#dfdfdf;border:1px solid #dfdfdf;border-radius:16px;outline:0;width:52px;height:32px;margin-right:5px;transition:background-color .1s,border .1s;display:inline-block;position:relative}.dd-switch-input:before{content:" ";background-color:#fdfdfd;border-radius:15px;width:50px;height:30px;transition:transform .3s;position:absolute;top:0;left:0}.dd-switch-input:after{content:" ";background-color:#fff;border-radius:15px;width:30px;height:30px;transition:transform .3s;position:absolute;top:0;left:0;box-shadow:0 1px 3px #0006}.dd-switch-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-switch-input-checked:before{transform:scale(0)}.dd-switch-input-checked:after{transform:translate(20px)}.dd-switch-input-disabled{opacity:.3}.dd-checkbox-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;display:inline-block;position:relative}.dd-checkbox-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-checkbox-input-checked .dd-checkbox-input-inner:before{content:"";color:inherit;font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-input-disabled{background-color:#e1e1e1}.dd-checkbox-input-disabled:before{color:#adadad}.dd-text{-webkit-user-select:none;user-select:none;display:inline}.dd-text[hidden]{display:none}.dd-text-selectable{cursor:auto;-webkit-user-select:text;user-select:text;display:inline-block}.dd-textarea-wrapper{width:100%;height:100%;position:relative}.dd-textarea{resize:none;width:100%;height:100%;font-family:inherit;line-height:1.2;font-size:inherit;color:inherit;background-color:#0000;border:none;outline:none;padding:0;display:block;position:relative}.dd-textarea::-webkit-scrollbar{display:none}.dd-textarea[hidden]{display:none}.dd-textarea-placeholder{padding:inherit;pointer-events:none;position:absolute;top:0;left:0}.dd-textarea-placeholder.textarea-placeholder{color:#0000004d}.dd-textarea-disabled{opacity:.5}.dd-video{z-index:0;width:300px;height:225px;line-height:0;display:inline-block;position:relative;overflow:hidden}.dd-video[hidden]{display:none}.dd-video .dd-video-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-video[data-dimina-native-type=native\/video]{opacity:0;background:0 0!important}.dd-video-placeholder{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-web-view{width:100vw;height:100vh;display:block}.dd-web-view[hidden]{display:none}.dd-web-view-pc{border:0;width:100%;height:100%;position:absolute;top:0;left:0}
1
+ :root{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;font-size:clamp(.4px,.13333vw,2px)}*{-webkit-tap-highlight-color:transparent;vertical-align:baseline;scrollbar-width:none;outline:none;margin:0;padding:0}::-webkit-scrollbar{width:0;height:0;display:none}img{vertical-align:top;border:none}em,i{font-style:normal}ol,ul{list-style:none}button,h1,h2,h3,h4,h5,h6,input,select{font-family:inherit;font-size:100%}table{border-collapse:collapse;border-spacing:0}a,a:visited{text-decoration:none}body{-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch;font-family:HarmonyOSHans-Light,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:normal;overflow:hidden auto}.dd-page{box-sizing:border-box;min-height:100vh}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url(data:application/octet-stream;base64,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)format("truetype")}.dd-button{box-sizing:border-box;text-align:center;-webkit-tap-highlight-color:transparent;color:#000;background-color:#f8f8f8;border-radius:5px;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;font-size:18px;line-height:2.55556;text-decoration:none;display:block;position:relative;overflow:hidden}.dd-button[hidden]{display:none}.dd-button:after{content:" ";transform-origin:0 0;box-sizing:border-box;border:1px solid #0003;border-radius:10px;width:200%;height:200%;position:absolute;top:0;left:0;transform:scale(.5)}.dd-button[native]{padding-left:0;padding-right:0}.dd-button[native] .dd-button-cover-view-wrapper{border:inherit;border-color:inherit;border-radius:inherit;background-color:inherit}.dd-button[native] .dd-button-cover-view-inner{padding-left:14px;padding-right:14px}.dd-button .dd-cover-view{line-height:inherit;white-space:inherit}.dd-button--default{color:#000;background-color:#f8f8f8}.dd-button--primary{color:#fff;background-color:#1aad19}.dd-button--warn{color:#fff;background-color:#e64340}.dd-button--disabled{color:#fff9}.dd-button--disabled.dd-button--default{color:#0000004d;background-color:#f7f7f7}.dd-button--disabled.dd-button--primary{background-color:#9ed99d}.dd-button--disabled.dd-button--warn{background-color:#ec8b89}.dd-button--primary.dd-button--plain{color:#1aad19;background-color:#0000;border:1px solid #1aad19}.dd-button--primary.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--primary.dd-button--plain:after{border-width:0}.dd-button--default.dd-button--plain{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button--default.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--default.dd-button--plain:after{border-width:0}.dd-button--plain{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--plain:after{border-width:0}.dd-button--plain[native] .dd-button-cover-view-inner{padding:0}.dd-button--warn.dd-button--plain{color:#e64340;background-color:#0000;border:1px solid #e64340}.dd-button--warn.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--warn.dd-button--plain:after{border-width:0}.dd-button--mini{padding:0 1.34em;font-size:13px;line-height:2.3;display:inline-block}.dd-button--mini[native]{padding:0}.dd-button--mini[native] .dd-button-cover-view-inner{padding:0 1.34em}.dd-button--loading:before{content:" ";vertical-align:middle;background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iciIgd2lkdGg9JzEyMHB4JyBoZWlnaHQ9JzEyMHB4JyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJub25lIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjRTlFOUU5JwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSc0Ni41JyB5PSc0MCcgd2lkdGg9JzcnIGhlaWdodD0nMjAnIHJ4PSc1JyByeT0nNScgZmlsbD0nIzk4OTY5NycKICAgICAgICAgIHRyYW5zZm9ybT0ncm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApJz4KICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0naW5kZWZpbml0ZScvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyM5Qjk5OUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjQTNBMUEyJwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNBQkE5QUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCMkIyQjInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCQUI4QjknCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDMkMwQzEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDQkNCQ0InCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEMkQyRDInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEQURBREEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNFMkUyRTInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0Pgo8L3N2Zz4=) 0 0/100% no-repeat;width:18px;height:18px;animation:1s steps(12,end) infinite dd-button-loading-animate;display:inline-block}.dd-button--loading.dd-button--primary{color:#fff9;background-color:#179b16}.dd-button--loading.dd-button--primary.dd-button--plain{color:#1aad19;background-color:#0000}.dd-button--loading.dd-button--default{color:#0009;background-color:#dedede}.dd-button--loading.dd-button--default.dd-button--plain{color:#353535;background-color:#0000}.dd-button--loading.dd-button--warn{color:#fff9;background-color:#ce3c39}.dd-button--loading.dd-button--warn.dd-button--plain{color:#e64340;background-color:#0000}.dd-button--loading[native]:before{content:none}@keyframes dd-button-loading-animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-hover{color:#0009;background-color:#dedede}.button-hover.dd-button--plain{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover.dd-button--primary{color:#fff9;background-color:#179b16}.button-hover.dd-button--primary.dd-button--plain{color:#1aad1999;background-color:#0000;border-color:#1aad1999}.button-hover.dd-button--default{color:#0009;background-color:#dedede}.button-hover.dd-button--default.dd-button--plain{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover.dd-button--warn{color:#fff9;background-color:#ce3c39}.button-hover.dd-button--warn.dd-button--plain{color:#e6434099;background-color:#0000;border-color:#e6434099}.dd-camera{width:100%;display:block;position:relative;overflow:hidden}.dd-camera[hidden]{display:none}.dd-camera-native,.dd-camera-unavailable,.dd-camera-slot{width:100%;height:100%;position:absolute;inset:0}.dd-camera-container{-webkit-overflow-scrolling:touch;overflow:scroll}.dd-camera-container>div{width:101%;height:101%}.dd-camera-unavailable{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-camera-slot{pointer-events:none}.dd-camera-slot *{pointer-events:auto}.dd-camera-native[data-dimina-native-type=native\/camera]{opacity:0;background:0 0!important}.dd-canvas{width:300px;height:150px;display:block;position:relative}.dd-canvas>canvas{width:100%;height:100%;position:absolute;top:0;left:0}.dd-canvas[hidden]{display:none}.dd-canvas-slot{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.dd-canvas-slot *{pointer-events:auto}.dd-checkbox{display:inline-block}.dd-checkbox[hidden]{display:none}.dd-checkbox-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-checkbox-input{appearance:none;text-indent:0;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-checkbox-input-checked{color:#09bb07}.dd-checkbox-input-checked:before{content:"";font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-group{display:block}.dd-checkbox-group[hidden]{display:none}.dd-image{background-repeat:no-repeat;width:320px;height:240px;display:inline-block;overflow:hidden}.dd-image img{width:inherit;height:inherit;pointer-events:none}.dd-image img[src=""],.dd-image img:not([src]){opacity:0}.dd-image[hidden]{display:none}.dd-image-preloader{opacity:0}.dd-image-scale{object-fit:fill;width:100%;height:100%}.dd-image-aspect{object-fit:contain;width:100%;height:100%}.dd-image-fill{object-fit:cover;width:100%;height:100%}.dd-image-width{width:100%;height:auto}.dd-image-height{width:auto;height:100%}.dd-image-top{object-fit:none;object-position:top;width:100%;height:100%}.dd-image-bottom{object-fit:none;object-position:bottom;width:100%;height:100%}.dd-image-center{object-fit:none;object-position:center;width:100%;height:100%}.dd-image-left{object-fit:none;object-position:left;width:100%;height:100%}.dd-image-right{object-fit:none;object-position:right;width:100%;height:100%}.dd-image-top-left{object-fit:none;object-position:top left;width:100%;height:100%}.dd-image-top-right{object-fit:none;object-position:top right;width:100%;height:100%}.dd-image-bottom-left{object-fit:none;object-position:bottom left;width:100%;height:100%}.dd-image-bottom-right{object-fit:none;object-position:bottom right;width:100%;height:100%}.dd-view{display:block}.dd-view[hidden]{display:none}.dd-icon{font:14px/1 weui;font-size:var(--c819827a);color:var(--v3cd4ae3e) .dd-icon [hidden];color-display:none;display:inline-block}[class^=dd-icon-]:before,[class*=dd-icon-]:before{margin:0}.dd-icon-success{color:#09bb07}.dd-icon-success:before{content:""}.dd-icon-info{color:#10aeff}.dd-icon-info:before{content:""}.dd-icon-warn{color:#f76260}.dd-icon-warn:before{content:""}.dd-icon-waiting{color:#10aeff}.dd-icon-waiting:before{content:""}.dd-icon-safe_success{color:#09bb07}.dd-icon-safe_success:before{content:""}.dd-icon-safe_warn{color:#ffbe00}.dd-icon-safe_warn:before{content:""}.dd-icon-success_circle{color:#09bb07}.dd-icon-success_circle:before{content:""}.dd-icon-success_no_circle{color:#09bb07}.dd-icon-success_no_circle:before{content:""}.dd-icon-waiting_circle{color:#10aeff}.dd-icon-waiting_circle:before{content:""}.dd-icon-circle{color:#c9c9c9}.dd-icon-circle:before{content:""}.dd-icon-download{color:#09bb07}.dd-icon-download:before{content:""}.dd-icon-info_circle{color:#09bb07}.dd-icon-info_circle:before{content:""}.dd-icon-cancel{color:#f43530}.dd-icon-cancel:before{content:""}.dd-icon-search{color:#b2b2b2}.dd-icon-search:before{content:""}.dd-icon-clear{color:#b2b2b2}.dd-icon-clear:before{content:""}[class^=dd-icon-]:before,[class*=dd-icon-]:before{box-sizing:border-box}.dd-input-wrapper{width:100%;height:100%;position:relative}.dd-input{appearance:none;width:100%;font-family:inherit;font-size:inherit;color:inherit;height:inherit;text-align:inherit;overflow:inherit;white-space:inherit;text-overflow:inherit;background-color:#0000;border:none;outline:0;margin:0;padding:0;display:block}.dd-input::-webkit-outer-spin-button{appearance:none;margin:0}.dd-input::-webkit-inner-spin-button{appearance:none;margin:0}.dd-input-placeholder{pointer-events:none;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0}.dd-input-placeholder.input-placeholder{color:#0000004d}.dd-input-disabled{opacity:.5}.dd-keyboard-accessory{overflow:auto}.dd-map{width:300px;height:150px;display:block;position:relative;overflow:hidden}.dd-map[hidden]{display:none}.dd-map-native,.dd-map-desktop,.dd-map-slot{width:100%;height:100%;position:absolute;inset:0}.dd-map-container{-webkit-overflow-scrolling:touch;overflow:scroll}.dd-map-container>div{width:101%;height:101%}.dd-map-desktop{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-map-slot{pointer-events:none}.dd-map-slot *{pointer-events:auto}.dd-map-native[data-dimina-native-type=native\/map]{opacity:0;background:0 0!important}.dd-movable-area{width:10px;height:10px;display:block;position:relative}.dd-movable-area[hidden]{display:none}.dd-movable-view{visibility:hidden;cursor:grab;width:10px;height:10px;display:inline-block;position:absolute;top:0;left:0}.dd-movable-view.direction-horizontal{touch-action:pan-y}.dd-movable-view.direction-vertical{touch-action:pan-x}.dd-movable-view.direction-all{touch-action:none}.dd-movable-view.direction-none{touch-action:auto}.dd-movable-view .dd-movable-view-content{all:inherit;visibility:visible;-webkit-overflow-scrolling:touch;transition-property:transform;transition-duration:var(--duration);transform-origin:50%;will-change:transform;backface-visibility:hidden;transition-timing-function:ease-out;top:0;left:0}.dd-movable-view[hidden]{display:none}.dd-navigator{width:auto;height:auto;display:block}.dd-navigator.navigator-hover{opacity:.7;background-color:#0000001a}.dd-navigator[hidden],.dd-open-data[hidden]{display:none}.dd-open-data-avatar{width:100%;height:100%;display:block}.dd-picker-column[data-v-61501610]{flex:1;height:220px;position:relative;overflow:hidden}.dd-picker-column .dd-picker-column-mask[data-v-61501610]{pointer-events:none;z-index:2;background:linear-gradient(#ffffffe6 0%,#fff6 40%,#fff0 50%,#fff6 60%,#ffffffe6 100%);position:absolute;inset:0}.dd-picker-column .dd-picker-column-indicator[data-v-61501610]{pointer-events:none;z-index:1;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;height:44px;margin-top:-22px;position:absolute;top:50%;left:0;right:0}.dd-picker-column .dd-picker-column-content[data-v-61501610]{cursor:grab;padding-top:88px;padding-bottom:88px;position:relative}.dd-picker-column .dd-picker-column-content[data-v-61501610]:active{cursor:grabbing}.dd-picker-column .dd-picker-column-item[data-v-61501610]{text-align:center;color:#333;height:44px;font-size:16px;line-height:44px;transition:color .3s}.dd-picker-column .dd-picker-column-item.dd-picker-column-item-selected[data-v-61501610]{color:#000;font-weight:500}.dd-picker{cursor:pointer;display:block}.dd-picker[hidden]{display:none}.dd-picker-overlay{z-index:1000;background-color:#0009;align-items:flex-end;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.dd-picker-container{background-color:#fff;border-radius:12px 12px 0 0;width:100%;max-height:80vh;animation:.3s slideUp}.dd-picker-header{background-color:#fafafa;border-bottom:1px solid #e5e5e5;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dd-picker-action{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:16px;transition:background-color .2s}.dd-picker-action:hover{background-color:#0000000d}.dd-picker-cancel{color:#999}.dd-picker-confirm{color:#09bb07;font-weight:500}.dd-picker-title{color:#333;font-size:16px;font-weight:500}.dd-picker-body{background-color:#fff;padding:20px 0}.dd-picker-columns{align-items:center;gap:0;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dd-picker-view{display:flex;position:relative;overflow:hidden}.dd-picker-view[hidden]{display:none}.dd-picker-view-column{z-index:0;flex:1;height:100%;position:relative;overflow:hidden}.dd-picker-view-column .dd-picker__mask{transform:translateZ(0)}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__mask{background-color:#0000;background-image:linear-gradient(#fffffff2,#fff9),linear-gradient(#fff9,#fffffff2);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 102px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;height:100%;margin:0 auto;top:0}.dd-picker-view-column .dd-picker__indicator{top:102px}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;pointer-events:none;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__content{width:100%;transition:transform var(--duration) ease-out 0s;cursor:grab;position:absolute;top:0;left:0}.dd-picker-view-column .dd-picker__indicator:before{transform-origin:0 0;border-top:1px solid #e5e5e5;top:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after{transform-origin:0 100%;border-bottom:1px solid #e5e5e5;bottom:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after,.dd-picker-view-column .dd-picker__indicator:before{content:" ";color:#e5e5e5;height:1px;position:absolute;left:0;right:0}.dd-progress{align-items:center;display:flex}.dd-progress[hidden]{display:none}.dd-progress .dd-progress-bar{flex:1;overflow:hidden}.dd-progress .dd-progress-inner-bar{width:0;height:100%}.dd-progress .dd-progress-info{min-width:2em;margin-top:0;margin-bottom:0;margin-left:15px;font-size:16px}.dd-radio{display:inline-block}.dd-radio[hidden]{display:none}.dd-radio-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-radio-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:50%;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-radio-input-checked{background-color:#09bb07;border-color:#09bb07}.dd-radio-input-checked:before{content:"";color:#fff;font:18px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-radio-input-disabled{background-color:#e1e1e1;border-color:#d1d1d1}.dd-radio-input-disabled:before{color:#adadad}.dd-radio-group{display:block}.dd-radio-group[hidden]{display:none}.dd-rich-text{-webkit-user-select:text;user-select:text}.dd-rich-text[hidden],.dd-root-portal-host,.dd-root-portal-content[hidden]{display:none}.dd-scroll-view{width:100%;height:inherit;-webkit-overflow-scrolling:touch;max-height:inherit;position:relative;overflow:auto}.dd-scroll-view[hidden]{display:none}.dd-scroll-view.scroll-x{overflow:auto hidden!important}.dd-scroll-view.scroll-y{overflow:hidden auto!important}.dd-scroll-view.scroll-x.scroll-y{overflow:auto}.dd-scroll-view.scroll-disabled{overflow:hidden!important}.dd-scroll-view.hide-scrollbar{position:relative}.dd-scroll-view.hide-scrollbar::-webkit-scrollbar{width:0;height:0}.dd-slider{margin:10px 18px;padding:0;display:block}.dd-slider[hidden]{display:none}.dd-slider-wrapper{align-items:center;min-height:16px;display:flex}.dd-slider-tap-area{flex:1;padding:8px 0}.dd-slider-handle-wrapper{z-index:0;cursor:pointer;-webkit-tap-highlight-color:transparent;background-color:#e9e9e9;border-radius:5px;height:2px;transition:background-color .3s;position:relative}.dd-slider-track{background-color:#1aad19;border-radius:6px;height:100%;transition:background-color .3s}.dd-slider-handle,.dd-slider-thumb{cursor:grab;border-radius:50%;transition:border-color .3s;position:absolute;top:50%;left:0%}.dd-slider-handle{z-index:3;background-color:#0000;width:28px;height:28px;margin-top:-14px;margin-left:-14px}.dd-slider-thumb{z-index:2;background-color:#fff;width:28px;height:28px;margin-top:-14px;margin-left:-14px;box-shadow:0 0 4px #0003}.dd-slider-step{z-index:1;background:0 0;width:100%;height:2px;position:absolute}.dd-slider-value{color:#888;text-align:center;margin-left:1em;font-size:14px}.dd-slider-disabled .dd-slider-track{background-color:#ccc}.dd-slider-disabled .dd-slider-thumb{background-color:#fff;border-color:#ccc}.dd-swiper{height:150px;display:block}.dd-swiper[hidden]{display:none}.dd-swiper .dd-swiper-wrapper{cursor:grab;width:100%;height:100%;position:relative;overflow:hidden}.dd-swiper .dd-swiper-slides{position:absolute;inset:0}.dd-swiper .dd-swiper-slide-frame{will-change:transform;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.dd-swiper.dd-swiper-skip-hidden .dd-swiper-item{content-visibility:auto;contain-intrinsic-size:100% 100%}.dd-swiper .dd-swiper-dots{font-size:0;position:absolute}.dd-swiper .dd-swiper-dots-horizontal{text-align:center;white-space:nowrap;bottom:10px;left:50%;transform:translate(-50%)}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot{margin-right:8px}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot:last-child{margin-right:0}.dd-swiper .dd-swiper-dots-vertical{text-align:right;top:50%;right:10px;transform:translateY(-50%)}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot{margin-bottom:9px;display:block}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot:last-child{margin-bottom:0}.dd-swiper .dd-swiper-dot{background:#0000004d;border-radius:50%;width:8px;height:8px;transition-property:background-color;transition-timing-function:ease;display:inline-block}.dd-swiper .dd-swiper-dot-active{background-color:#000}.dd-swiper-item{will-change:transform;flex:0 0 100%;width:100%;display:block}.dd-swiper-item[hidden]{display:none}.dd-switch-input{appearance:none;box-sizing:border-box;background-color:#dfdfdf;border:1px solid #dfdfdf;border-radius:16px;outline:0;width:52px;height:32px;margin-right:5px;transition:background-color .1s,border .1s;display:inline-block;position:relative}.dd-switch-input:before{content:" ";background-color:#fdfdfd;border-radius:15px;width:50px;height:30px;transition:transform .3s;position:absolute;top:0;left:0}.dd-switch-input:after{content:" ";background-color:#fff;border-radius:15px;width:30px;height:30px;transition:transform .3s;position:absolute;top:0;left:0;box-shadow:0 1px 3px #0006}.dd-switch-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-switch-input-checked:before{transform:scale(0)}.dd-switch-input-checked:after{transform:translate(20px)}.dd-switch-input-disabled{opacity:.3}.dd-checkbox-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;display:inline-block;position:relative}.dd-checkbox-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-checkbox-input-checked .dd-checkbox-input-inner:before{content:"";color:inherit;font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-input-disabled{background-color:#e1e1e1}.dd-checkbox-input-disabled:before{color:#adadad}.dd-text{-webkit-user-select:none;user-select:none;display:inline}.dd-text[hidden]{display:none}.dd-text-selectable{cursor:auto;-webkit-user-select:text;user-select:text;display:inline-block}.dd-textarea-wrapper{width:100%;height:100%;position:relative}.dd-textarea{resize:none;width:100%;height:100%;font-family:inherit;line-height:1.2;font-size:inherit;color:inherit;background-color:#0000;border:none;outline:none;padding:0;display:block;position:relative}.dd-textarea::-webkit-scrollbar{display:none}.dd-textarea[hidden]{display:none}.dd-textarea-placeholder{padding:inherit;pointer-events:none;position:absolute;top:0;left:0}.dd-textarea-placeholder.textarea-placeholder{color:#0000004d}.dd-textarea-disabled{opacity:.5}.dd-video{z-index:0;width:300px;height:225px;line-height:0;display:inline-block;position:relative;overflow:hidden}.dd-video[hidden]{display:none}.dd-video .dd-video-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-video[data-dimina-native-type=native\/video]{opacity:0;background:0 0!important}.dd-video-placeholder{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-web-view{width:100vw;height:100vh;display:block}.dd-web-view[hidden]{display:none}.dd-web-view-pc{border:0;width:100%;height:100%;position:absolute;top:0;left:0}