diff --git a/.gitignore b/.gitignore
index 058cab56d..e6f1299b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,4 +71,5 @@ emhttp/plugins/node_modules/
emhttp/plugins/.prettierignore
emhttp/plugins/.prettierrc
emhttp/plugins/package-lock.json
-emhttp/plugins/package.json
\ No newline at end of file
+emhttp/plugins/package.json
+emhttp/plugins/pnpm-lock.yaml
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index b3d3e58c9..e9d9ad29e 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -5,6 +5,8 @@
"bmewburn.vscode-intelephense-client",
"foxundermoon.shell-format",
"timonwong.shellcheck",
- "esbenp.prettier-vscode"
+ "esbenp.prettier-vscode",
+ "phoenisx.cssvar",
+ "usernamehw.errorlens",
]
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 67841e005..c92ef75ac 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -79,5 +79,8 @@
"zip",
"zlib",
"libvirt-php"
- ]
+ ],
+ "search.exclude": {
+ "emhttp/webGui/**/*": true,
+ }
}
diff --git a/emhttp/plugins/dynamix.apcupsd/sheets/UPSsettings.css b/emhttp/plugins/dynamix.apcupsd/sheets/UPSsettings.css
index d8b1dbb96..0d9e7e58d 100644
--- a/emhttp/plugins/dynamix.apcupsd/sheets/UPSsettings.css
+++ b/emhttp/plugins/dynamix.apcupsd/sheets/UPSsettings.css
@@ -1,4 +1,15 @@
-table.ups thead tr th{width:16.6%;padding-left:10px}
-table.ups tbody tr td{padding-left:10px;font-weight:bold}
-tr.ups{height:3rem;line-height:3rem}
-i.ups{margin-right:8px}
+table.ups thead tr th {
+ width: 16.6%;
+ padding-left: 10px;
+}
+table.ups tbody tr td {
+ padding-left: 10px;
+ font-weight: bold;
+}
+tr.ups {
+ height: 3rem;
+ line-height: 3rem;
+}
+i.ups {
+ margin-right: 8px;
+}
diff --git a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page
index b88a44dc4..1412b71ba 100644
--- a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page
+++ b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page
@@ -26,9 +26,7 @@ $top = in_array($theme,['white','black']) ? 40 : 20;
$busy = " "._('Please wait')."... "._('starting up containers');
$cpus = cpu_list();
?>
-
-">
| _(Application)_ | _(Version)_ | _(Network)_ | _(Container IP)_ | _(Container Port)_ | _(LAN IP:Port)_ | _(Volume Mappings)_ (_(App to Host)_) | _(CPU & Memory load)_ | _(Autostart)_ | _(Uptime)_ |
diff --git a/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php b/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
index 0b7ad2dd2..c47c50b16 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
@@ -478,10 +478,8 @@ if (!empty($TS_no_peers) && !empty($TS_container)) {
}
}
?>
-">
">
">
-">
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-azure.css b/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-azure.css
deleted file mode 100644
index 87419de0b..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-azure.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-black.css b/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-black.css
deleted file mode 100644
index 5bfde958d..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-black.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-gray.css b/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-gray.css
deleted file mode 100644
index 5bfde958d..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-gray.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-white.css b/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-white.css
deleted file mode 100644
index 87419de0b..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer-white.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer.css b/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer.css
index b85ba21a5..18095486f 100644
--- a/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer.css
+++ b/emhttp/plugins/dynamix.docker.manager/sheets/AddContainer.css
@@ -1,14 +1,77 @@
-.noshow,.advanced{display:none}
-.required:after{content:" *";color:#E80000}
-span.boxed{display:inline-block;line-height:normal;white-space:normal;width:60%}
-span.cpu,label.checkbox{display:inline-block;width:32px}
-span.ct{display:inline-block;width:230px}
-span.net{display:inline-block;width:120px}
-span.ip{display:inline-block;width:160px}
-dl,dt,dd{line-height:normal!important;height:auto!important}
-dl{padding:8px 0!important}
-dl>dt:nth-of-type(2),dl>dd:nth-of-type(2){padding:20px 0 0 0!important}
-input.setting_input{margin-right:4rem}
-input,select{margin-top:-0.8rem!important}
-div#configLocation,div#configLocation dl{padding:0!important}
-div#configLocation dt{margin-top:-0.18rem!important}
+.noshow,
+.advanced {
+ display: none;
+}
+.required:after {
+ content: " *";
+ color: var(--red-800);
+}
+span.boxed {
+ display: inline-block;
+ line-height: normal;
+ white-space: normal;
+ width: 60%;
+}
+span.cpu,
+label.checkbox {
+ display: inline-block;
+ width: 32px;
+}
+span.ct {
+ display: inline-block;
+ width: 230px;
+}
+span.net {
+ display: inline-block;
+ width: 120px;
+}
+span.ip {
+ display: inline-block;
+ width: 160px;
+}
+dl,
+dt,
+dd {
+ line-height: normal !important;
+ height: auto !important;
+}
+dl {
+ padding: 8px 0 !important;
+}
+dl > dt:nth-of-type(2),
+dl > dd:nth-of-type(2) {
+ padding: 20px 0 0 0 !important;
+}
+input.setting_input {
+ margin-right: 4rem;
+}
+input,
+select {
+ margin-top: -0.8rem !important;
+}
+div#configLocation,
+div#configLocation dl {
+ padding: 0 !important;
+}
+div#configLocation dt {
+ margin-top: -0.18rem !important;
+}
+
+:root {
+ --add-container-file-tree-background: var(--black);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --add-container-file-tree-background: var(--gray-100);
+}
+
+.fileTree {
+ width: 240px;
+ max-height: 200px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ position: absolute;
+ display: none;
+ background: var(--add-container-file-tree-background);
+}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/DockerContainers.css b/emhttp/plugins/dynamix.docker.manager/sheets/DockerContainers.css
index f57f754f0..2a9bb180d 100644
--- a/emhttp/plugins/dynamix.docker.manager/sheets/DockerContainers.css
+++ b/emhttp/plugins/dynamix.docker.manager/sheets/DockerContainers.css
@@ -1,12 +1,45 @@
-.basic{display:block}
-.advanced{display:none;white-space:nowrap}
-.log{cursor:zoom-in}
-.exec{cursor:pointer}
-table#docker_containers{text-align:left}
-th.five{width:5%}
-th.nine{width:9%}
-th.load{width:140px}
-input.wait{width:24px;margin:0 4px;padding:0 5px;border:none;box-shadow:none;background-color:transparent}
-table tbody td{line-height:normal}
-i.mover{margin-right:8px;display:none}
-#resetsort{margin-left:12px;display:inline-block;width:32px}
+.basic {
+ display: block;
+}
+.advanced {
+ display: none;
+ white-space: nowrap;
+}
+.log {
+ cursor: zoom-in;
+}
+.exec {
+ cursor: pointer;
+}
+table#docker_containers {
+ text-align: left;
+}
+th.five {
+ width: 5%;
+}
+th.nine {
+ width: 9%;
+}
+th.load {
+ width: 140px;
+}
+input.wait {
+ width: 24px;
+ margin: 0 4px;
+ padding: 0 5px;
+ border: none;
+ box-shadow: none;
+ background-color: transparent;
+}
+table tbody td {
+ line-height: normal;
+}
+i.mover {
+ margin-right: 8px;
+ display: none;
+}
+#resetsort {
+ margin-left: 12px;
+ display: inline-block;
+ width: 32px;
+}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-azure.css b/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-azure.css
deleted file mode 100644
index d60555212..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-azure.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-span.disabled{color:#B0B0B0}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-black.css b/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-black.css
deleted file mode 100644
index 97dd4a600..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-black.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-span.disabled{color:#404040}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-gray.css b/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-gray.css
deleted file mode 100644
index 97dd4a600..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-gray.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-span.disabled{color:#404040}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-white.css b/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-white.css
deleted file mode 100644
index d60555212..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings-white.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-span.disabled{color:#B0B0B0}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings.css b/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings.css
index b4db05070..636329602 100644
--- a/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings.css
+++ b/emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings.css
@@ -1,17 +1,90 @@
-.errortext{color:#EF3D47;display:none;margin-left:20px}
-.basic{display:inline-block}
-.advanced{display:none}
-select.mask{min-width:0;margin:0 10px 0 4px}
-select.net{min-width:0;margin:0 4px 0 2px}
-select option.hide{display:none}
-input.ip4{width:100px;margin:0 4px 0 1px}
-input.ip6{width:140px;margin:0 4px}
-input.gw4{width:100px;margin:0 4px 0 1px}
-input.gw6{width:160px;margin:0 4px}
-input.pool6{width:40px;margin:0 4px 0 1px}
-span.net{margin-left:4px;margin-right:2px}
-span.ip4{display:inline-block;width:260px}
-span.ip6{display:inline-block;width:310px}
-span.gw4{display:inline-block;width:200px}
-span.gw6{display:inline-block;width:270px}
-span.nonexist{margin-left:20px}
+:root {
+ --docker-settings-file-tree-background: var(--black);
+ --docker-settings-span-disabled-color: var(--gray-600);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --docker-settings-file-tree-background: var(--gray-100);
+ --docker-settings-span-disabled-color: var(--gray-300); /* Condensed from: #b0b0b0 */
+}
+
+.errortext {
+ color: var(--red-800); /* Condensed from: #ef3d47 */
+ display: none;
+ margin-left: 20px;
+}
+.basic {
+ display: inline-block;
+}
+.advanced {
+ display: none;
+}
+select.mask {
+ min-width: 0;
+ margin: 0 10px 0 4px;
+}
+select.net {
+ min-width: 0;
+ margin: 0 4px 0 2px;
+}
+select option.hide {
+ display: none;
+}
+input.ip4 {
+ width: 100px;
+ margin: 0 4px 0 1px;
+}
+input.ip6 {
+ width: 140px;
+ margin: 0 4px;
+}
+input.gw4 {
+ width: 100px;
+ margin: 0 4px 0 1px;
+}
+input.gw6 {
+ width: 160px;
+ margin: 0 4px;
+}
+input.pool6 {
+ width: 40px;
+ margin: 0 4px 0 1px;
+}
+span.net {
+ margin-left: 4px;
+ margin-right: 2px;
+}
+span.ip4 {
+ display: inline-block;
+ width: 260px;
+}
+span.ip6 {
+ display: inline-block;
+ width: 310px;
+}
+span.gw4 {
+ display: inline-block;
+ width: 200px;
+}
+span.gw6 {
+ display: inline-block;
+ width: 270px;
+}
+span.nonexist {
+ margin-left: 20px;
+}
+
+.fileTree {
+ background: var(--docker-settings-file-tree-background);
+ width: 300px;
+ max-height: 150px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ position: absolute;
+ z-index: 100;
+ display: none;
+}
+span.disabled {
+ color: var(--docker-settings-span-disabled-color);
+}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-azure.css b/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-azure.css
deleted file mode 100644
index 87419de0b..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-azure.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-black.css b/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-black.css
deleted file mode 100644
index 5bfde958d..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-black.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-gray.css b/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-gray.css
deleted file mode 100644
index 5bfde958d..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-gray.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-white.css b/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-white.css
deleted file mode 100644
index 87419de0b..000000000
--- a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer-white.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}
diff --git a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer.css b/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer.css
index b85ba21a5..3e7a8efdf 100644
--- a/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer.css
+++ b/emhttp/plugins/dynamix.docker.manager/sheets/UpdateContainer.css
@@ -1,14 +1,77 @@
-.noshow,.advanced{display:none}
-.required:after{content:" *";color:#E80000}
-span.boxed{display:inline-block;line-height:normal;white-space:normal;width:60%}
-span.cpu,label.checkbox{display:inline-block;width:32px}
-span.ct{display:inline-block;width:230px}
-span.net{display:inline-block;width:120px}
-span.ip{display:inline-block;width:160px}
-dl,dt,dd{line-height:normal!important;height:auto!important}
-dl{padding:8px 0!important}
-dl>dt:nth-of-type(2),dl>dd:nth-of-type(2){padding:20px 0 0 0!important}
-input.setting_input{margin-right:4rem}
-input,select{margin-top:-0.8rem!important}
-div#configLocation,div#configLocation dl{padding:0!important}
-div#configLocation dt{margin-top:-0.18rem!important}
+:root {
+ --update-container-file-tree-background: var(--black);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --update-container-file-tree-background: var(--gray-100);
+}
+
+.noshow,
+.advanced {
+ display: none;
+}
+.required:after {
+ content: " *";
+ color: var(--red-800);
+}
+span.boxed {
+ display: inline-block;
+ line-height: normal;
+ white-space: normal;
+ width: 60%;
+}
+span.cpu,
+label.checkbox {
+ display: inline-block;
+ width: 32px;
+}
+span.ct {
+ display: inline-block;
+ width: 230px;
+}
+span.net {
+ display: inline-block;
+ width: 120px;
+}
+span.ip {
+ display: inline-block;
+ width: 160px;
+}
+dl,
+dt,
+dd {
+ line-height: normal !important;
+ height: auto !important;
+}
+dl {
+ padding: 8px 0 !important;
+}
+dl > dt:nth-of-type(2),
+dl > dd:nth-of-type(2) {
+ padding: 20px 0 0 0 !important;
+}
+input.setting_input {
+ margin-right: 4rem;
+}
+input,
+select {
+ margin-top: -0.8rem !important;
+}
+div#configLocation,
+div#configLocation dl {
+ padding: 0 !important;
+}
+div#configLocation dt {
+ margin-top: -0.18rem !important;
+}
+
+.fileTree {
+ width: 240px;
+ max-height: 200px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ position: absolute;
+ display: none;
+ background: var(--update-container-file-tree-background);
+}
diff --git a/emhttp/plugins/dynamix.docker.manager/styles/style-azure.css b/emhttp/plugins/dynamix.docker.manager/styles/style-azure.css
deleted file mode 100644
index aa3ecf607..000000000
--- a/emhttp/plugins/dynamix.docker.manager/styles/style-azure.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
-.ui-dropdownchecklist .ui-state-default{background:#f2f2f2;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
-.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector{border:1px solid #1c1c1c;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
-.ui-widget-header{border:none;background:#e3e3e3;color:#1c1c1c;font-weight:bold}
-.ui-widget-content{border:1px solid #1c1c1c;background:#f2f2f2;color:#1c1c1c}
-.ui-state-active{background:#e8e8e8}
-.ui-dropdownchecklist-dropcontainer{background:#f2f2f2;border:1px solid #1c1c1c}
-.ui-state-disabled{color:#1c1c1c;border-color:#a2a2a2;background:#e8e8e8;opacity:0.5}
-.ui-dropdownchecklist-indent{padding-left:7px}
-.ui-dropdownchecklist-text{color:#1c1c1c;font-size:1.3rem}
-.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#f2f2f2;border:0px}
-.ui-tailscale-row {display: flex;justify-content: space-between;min-width: 300px;width: 100%;flex-wrap: nowrap;overflow-x: auto;}
-.ui-tailscale-label {flex: 1;}
-.ui-tailscale-value {flex: 3;}
diff --git a/emhttp/plugins/dynamix.docker.manager/styles/style-black.css b/emhttp/plugins/dynamix.docker.manager/styles/style-black.css
deleted file mode 100644
index d9d61d10a..000000000
--- a/emhttp/plugins/dynamix.docker.manager/styles/style-black.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
-.ui-dropdownchecklist .ui-state-default{background:#1c1c1c;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
-.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector{border:1px solid #e5e5e5;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
-.ui-widget-header{border:none;background:#2b2b2b;color:#f2f2f2;font-weight:bold}
-.ui-widget-content{border:1px solid #e5e5e5;background:#1c1c1c;color:#f2f2f2}
-.ui-state-active{background:#262626}
-.ui-dropdownchecklist-dropcontainer{background:#1c1c1c;border:1px solid #e5e5e5}
-.ui-state-disabled{color:#f2f2f2;border-color:#6c6c6c;background:#262626;opacity:0.5}
-.ui-dropdownchecklist-indent{padding-left:7px}
-.ui-dropdownchecklist-text{color:#f2f2f2;font-size:1.3rem}
-.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#1c1c1c;border:0px}
-.ui-tailscale-row {display: flex;justify-content: space-between;min-width: 300px;width: 100%;flex-wrap: nowrap;overflow-x: auto;}
-.ui-tailscale-label {flex: 1;}
-.ui-tailscale-value {flex: 3;}
diff --git a/emhttp/plugins/dynamix.docker.manager/styles/style-gray.css b/emhttp/plugins/dynamix.docker.manager/styles/style-gray.css
deleted file mode 100644
index d9d61d10a..000000000
--- a/emhttp/plugins/dynamix.docker.manager/styles/style-gray.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
-.ui-dropdownchecklist .ui-state-default{background:#1c1c1c;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
-.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector{border:1px solid #e5e5e5;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
-.ui-widget-header{border:none;background:#2b2b2b;color:#f2f2f2;font-weight:bold}
-.ui-widget-content{border:1px solid #e5e5e5;background:#1c1c1c;color:#f2f2f2}
-.ui-state-active{background:#262626}
-.ui-dropdownchecklist-dropcontainer{background:#1c1c1c;border:1px solid #e5e5e5}
-.ui-state-disabled{color:#f2f2f2;border-color:#6c6c6c;background:#262626;opacity:0.5}
-.ui-dropdownchecklist-indent{padding-left:7px}
-.ui-dropdownchecklist-text{color:#f2f2f2;font-size:1.3rem}
-.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#1c1c1c;border:0px}
-.ui-tailscale-row {display: flex;justify-content: space-between;min-width: 300px;width: 100%;flex-wrap: nowrap;overflow-x: auto;}
-.ui-tailscale-label {flex: 1;}
-.ui-tailscale-value {flex: 3;}
diff --git a/emhttp/plugins/dynamix.docker.manager/styles/style-white.css b/emhttp/plugins/dynamix.docker.manager/styles/style-white.css
deleted file mode 100644
index aa3ecf607..000000000
--- a/emhttp/plugins/dynamix.docker.manager/styles/style-white.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
-.ui-dropdownchecklist .ui-state-default{background:#f2f2f2;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
-.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector{border:1px solid #1c1c1c;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
-.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
-.ui-widget-header{border:none;background:#e3e3e3;color:#1c1c1c;font-weight:bold}
-.ui-widget-content{border:1px solid #1c1c1c;background:#f2f2f2;color:#1c1c1c}
-.ui-state-active{background:#e8e8e8}
-.ui-dropdownchecklist-dropcontainer{background:#f2f2f2;border:1px solid #1c1c1c}
-.ui-state-disabled{color:#1c1c1c;border-color:#a2a2a2;background:#e8e8e8;opacity:0.5}
-.ui-dropdownchecklist-indent{padding-left:7px}
-.ui-dropdownchecklist-text{color:#1c1c1c;font-size:1.3rem}
-.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#f2f2f2;border:0px}
-.ui-tailscale-row {display: flex;justify-content: space-between;min-width: 300px;width: 100%;flex-wrap: nowrap;overflow-x: auto;}
-.ui-tailscale-label {flex: 1;}
-.ui-tailscale-value {flex: 3;}
diff --git a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-azure.css b/emhttp/plugins/dynamix.gui.search/sheets/gui_search-azure.css
deleted file mode 100644
index a46b2ff08..000000000
--- a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-azure.css
+++ /dev/null
@@ -1,2 +0,0 @@
-#guiSearchBoxSpan{display:inline-block;margin:0 0 0 20px;padding:0;height:auto;line-height:normal;font-size:1.3rem}
-#guiSearchBox{position:relative;top:0;left:0;width:50rem;border:none;border-radius:20px;margin:0;padding:5px 12px;color:#1c1b1b;background-color:#feefb3}
diff --git a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-black.css b/emhttp/plugins/dynamix.gui.search/sheets/gui_search-black.css
deleted file mode 100644
index 552540a5f..000000000
--- a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-black.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#guiSearchBoxSpan{display:inline-block;position:relative;margin:4px 2px 2px 2px;padding:0;text-align:left;height:auto;line-height:normal;font-size:1.3rem}
-#guiSearchBoxSpan:after{font-family:unraid;content:'\e956';position:absolute;top:.8rem;left:1.5rem;font-size:1.3rem}
-#guiSearchBox{width:50rem;border:none;border-radius:20px;padding-left:4rem;opacity:0.5;invert(100%)}
diff --git a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-gray.css b/emhttp/plugins/dynamix.gui.search/sheets/gui_search-gray.css
deleted file mode 100644
index a46b2ff08..000000000
--- a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-gray.css
+++ /dev/null
@@ -1,2 +0,0 @@
-#guiSearchBoxSpan{display:inline-block;margin:0 0 0 20px;padding:0;height:auto;line-height:normal;font-size:1.3rem}
-#guiSearchBox{position:relative;top:0;left:0;width:50rem;border:none;border-radius:20px;margin:0;padding:5px 12px;color:#1c1b1b;background-color:#feefb3}
diff --git a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-white.css b/emhttp/plugins/dynamix.gui.search/sheets/gui_search-white.css
deleted file mode 100644
index 552540a5f..000000000
--- a/emhttp/plugins/dynamix.gui.search/sheets/gui_search-white.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#guiSearchBoxSpan{display:inline-block;position:relative;margin:4px 2px 2px 2px;padding:0;text-align:left;height:auto;line-height:normal;font-size:1.3rem}
-#guiSearchBoxSpan:after{font-family:unraid;content:'\e956';position:absolute;top:.8rem;left:1.5rem;font-size:1.3rem}
-#guiSearchBox{width:50rem;border:none;border-radius:20px;padding-left:4rem;opacity:0.5;invert(100%)}
diff --git a/emhttp/plugins/dynamix.gui.search/sheets/gui_search.css b/emhttp/plugins/dynamix.gui.search/sheets/gui_search.css
new file mode 100644
index 000000000..4062bf4f9
--- /dev/null
+++ b/emhttp/plugins/dynamix.gui.search/sheets/gui_search.css
@@ -0,0 +1,56 @@
+:root {
+ --gui-search-search-box-text-color: var(--white);
+ --gui-search-search-box-background-color: var(--gray-500);
+}
+
+#guiSearchBoxSpan {
+ display: inline-block;
+ padding: 0;
+ text-align: left;
+ height: auto;
+ line-height: normal;
+ font-size: 1.3rem;
+}
+
+#guiSearchBox {
+ width: 50rem;
+ border: none;
+ border-radius: 20px;
+ color: var(--gui-search-search-box-text-color);
+ background-color: var(--gui-search-search-box-background-color);
+}
+
+.Theme--black,
+.Theme--white {
+ #guiSearchBoxSpan {
+ position: relative;
+ margin: 4px 2px 2px 2px;
+ }
+ #guiSearchBoxSpan:after {
+ font-family: unraid;
+ content: "\e956";
+ position: absolute;
+ top: 0.8rem;
+ left: 1.5rem;
+ font-size: 1.3rem;
+ }
+ #guiSearchBox {
+ padding-left: 4rem;
+ }
+}
+
+.Theme--sidebar {
+ --gui-search-search-box-text-color: var(--black);
+ --gui-search-search-box-background-color: var(--yellow-200);
+
+ #guiSearchBoxSpan {
+ margin: 0 0 0 20px;
+ }
+ #guiSearchBox {
+ position: relative;
+ top: 0;
+ left: 0;
+ margin: 0;
+ padding: 5px 12px;
+ }
+}
\ No newline at end of file
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/PluginHelpers.css b/emhttp/plugins/dynamix.plugin.manager/sheets/PluginHelpers.css
index 17e5f1e0d..76ce9e196 100644
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/PluginHelpers.css
+++ b/emhttp/plugins/dynamix.plugin.manager/sheets/PluginHelpers.css
@@ -1,5 +1,30 @@
-.ca_element_notice{padding-right:20px;width:100%;height:40px;line-height:40px;color:#e68a00;background:#feefb3;border-bottom:#e68a00 1px solid;text-align:center;font-size:1.4rem;z-index:900}
-a.ca_PluginUpdateInstall{cursor:pointer}
-span.ca_PluginUpdateDismiss{float:right;margin-right:20px;cursor:pointer}
-span.bannerInfo {cursor:pointer;text-decoration:none;margin:0 12px 0 6px}
-span.bannerInfo::before {content:"\f05a";font-family:fontAwesome;color:#e68a00}
+.ca_element_notice {
+ padding-right: 20px;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ color: var(--orange-300);
+ background: var(--yellow-200);
+ border-bottom: var(--orange-300) 1px solid;
+ text-align: center;
+ font-size: 1.4rem;
+ z-index: 900;
+}
+a.ca_PluginUpdateInstall {
+ cursor: pointer;
+}
+span.ca_PluginUpdateDismiss {
+ float: right;
+ margin-right: 20px;
+ cursor: pointer;
+}
+span.bannerInfo {
+ cursor: pointer;
+ text-decoration: none;
+ margin: 0 12px 0 6px;
+}
+span.bannerInfo::before {
+ content: "\f05a";
+ font-family: fontAwesome;
+ color: var(--orange-300);
+}
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins-black.css b/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins-black.css
deleted file mode 100644
index 866f21f0a..000000000
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins-black.css
+++ /dev/null
@@ -1,2 +0,0 @@
-span.status.vhshift{margin-top:8px!important}
-table#plugin_table{margin-top:-43px!important}
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins-white.css b/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins-white.css
deleted file mode 100644
index 866f21f0a..000000000
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins-white.css
+++ /dev/null
@@ -1,2 +0,0 @@
-span.status.vhshift{margin-top:8px!important}
-table#plugin_table{margin-top:-43px!important}
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css b/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css
index dc21dfb02..f49d79aa6 100644
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css
+++ b/emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css
@@ -1,2 +1,18 @@
-#plugin_tree{width:33%;height:200px;overflow-y:scroll}
-table tbody td{line-height:normal}
+#plugin_tree {
+ width: 33%;
+ height: 200px;
+ overflow-y: scroll;
+}
+table tbody td {
+ line-height: normal;
+}
+
+.Theme--black,
+.Theme--white {
+ span.status.vhshift {
+ margin-top: 8px !important;
+ }
+ table#plugin_table {
+ margin-top: -43px !important;
+ }
+}
\ No newline at end of file
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/Update-black.css b/emhttp/plugins/dynamix.plugin.manager/sheets/Update-black.css
deleted file mode 100644
index 35e27e237..000000000
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/Update-black.css
+++ /dev/null
@@ -1 +0,0 @@
-span.vhshift{margin-top:13px!important}
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/Update-white.css b/emhttp/plugins/dynamix.plugin.manager/sheets/Update-white.css
deleted file mode 100644
index 35e27e237..000000000
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/Update-white.css
+++ /dev/null
@@ -1 +0,0 @@
-span.vhshift{margin-top:13px!important}
diff --git a/emhttp/plugins/dynamix.plugin.manager/sheets/Update.css b/emhttp/plugins/dynamix.plugin.manager/sheets/Update.css
index b1f500365..a156b5956 100644
--- a/emhttp/plugins/dynamix.plugin.manager/sheets/Update.css
+++ b/emhttp/plugins/dynamix.plugin.manager/sheets/Update.css
@@ -1,9 +1,52 @@
-ul,li{margin:0;padding-top:0;padding-bottom:0}
-pre.pre{margin:30px 0}
-pre>p{margin:0;padding:0}
-pre#swaltext{height:600px!important}
-@media (max-width:960px){pre#swaltext{height:400px!important}}
-@media (max-width:960px){.sweet-alert.nchan{height:600px;width:900px;margin-left:-470px}}
-@media (max-height:768px){pre#swaltext{height:400px!important}}
-@media (max-height:768px){.sweet-alert.nchan{height:600px;width:900px;margin-left:-470px}}
-input[value="_(Install)_"],input[value="_(Update)_"],input[value="_(Restore)_"]{margin:0}
+ul,
+li {
+ margin: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+pre.pre {
+ margin: 30px 0;
+}
+pre > p {
+ margin: 0;
+ padding: 0;
+}
+pre#swaltext {
+ height: 600px !important;
+}
+@media (max-width: 960px) {
+ pre#swaltext {
+ height: 400px !important;
+ }
+}
+@media (max-width: 960px) {
+ .sweet-alert.nchan {
+ height: 600px;
+ width: 900px;
+ margin-left: -470px;
+ }
+}
+@media (max-height: 768px) {
+ pre#swaltext {
+ height: 400px !important;
+ }
+}
+@media (max-height: 768px) {
+ .sweet-alert.nchan {
+ height: 600px;
+ width: 900px;
+ margin-left: -470px;
+ }
+}
+input[value="_(Install)_"],
+input[value="_(Update)_"],
+input[value="_(Restore)_"] {
+ margin: 0;
+}
+
+.Theme--black,
+.Theme--white {
+ span.vhshift {
+ margin-top: 13px !important;
+ }
+}
\ No newline at end of file
diff --git a/emhttp/plugins/dynamix.vm.manager/VMMachines.page b/emhttp/plugins/dynamix.vm.manager/VMMachines.page
index 19b64eee3..9e4ef09e2 100644
--- a/emhttp/plugins/dynamix.vm.manager/VMMachines.page
+++ b/emhttp/plugins/dynamix.vm.manager/VMMachines.page
@@ -113,8 +113,6 @@ if (empty($vms)) {
?>
">
-">
-">
diff --git a/emhttp/plugins/dynamix.vm.manager/VMTemplates.page b/emhttp/plugins/dynamix.vm.manager/VMTemplates.page
index ce12319e6..e1e44ceac 100644
--- a/emhttp/plugins/dynamix.vm.manager/VMTemplates.page
+++ b/emhttp/plugins/dynamix.vm.manager/VMTemplates.page
@@ -41,7 +41,6 @@ Markdown="false"
">
">
-">
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-azure.css b/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-azure.css
deleted file mode 100644
index 26d225a46..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-azure.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#f2f2f2;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#f2f2f2;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#f2f2f2;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-black.css b/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-black.css
deleted file mode 100644
index 63cf210e4..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-black.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#1c1c1c;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#1c1c1c;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#1c1c1c;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-gray.css b/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-gray.css
deleted file mode 100644
index 63cf210e4..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-gray.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#1c1c1c;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#1c1c1c;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#1c1c1c;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-white.css b/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-white.css
deleted file mode 100644
index 26d225a46..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM-white.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#f2f2f2;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#f2f2f2;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#f2f2f2;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM.css b/emhttp/plugins/dynamix.vm.manager/sheets/AddVM.css
index 5d5acb25b..b86c887c1 100644
--- a/emhttp/plugins/dynamix.vm.manager/sheets/AddVM.css
+++ b/emhttp/plugins/dynamix.vm.manager/sheets/AddVM.css
@@ -1,59 +1,296 @@
-body{-webkit-overflow-scrolling:touch}
-#vmform table{margin-top:0;table-layout:fixed}
-#vmform div.title + table{margin-top:0}
-#vmform table tr{vertical-align:top;line-height:4rem;height:4rem}
-#vmform table tr td:nth-child(1){width:25%;text-align:right;padding-right:4rem}}
-#vmform table tr td:nth-child(2){width:800px}
-#vmform textarea{max-width:500px;scrollbar-width:4px}
-#vmform textarea::-webkit-scrollbar{height:4px;width:4px}
-#vmform .multiple{position:relative}
-#vmform .sectionbutton{position:absolute;left:2px;cursor:pointer;opacity:0.4;font-size:1.4rem;line-height:17px;z-index:10;transition-property:opacity,left;transition-duration:0.1s;transition-timing-function:linear}
-#vmform .sectionbutton.remove{top:0;opacity:0.3}
-#vmform .sectionbutton.add{bottom:0}
-#vmform .sectionbutton:hover{opacity:1.0}
-#vmform .sectiontab{position:absolute;top:2px;bottom:2px;left:0;width:6px;border-radius:3px;background-color:#DDDDDD;transition-property:background,width;transition-duration:0.1s;transition-timing-function:linear}
-#vmform .multiple:hover .sectionbutton{opacity:0.7;left:4px}
-#vmform .multiple:hover .sectionbutton.remove{opacity:0.6}
-#vmform .multiple:hover .sectiontab{background-color:#CCCCCC;width:8px}
-#vmform table.multiple:hover{background-position:0 0;}
-#vmform table.multiple td{padding:5px 0}
-span.advancedview_panel{display:none;line-height:16px;margin-top:1px}
-.basic{display:none}
-.advanced{/*Empty placeholder*/}
-.switch-button-label.off{color:inherit}
-.template_img_parent{position:relative}
-#template_img{cursor:pointer}
-#template_img:hover{opacity:0.5}
-#template_img:hover i{opacity:1.0}
-.template_img_chooser_inner{display:inline-block;width:80px;margin-bottom:15px;margin-right:10px;text-align:center;}
-.template_img_chooser_inner img{width:48px;height:48px}
-.template_img_chooser_inner p{text-align:center;line-height:8px;}
-#template_img_chooser{width:560px;height:300px;overflow-y:scroll;position:relative;display:grid;grid-template-columns: repeat(6, minmax(0, 1fr));}
-#template_img_chooser div:hover{color:#ff8c2f;cursor:pointer;}
-#form_content{display:none}
-#vmform .four{overflow:hidden}
-#vmform .four label{float:left;display:table-cell;width:15%;}
-#vmform .four label:nth-child(4n+4){}
-#vmform .four label.cpu1{width:28%;height:16px;line-height:16px}
-#vmform .four label.cpu2{width:3%;height:16px;line-height:16px}
-#vmform .mac_generate{cursor:pointer;margin-left:-5px;color:#08C;font-size:1.3rem;transform:translate(0px, 2px)}
-#vmform .disk{display:none}
-#vmform .disk_preview{display:inline-block;color:#BBB;transform:translate(0px, 1px)}
-i.fa-plus-circle,i.fa-minus-circle{margin-left:8px}
-input[type=checkbox]{margin-left:0}
-span.width{display:inline-block;width:280px}
-span.column1{display:inline-block;width:140px}
-span.column2{display:inline-block;width:220px}
-input#btnvCPUSelect,input.wlan0_info{font-size:1rem;padding:5px 10px;margin:0 0 0 10px}
-span.space{display:inline-block;width:60px}
-span.label{display:inline-block;width:110px;text-align:right;overflow:hidden;text-overflow:ellipsis}
-span.ipvtap{margin-left:25px;font-family:bitstream}
-select.narrow{min-width:90px!important}
-select.second{margin-left:12px;max-width:90px;margin-right:0}
-div.wlan0{text-align:left}
-input.trim{width:98px;min-width:98px}
-input.second{margin-left:8px}
-.autostart~.switch-button-background{margin-top:8px!important;margin-left:0!important}
-.hidden{display:none!important}
-.CodeMirror{border:1px solid #eee;cursor:text;margin-top:15px;margin-bottom:10px}
-.CodeMirror pre.CodeMirror-placeholder{color:#999}
+:root {
+ --add-vm-background: var(--black);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --add-vm-background: var(--gray-100);
+}
+
+body {
+ -webkit-overflow-scrolling: touch;
+}
+#vmform table {
+ margin-top: 0;
+ table-layout: fixed;
+}
+#vmform div.title + table {
+ margin-top: 0;
+}
+#vmform table tr {
+ vertical-align: top;
+ line-height: 4rem;
+ height: 4rem;
+}
+#vmform table tr td:nth-child(1) {
+ width: 25%;
+ text-align: right;
+ padding-right: 10px;
+}
+#vmform table tr td:nth-child(2) {
+ width: 800px;
+}
+@media (max-width: 1280px) {
+ #vmform table tr td:first-child {
+ width: 35%;
+ padding-right: 4rem;
+ }
+}
+@media (min-width: 1281px) {
+ #vmform table tr td:first-child {
+ width: 30%;
+ padding-right: 4rem;
+ }
+}
+@media (min-width: 1921px) {
+ #vmform table tr td:first-child {
+ width: 25%;
+ padding-right: 4rem;
+ }
+}
+#vmform table tr td:last-child {
+ width: inherit;
+}
+
+#vmform textarea{
+ max-width:500px;
+ scrollbar-width:4px;
+}
+
+#vmform textarea::-webkit-scrollbar{
+ height:4px;
+ width:4px;
+}
+
+#vmform .multiple {
+ position: relative;
+}
+#vmform .sectionbutton {
+ position: absolute;
+ left: 2px;
+ cursor: pointer;
+ opacity: 0.4;
+ font-size: 1.4rem;
+ line-height: 17px;
+ z-index: 10;
+ transition-property: opacity, left;
+ transition-duration: 0.1s;
+ transition-timing-function: linear;
+}
+#vmform .sectionbutton.remove {
+ top: 0;
+ opacity: 0.3;
+}
+#vmform .sectionbutton.add {
+ bottom: 0;
+}
+#vmform .sectionbutton:hover {
+ opacity: 1;
+}
+#vmform .sectiontab {
+ position: absolute;
+ top: 2px;
+ bottom: 2px;
+ left: 0;
+ width: 6px;
+ border-radius: 3px;
+ background-color: var(--gray-200); /* Condensed from: #dddddd */
+ transition-property: background, width;
+ transition-duration: 0.1s;
+ transition-timing-function: linear;
+}
+#vmform .multiple:hover .sectionbutton {
+ opacity: 0.7;
+ left: 4px;
+}
+#vmform .multiple:hover .sectionbutton.remove {
+ opacity: 0.6;
+}
+#vmform .multiple:hover .sectiontab {
+ background-color: var(--gray-300);
+ width: 8px;
+}
+#vmform table.multiple:hover {
+ background-position: 0 0;
+}
+#vmform table.multiple td {
+ padding: 5px 0;
+}
+span.advancedview_panel {
+ display: none;
+ line-height: 16px;
+ margin-top: 1px;
+}
+.basic {
+ display: none;
+}
+.advanced {
+ /*Empty placeholder*/
+}
+.switch-button-label.off {
+ color: inherit;
+}
+#template_img {
+ cursor: pointer;
+}
+#template_img:hover {
+ opacity: 0.5;
+}
+#template_img:hover i {
+ opacity: 1;
+}
+.template_img_chooser_inner {
+ display: inline-block;
+ width: 80px;
+ margin-bottom: 15px;
+ margin-right: 10px;
+ text-align: center;
+}
+.template_img_chooser_inner img {
+ width: 48px;
+ height: 48px;
+}
+.template_img_chooser_inner p {
+ text-align: center;
+ line-height: 8px;
+}
+#template_img_chooser {
+ width: 560px;
+ height: 300px;
+ overflow-y: scroll;
+ position: relative;
+ display:grid;
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+}
+#template_img_chooser div:hover {
+ background-color: var(--gray-150); /* Condensed from: #eee */
+ cursor: pointer;
+}
+#form_content {
+ display: none;
+}
+#vmform .four {
+ overflow: hidden;
+}
+#vmform .four label {
+ float: left;
+ display: table-cell;
+ width: 15%;
+}
+#vmform .four label:nth-child(4n + 4) {
+}
+#vmform .four label.cpu1 {
+ width: 28%;
+ height: 16px;
+ line-height: 16px;
+}
+#vmform .four label.cpu2 {
+ width: 3%;
+ height: 16px;
+ line-height: 16px;
+}
+#vmform .mac_generate {
+ cursor: pointer;
+ margin-left: -5px;
+ color: var(--blue-700); /* Condensed from: #08c */
+ font-size: 1.3rem;
+ transform: translate(0px, 2px);
+}
+#vmform .disk {
+ display: none;
+}
+#vmform .disk_preview {
+ display: inline-block;
+ color: var(--gray-300); /* Condensed from: #bbb */
+ transform: translate(0px, 1px);
+}
+i.fa-plus-circle,
+i.fa-minus-circle {
+ margin-left: 8px;
+}
+input[type="checkbox"] {
+ margin-left: 0;
+}
+
+span.width {
+ display: inline-block;
+ width: 280px;
+}
+
+span.column1 {
+ display: inline-block;
+ width: 140px;
+}
+
+span.column2 {
+ display: inline-block;
+ width: 220px;
+}
+
+input#btnvCPUSelect,
+input.wlan0_info {
+ font-size: 1rem;
+ padding: 5px 10px;
+ margin: 0 0 0 10px;
+}
+
+span.space {
+ display: inline-block;
+ width: 60px;
+}
+
+span.label {
+ display: inline-block;
+ width: 110px;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+span.ipvtap {
+ margin-left: 25px;
+ font-family: bitstream;
+}
+
+select.narrow {
+ min-width: 90px !important;
+}
+
+select.second {
+ margin-left: 12px;
+ max-width: 90px;
+ margin-right: 0;
+}
+
+div.wlan0 {
+ text-align: left;
+}
+
+input.trim {
+ width: 98px;
+ min-width: 98px;
+}
+
+input.second {
+ margin-left: 8px;
+}
+
+.autostart ~ .switch-button-background {
+ margin-top: 8px !important;
+ margin-left: 0 !important;
+}
+
+.hidden {
+ display: none !important;
+}
+
+.CodeMirror {
+ border: 1px solid var(--gray-150);
+ cursor: text;
+ margin-top: 15px;
+ margin-bottom: 10px;
+}
+
+.CodeMirror pre.CodeMirror-placeholder {
+ color: var(--gray-400);
+}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-azure.css b/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-azure.css
deleted file mode 100644
index 26d225a46..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-azure.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#f2f2f2;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#f2f2f2;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#f2f2f2;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-black.css b/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-black.css
deleted file mode 100644
index 63cf210e4..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-black.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#1c1c1c;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#1c1c1c;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#1c1c1c;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-gray.css b/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-gray.css
deleted file mode 100644
index 63cf210e4..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-gray.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#1c1c1c;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#1c1c1c;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#1c1c1c;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-white.css b/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-white.css
deleted file mode 100644
index 26d225a46..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM-white.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:relative;z-index:100;display:none}
-#vmform table.multiple{margin:10px 0;background:#f2f2f2;background-size:800px 100%;background-position:-800px;background-repeat:no-repeat;background-clip:content-box;transition:background 0.3s linear}
-#template_img_chooser_outer{position:absolute;display:none;border-radius:5px;border:1px solid =$border?>;background:#f2f2f2;z-index:10}
-span#dropbox{border:1px solid =$border?>;background:#f2f2f2;padding:28px 12px;line-height:72px;margin-right:16px;}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM.css b/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM.css
index 5d5acb25b..b86c887c1 100644
--- a/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM.css
+++ b/emhttp/plugins/dynamix.vm.manager/sheets/UpdateVM.css
@@ -1,59 +1,296 @@
-body{-webkit-overflow-scrolling:touch}
-#vmform table{margin-top:0;table-layout:fixed}
-#vmform div.title + table{margin-top:0}
-#vmform table tr{vertical-align:top;line-height:4rem;height:4rem}
-#vmform table tr td:nth-child(1){width:25%;text-align:right;padding-right:4rem}}
-#vmform table tr td:nth-child(2){width:800px}
-#vmform textarea{max-width:500px;scrollbar-width:4px}
-#vmform textarea::-webkit-scrollbar{height:4px;width:4px}
-#vmform .multiple{position:relative}
-#vmform .sectionbutton{position:absolute;left:2px;cursor:pointer;opacity:0.4;font-size:1.4rem;line-height:17px;z-index:10;transition-property:opacity,left;transition-duration:0.1s;transition-timing-function:linear}
-#vmform .sectionbutton.remove{top:0;opacity:0.3}
-#vmform .sectionbutton.add{bottom:0}
-#vmform .sectionbutton:hover{opacity:1.0}
-#vmform .sectiontab{position:absolute;top:2px;bottom:2px;left:0;width:6px;border-radius:3px;background-color:#DDDDDD;transition-property:background,width;transition-duration:0.1s;transition-timing-function:linear}
-#vmform .multiple:hover .sectionbutton{opacity:0.7;left:4px}
-#vmform .multiple:hover .sectionbutton.remove{opacity:0.6}
-#vmform .multiple:hover .sectiontab{background-color:#CCCCCC;width:8px}
-#vmform table.multiple:hover{background-position:0 0;}
-#vmform table.multiple td{padding:5px 0}
-span.advancedview_panel{display:none;line-height:16px;margin-top:1px}
-.basic{display:none}
-.advanced{/*Empty placeholder*/}
-.switch-button-label.off{color:inherit}
-.template_img_parent{position:relative}
-#template_img{cursor:pointer}
-#template_img:hover{opacity:0.5}
-#template_img:hover i{opacity:1.0}
-.template_img_chooser_inner{display:inline-block;width:80px;margin-bottom:15px;margin-right:10px;text-align:center;}
-.template_img_chooser_inner img{width:48px;height:48px}
-.template_img_chooser_inner p{text-align:center;line-height:8px;}
-#template_img_chooser{width:560px;height:300px;overflow-y:scroll;position:relative;display:grid;grid-template-columns: repeat(6, minmax(0, 1fr));}
-#template_img_chooser div:hover{color:#ff8c2f;cursor:pointer;}
-#form_content{display:none}
-#vmform .four{overflow:hidden}
-#vmform .four label{float:left;display:table-cell;width:15%;}
-#vmform .four label:nth-child(4n+4){}
-#vmform .four label.cpu1{width:28%;height:16px;line-height:16px}
-#vmform .four label.cpu2{width:3%;height:16px;line-height:16px}
-#vmform .mac_generate{cursor:pointer;margin-left:-5px;color:#08C;font-size:1.3rem;transform:translate(0px, 2px)}
-#vmform .disk{display:none}
-#vmform .disk_preview{display:inline-block;color:#BBB;transform:translate(0px, 1px)}
-i.fa-plus-circle,i.fa-minus-circle{margin-left:8px}
-input[type=checkbox]{margin-left:0}
-span.width{display:inline-block;width:280px}
-span.column1{display:inline-block;width:140px}
-span.column2{display:inline-block;width:220px}
-input#btnvCPUSelect,input.wlan0_info{font-size:1rem;padding:5px 10px;margin:0 0 0 10px}
-span.space{display:inline-block;width:60px}
-span.label{display:inline-block;width:110px;text-align:right;overflow:hidden;text-overflow:ellipsis}
-span.ipvtap{margin-left:25px;font-family:bitstream}
-select.narrow{min-width:90px!important}
-select.second{margin-left:12px;max-width:90px;margin-right:0}
-div.wlan0{text-align:left}
-input.trim{width:98px;min-width:98px}
-input.second{margin-left:8px}
-.autostart~.switch-button-background{margin-top:8px!important;margin-left:0!important}
-.hidden{display:none!important}
-.CodeMirror{border:1px solid #eee;cursor:text;margin-top:15px;margin-bottom:10px}
-.CodeMirror pre.CodeMirror-placeholder{color:#999}
+:root {
+ --add-vm-background: var(--black);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --add-vm-background: var(--gray-100);
+}
+
+body {
+ -webkit-overflow-scrolling: touch;
+}
+#vmform table {
+ margin-top: 0;
+ table-layout: fixed;
+}
+#vmform div.title + table {
+ margin-top: 0;
+}
+#vmform table tr {
+ vertical-align: top;
+ line-height: 4rem;
+ height: 4rem;
+}
+#vmform table tr td:nth-child(1) {
+ width: 25%;
+ text-align: right;
+ padding-right: 10px;
+}
+#vmform table tr td:nth-child(2) {
+ width: 800px;
+}
+@media (max-width: 1280px) {
+ #vmform table tr td:first-child {
+ width: 35%;
+ padding-right: 4rem;
+ }
+}
+@media (min-width: 1281px) {
+ #vmform table tr td:first-child {
+ width: 30%;
+ padding-right: 4rem;
+ }
+}
+@media (min-width: 1921px) {
+ #vmform table tr td:first-child {
+ width: 25%;
+ padding-right: 4rem;
+ }
+}
+#vmform table tr td:last-child {
+ width: inherit;
+}
+
+#vmform textarea{
+ max-width:500px;
+ scrollbar-width:4px;
+}
+
+#vmform textarea::-webkit-scrollbar{
+ height:4px;
+ width:4px;
+}
+
+#vmform .multiple {
+ position: relative;
+}
+#vmform .sectionbutton {
+ position: absolute;
+ left: 2px;
+ cursor: pointer;
+ opacity: 0.4;
+ font-size: 1.4rem;
+ line-height: 17px;
+ z-index: 10;
+ transition-property: opacity, left;
+ transition-duration: 0.1s;
+ transition-timing-function: linear;
+}
+#vmform .sectionbutton.remove {
+ top: 0;
+ opacity: 0.3;
+}
+#vmform .sectionbutton.add {
+ bottom: 0;
+}
+#vmform .sectionbutton:hover {
+ opacity: 1;
+}
+#vmform .sectiontab {
+ position: absolute;
+ top: 2px;
+ bottom: 2px;
+ left: 0;
+ width: 6px;
+ border-radius: 3px;
+ background-color: var(--gray-200); /* Condensed from: #dddddd */
+ transition-property: background, width;
+ transition-duration: 0.1s;
+ transition-timing-function: linear;
+}
+#vmform .multiple:hover .sectionbutton {
+ opacity: 0.7;
+ left: 4px;
+}
+#vmform .multiple:hover .sectionbutton.remove {
+ opacity: 0.6;
+}
+#vmform .multiple:hover .sectiontab {
+ background-color: var(--gray-300);
+ width: 8px;
+}
+#vmform table.multiple:hover {
+ background-position: 0 0;
+}
+#vmform table.multiple td {
+ padding: 5px 0;
+}
+span.advancedview_panel {
+ display: none;
+ line-height: 16px;
+ margin-top: 1px;
+}
+.basic {
+ display: none;
+}
+.advanced {
+ /*Empty placeholder*/
+}
+.switch-button-label.off {
+ color: inherit;
+}
+#template_img {
+ cursor: pointer;
+}
+#template_img:hover {
+ opacity: 0.5;
+}
+#template_img:hover i {
+ opacity: 1;
+}
+.template_img_chooser_inner {
+ display: inline-block;
+ width: 80px;
+ margin-bottom: 15px;
+ margin-right: 10px;
+ text-align: center;
+}
+.template_img_chooser_inner img {
+ width: 48px;
+ height: 48px;
+}
+.template_img_chooser_inner p {
+ text-align: center;
+ line-height: 8px;
+}
+#template_img_chooser {
+ width: 560px;
+ height: 300px;
+ overflow-y: scroll;
+ position: relative;
+ display:grid;
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+}
+#template_img_chooser div:hover {
+ background-color: var(--gray-150); /* Condensed from: #eee */
+ cursor: pointer;
+}
+#form_content {
+ display: none;
+}
+#vmform .four {
+ overflow: hidden;
+}
+#vmform .four label {
+ float: left;
+ display: table-cell;
+ width: 15%;
+}
+#vmform .four label:nth-child(4n + 4) {
+}
+#vmform .four label.cpu1 {
+ width: 28%;
+ height: 16px;
+ line-height: 16px;
+}
+#vmform .four label.cpu2 {
+ width: 3%;
+ height: 16px;
+ line-height: 16px;
+}
+#vmform .mac_generate {
+ cursor: pointer;
+ margin-left: -5px;
+ color: var(--blue-700); /* Condensed from: #08c */
+ font-size: 1.3rem;
+ transform: translate(0px, 2px);
+}
+#vmform .disk {
+ display: none;
+}
+#vmform .disk_preview {
+ display: inline-block;
+ color: var(--gray-300); /* Condensed from: #bbb */
+ transform: translate(0px, 1px);
+}
+i.fa-plus-circle,
+i.fa-minus-circle {
+ margin-left: 8px;
+}
+input[type="checkbox"] {
+ margin-left: 0;
+}
+
+span.width {
+ display: inline-block;
+ width: 280px;
+}
+
+span.column1 {
+ display: inline-block;
+ width: 140px;
+}
+
+span.column2 {
+ display: inline-block;
+ width: 220px;
+}
+
+input#btnvCPUSelect,
+input.wlan0_info {
+ font-size: 1rem;
+ padding: 5px 10px;
+ margin: 0 0 0 10px;
+}
+
+span.space {
+ display: inline-block;
+ width: 60px;
+}
+
+span.label {
+ display: inline-block;
+ width: 110px;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+span.ipvtap {
+ margin-left: 25px;
+ font-family: bitstream;
+}
+
+select.narrow {
+ min-width: 90px !important;
+}
+
+select.second {
+ margin-left: 12px;
+ max-width: 90px;
+ margin-right: 0;
+}
+
+div.wlan0 {
+ text-align: left;
+}
+
+input.trim {
+ width: 98px;
+ min-width: 98px;
+}
+
+input.second {
+ margin-left: 8px;
+}
+
+.autostart ~ .switch-button-background {
+ margin-top: 8px !important;
+ margin-left: 0 !important;
+}
+
+.hidden {
+ display: none !important;
+}
+
+.CodeMirror {
+ border: 1px solid var(--gray-150);
+ cursor: text;
+ margin-top: 15px;
+ margin-bottom: 10px;
+}
+
+.CodeMirror pre.CodeMirror-placeholder {
+ color: var(--gray-400);
+}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-azure.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-azure.css
deleted file mode 100644
index 817ebfe24..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-azure.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#f2f2f2;width:500px;max-height:320px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-black.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-black.css
deleted file mode 100644
index 4c8c88609..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-black.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#1c1c1c;width:500px;max-height:320px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-gray.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-gray.css
deleted file mode 100644
index 4c8c88609..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-gray.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#1c1c1c;width:500px;max-height:320px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-white.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-white.css
deleted file mode 100644
index 817ebfe24..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines-white.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#f2f2f2;width:500px;max-height:320px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines.css
index 60eee293c..045a4cedb 100644
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines.css
+++ b/emhttp/plugins/dynamix.vm.manager/sheets/VMMachines.css
@@ -1,23 +1,140 @@
-th.th1{width:25%}
-th.th2{width:15%}
-th.th3{width:80px}
-div.four{font-size:1.1rem;width:260px}
-div.four label{float:left;display:table-cell;width:25%}
-div.four label:nth-child(4n+4){float:none;clear:both}
-div.four label.cpu1{width:32%}
-div.four label.cpu2{width:26%}
-div.template,div#dialogWindow,input#upload{display:none}
-table.domdisk thead tr th:nth-child(1){width:56%!important}
-table.domdisk thead tr th:nth-child(n+2){width:8%!important}
-table.domdisk thead tr th:nth-child(1){padding-left:72px}
-table.domdisk tbody tr td:nth-child(1){padding-left:72px}
-table.domdisk tbody tr:nth-child(even){background-color:transparent!important}
-table.domdisk tbody tr:nth-child(4n-1){background-color:transparent!important}
-table.snapshot{margin-top:0}
-table tbody td{line-height:normal}
-i.mover{margin-right:8px;display:none}
-i.fa-dot-circle-o{padding-left:12px}
-#resetsort{margin-left:12px;display:inline-block;width:32px}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button[disabled]{cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
-.dropdown-menu{z-index:10001}
-span.vmgraphics{font-size:1.1rem;text-align:left}
+:root {
+ --vm-machines-file-tree-background: var(--black);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --vm-machines-file-tree-background: var(--gray-100);
+}
+
+th.th1 {
+ width: 25%;
+}
+th.th2 {
+ width: 15%;
+}
+th.th3 {
+ width: 80px;
+}
+div.four {
+ font-size: 1.1rem;
+ width: 260px;
+}
+div.four label {
+ float: left;
+ display: table-cell;
+ width: 25%;
+}
+div.four label:nth-child(4n + 4) {
+ float: none;
+ clear: both;
+}
+div.four label.cpu1 {
+ width: 32%;
+}
+div.four label.cpu2 {
+ width: 26%;
+}
+div.template,
+div#dialogWindow,
+input#upload {
+ display: none;
+}
+table.domdisk thead tr th:nth-child(1) {
+ width: 56% !important;
+}
+table.domdisk thead tr th:nth-child(n + 2) {
+ width: 8% !important;
+}
+table.domdisk thead tr th:nth-child(1) {
+ padding-left: 72px;
+}
+table.domdisk tbody tr td:nth-child(1) {
+ padding-left: 72px;
+}
+table.domdisk tbody tr:nth-child(even) {
+ background-color: transparent !important;
+}
+table.domdisk tbody tr:nth-child(4n-1) {
+ background-color: transparent !important;
+}
+table.snapshot {
+ margin-top: 0;
+}
+table tbody td {
+ line-height: normal;
+}
+i.mover {
+ margin-right: 8px;
+ display: none;
+}
+i.fa-dot-circle-o {
+ padding-left: 12px;
+}
+#resetsort {
+ margin-left: 12px;
+ display: inline-block;
+ width: 32px;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button[disabled] {
+ cursor: default;
+ color: var(--gray-500);
+ background:
+ -webkit-gradient(
+ linear,
+ left top,
+ right top,
+ from(var(--gray-600)),
+ to(var(--gray-500))
+ )
+ 0 0 no-repeat,
+ -webkit-gradient(
+ linear,
+ left top,
+ right top,
+ from(var(--gray-600)),
+ to(var(--gray-500))
+ ) 0 100% no-repeat,
+ -webkit-gradient(
+ linear,
+ left bottom,
+ left top,
+ from(var(--gray-600)),
+ to(var(--gray-600))
+ ) 0 100% no-repeat,
+ -webkit-gradient(
+ linear,
+ left bottom,
+ left top,
+ from(var(--gray-500)),
+ to(var(--gray-500))
+ ) 100% 100% no-repeat;
+ background:
+ linear-gradient(90deg, var(--gray-600) 0, var(--gray-500)) 0 0 no-repeat,
+ linear-gradient(90deg, var(--gray-600) 0, var(--gray-500)) 0 100% no-repeat,
+ linear-gradient(0deg, var(--gray-600) 0, var(--gray-600)) 0 100% no-repeat,
+ linear-gradient(0deg, var(--gray-500) 0, var(--gray-500)) 100% 100% no-repeat;
+ background-size:
+ 100% 2px,
+ 100% 2px,
+ 2px 100%,
+ 2px 100%;
+}
+.dropdown-menu {
+ z-index: 10001;
+}
+span.vmgraphics {
+ font-size: 1.1rem;
+ text-align: left;
+}
+
+.fileTree {
+ background: var(--vm-machines-file-tree-background);
+ width: 500px;
+ max-height: 320px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ position: absolute;
+ z-index: 100;
+ display: none;
+}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-azure.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-azure.css
deleted file mode 100644
index 35ac63d60..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-azure.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-black.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-black.css
deleted file mode 100644
index 3f9d4d283..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-black.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-gray.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-gray.css
deleted file mode 100644
index 3f9d4d283..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-gray.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-white.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-white.css
deleted file mode 100644
index 35ac63d60..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings-white.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css
index 8e877a4f6..f02419b9a 100644
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css
+++ b/emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css
@@ -1,12 +1,69 @@
-body{-webkit-overflow-scrolling:touch}
-.errortext{color:#EF3D47;display:none}
-.basic{display:block}
-.advanced{display:none}
-#winvirtio{display:none}
-#download_status{margin-left:5px;color:#777;display:none}
-#download_button{cursor:pointer;margin-left:-2px;color:#08C;display:none;transform:translate(0px,2px)}
-#download_button.fa-spin{cursor:default;color:#777}
-#download_button span{font-family:clear-sans}
-#download_button.fa-spin span{font-family:clear-sans;display:none}
-#remove_button{cursor:pointer;margin-left:-2px;color:#EF3D47;display:none;transform:translate(0px,2px)}
-#remove_button span{font-family:clear-sans}
+:root {
+ --vm-machines-file-tree-background: var(--black);
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --vm-machines-file-tree-background: var(--gray-100);
+}
+
+body {
+ -webkit-overflow-scrolling: touch;
+}
+.errortext {
+ color: var(--red-800); /* Condensed from: #ef3d47 */
+ display: none;
+}
+.basic {
+ display: block;
+}
+.advanced {
+ display: none;
+}
+#winvirtio {
+ display: none;
+}
+#download_status {
+ margin-left: 5px;
+ color: var(--gray-500); /* Condensed from: #777 */
+ display: none;
+}
+#download_button {
+ cursor: pointer;
+ margin-left: -2px;
+ color: var(--blue-700); /* Condensed from: #08c */
+ display: none;
+ transform: translate(0px, 2px);
+}
+#download_button.fa-spin {
+ cursor: default;
+ color: var(--gray-500); /* Condensed from: #777 */
+}
+#download_button span {
+ font-family: clear-sans;
+}
+#download_button.fa-spin span {
+ font-family: clear-sans;
+ display: none;
+}
+#remove_button {
+ cursor: pointer;
+ margin-left: -2px;
+ color: var(--red-800); /* Condensed from: #ef3d47 */
+ display: none;
+ transform: translate(0px, 2px);
+}
+#remove_button span {
+ font-family: clear-sans;
+}
+
+.fileTree {
+ background: var(--vm-machines-file-tree-background);
+ width: 300px;
+ max-height: 150px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ position: absolute;
+ z-index: 100;
+ display: none;
+}
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-azure.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-azure.css
deleted file mode 100644
index f5548270d..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-azure.css
+++ /dev/null
@@ -1 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
\ No newline at end of file
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-black.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-black.css
deleted file mode 100644
index bc79e2b47..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-black.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-gray.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-gray.css
deleted file mode 100644
index bc79e2b47..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-gray.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-white.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-white.css
deleted file mode 100644
index e93340e20..000000000
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates-white.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
-
diff --git a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates.css b/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates.css
index 90565f4fd..1c300ed3d 100644
--- a/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates.css
+++ b/emhttp/plugins/dynamix.vm.manager/sheets/VMTemplates.css
@@ -1,5 +1,54 @@
-.vmheader{padding:10px;font-size:1.4rem;text-align:left;color:#888}
-.vmtemplate{display:inline-block;width:80px;height:90px;margin-bottom:15px;margin-left:10px;text-align:center;vertical-align:top}
-.vmtemplate img{width:48px;height:48px}
-.vmtemplate p{text-align:center;margin-top:8px;line-height:12px}
-div.template,div#dialogWindow,input#upload{display:none}
+.Theme--gray:root,
+.Theme--black:root {
+ --filetree-background: #1c1c1c;
+}
+
+.Theme--azure:root,
+.Theme--white:root {
+ --filetree-background: #f2f2f2;
+}
+
+.vmheader {
+ padding: 10px;
+ font-size: 1.4rem;
+ text-align: left;
+ color: var(--gray-500); /* Condensed from: #888 */
+}
+
+.vmtemplate {
+ display: inline-block;
+ width: 80px;
+ height: 90px;
+ margin-bottom: 15px;
+ margin-left: 10px;
+ text-align: center;
+ vertical-align: top;
+}
+
+.vmtemplate img {
+ width: 48px;
+ height: 48px;
+}
+
+.vmtemplate p {
+ text-align: center;
+ margin-top: 8px;
+ line-height: 12px;
+}
+
+div.template,
+div#dialogWindow,
+input#upload {
+ display: none;
+}
+
+.fileTree {
+ background: var(--filetree-background);
+ width: 300px;
+ max-height: 150px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ position: absolute;
+ z-index: 100;
+ display: none;
+}
diff --git a/emhttp/plugins/dynamix/CacheDevices.page b/emhttp/plugins/dynamix/CacheDevices.page
index 2160557b1..307b2d3c7 100644
--- a/emhttp/plugins/dynamix/CacheDevices.page
+++ b/emhttp/plugins/dynamix/CacheDevices.page
@@ -23,9 +23,6 @@ function sharename($share) {
return basename($share,'.cfg');
}
?>
-">
-">
-
diff --git a/emhttp/plugins/dynamix/DeviceInfo.page b/emhttp/plugins/dynamix/DeviceInfo.page
index ba334b240..955e799c1 100644
--- a/emhttp/plugins/dynamix/DeviceInfo.page
+++ b/emhttp/plugins/dynamix/DeviceInfo.page
@@ -135,9 +135,6 @@ function is_upgraded_ZFS_pool($pool_name) {
return ($upgrade ? false : true);
}
?>
-">
-">
-
-
-
-
-
-
-