@ihasq/reterm 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +40 -0
- package/dist/cli.js +100 -0
- package/dist/cli.js.map +1 -0
- package/dist/public/assets/index-D6xc7zta.js +9 -0
- package/dist/public/assets/index-Dgf5qVEq.css +1 -0
- package/dist/public/index.html +13 -0
- package/dist/server.js +287 -0
- package/dist/server.js.map +1 -0
- package/dist/shared/protocol.js +20 -0
- package/dist/shared/protocol.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wterm{--term-fg:#d4d4d4;--term-bg:#1e1e1e;--term-cursor:#aeafad;--term-color-0:#1e1e1e;--term-color-1:#f44747;--term-color-2:#6a9955;--term-color-3:#d7ba7d;--term-color-4:#569cd6;--term-color-5:#c586c0;--term-color-6:#4ec9b0;--term-color-7:#d4d4d4;--term-color-8:gray;--term-color-9:#f44747;--term-color-10:#6a9955;--term-color-11:#d7ba7d;--term-color-12:#569cd6;--term-color-13:#c586c0;--term-color-14:#4ec9b0;--term-color-15:#fff;--term-font-family:"Menlo", "Consolas", "DejaVu Sans Mono", "Courier New", monospace;--term-font-size:14px;--term-line-height:1.2;--term-row-height:17px;background:var(--term-bg);color:var(--term-fg);font-family:var(--term-font-family);font-size:var(--term-font-size);line-height:var(--term-line-height);border-radius:8px;outline:none;padding:12px;position:relative;overflow:hidden;box-shadow:0 8px 32px #0006}.wterm:focus,.wterm:focus-visible{outline:none}.term-grid{white-space:pre;contain:layout paint style;will-change:contents;display:block}.term-row{height:var(--term-row-height);line-height:var(--term-row-height);contain:layout style;display:block}.term-row>span{height:var(--term-row-height);vertical-align:top;display:inline-block}.term-block{width:1ch;overflow:hidden}.term-cursor{outline:1px solid var(--term-cursor);outline-offset:-1px}.wterm.focused .term-cursor{background:var(--term-cursor);color:var(--term-bg);outline:none}.wterm.focused.cursor-blink .term-cursor{animation:1s step-end infinite cursor-blink}@keyframes cursor-blink{0%,to{background:var(--term-cursor);color:var(--term-bg)}50%{color:inherit;background:0 0}}.wterm.has-scrollback{overflow-y:auto}.wterm ::selection{background:#569cd64d}.wterm.theme-solarized-dark{--term-fg:#839496;--term-bg:#002b36;--term-cursor:#93a1a1;--term-color-0:#073642;--term-color-1:#dc322f;--term-color-2:#859900;--term-color-3:#b58900;--term-color-4:#268bd2;--term-color-5:#d33682;--term-color-6:#2aa198;--term-color-7:#eee8d5;--term-color-8:#586e75;--term-color-9:#cb4b16;--term-color-10:#586e75;--term-color-11:#657b83;--term-color-12:#839496;--term-color-13:#6c71c4;--term-color-14:#93a1a1;--term-color-15:#fdf6e3}.wterm.theme-monokai{--term-fg:#f8f8f2;--term-bg:#272822;--term-cursor:#f8f8f0;--term-color-0:#272822;--term-color-1:#f92672;--term-color-2:#a6e22e;--term-color-3:#f4bf75;--term-color-4:#66d9ef;--term-color-5:#ae81ff;--term-color-6:#a1efe4;--term-color-7:#f8f8f2;--term-color-8:#75715e;--term-color-9:#f92672;--term-color-10:#a6e22e;--term-color-11:#f4bf75;--term-color-12:#66d9ef;--term-color-13:#ae81ff;--term-color-14:#a1efe4;--term-color-15:#f9f8f5}.wterm.theme-light{--term-fg:#383a42;--term-bg:#fafafa;--term-cursor:#526eff;--term-color-0:#383a42;--term-color-1:#e45649;--term-color-2:#50a14f;--term-color-3:#c18401;--term-color-4:#4078f2;--term-color-5:#a626a4;--term-color-6:#0184bc;--term-color-7:#fafafa;--term-color-8:#a0a1a7;--term-color-9:#e45649;--term-color-10:#50a14f;--term-color-11:#c18401;--term-color-12:#4078f2;--term-color-13:#a626a4;--term-color-14:#0184bc;--term-color-15:#fff}.dv-scrollable{position:relative;overflow:hidden}.dv-scrollable .dv-scrollbar{will-change:background-color, transform;backface-visibility:hidden;background-color:#0000;border-radius:2px;transition:background-color 1s ease-in-out;position:absolute;transform:translate(0,0)}.dv-scrollable .dv-scrollbar-horizontal{height:4px;bottom:0;left:0}.dv-scrollable .dv-scrollbar-vertical{width:4px;top:0;right:0}.dv-scrollable:hover .dv-scrollbar,.dv-scrollable.dv-scrollable-resizing .dv-scrollbar,.dv-scrollable.dv-scrollable-scrolling .dv-scrollbar{background-color:var(--dv-scrollbar-background-color,#ffffff40)}.dv-svg{fill:currentColor;stroke:currentColor;stroke-width:0;line-height:1;display:inline-block}.dockview-theme-dark{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dark{--dv-group-view-background-color:#1e1e1e;--dv-tabs-and-actions-container-background-color:#252526;--dv-activegroup-visiblepanel-tab-background-color:#1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color:#2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color:#1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color:#2d2d2d;--dv-tab-divider-color:#1e1e1e;--dv-activegroup-visiblepanel-tab-color:white;--dv-activegroup-hiddenpanel-tab-color:#969696;--dv-inactivegroup-visiblepanel-tab-color:#8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color:#626262;--dv-separator-border:#444;--dv-paneview-header-border-color:#ccc3}.dockview-theme-light{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-light{--dv-group-view-background-color:white;--dv-tabs-and-actions-container-background-color:#f3f3f3;--dv-activegroup-visiblepanel-tab-background-color:white;--dv-activegroup-hiddenpanel-tab-background-color:#ececec;--dv-inactivegroup-visiblepanel-tab-background-color:white;--dv-inactivegroup-hiddenpanel-tab-background-color:#ececec;--dv-tab-divider-color:white;--dv-activegroup-visiblepanel-tab-color:#333;--dv-activegroup-hiddenpanel-tab-color:#333333b3;--dv-inactivegroup-visiblepanel-tab-color:#333333b3;--dv-inactivegroup-hiddenpanel-tab-color:#33333359;--dv-separator-border:#80808059;--dv-paneview-header-border-color:#333;--dv-scrollbar-background-color:#00000040;--dv-floating-box-shadow:0 8px 32px #0000001f, 0 2px 8px #00000014;--dv-floating-border:1px solid #0000001a}.dockview-theme-vs{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-vs .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs{--dv-group-view-background-color:#1e1e1e;--dv-tabs-and-actions-container-background-color:#2d2d30;--dv-activegroup-visiblepanel-tab-background-color:#007acc;--dv-activegroup-hiddenpanel-tab-background-color:#2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color:#3f3f46;--dv-inactivegroup-hiddenpanel-tab-background-color:#2d2d2d;--dv-tab-divider-color:#1e1e1e;--dv-activegroup-visiblepanel-tab-color:white;--dv-activegroup-hiddenpanel-tab-color:white;--dv-inactivegroup-visiblepanel-tab-color:white;--dv-inactivegroup-hiddenpanel-tab-color:white;--dv-separator-border:#444;--dv-paneview-header-border-color:#ccc3;--dv-tabs-and-actions-container-height:20px;--dv-tabs-and-actions-container-font-size:11px}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-activegroup-hiddenpanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color)}.dockview-theme-abyss{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-abyss{--dv-color-abyss-dark:#000c18;--dv-color-abyss:#10192c;--dv-color-abyss-light:#1c1c2a;--dv-color-abyss-lighter:#2b2b4a;--dv-color-abyss-accent:#5b1ecf;--dv-color-abyss-primary-text:white;--dv-color-abyss-secondary-text:#9497a9;--dv-group-view-background-color:var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color:var(--dv-color-abyss-light);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-abyss-dark);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-abyss);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-abyss-dark);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-abyss);--dv-tab-divider-color:var(--dv-color-abyss-lighter);--dv-activegroup-visiblepanel-tab-color:white;--dv-activegroup-hiddenpanel-tab-color:#ffffff80;--dv-inactivegroup-visiblepanel-tab-color:#ffffff80;--dv-inactivegroup-hiddenpanel-tab-color:#ffffff40;--dv-separator-border:var(--dv-color-abyss-lighter);--dv-paneview-header-border-color:var(--dv-color-abyss-lighter);--dv-paneview-active-outline-color:#596f99}.dockview-theme-dracula{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-dracula .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula{--dv-group-view-background-color:#282a36;--dv-tabs-and-actions-container-background-color:#191a21;--dv-activegroup-visiblepanel-tab-background-color:#282a36;--dv-activegroup-hiddenpanel-tab-background-color:#21222c;--dv-inactivegroup-visiblepanel-tab-background-color:#282a36;--dv-inactivegroup-hiddenpanel-tab-background-color:#21222c;--dv-tab-divider-color:#191a21;--dv-activegroup-visiblepanel-tab-color:#f8f8f2;--dv-activegroup-hiddenpanel-tab-color:#6272a4;--dv-inactivegroup-visiblepanel-tab-color:#f8f8f280;--dv-inactivegroup-hiddenpanel-tab-color:#6272a480;--dv-separator-border:#bd93f9;--dv-paneview-header-border-color:#bd93f9;--dv-paneview-active-outline-color:#6272a4}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";z-index:999;background-color:#94527e;width:100%;height:1px;position:absolute;bottom:0;left:0}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";z-index:999;background-color:#5e3d5a;width:100%;height:1px;position:absolute;bottom:0;left:0}.dockview-theme-nord{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-nord .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-nord{--dv-color-nord-polar-0:#2e3440;--dv-color-nord-polar-1:#3b4252;--dv-color-nord-polar-2:#434c5e;--dv-color-nord-polar-3:#4c566a;--dv-color-nord-frost:#88c0d0;--dv-color-nord-frost-2:#81a1c1;--dv-color-nord-snow-0:#eceff4;--dv-color-nord-snow-1:#d8dee9;--dv-group-view-background-color:var(--dv-color-nord-polar-0);--dv-tabs-and-actions-container-background-color:var(--dv-color-nord-polar-1);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-nord-polar-0);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-nord-polar-2);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-nord-polar-1);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-nord-polar-2);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-nord-snow-0);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-nord-snow-1);--dv-inactivegroup-visiblepanel-tab-color:#8a9bbf;--dv-inactivegroup-hiddenpanel-tab-color:#5e6f8e;--dv-separator-border:var(--dv-color-nord-polar-3);--dv-paneview-active-outline-color:var(--dv-color-nord-frost);--dv-active-sash-color:var(--dv-color-nord-frost);--dv-scrollbar-background-color:#4c566a80}.dockview-theme-nord .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-nord .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";background-color:var(--dv-color-nord-frost);z-index:999;width:100%;height:2px;position:absolute;bottom:0;left:0}.dockview-theme-nord .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-nord .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";background-color:var(--dv-color-nord-frost-2);z-index:999;width:100%;height:2px;position:absolute;bottom:0;left:0}.dockview-theme-nord-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-nord-spaced{padding:0}.dockview-theme-nord-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-nord-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-nord-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-nord-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-nord-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-nord-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-nord-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-nord-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-tabs-overflow-container,.dockview-theme-nord-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-nord-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-nord-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-nord-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-nord-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-nord-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced{--dv-color-nord-polar-0:#2e3440;--dv-color-nord-polar-1:#3b4252;--dv-color-nord-polar-2:#434c5e;--dv-color-nord-polar-3:#4c566a;--dv-color-nord-frost:#88c0d0;--dv-color-nord-frost-2:#81a1c1;--dv-color-nord-snow-0:#eceff4;--dv-color-nord-snow-1:#d8dee9;--dv-group-view-background-color:var(--dv-color-nord-polar-0);--dv-tabs-and-actions-container-background-color:var(--dv-color-nord-polar-1);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-nord-polar-2);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-nord-polar-1);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-nord-polar-2);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-nord-polar-1);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-nord-snow-0);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-nord-snow-1);--dv-inactivegroup-visiblepanel-tab-color:#8a9bbf;--dv-inactivegroup-hiddenpanel-tab-color:#5e6f8e;--dv-separator-border:transparent;--dv-paneview-active-outline-color:var(--dv-color-nord-frost);--dv-active-sash-color:var(--dv-color-nord-frost);--dv-scrollbar-background-color:#4c566a80;--dv-floating-group-border:2px solid var(--dv-color-nord-polar-0)}.dockview-theme-catppuccin-mocha{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-catppuccin-mocha .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-catppuccin-mocha{--dv-color-mocha-crust:#11111b;--dv-color-mocha-mantle:#181825;--dv-color-mocha-base:#1e1e2e;--dv-color-mocha-surface0:#313244;--dv-color-mocha-surface1:#45475a;--dv-color-mocha-text:#cdd6f4;--dv-color-mocha-subtext1:#bac2de;--dv-color-mocha-subtext0:#a6adc8;--dv-color-mocha-mauve:#cba6f7;--dv-color-mocha-lavender:#b4befe;--dv-group-view-background-color:var(--dv-color-mocha-base);--dv-tabs-and-actions-container-background-color:var(--dv-color-mocha-mantle);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-mocha-base);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-mocha-surface0);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-mocha-mantle);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-mocha-crust);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-mocha-text);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-mocha-subtext1);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-mocha-subtext0);--dv-inactivegroup-hiddenpanel-tab-color:#a6adc880;--dv-separator-border:var(--dv-color-mocha-surface1);--dv-paneview-active-outline-color:var(--dv-color-mocha-mauve);--dv-active-sash-color:var(--dv-color-mocha-mauve);--dv-scrollbar-background-color:#313244cc}.dockview-theme-catppuccin-mocha .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-catppuccin-mocha .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";background-color:var(--dv-color-mocha-mauve);z-index:999;width:100%;height:2px;position:absolute;bottom:0;left:0}.dockview-theme-catppuccin-mocha .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-catppuccin-mocha .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";z-index:999;background-color:#b4befe66;width:100%;height:2px;position:absolute;bottom:0;left:0}.dockview-theme-catppuccin-mocha-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-catppuccin-mocha-spaced{padding:0}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-catppuccin-mocha-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-catppuccin-mocha-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-tabs-overflow-container,.dockview-theme-catppuccin-mocha-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-catppuccin-mocha-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-catppuccin-mocha-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-catppuccin-mocha-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-catppuccin-mocha-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced{--dv-color-mocha-crust:#11111b;--dv-color-mocha-mantle:#181825;--dv-color-mocha-base:#1e1e2e;--dv-color-mocha-surface0:#313244;--dv-color-mocha-surface1:#45475a;--dv-color-mocha-text:#cdd6f4;--dv-color-mocha-subtext1:#bac2de;--dv-color-mocha-subtext0:#a6adc8;--dv-color-mocha-mauve:#cba6f7;--dv-color-mocha-lavender:#b4befe;--dv-group-view-background-color:var(--dv-color-mocha-crust);--dv-tabs-and-actions-container-background-color:var(--dv-color-mocha-mantle);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-mocha-surface0);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-mocha-mantle);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-mocha-surface0);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-mocha-mantle);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-mocha-text);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-mocha-subtext1);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-mocha-subtext0);--dv-inactivegroup-hiddenpanel-tab-color:#a6adc880;--dv-separator-border:transparent;--dv-paneview-active-outline-color:var(--dv-color-mocha-mauve);--dv-active-sash-color:var(--dv-color-mocha-mauve);--dv-scrollbar-background-color:#313244cc;--dv-floating-group-border:2px solid var(--dv-color-mocha-crust)}.dockview-theme-monokai{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-monokai .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-monokai{--dv-color-monokai-bg:#272822;--dv-color-monokai-bg-light:#3e3d32;--dv-color-monokai-comment:#75715e;--dv-color-monokai-fg:#f8f8f2;--dv-color-monokai-green:#a6e22e;--dv-group-view-background-color:var(--dv-color-monokai-bg);--dv-tabs-and-actions-container-background-color:var(--dv-color-monokai-bg-light);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-monokai-bg);--dv-activegroup-hiddenpanel-tab-background-color:#2d2c25;--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-monokai-bg);--dv-inactivegroup-hiddenpanel-tab-background-color:#2d2c25;--dv-activegroup-visiblepanel-tab-color:var(--dv-color-monokai-fg);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-monokai-comment);--dv-inactivegroup-visiblepanel-tab-color:#f8f8f280;--dv-inactivegroup-hiddenpanel-tab-color:#75715e80;--dv-separator-border:var(--dv-color-monokai-bg-light);--dv-paneview-active-outline-color:var(--dv-color-monokai-green);--dv-active-sash-color:var(--dv-color-monokai-green);--dv-scrollbar-background-color:#75715e80}.dockview-theme-monokai .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-monokai .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";background-color:var(--dv-color-monokai-green);z-index:999;width:100%;height:2px;position:absolute;bottom:0;left:0}.dockview-theme-monokai .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-monokai .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{content:"";z-index:999;background-color:#a6e22e59;width:100%;height:2px;position:absolute;bottom:0;left:0}.dockview-theme-solarized-light{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-solarized-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-solarized-light{--dv-color-sol-base3:#fdf6e3;--dv-color-sol-base2:#eee8d5;--dv-color-sol-base1:#93a1a1;--dv-color-sol-base00:#657b83;--dv-color-sol-base01:#586e75;--dv-color-sol-blue:#268bd2;--dv-group-view-background-color:var(--dv-color-sol-base3);--dv-tabs-and-actions-container-background-color:var(--dv-color-sol-base2);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-sol-base3);--dv-activegroup-hiddenpanel-tab-background-color:#e8e2d0;--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-sol-base3);--dv-inactivegroup-hiddenpanel-tab-background-color:#e8e2d0;--dv-activegroup-visiblepanel-tab-color:var(--dv-color-sol-base01);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-sol-base00);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-sol-base1);--dv-inactivegroup-hiddenpanel-tab-color:#93a1a199;--dv-separator-border:var(--dv-color-sol-base2);--dv-paneview-active-outline-color:var(--dv-color-sol-blue);--dv-active-sash-color:var(--dv-color-sol-blue);--dv-scrollbar-background-color:#657b8340;--dv-drag-over-background-color:#268bd226;--dv-floating-box-shadow:0 8px 32px #0000001f, 0 2px 8px #00000014;--dv-floating-border:1px solid #0000001a}.dockview-theme-solarized-light-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-solarized-light-spaced{padding:0}.dockview-theme-solarized-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-solarized-light-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-solarized-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-solarized-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-solarized-light-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-solarized-light-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-solarized-light-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-solarized-light-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-tabs-overflow-container,.dockview-theme-solarized-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-solarized-light-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-solarized-light-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-solarized-light-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-solarized-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-solarized-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced{--dv-color-sol-base3:#fdf6e3;--dv-color-sol-base2:#eee8d5;--dv-color-sol-base1:#93a1a1;--dv-color-sol-base00:#657b83;--dv-color-sol-base01:#586e75;--dv-color-sol-blue:#268bd2;--dv-drag-over-background-color:#268bd21a;--dv-group-view-background-color:var(--dv-color-sol-base2);--dv-tabs-and-actions-container-background-color:var(--dv-color-sol-base3);--dv-activegroup-visiblepanel-tab-background-color:#e8e2d0;--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-sol-base3);--dv-inactivegroup-visiblepanel-tab-background-color:#e8e2d0;--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-sol-base3);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-sol-base01);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-sol-base00);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-sol-base1);--dv-inactivegroup-hiddenpanel-tab-color:#93a1a199;--dv-separator-border:transparent;--dv-paneview-active-outline-color:var(--dv-color-sol-blue);--dv-active-sash-color:var(--dv-color-sol-blue);--dv-floating-box-shadow:0 8px 32px #0000001f, 0 2px 8px #00000014;--dv-floating-border:1px solid #0000001a;--dv-scrollbar-background-color:#657b8340;--dv-floating-group-border:2px solid #eee8d580}.dockview-theme-github-dark{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-github-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-github-dark{--dv-color-gh-canvas-default:#0d1117;--dv-color-gh-canvas-subtle:#161b22;--dv-color-gh-canvas-inset:#010409;--dv-color-gh-border:#30363d;--dv-color-gh-border-muted:#21262d;--dv-color-gh-fg-default:#e6edf3;--dv-color-gh-fg-muted:#8b949e;--dv-color-gh-fg-subtle:#6e7681;--dv-color-gh-accent:#58a6ff;--dv-group-view-background-color:var(--dv-color-gh-canvas-default);--dv-tabs-and-actions-container-background-color:var(--dv-color-gh-canvas-subtle);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-gh-canvas-default);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-canvas-subtle);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-gh-canvas-default);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-canvas-subtle);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-gh-fg-default);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-gh-fg-muted);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-gh-fg-subtle);--dv-inactivegroup-hiddenpanel-tab-color:#6e768180;--dv-separator-border:var(--dv-color-gh-border);--dv-paneview-active-outline-color:var(--dv-color-gh-accent);--dv-active-sash-color:var(--dv-color-gh-accent);--dv-scrollbar-background-color:#30363db3;--dv-drag-over-background-color:#58a6ff26}.dockview-theme-github-dark-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-github-dark-spaced{padding:0}.dockview-theme-github-dark-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-github-dark-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-github-dark-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-github-dark-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-github-dark-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-github-dark-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-github-dark-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-github-dark-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-tabs-overflow-container,.dockview-theme-github-dark-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-github-dark-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-github-dark-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-github-dark-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-github-dark-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-github-dark-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced{--dv-color-gh-canvas-default:#0d1117;--dv-color-gh-canvas-subtle:#161b22;--dv-color-gh-canvas-inset:#010409;--dv-color-gh-border:#30363d;--dv-color-gh-border-muted:#21262d;--dv-color-gh-fg-default:#e6edf3;--dv-color-gh-fg-muted:#8b949e;--dv-color-gh-fg-subtle:#6e7681;--dv-color-gh-accent:#58a6ff;--dv-drag-over-background-color:#58a6ff1a;--dv-group-view-background-color:var(--dv-color-gh-canvas-inset);--dv-tabs-and-actions-container-background-color:var(--dv-color-gh-canvas-subtle);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-gh-border);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-canvas-subtle);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-gh-border);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-canvas-subtle);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-gh-fg-default);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-gh-fg-muted);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-gh-fg-subtle);--dv-inactivegroup-hiddenpanel-tab-color:#6e768180;--dv-separator-border:transparent;--dv-paneview-active-outline-color:var(--dv-color-gh-accent);--dv-active-sash-color:var(--dv-color-gh-accent);--dv-scrollbar-background-color:#30363db3;--dv-floating-group-border:2px solid var(--dv-color-gh-canvas-inset)}.dockview-theme-github-light{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:35px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:inherit;--dv-border-radius:0px;--dv-tab-margin:0;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:0px;--dv-tab-border-radius:0px;--dv-sash-border-radius:0px;--dv-dropdown-border-radius:0px;--dv-tab-close-icon-size:inherit;--dv-floating-group-border:none;--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-tabs-and-actions-container-background-color);--dv-floating-titlebar-border-bottom:var(--dv-floating-border);--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6}.dockview-theme-github-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-github-light{--dv-color-gh-light-canvas-default:#fff;--dv-color-gh-light-canvas-subtle:#f6f8fa;--dv-color-gh-light-canvas-inset:#f0f6ff;--dv-color-gh-light-border:#d0d7de;--dv-color-gh-light-fg-default:#1f2328;--dv-color-gh-light-fg-muted:#656d76;--dv-color-gh-light-fg-subtle:#6e7781;--dv-color-gh-light-accent:#0969da;--dv-group-view-background-color:var(--dv-color-gh-light-canvas-default);--dv-tabs-and-actions-container-background-color:var(--dv-color-gh-light-canvas-subtle);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-gh-light-canvas-default);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-light-canvas-subtle);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-gh-light-canvas-default);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-light-canvas-subtle);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-gh-light-fg-default);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-gh-light-fg-muted);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-gh-light-fg-subtle);--dv-inactivegroup-hiddenpanel-tab-color:#6e768166;--dv-separator-border:var(--dv-color-gh-light-border);--dv-paneview-active-outline-color:var(--dv-color-gh-light-accent);--dv-active-sash-color:var(--dv-color-gh-light-accent);--dv-scrollbar-background-color:#d0d7de80;--dv-drag-over-background-color:#0969da1a;--dv-floating-box-shadow:0 8px 32px #0000001f, 0 2px 8px #00000014;--dv-floating-border:1px solid #0000001a}.dockview-theme-github-light-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-github-light-spaced{padding:0}.dockview-theme-github-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-github-light-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-github-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-github-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-github-light-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-github-light-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-github-light-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-github-light-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-tabs-overflow-container,.dockview-theme-github-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-github-light-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-github-light-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-github-light-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-github-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-github-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced{--dv-color-gh-light-canvas-default:#fff;--dv-color-gh-light-canvas-subtle:#f6f8fa;--dv-color-gh-light-border:#d0d7de;--dv-color-gh-light-fg-default:#1f2328;--dv-color-gh-light-fg-muted:#656d76;--dv-color-gh-light-fg-subtle:#6e7781;--dv-color-gh-light-accent:#0969da;--dv-drag-over-background-color:#0969da14;--dv-group-view-background-color:var(--dv-color-gh-light-canvas-subtle);--dv-tabs-and-actions-container-background-color:var(--dv-color-gh-light-canvas-default);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-gh-light-border);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-light-canvas-default);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-gh-light-border);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-gh-light-canvas-default);--dv-activegroup-visiblepanel-tab-color:var(--dv-color-gh-light-fg-default);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-gh-light-fg-muted);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-gh-light-fg-subtle);--dv-inactivegroup-hiddenpanel-tab-color:#6e768166;--dv-separator-border:transparent;--dv-paneview-active-outline-color:var(--dv-color-gh-light-accent);--dv-active-sash-color:var(--dv-color-gh-light-accent);--dv-floating-box-shadow:0 8px 32px #0000001f, 0 2px 8px #00000014;--dv-floating-border:1px solid #0000001a;--dv-scrollbar-background-color:#d0d7de80;--dv-floating-group-border:2px solid #d0d7de80}.dockview-theme-abyss-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-abyss-spaced{padding:0}.dockview-theme-abyss-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-abyss-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-abyss-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-abyss-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-abyss-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-abyss-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-tabs-overflow-container,.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-abyss-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-abyss-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-abyss-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-abyss-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-abyss-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced{--dv-color-abyss-dark:#0b0611;--dv-color-abyss:#16121f;--dv-color-abyss-light:#201d2b;--dv-color-abyss-lighter:#2a2837;--dv-color-abyss-accent:#5b1ecf;--dv-color-abyss-primary-text:white;--dv-color-abyss-secondary-text:#9497a9;--dv-drag-over-background-color:"";--dv-group-view-background-color:var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color:var(--dv-color-abyss);--dv-activegroup-visiblepanel-tab-background-color:var(--dv-color-abyss-lighter);--dv-activegroup-hiddenpanel-tab-background-color:var(--dv-color-abyss-light);--dv-inactivegroup-visiblepanel-tab-background-color:var(--dv-color-abyss-lighter);--dv-inactivegroup-hiddenpanel-tab-background-color:var(--dv-color-abyss-light);--dv-tab-divider-color:transparent;--dv-activegroup-visiblepanel-tab-color:var(--dv-color-abyss-primary-text);--dv-activegroup-hiddenpanel-tab-color:var(--dv-color-abyss-secondary-text);--dv-inactivegroup-visiblepanel-tab-color:var(--dv-color-abyss-primary-text);--dv-inactivegroup-hiddenpanel-tab-color:var(--dv-color-abyss-secondary-text);--dv-separator-border:transparent;--dv-paneview-header-border-color:#333;--dv-active-sash-color:var(--dv-color-abyss-accent);--dv-floating-group-border:2px solid var(--dv-color-abyss-dark)}.dockview-theme-light-spaced{--dv-paneview-active-outline-color:dodgerblue;--dv-tabs-and-actions-container-font-size:13px;--dv-tabs-and-actions-container-height:44px;--dv-drag-over-background-color:#53595d80;--dv-drag-over-border-color:transparent;--dv-tabs-container-scrollbar-color:#888;--dv-icon-hover-background-color:#5a5d5e4f;--dv-floating-box-shadow:0 8px 32px #0006, 0 2px 8px #00000040;--dv-floating-border:1px solid #ffffff1a;--dv-overlay-z-index:999;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-sash-color:transparent;--dv-active-sash-color:transparent;--dv-active-sash-transition-duration:.1s;--dv-active-sash-transition-delay:.5s;--dv-spacing-padding:10px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-drag-over-border:none;--dv-floating-group-dragging-opacity:.5;--dv-floating-titlebar-height:22px;--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;--dv-tab-group-color-grey:#5f6368;--dv-tab-group-color-blue:#1a73e8;--dv-tab-group-color-red:#d93025;--dv-tab-group-color-yellow:#f9ab00;--dv-tab-group-color-green:#188038;--dv-tab-group-color-pink:#d01884;--dv-tab-group-color-purple:#a142f4;--dv-tab-group-color-cyan:#007b83;--dv-tab-group-color-orange:#e8710a;--dv-tab-group-chip-padding:4px 8px;--dv-tab-group-chip-border-radius:6px;--dv-tab-group-chip-font-size:11px;--dv-tab-group-line-height:2px;--dv-tab-group-line-opacity:.6;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-light-spaced{padding:0}.dockview-theme-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-light-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-theme-light-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-light-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-light-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-light-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-tabs-overflow-container,.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-light-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-light-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-light-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced{--dv-drag-over-background-color:"";--dv-group-view-background-color:#f6f5f9;--dv-tabs-and-actions-container-background-color:white;--dv-activegroup-visiblepanel-tab-background-color:#ededf0;--dv-activegroup-hiddenpanel-tab-background-color:#f9f9fa;--dv-inactivegroup-visiblepanel-tab-background-color:#ededf0;--dv-inactivegroup-hiddenpanel-tab-background-color:#f9f9fa;--dv-tab-divider-color:transparent;--dv-activegroup-visiblepanel-tab-color:#686b82;--dv-activegroup-hiddenpanel-tab-color:#9497a9;--dv-inactivegroup-visiblepanel-tab-color:#686b82;--dv-inactivegroup-hiddenpanel-tab-color:#9497a9;--dv-separator-border:transparent;--dv-paneview-header-border-color:#333;--dv-active-sash-color:#5b1ecf;--dv-floating-box-shadow:0 8px 32px #0000001f, 0 2px 8px #00000014;--dv-floating-border:1px solid #0000001a;--dv-scrollbar-background-color:#00000040;--dv-floating-group-border:2px solid #ffffff1a}.dockview-spaced{--dv-spacing-padding:10px;--dv-tab-font-size:12px;--dv-border-radius:12px;--dv-tab-margin:.5rem .25rem;--dv-tabs-and-actions-container-height:44px;--dv-tab-border-radius:8px;--dv-sash-border-radius:4px;--dv-dropdown-border-radius:8px;--dv-tab-close-icon-size:8px;--dv-floating-group-border:2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color:var(--dv-group-view-background-color);--dv-floating-titlebar-border-bottom:none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-spaced{padding:0}.dockview-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-spaced .dv-resize-container{border:none;border-radius:var(--dv-border-radius)!important}.dockview-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-spaced .dv-tabs-overflow-container,.dockview-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dv-context-menu{background:var(--dv-context-menu-background-color,var(--dv-activegroup-hiddenpanel-tab-background-color));min-width:160px;color:var(--dv-context-menu-color,var(--dv-activegroup-hiddenpanel-tab-color));border:1px solid var(--dv-tab-divider-color);border-radius:var(--dv-border-radius);box-shadow:var(--dv-floating-box-shadow);padding:4px 0;overflow:hidden}.dv-context-menu-item{cursor:pointer;height:25px;font-size:var(--dv-tabs-and-actions-container-font-size);white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;padding:0 12px;display:flex}.dv-context-menu-item:hover{background:var(--dv-icon-hover-background-color)}.dv-context-menu-item.dv-context-menu-item--disabled{opacity:.4;cursor:default;pointer-events:none}.dv-context-menu-separator{background:var(--dv-tab-divider-color);height:1px;margin:4px 0}.dv-context-menu-rename{padding:8px 12px 4px}.dv-context-menu-rename-input{box-sizing:border-box;border:1px solid var(--dv-tab-divider-color);border-radius:var(--dv-border-radius);background:inherit;width:100%;color:var(--dv-activegroup-visiblepanel-tab-color);font-size:var(--dv-tabs-and-actions-container-font-size);outline:none;padding:8px 10px}.dv-context-menu-rename-input:focus{border-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-context-menu-rename-input::placeholder{color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-context-menu-color-picker{flex-direction:row;align-items:center;gap:6px;padding:8px 12px;display:flex}.dv-context-menu-color-swatch{cursor:pointer;background-color:var(--dv-tab-group-color);border:2px solid #0000;border-radius:50%;flex-shrink:0;width:20px;height:20px}.dv-context-menu-color-swatch:hover{opacity:.85}.dv-context-menu-color-swatch.dv-context-menu-color-swatch--selected{outline:2px solid var(--dv-tab-divider-color);outline-offset:2px}.dv-tab-group-indicator-none .dv-groupview-header-bottom .dv-tab-group-underline{top:auto;bottom:0}.dv-groupview.dv-groupview-header-bottom.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after,.dv-groupview.dv-groupview-header-bottom.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{top:0;bottom:auto}.dv-drop-target-container{z-index:9999;pointer-events:none;--dv-transition-duration:.3s;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.dv-drop-target-container .dv-drop-target-anchor{border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);opacity:1;will-change:transform, opacity;backface-visibility:hidden;contain:layout paint;transition:opacity var(--dv-transition-duration) ease-in, top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out;position:relative;transform:translate(0,0)}.dv-drop-target{--dv-transition-duration:70ms;position:relative}.dv-drop-target>.dv-drop-target-dropzone{z-index:1000;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection{box-sizing:border-box;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);width:100%;height:100%;transition:top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out, opacity var(--dv-transition-duration) ease-out;will-change:transform;pointer-events:none;position:relative}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical{border-top:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical{border-bottom:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal{border-left:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal{border-right:1px solid var(--dv-drag-over-border-color)}.dv-dockview{background-color:var(--dv-group-view-background-color);position:relative}.dv-dockview .dv-watermark-container{z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.dv-dockview .dv-overlay-render-container{position:relative}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-inactivegroup-visiblepanel-tab-background-color);color:var(--dv-inactivegroup-visiblepanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-inactivegroup-hiddenpanel-tab-background-color);color:var(--dv-inactivegroup-hiddenpanel-tab-color)}.dv-tab.dv-tab-dragging{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview{background-color:var(--dv-group-view-background-color);flex-direction:column;height:100%;display:flex;overflow:hidden}.dv-groupview:focus{outline:none}.dv-groupview>.dv-content-container{outline:none;flex-grow:1;min-height:0}.dv-groupview.dv-groupview-header-bottom{flex-direction:column-reverse}.dv-groupview.dv-groupview-header-left{flex-direction:row}.dv-groupview.dv-groupview-header-right{flex-direction:row-reverse}.dv-groupview.dv-groupview-edge.dv-edge-collapsed>.dv-content-container{display:none}.dv-root-wrapper,.dv-grid-view,.dv-branch-node{width:100%;height:100%}.dv-debug .dv-resize-container .dv-resize-handle-top{background-color:red}.dv-debug .dv-resize-container .dv-resize-handle-bottom{background-color:green}.dv-debug .dv-resize-container .dv-resize-handle-left{background-color:#ff0}.dv-debug .dv-resize-container .dv-resize-handle-right{background-color:#00f}.dv-debug .dv-resize-container .dv-resize-handle-topleft,.dv-debug .dv-resize-container .dv-resize-handle-topright,.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,.dv-debug .dv-resize-container .dv-resize-handle-bottomright{background-color:#0ff}.dv-floating-overlay-host{pointer-events:none;position:absolute}.dv-floating-overlay-host>.dv-resize-container{pointer-events:auto}.dv-resize-container>.dv-grid-view{width:100%;height:100%}.dv-resize-container-with-titlebar{flex-direction:column;display:flex}.dv-resize-container-with-titlebar>.dv-floating-titlebar{flex:none}.dv-resize-container-with-titlebar>.dv-grid-view{flex:1 1 0;height:auto;min-height:0}.dv-floating-titlebar{box-sizing:border-box;height:var(--dv-floating-titlebar-height,22px);background-color:var(--dv-floating-titlebar-background-color);border-bottom:var(--dv-floating-titlebar-border-bottom,none);-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0}.dv-floating-titlebar.dv-draggable{cursor:grab}.dv-resize-container{--dv-overlay-z-index:var(--dv-overlay-z-index,999);z-index:calc(var(--dv-overlay-z-index) - 2);background-color:var(--dv-group-view-background-color);border:var(--dv-floating-border);box-shadow:var(--dv-floating-box-shadow);will-change:transform, opacity;backface-visibility:hidden;position:absolute;transform:translate(0,0)}.dv-resize-container.dv-hidden{display:none}.dv-resize-container.dv-resize-container-dragging{opacity:var(--dv-floating-group-dragging-opacity);will-change:transform, opacity}.dv-resize-container .dv-resize-handle-top,.dv-resize-container .dv-resize-handle-bottom,.dv-resize-container .dv-resize-handle-left,.dv-resize-container .dv-resize-handle-right,.dv-resize-container .dv-resize-handle-topleft,.dv-resize-container .dv-resize-handle-topright,.dv-resize-container .dv-resize-handle-bottomleft,.dv-resize-container .dv-resize-handle-bottomright{touch-action:none}.dv-resize-container .dv-resize-handle-top{width:calc(100% - 8px);height:4px;z-index:var(--dv-overlay-z-index);cursor:ns-resize;position:absolute;top:-2px;left:4px}.dv-resize-container .dv-resize-handle-bottom{width:calc(100% - 8px);height:4px;z-index:var(--dv-overlay-z-index);cursor:ns-resize;position:absolute;bottom:-2px;left:4px}.dv-resize-container .dv-resize-handle-left{width:4px;height:calc(100% - 8px);z-index:var(--dv-overlay-z-index);cursor:ew-resize;position:absolute;top:4px;left:-2px}.dv-resize-container .dv-resize-handle-right{width:4px;height:calc(100% - 8px);z-index:var(--dv-overlay-z-index);cursor:ew-resize;position:absolute;top:4px;right:-2px}.dv-resize-container .dv-resize-handle-topleft{width:4px;height:4px;z-index:var(--dv-overlay-z-index);cursor:nw-resize;position:absolute;top:-2px;left:-2px}.dv-resize-container .dv-resize-handle-topright{width:4px;height:4px;z-index:var(--dv-overlay-z-index);cursor:ne-resize;position:absolute;top:-2px;right:-2px}.dv-resize-container .dv-resize-handle-bottomleft{width:4px;height:4px;z-index:var(--dv-overlay-z-index);cursor:sw-resize;position:absolute;bottom:-2px;left:-2px}.dv-resize-container .dv-resize-handle-bottomright{width:4px;height:4px;z-index:var(--dv-overlay-z-index);cursor:se-resize;position:absolute;bottom:-2px;right:-2px}@media (pointer:coarse){.dv-resize-container .dv-resize-handle-top,.dv-resize-container .dv-resize-handle-bottom{width:calc(100% - 48px);height:16px;left:24px}.dv-resize-container .dv-resize-handle-top{top:-10px}.dv-resize-container .dv-resize-handle-bottom{bottom:-10px}.dv-resize-container .dv-resize-handle-left,.dv-resize-container .dv-resize-handle-right{width:16px;height:calc(100% - 48px);top:24px}.dv-resize-container .dv-resize-handle-left{left:-10px}.dv-resize-container .dv-resize-handle-right{right:-10px}.dv-resize-container .dv-resize-handle-topleft,.dv-resize-container .dv-resize-handle-topright,.dv-resize-container .dv-resize-handle-bottomleft,.dv-resize-container .dv-resize-handle-bottomright{width:24px;height:24px}.dv-resize-container .dv-resize-handle-topleft{top:-12px;left:-12px}.dv-resize-container .dv-resize-handle-topright{top:-12px;right:-12px}.dv-resize-container .dv-resize-handle-bottomleft{bottom:-12px;left:-12px}.dv-resize-container .dv-resize-handle-bottomright{bottom:-12px;right:-12px}}.dv-render-overlay{--dv-overlay-z-index:var(--dv-overlay-z-index,999);z-index:1;contain:layout paint;isolation:isolate;will-change:transform;backface-visibility:hidden;width:100%;height:100%;position:absolute;transform:translate(0,0)}.dv-render-overlay.dv-render-overlay-float{z-index:calc(var(--dv-overlay-z-index) - 1)}.dv-debug .dv-render-overlay{outline-offset:-1;outline:1px solid red}.dv-pane-container{width:100%;height:100%}.dv-pane-container.dv-animated .dv-view{will-change:transform;backface-visibility:hidden;transition:transform .15s ease-out;transform:translate(0,0)}.dv-pane-container .dv-view{flex-direction:column;display:flex;overflow:hidden;padding:0!important}.dv-pane-container .dv-view:not(:first-child):before{background-color:#0000!important}.dv-pane-container .dv-view:not(:first-child) .dv-pane>.dv-pane-header{border-top:1px solid var(--dv-paneview-header-border-color)}.dv-pane-container .dv-view .dv-default-header{background-color:var(--dv-group-view-background-color);color:var(--dv-activegroup-visiblepanel-tab-color);cursor:pointer;padding:0 8px;display:flex}.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon{justify-content:center;align-items:center;display:flex}.dv-pane-container .dv-view .dv-default-header>span{flex-grow:1;padding-left:8px}.dv-pane-container:first-of-type>.dv-pane>.dv-pane-header{border-top:none!important}.dv-pane-container .dv-pane{flex-direction:column;height:100%;display:flex;overflow:hidden}.dv-pane-container .dv-pane .dv-pane-header{box-sizing:border-box;-webkit-user-select:none;user-select:none;outline:none;position:relative}.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable{cursor:pointer}.dv-pane-container .dv-pane .dv-pane-header:focus:before,.dv-pane-container .dv-pane .dv-pane-header:focus-within:before{z-index:5;content:"";pointer-events:none;outline-offset:-1px;outline:-1px solid;outline-color:var(--dv-paneview-active-outline-color);width:100%;height:100%;position:absolute;top:0;left:0}.dv-pane-container .dv-pane .dv-pane-body{outline:none;flex-grow:1;position:relative;overflow:hidden auto}.dv-pane-container .dv-pane .dv-pane-body:focus:before,.dv-pane-container .dv-pane .dv-pane-body:focus-within:before{z-index:5;content:"";pointer-events:none;outline-offset:-1px;outline:-1px solid;outline-color:var(--dv-paneview-active-outline-color);width:100%;height:100%;position:absolute;top:0;left:0}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled{background-color:#000}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled{background-color:orange}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum{background-color:green}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum{background-color:red}.dv-split-view-container{width:100%;height:100%;position:relative;overflow:hidden}.dv-split-view-container.dv-splitview-disabled>.dv-sash-container>.dv-sash{pointer-events:none}.dv-split-view-container.dv-animation .dv-view,.dv-split-view-container.dv-animation .dv-sash{will-change:transform;backface-visibility:hidden;transition:transform .15s ease-out;transform:translate(0,0)}.dv-split-view-container.dv-horizontal{height:100%}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash{width:4px;height:100%}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-enabled{cursor:ew-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-maximum{cursor:w-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-minimum{cursor:e-resize}.dv-split-view-container.dv-horizontal>.dv-view-container>.dv-view:not(:first-child):before{width:1px;height:100%}.dv-split-view-container.dv-vertical{width:100%}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash{width:100%;height:4px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-enabled{cursor:ns-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-maximum{cursor:n-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-minimum{cursor:s-resize}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view{width:100%}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view:not(:first-child):before{width:100%;height:1px}.dv-split-view-container .dv-sash-container{width:100%;height:100%;position:absolute}.dv-split-view-container .dv-sash-container .dv-sash{z-index:99;-webkit-user-select:none;user-select:none;touch-action:none;background-color:var(--dv-sash-color,transparent);outline:none;position:absolute}.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active,.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover{background-color:var(--dv-active-sash-color,transparent);transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:var(--dv-active-sash-transition-duration,.1s);transition-delay:var(--dv-active-sash-transition-delay,.5s)}@media (pointer:coarse){.dv-split-view-container .dv-sash-container>.dv-sash:not(.dv-disabled):before{content:"";background:0 0;position:absolute}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash:not(.dv-disabled):before{inset:0 -10px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash:not(.dv-disabled):before{inset:-10px 0}}.dv-split-view-container .dv-view-container{width:100%;height:100%;position:relative}.dv-split-view-container .dv-view-container .dv-view{box-sizing:border-box;height:100%;position:absolute;overflow:auto}.dv-split-view-container.dv-separator-border .dv-view:not(:first-child):before{content:" ";z-index:5;pointer-events:none;background-color:var(--dv-separator-border);position:absolute;top:0;left:0}.dv-dragged{transform:translate(0,0)}.dv-tab-ghost-drag{position:relative}.dv-tab-ghost-drag:after{content:"";pointer-events:none;outline-offset:-1px;z-index:5;width:100%;height:100%;position:absolute;top:0;left:0;outline:1px solid var(--dv-tab-divider-color)!important}.dv-tab{flex-shrink:0}.dv-tab:focus-within,.dv-tab:focus{position:relative}.dv-tab:focus-within:after,.dv-tab:focus:after{content:"";pointer-events:none;outline-offset:-1px;z-index:5;width:100%;height:100%;position:absolute;top:0;left:0;outline:1px solid var(--dv-tab-divider-color)!important}.dv-tab.dv-tab-dragging .dv-default-tab-action{background-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action{visibility:visible}.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:hidden}.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action{visibility:visible}@media (hover:none){.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:visible}}.dv-tab .dv-default-tab{white-space:nowrap;text-overflow:ellipsis;align-items:center;width:100%;height:100%;display:flex;position:relative}.dv-tab .dv-default-tab .dv-default-tab-content{flex-grow:1;margin-right:4px}.dv-tab .dv-default-tab .dv-default-tab-action{box-sizing:border-box;justify-content:center;align-items:center;padding:4px;display:flex}.dv-tab .dv-default-tab .dv-default-tab-action:hover{background-color:var(--dv-icon-hover-background-color);border-radius:2px}@media (pointer:coarse){.dv-tab .dv-default-tab .dv-default-tab-action{padding:8px}}.dv-tabs-overflow-dropdown-default{height:100%;color:var(--dv-activegroup-hiddenpanel-tab-color);margin:var(--dv-tab-margin);cursor:pointer;flex-shrink:0;align-items:center;padding:.25rem .5rem;display:flex}.dv-tabs-overflow-dropdown-default>span{padding-left:.25rem}.dv-tabs-overflow-dropdown-default>svg{transform:rotate(90deg)}.dv-tabs-overflow-dropdown-default:hover{background-color:var(--dv-icon-hover-background-color);border-radius:2px}.dv-tabs-container{scrollbar-width:thin;will-change:scroll-position;overscroll-behavior:contain;touch-action:pan-x;height:100%;display:flex;position:relative;overflow:auto;transform:translate(0,0)}.dv-tabs-container.dv-tabs-container-vertical{writing-mode:vertical-rl;touch-action:pan-y;width:100%;height:fit-content;max-height:100%}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before,.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{content:" ";z-index:5;pointer-events:none;background-color:var(--dv-tab-divider-color);position:absolute;top:0;left:0}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before{width:1px;height:100%}.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{width:100%;height:1px}.dv-tabs-container::-webkit-scrollbar{height:3px}.dv-tabs-container::-webkit-scrollbar-track{background:0 0}.dv-tabs-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color)}.dv-scrollable>.dv-tabs-container{overflow:hidden}.dv-tab{-webkit-user-select:none;user-select:none;cursor:pointer;box-sizing:border-box;font-size:var(--dv-tab-font-size);margin:var(--dv-tab-margin);touch-action:none;outline:none;padding:.25rem .5rem;position:relative}.dv-tab.dv-tab--shifting{will-change:transform, margin-left, margin-right, margin-top, margin-bottom;transition:transform var(--dv-transition-duration,.2s) ease-out, margin-left var(--dv-transition-duration,.2s) ease-out, margin-right var(--dv-transition-duration,.2s) ease-out, margin-top var(--dv-transition-duration,.2s) ease-out, margin-bottom var(--dv-transition-duration,.2s) ease-out}.dv-tab.dv-tab--dragging,.dv-tab.dv-tab--group-collapsed{opacity:0;pointer-events:none;transition:width var(--dv-transition-duration,.2s) ease-out, padding var(--dv-transition-duration,.2s) ease-out, margin var(--dv-transition-duration,.2s) ease-out, opacity var(--dv-transition-duration,.2s) ease-out;overflow:hidden;width:0!important;min-width:0!important;margin:0!important;padding:0!important}.dv-tab.dv-tab--group-expanding{transition:width var(--dv-transition-duration,.2s) ease-out, padding var(--dv-transition-duration,.2s) ease-out, margin var(--dv-transition-duration,.2s) ease-out, opacity var(--dv-transition-duration,.2s) ease-out}@media (prefers-reduced-motion:reduce){.dv-tab,.dv-tab-group-chip{transition:none!important}}.dv-tab-group-chip{padding:var(--dv-tab-group-chip-padding);border-radius:var(--dv-tab-group-chip-border-radius);font-size:var(--dv-tab-group-chip-font-size);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;box-sizing:border-box;touch-action:none;background-color:var(--dv-tab-group-color);color:#fff;align-self:center;align-items:center;margin:0 8px;line-height:1;display:inline-flex}.dv-tab-group-chip.dv-tab-group-chip--accent-off{color:inherit;background-color:#0000}.dv-tab-group-chip.dv-tab-group-chip--shifting{will-change:margin-left;transition:margin-left var(--dv-transition-duration,.2s) ease-out}.dv-tab-group-chip.dv-tab-group-chip--dragging{opacity:0;pointer-events:none;transition:width var(--dv-transition-duration,.2s) ease-out, padding var(--dv-transition-duration,.2s) ease-out, margin var(--dv-transition-duration,.2s) ease-out, opacity var(--dv-transition-duration,.2s) ease-out;overflow:hidden;width:0!important;min-width:0!important;margin:0!important;padding:0!important}.dv-tab-group-chip .dv-tab-group-chip-label--empty{display:none}.dv-tab-group-chip:has(.dv-tab-group-chip-label--empty){border-radius:50%;width:12px;height:12px;padding:0;position:relative}.dv-tab-group-chip:has(.dv-tab-group-chip-label--empty):before{content:"";position:absolute;inset:-8px}.dv-tab-group-underline{opacity:var(--dv-tab-group-line-opacity);pointer-events:none;z-index:10;position:absolute;bottom:0}.dv-groupview-header-bottom .dv-tab-group-underline{top:0;bottom:auto}.dv-tabs-container-vertical .dv-tab-group-underline{bottom:auto;left:0}.dv-tabs-container-vertical .dv-tab-group-chip{margin:8px 0}.dv-tabs-container-vertical .dv-tab{padding:.5rem .25rem}.dv-tabs-container-vertical .dv-tab.dv-tab--group-collapsed{transition:height var(--dv-transition-duration,.2s) ease-out, padding var(--dv-transition-duration,.2s) ease-out, margin var(--dv-transition-duration,.2s) ease-out, opacity var(--dv-transition-duration,.2s) ease-out;width:auto!important;height:0!important;min-height:0!important;min-width:initial!important}.dv-tabs-container-vertical .dv-tab.dv-tab--group-expanding{transition:height var(--dv-transition-duration,.2s) ease-out, padding var(--dv-transition-duration,.2s) ease-out, margin var(--dv-transition-duration,.2s) ease-out, opacity var(--dv-transition-duration,.2s) ease-out}.dv-tabs-container-vertical .dv-tab.dv-tab--dragging{transition:height var(--dv-transition-duration,.2s) ease-out, padding var(--dv-transition-duration,.2s) ease-out, margin var(--dv-transition-duration,.2s) ease-out, opacity var(--dv-transition-duration,.2s) ease-out;width:auto!important;height:0!important;min-height:0!important;min-width:initial!important}.dv-tabs-overflow-container{height:unset;font-size:var(--dv-tabs-and-actions-container-font-size);border:1px solid var(--dv-tab-divider-color);background-color:var(--dv-group-view-background-color);flex-direction:column;max-height:min(50vh,400px);overflow-y:auto}.dv-tabs-overflow-container::-webkit-scrollbar{width:6px}.dv-tabs-overflow-container::-webkit-scrollbar-track{background:0 0}.dv-tabs-overflow-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color);border-radius:3px}.dv-tabs-overflow-container{scrollbar-width:thin}.dv-tabs-overflow-container .dv-tab:not(:last-child){border-bottom:1px solid var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tabs-overflow-container .dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-tabs-overflow-container .dv-tabs-overflow-group-header{color:var(--dv-activegroup-hiddenpanel-tab-color);cursor:pointer;border-bottom:1px solid var(--dv-tab-divider-color);align-items:center;gap:6px;padding:4px 8px;font-size:.8em;font-weight:600;display:flex}.dv-tabs-overflow-container .dv-tabs-overflow-group-header:hover{background-color:var(--dv-icon-hover-background-color)}.dv-tabs-overflow-container .dv-tabs-overflow-group-color{background-color:var(--dv-tab-group-color);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.dv-tabs-overflow-container .dv-tabs-overflow-group-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.dv-tabs-overflow-container .dv-tabs-overflow-group-collapsed-badge{opacity:.7;background-color:var(--dv-tab-divider-color);border-radius:3px;padding:1px 4px;font-size:.75em;font-weight:400}.dv-tabs-overflow-container .dv-tab.dv-tab--grouped{padding-left:16px}.dv-tabs-and-actions-container{background-color:var(--dv-tabs-and-actions-container-background-color);box-sizing:border-box;height:var(--dv-tabs-and-actions-container-height);font-size:var(--dv-tabs-and-actions-container-font-size);flex-shrink:0;display:flex}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-scrollable,.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container{flex-grow:1}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab{flex-grow:1;padding:0}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container{flex-grow:0}.dv-tabs-and-actions-container .dv-void-container{-webkit-user-select:none;user-select:none;touch-action:none;flex-grow:1;display:flex}.dv-tabs-and-actions-container .dv-void-container.dv-draggable{cursor:grab}.dv-tabs-and-actions-container .dv-right-actions-container{display:flex}.dv-tabs-and-actions-container .dv-right-actions-container.dv-right-actions-container-vertical{flex-direction:column}.dv-tabs-and-actions-container.dv-groupview-header-vertical{height:auto;width:var(--dv-tabs-and-actions-container-height);flex-direction:column}.dv-watermark{height:100%;display:flex}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#dbe7ef;background:#0d1117;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{overflow:hidden}button{font:inherit}.app-shell{background:linear-gradient(#1c242df2,#0d1117fa 84px),#0d1117;grid-template-rows:38px minmax(0,1fr);width:100%;height:100%;display:grid}.topbar{background:#121820;border-bottom:1px solid #26313d;justify-content:space-between;align-items:center;min-width:0;height:38px;padding:0 10px;display:flex}.brand{color:#f2f7fa;align-items:center;gap:8px;min-width:0;font-size:13px;font-weight:650;display:flex}.brand svg{color:#6ee7b7;flex:none}.topbar-actions,.dock-actions{align-items:center;gap:4px;display:flex}.workspace{min-width:0;min-height:0;padding:6px}.workspace .dv-view,.workspace .dv-render-overlay,.workspace .dv-react-part{min-width:0;min-height:0}.workspace .dv-groupview{background:#0b0f14}.workspace .dv-tabs-and-actions-container{min-height:30px}.workspace .dv-tab{font-size:12px}.icon-button{color:#c7d2de;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:0 0 26px;place-items:center;width:26px;height:26px;padding:0;display:inline-grid}.icon-button:hover:not(:disabled){color:#fff;background:#1a2530;border-color:#344657}.icon-button:focus-visible{outline-offset:1px;outline:2px solid #38bdf8}.icon-button:disabled{color:#5e6c7a;cursor:default}.watermark{place-items:center;width:100%;height:100%;display:grid}.watermark .icon-button{background:#131c25;border-color:#2c3b4a;flex-basis:34px;width:34px;height:34px}.terminal-panel{background:#0b0f14;width:100%;min-width:0;height:100%;min-height:0;position:relative;overflow:hidden}.terminal-instance.wterm{width:100%;height:100%;min-height:100%;box-shadow:none;--term-bg:#0b0f14;--term-fg:#d6dde5;--term-cursor:#facc15;--term-font-size:13px;border-radius:0;padding:8px}.terminal-instance.wterm.has-scrollback{overflow-y:auto}.terminal-status{pointer-events:none;place-items:center;width:9px;height:9px;display:grid;position:absolute;bottom:7px;right:8px}.status-dot{background:#f59e0b;border-radius:999px;width:7px;height:7px;box-shadow:0 0 0 2px #0b0f14cc}.terminal-panel[data-state=connected] .status-dot{background:#34d399}.terminal-panel[data-state=closed] .status-dot{background:#94a3b8}.terminal-panel[data-state=error] .status-dot{background:#fb7185}@media (width<=640px){.app-shell{grid-template-rows:36px minmax(0,1fr)}.topbar{height:36px;padding:0 8px}.workspace{padding:4px}.dock-actions{gap:2px}.icon-button{flex-basis:28px;width:28px;height:28px}}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>ReTerm</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-D6xc7zta.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Dgf5qVEq.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { chmodSync, existsSync } from "node:fs";
|
|
2
|
+
import { createServer } from "node:http";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import express from "express";
|
|
7
|
+
import * as pty from "node-pty";
|
|
8
|
+
import { WebSocketServer } from "ws";
|
|
9
|
+
import { isClientMessage } from "./shared/protocol.js";
|
|
10
|
+
const TOKEN_COOKIE = "reterm_token";
|
|
11
|
+
const DEFAULT_PUBLIC_DIR = fileURLToPath(new URL("./public", import.meta.url));
|
|
12
|
+
const require = createRequire(import.meta.url);
|
|
13
|
+
export async function startReTermServer(options) {
|
|
14
|
+
const shell = options.shell ?? getDefaultShell();
|
|
15
|
+
const publicDir = DEFAULT_PUBLIC_DIR;
|
|
16
|
+
const app = express();
|
|
17
|
+
ensureNodePtyHelperExecutable();
|
|
18
|
+
app.disable("x-powered-by");
|
|
19
|
+
app.use(createAuthMiddleware(options.authToken));
|
|
20
|
+
app.get("/api/health", (_req, res) => {
|
|
21
|
+
res.json({ ok: true, cwd: options.cwd, shell });
|
|
22
|
+
});
|
|
23
|
+
const indexHtml = path.join(publicDir, "index.html");
|
|
24
|
+
app.use(express.static(publicDir, { index: false }));
|
|
25
|
+
app.use((req, res, next) => {
|
|
26
|
+
if (req.method !== "GET" || req.path.startsWith("/api/")) {
|
|
27
|
+
next();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (path.extname(req.path)) {
|
|
31
|
+
next();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
res.sendFile(indexHtml);
|
|
35
|
+
});
|
|
36
|
+
const server = createServer(app);
|
|
37
|
+
const wss = new WebSocketServer({ noServer: true });
|
|
38
|
+
const sessions = new Set();
|
|
39
|
+
wss.on("connection", (socket, request) => {
|
|
40
|
+
sessions.add(socket);
|
|
41
|
+
socket.on("close", () => sessions.delete(socket));
|
|
42
|
+
attachPtySession(socket, request, { cwd: options.cwd, shell, authToken: options.authToken });
|
|
43
|
+
});
|
|
44
|
+
server.on("upgrade", (request, socket, head) => {
|
|
45
|
+
const requestUrl = new URL(request.url ?? "/", "http://localhost");
|
|
46
|
+
if (requestUrl.pathname !== "/api/pty") {
|
|
47
|
+
socket.destroy();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (!isAuthorized(request, requestUrl, options.authToken)) {
|
|
51
|
+
socket.write("HTTP/1.1 403 Forbidden\r\n\r\n");
|
|
52
|
+
socket.destroy();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
56
|
+
wss.emit("connection", ws, request);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
const port = await listenWithFallback(server, options.host, options.port, options.strictPort);
|
|
60
|
+
const displayHost = options.host === "0.0.0.0" ? "127.0.0.1" : options.host;
|
|
61
|
+
const url = new URL(`http://${displayHost}:${port}/`);
|
|
62
|
+
if (options.authToken) {
|
|
63
|
+
url.searchParams.set("token", options.authToken);
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
host: options.host,
|
|
67
|
+
port,
|
|
68
|
+
url: url.toString(),
|
|
69
|
+
shell,
|
|
70
|
+
cwd: options.cwd,
|
|
71
|
+
close: () => new Promise((resolve, reject) => {
|
|
72
|
+
for (const session of sessions) {
|
|
73
|
+
session.close();
|
|
74
|
+
}
|
|
75
|
+
wss.close();
|
|
76
|
+
server.close((error) => {
|
|
77
|
+
if (error) {
|
|
78
|
+
reject(error);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
resolve();
|
|
82
|
+
});
|
|
83
|
+
})
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function createAuthMiddleware(authToken) {
|
|
87
|
+
return (req, res, next) => {
|
|
88
|
+
if (!authToken) {
|
|
89
|
+
next();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const requestUrl = new URL(req.originalUrl, "http://localhost");
|
|
93
|
+
if (requestUrl.searchParams.get("token") === authToken) {
|
|
94
|
+
res.cookie(TOKEN_COOKIE, authToken, {
|
|
95
|
+
httpOnly: true,
|
|
96
|
+
sameSite: "strict",
|
|
97
|
+
secure: false
|
|
98
|
+
});
|
|
99
|
+
next();
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (readCookie(req.headers.cookie, TOKEN_COOKIE) === authToken) {
|
|
103
|
+
next();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
res.status(403).type("text/plain").send("Forbidden");
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function attachPtySession(socket, request, options) {
|
|
110
|
+
const requestUrl = new URL(request.url ?? "/", "http://localhost");
|
|
111
|
+
const cols = parseDimension(requestUrl.searchParams.get("cols"), 80);
|
|
112
|
+
const rows = parseDimension(requestUrl.searchParams.get("rows"), 24);
|
|
113
|
+
let terminal;
|
|
114
|
+
try {
|
|
115
|
+
terminal = pty.spawn(options.shell, [], {
|
|
116
|
+
name: "xterm-256color",
|
|
117
|
+
cols,
|
|
118
|
+
rows,
|
|
119
|
+
cwd: options.cwd,
|
|
120
|
+
env: {
|
|
121
|
+
...process.env,
|
|
122
|
+
COLORTERM: "truecolor",
|
|
123
|
+
RETERM: "1",
|
|
124
|
+
TERM: "xterm-256color"
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
send(socket, {
|
|
130
|
+
type: "error",
|
|
131
|
+
message: error instanceof Error ? error.message : "Failed to spawn PTY"
|
|
132
|
+
});
|
|
133
|
+
socket.close();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
send(socket, { type: "ready", shell: options.shell, cwd: options.cwd });
|
|
137
|
+
terminal.onData((data) => {
|
|
138
|
+
send(socket, { type: "output", data });
|
|
139
|
+
});
|
|
140
|
+
terminal.onExit(({ exitCode, signal }) => {
|
|
141
|
+
send(socket, { type: "exit", exitCode, signal: signal ?? null });
|
|
142
|
+
});
|
|
143
|
+
socket.on("message", (raw) => {
|
|
144
|
+
const message = parseClientMessage(raw);
|
|
145
|
+
if (!message || !terminal) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
handleClientMessage(terminal, message);
|
|
149
|
+
});
|
|
150
|
+
socket.on("close", () => {
|
|
151
|
+
if (!terminal) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
terminal.kill();
|
|
155
|
+
terminal = undefined;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
function handleClientMessage(terminal, message) {
|
|
159
|
+
switch (message.type) {
|
|
160
|
+
case "input":
|
|
161
|
+
terminal.write(message.data);
|
|
162
|
+
return;
|
|
163
|
+
case "resize":
|
|
164
|
+
terminal.resize(message.cols, message.rows);
|
|
165
|
+
return;
|
|
166
|
+
case "ping":
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function parseClientMessage(raw) {
|
|
171
|
+
try {
|
|
172
|
+
const payload = Array.isArray(raw) ? Buffer.concat(raw).toString("utf8") : raw.toString("utf8");
|
|
173
|
+
const parsed = JSON.parse(payload);
|
|
174
|
+
return isClientMessage(parsed) ? parsed : null;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function send(socket, message) {
|
|
181
|
+
if (socket.readyState === socket.OPEN) {
|
|
182
|
+
socket.send(JSON.stringify(message));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function isAuthorized(request, requestUrl, authToken) {
|
|
186
|
+
if (!authToken) {
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
if (requestUrl.searchParams.get("token") === authToken) {
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
return readCookie(request.headers.cookie, TOKEN_COOKIE) === authToken;
|
|
193
|
+
}
|
|
194
|
+
function readCookie(header, name) {
|
|
195
|
+
if (!header) {
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
for (const part of header.split(";")) {
|
|
199
|
+
const [rawKey, ...rawValue] = part.trim().split("=");
|
|
200
|
+
if (rawKey === name) {
|
|
201
|
+
return decodeURIComponent(rawValue.join("="));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
function parseDimension(value, fallback) {
|
|
207
|
+
const parsed = Number(value);
|
|
208
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
209
|
+
return fallback;
|
|
210
|
+
}
|
|
211
|
+
return parsed;
|
|
212
|
+
}
|
|
213
|
+
async function listenWithFallback(server, host, preferredPort, strictPort) {
|
|
214
|
+
const maxAttempts = preferredPort === 0 || strictPort ? 1 : 20;
|
|
215
|
+
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
216
|
+
const port = preferredPort === 0 ? 0 : preferredPort + attempt;
|
|
217
|
+
try {
|
|
218
|
+
return await listenOnce(server, host, port);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (!isAddressInUse(error) || attempt === maxAttempts - 1) {
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
throw new Error("No available port found");
|
|
227
|
+
}
|
|
228
|
+
function listenOnce(server, host, port) {
|
|
229
|
+
return new Promise((resolve, reject) => {
|
|
230
|
+
const onError = (error) => {
|
|
231
|
+
server.off("listening", onListening);
|
|
232
|
+
reject(error);
|
|
233
|
+
};
|
|
234
|
+
const onListening = () => {
|
|
235
|
+
server.off("error", onError);
|
|
236
|
+
const address = server.address();
|
|
237
|
+
if (!address || typeof address === "string") {
|
|
238
|
+
reject(new Error("Unable to resolve listening address"));
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
resolve(address.port);
|
|
242
|
+
};
|
|
243
|
+
server.once("error", onError);
|
|
244
|
+
server.once("listening", onListening);
|
|
245
|
+
server.listen(port, host);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
function isAddressInUse(error) {
|
|
249
|
+
return (error instanceof Error &&
|
|
250
|
+
"code" in error &&
|
|
251
|
+
error.code === "EADDRINUSE");
|
|
252
|
+
}
|
|
253
|
+
function getDefaultShell() {
|
|
254
|
+
if (process.platform === "win32") {
|
|
255
|
+
return process.env.ComSpec ?? "powershell.exe";
|
|
256
|
+
}
|
|
257
|
+
return process.env.SHELL ?? "/bin/sh";
|
|
258
|
+
}
|
|
259
|
+
function ensureNodePtyHelperExecutable() {
|
|
260
|
+
if (process.platform === "win32") {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
let packageRoot;
|
|
264
|
+
try {
|
|
265
|
+
packageRoot = path.dirname(require.resolve("node-pty/package.json"));
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const candidates = [
|
|
271
|
+
path.join(packageRoot, "prebuilds", `${process.platform}-${process.arch}`, "spawn-helper"),
|
|
272
|
+
path.join(packageRoot, "build", "Release", "spawn-helper"),
|
|
273
|
+
path.join(packageRoot, "build", "Debug", "spawn-helper")
|
|
274
|
+
];
|
|
275
|
+
for (const candidate of candidates) {
|
|
276
|
+
if (!existsSync(candidate)) {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
try {
|
|
280
|
+
chmodSync(candidate, 0o755);
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// If chmod is unavailable, node-pty will surface the spawn error.
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function isClientMessage(value) {
|
|
2
|
+
if (!value || typeof value !== "object") {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const candidate = value;
|
|
6
|
+
if (candidate.type === "ping") {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (candidate.type === "input") {
|
|
10
|
+
return typeof candidate.data === "string";
|
|
11
|
+
}
|
|
12
|
+
if (candidate.type === "resize") {
|
|
13
|
+
return (Number.isInteger(candidate.cols) &&
|
|
14
|
+
Number.isInteger(candidate.rows) &&
|
|
15
|
+
Number(candidate.cols) > 0 &&
|
|
16
|
+
Number(candidate.rows) > 0);
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/shared/protocol.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IAEnD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC5C,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YAChC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YAChC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|