diff --git a/ui/experiments/editor.css b/ui/experiments/editor.css
new file mode 100755
index 00000000..0604d140
--- /dev/null
+++ b/ui/experiments/editor.css
@@ -0,0 +1,270 @@
+.panel {
+ display: inline-block;
+ min-width: 200px;
+ max-width: 450px;
+
+ font-size: 12px;
+
+ border: solid 2px silver;
+ border-radius: 4px;
+
+ background: white;
+ box-shadow: 5px 5px 30px -5px rgba(0, 0, 0, 0.5);
+ opacity: 0.95;
+
+ overflow: visible;
+}
+.panel summary {
+ padding-left: 3px;
+ background: silver
+}
+.panel summary::-webkit-details-marker {
+ color: gray;
+}
+.panel .close-button {
+ display: inline-block;
+ position: absolute;
+ right: 5px;
+ cursor: hand;
+}
+.panel .close-button:hover {
+ font-weight: bold;
+ color: red;
+ text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);
+}
+.panel button,
+.panel details,
+.panel .state {
+ margin: 1px;
+ font-size: 11px;
+ border: solid 1px #aaa;
+ border-radius: 4px;
+ /* needed for dragging */
+ background: white;
+}
+.panel details {
+ margin: 3px;
+ border: solid 1px silver;
+ box-shadow: none;
+}
+.panel details summary {
+ background: #ddd;
+ /*
+ background: white;
+ box-shadow: 0px 0px 50px -5px rgba(0, 0, 0, 0.4);
+ */
+}
+.panel .sub-panel-content {
+ margin: 10px;
+}
+
+.panel button:active,
+.panel .state:active {
+ background: silver;
+}
+
+
+/* main controls */
+.panel .control {
+ white-space:nowrap;
+}
+.panel .control .title {
+ display: inline-block;
+ width: 60px;
+ cursor: move;
+}
+.panel .control .slider {
+ -webkit-appearance: none !important;
+ width: 150px;
+ height: 3px;
+ border: solid 1px #ccc;
+ border-radius: 2px;
+ background: white;
+}
+.panel .control.at-default .slider {
+}
+.panel .control .slider::-webkit-slider-thumb {
+ -webkit-appearance: none !important;
+ height: 13px;
+ width: 13px;
+ /*border: solid 1px gray;*/
+ border: solid 2px #aaa;
+ border-radius: 50%;
+ background: white;
+ box-shadow: 1px 1px 10px 0px rgba(0, 0, 0, 0.3);
+}
+.panel .control.at-default .slider::-webkit-slider-thumb {
+ opacity: 0.5;
+}
+.panel .control .value {
+ -webkit-appearance: none !important;
+ display: inline-block;
+ width: 25px;
+ text-align: right;
+ font-size: 11px;
+ margin-left: 5px;
+ margin-right: 5px;
+ border: none;
+ border-radius: 2px;
+ background: transparent;
+}
+.panel .control input::-webkit-outer-spin-button,
+.panel .control input::-webkit-inner-spin-button {
+ -webkit-appearance: none !important;
+}
+.panel .control .reset {
+ visibility: hidden;
+ border: solid 1px transparent;
+}
+.panel .control:hover button.reset {
+ visibility: visible;
+}
+.panel .control .reset:hover {
+ border: solid 1px silver;
+}
+
+
+/* Snapshots */
+.panel .state {
+ display: inline-block;
+ margin: 1px;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.panel .state.ui-draggable-dragging {
+ box-shadow: 2px 2px 10px -2px rgba(0, 0, 0, 0.4);
+}
+.panel .states {
+ min-height: 30px;
+}
+
+
+/* misc */
+.panel hr {
+ border: none;
+ border-top: solid 1px silver;
+}
+
+
+
+/* dark theme */
+.dark .panel {
+ border: solid 2px #333;
+ background: black;
+ color: silver;
+ box-shadow: 3px 3px 30px 0px rgba(0, 0, 0, 0.5);
+}
+.dark .panel summary {
+ background: #333;
+}
+.dark .panel summary::-webkit-details-marker {
+ color: #555;
+}
+.dark .panel button,
+.dark .panel .state,
+.dark .panel details {
+ border: solid 1px #333;
+ /* needed for dragging */
+ background: #080808;
+ color: #888;
+}
+.dark .panel details {
+ border: solid 1px #333;
+}
+.dark .panel details summary {
+ background: #333;
+ color: silver;
+}
+.dark .panel .state:active,
+.dark .panel button:active {
+ background: #222;
+}
+.dark .panel .control .slider {
+ border: solid 1px #555;
+ background: black;
+}
+.dark .panel .control.at-default .slider {
+}
+.dark .panel .control .slider::-webkit-slider-thumb {
+ border: solid 2px #aaa;
+ background: black;
+ box-shadow: 1px 1px 10px 0px rgba(0, 0, 0, 0.5);
+}
+.dark .panel .control.at-default .slider::-webkit-slider-thumb {
+ border: solid 1px gray;
+ opacity: 0.5;
+}
+.dark .panel .control .value {
+ border: none;
+ background: transparent;
+ color: gray;
+}
+.dark .panel .control .reset:hover {
+ border: solid 1px #333;
+}
+.dark .panel hr {
+ border: none;
+ border-top: solid 1px #333;
+}
+
+
+/* gray theme */
+
+.gray .panel {
+ border: solid 2px #444;
+ background: #333;
+ color: silver;
+ box-shadow: 3px 3px 30px 0px rgba(0, 0, 0, 0.5);
+}
+.gray .panel summary {
+ background: #444;
+}
+.gray .panel summary::-webkit-details-marker {
+ color: #555;
+}
+.gray .panel button,
+.gray .panel .state,
+.gray .panel details {
+ border: solid 1px #444;
+ /* needed for dragging */
+ background: #333;
+ color: #888;
+}
+.gray .panel details {
+ border: solid 1px #454545;
+}
+.gray .panel details summary {
+ background: #444;
+ color: silver;
+}
+.gray .panel .state:active,
+.gray .panel button:active {
+ background: #444;
+}
+.gray .panel .control .slider {
+ border: solid 1px #555;
+ background: #222;
+}
+.gray .panel .control.at-default .slider {
+}
+.gray .panel .control .slider::-webkit-slider-thumb {
+ border: solid 2px #aaa;
+ background: #333;
+}
+.gray .panel .control.at-default .slider::-webkit-slider-thumb {
+ border: solid 1px gray;
+ opacity: 0.5;
+}
+.gray .panel .control .value {
+ border: none;
+ background: transparent;
+ color: gray;
+}
+.gray .panel .control .reset:hover {
+ border: solid 1px #444;
+}
+.gray .panel hr {
+ border: none;
+ border-top: solid 1px #444;
+}
+
diff --git a/ui/experiments/editor.html b/ui/experiments/editor.html
index a3d5612b..7b5b68a8 100755
--- a/ui/experiments/editor.html
+++ b/ui/experiments/editor.html
@@ -1,625 +1,25 @@
+
+