sunrize
Version:
Sunrize — A Multi-Platform X3D Editor
1,940 lines (1,588 loc) • 35 kB
CSS
@charset "utf-8";
@import url(https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,400;0,700;1,400;1,700&family=Roboto:ital,wght@0,100;0,400;0,700;1,100;1,400;1,700&display=swap);
@import url(media.css);
@import url(system-colors.css);
html {
color-scheme: light dark;
overflow: hidden;
height: 100%;
}
body {
--input-height: 20px;
--scrollbar-width: 14px;
}
body {
overflow: hidden;
height: 100%;
margin: 0;
background-color: var(--background-color);
color: var(--text-color);
font-family: var(--sans-serif);
font-size: var(--font-size);
}
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;
}
:focus {
outline: none;
}
::placeholder {
color: var(--system-gray2);
}
::selection {
color: var(--selection-color);
background: var(--selection-background-color);
}
/* Scrollbars */
::-webkit-scrollbar {
width: var(--scrollbar-width);
height: var(--scrollbar-width);
}
::-webkit-scrollbar-track, /* Track */
::-webkit-scrollbar-thumb:window-inactive, /* Handle */
::-webkit-scrollbar-corner { /* Corner */
background-color: transparent;
}
/* Scrollbar Handle */
:hover::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb-color);
}
/* https://developer.chrome.com/docs/css-ui/scrollbar-styling?hl=de */
:hover {
--fix: ; /* This custom property invalidates styles on hover, thereby enforcing a style recomputation. This is needed to work around a bug in Safari. */
}
/* textarea resizer */
::-webkit-resizer {
background-color: transparent;
}
:hover::-webkit-resizer {
background-color: var(--scrollbar-thumb-color);
}
/* inputs */
input[type=checkbox] {
accent-color: var(--system-green);
}
/* common */
.green {
color: var(--system-green);
}
.red {
color: var(--system-red);
}
.yellow {
color: var(--system-yellow);
}
.read-only :is(x3d-canvas, .toolbar, .dialog, .outline-editor) {
pointer-events: none;
}
textarea, input, button, select,
th, td,
.ui-widget, .ui-widget:has(input, select, textarea, button), .ui-widget-content {
border: none;
padding: 0;
background: none;
font-family: var(--sans-serif);
font-size: var(--font-size);
color: var(--text-color);
}
select {
appearance: none;
cursor: pointer;
}
select option {
font-family: var(--sans-serif);
font-size: var(--font-size);
color: var(--text-color);
background: var(--background-color);
}
.ui-widget label {
position: relative;
top: -2px;
margin-left: 0.5em;
}
table {
width: 100%;
}
th,
td {
padding: 4px 8px;
}
tbody th {
text-align: right;
white-space: nowrap;
min-width: 100px;
width: auto;
}
tbody th th {
min-width: unset;
width: unset;
}
thead tr,
tfoot tr {
background: var(--tint-color2);
backdrop-filter: var(--tool-backdrop-filter);
}
tbody tr:nth-child(odd) {
background: var(--tint-color1);
}
tbody tr:hover {
background: var(--tint-color2);
}
td > input:not([type]),
td > input[type="text"],
td > input[type="number"] {
width: 100%;
border: 1px solid var(--tint-color1);
}
td > textarea {
resize: vertical;
width: 100%;
height: 8em;
border: 1px solid var(--tint-color1) ;
}
td > select {
border: 1px solid var(--tint-color1) ;
}
td > div {
border: 1px solid var(--tint-color1) ;
}
.sticky-headers thead {
position: sticky;
top: 2px;
}
tr.disabled ~ tr input,
tr.disabled ~ tr textarea,
tr.disabled ~ tr select,
tr.disabled ~ tr button {
pointer-events: none;
}
tr.disabled ~ tr > td > input,
tr.disabled ~ tr > td > textarea,
tr.disabled ~ tr > td > select,
tr.disabled ~ tr > td > button,
tr.disabled ~ tr > td > div {
background: var(--background-disabled);
}
/* Highlight animation */
.highlight {
animation: highlight 1000ms ease-out;
}
@keyframes highlight {
0% {
background-color: var(--system-red);
}
}
/* Vertical splitter */
.vertical-splitter {
position: absolute;
box-sizing: border-box;
inset: 0;
}
.vertical-splitter-left,
.vertical-splitter-right {
position: absolute;
box-sizing: border-box;
top: 0;
height: 100%;
}
.vertical-splitter-left {
left: 0;
width: 65%;
}
.vertical-splitter-right {
right: 0;
width: 35%;
}
.ui-resizable-e,
.ui-resizable-w {
cursor: col-resize;
width: 4px;
}
.ui-resizable-w:hover,
.ui-resizable-e:hover {
animation: highlight-splitter 1000ms ease-out;
animation-fill-mode: forwards;
}
.ui-resizable-e:active,
.ui-resizable-e:active {
background-color: var(--accent-color);
}
@keyframes highlight-splitter {
100% {
background-color: var(--accent-color);
}
}
#vertical-splitter > .vertical-splitter-left {
width: 65%;
}
#vertical-splitter > .vertical-splitter-right {
width: 35%;
}
/* Horizontal splitter */
.horizontal-splitter {
position: absolute;
box-sizing: border-box;
width: 100%;
height: 100%;
}
.horizontal-splitter-top,
.horizontal-splitter-bottom {
background-color: var(--background-color);
position: absolute;
box-sizing: border-box;
left: 0;
width: 100%;
}
.horizontal-splitter-top {
top: 0;
height: 60%;
}
.horizontal-splitter-bottom {
bottom: 0;
height: 40%;
}
#horizontal-splitter > .horizontal-splitter-top {
height: 60%;
}
#horizontal-splitter > .horizontal-splitter-bottom {
height: 40%;
}
.ui-resizable-s {
cursor: row-resize;
height: 4px;
}
.ui-resizable-s:hover {
animation: highlight-splitter 1000ms ease-out;
animation-fill-mode: forwards;
}
.ui-resizable-s:active {
background-color: var(--accent-color);
}
/* Tabs */
.ui-tabs {
position: absolute;
inset: 0;
border: 0;
padding: 0;
background: inherit;
}
.ui-tabs.ui-widget.ui-widget-content {
border: none;
}
.ui-tabs > .ui-tabs-nav {
display: flex;
justify-content: center;
box-sizing: border-box;
border: 0;
border-radius: 0;
padding: 0;
height: var(--tabs-height);
width: 100%;
background: inherit;
z-index: 200;
}
.ui-tabs.top > .ui-tabs-nav {
border-bottom: var(--tool-border);
}
.ui-tabs.bottom > .ui-tabs-nav {
position: absolute;
bottom: 0;
border-top: var(--tool-border);
}
.ui-tabs > .ui-tabs-nav li,
.ui-tabs > .ui-tabs-nav .ui-tabs-active,
.ui-tabs > .ui-tabs-nav .ui-tabs-anchor {
margin: 0;
border: 0;
padding: 0;
border-radius: 0;
background: none;
color: var(--text-color);
user-select: none;
font-size: var(--small-font-size);
}
.ui-tabs > .ui-tabs-nav li,
.ui-tabs > .ui-tabs-nav .ui-tabs-active {
-box-sizing: border-box;
height: 100%;
padding: 7px 10px 0 10px;
}
.ui-tabs > .ui-tabs-nav li:hover {
color: var(--highlight-color);
}
.ui-tabs > .ui-tabs-nav li.ui-tabs-active {
color: var(--accent-color);
}
.ui-tabs > .ui-tabs-nav .ui-tabs-anchor,
.ui-tabs > .ui-tabs-nav .ui-tabs-active .ui-tabs-anchor {
cursor: pointer ;
color: inherit;
}
.ui-tabs > .ui-tabs-nav .material-icons {
position: relative;
top: -3px;
margin: 0;
padding: 0;
font-size: var(--medium-icon-size);
}
.ui-tabs > .ui-tabs-panel {
box-sizing: border-box;
position: relative;
padding: unset;
width: 100%;
height: calc(100% - var(--tabs-height));
color: var(--text-color);
}
.ui-tabs > .ui-tabs-panel.ui-corner-bottom {
border-radius: 0;
}
.tabs-panel {
position: absolute;
inset: 0;
}
/* qtip2 */
#qtip-overlay div {
background: none;
}
.qtip {
max-width: unset;
}
.qtip-tipsy.qtip {
border: var(--qtip-border);
border-radius: var(--qtip-border-radius);
background: var(--qtip-background-color);
box-shadow: var(--qtip-shadow);
backdrop-filter: none;
}
.qtip-tipsy {
color: var(--system-gray1);
text-shadow: none;
}
body.light .qtip-tipsy {
color: black;
}
.qtip-tipsy .qtip-tip {
background: inherit ;
}
.qtip-audio.qtip {
background: rgb(241, 243, 244);
}
.qtip-tipsy .qtip-content {
padding: 8px;
}
.qtip span {
display: block;
margin: 2px 0;
}
.qtip input,
.qtip select,
.qtip button {
box-sizing: border-box;
display: block;
width: 100%;
background: var(--system-gray5);
border: 1px solid var(--system-gray7);
border-radius: 16px;
color: var(--system-gray0);
filter: opacity(80%);
margin: 2px 0;
padding: 2px 8px;
height: 24px;
}
.qtip ::placeholder {
color: var(--system-gray1);
}
.qtip button {
cursor: pointer;
}
.qtip input[type=checkbox] {
cursor: pointer;
display: inline-block;
position: relative;
top: 1px;
margin: 4px 0;
width: auto;
}
.qtip label {
user-select: none;
cursor: pointer;
display: inline-block;
position: relative;
top: -7px;
margin-left: 5px;
width: auto;
}
.qtip p {
margin: 8px 0;
}
.qtip .qtip-content > div :first-child {
margin-top: 0;
}
.qtip .qtip-content > div :last-child {
margin-bottom: 0;
}
.qtip select:hover,
.qtip button:hover {
background-color: var(--system-gray4);
color: var(--qtip-highlight-color);
}
.qtip-wide {
width: 300px;
}
/* Toolbar */
.toolbar {
position: absolute;
box-sizing: border-box;
}
.horizontal-toolbar {
top: 0;
width: 100%;
height: var(--toolbar-width);
white-space: nowrap;
}
.vertical-toolbar {
right: 0;
height: 100%;
width: var(--toolbar-width);
}
.horizontal-toolbar .material-icons,
.horizontal-toolbar .material-symbols-outlined {
display: inline-block;
margin: auto 5px;
height: var(--icon-size);
cursor: pointer;
font-size: var(--icon-size);
user-select: none;
}
.vertical-toolbar .material-icons,
.vertical-toolbar .material-symbols-outlined {
display: block;
margin: 10px auto;
width: var(--icon-size);
cursor: pointer;
font-size: var(--icon-size);
user-select: none;
}
.horizontal-toolbar .material-symbols-outlined {
font-size: calc(var(--icon-size) + 7px);
position: relative;
top: 3px;
}
.vertical-toolbar .material-symbols-outlined {
font-size: calc(var(--icon-size) + 7px);
position: relative;
left: -3px;
}
.small .material-symbols-outlined {
font-size: calc(var(--icon-size) + 3px);
left: -1px;
}
.horizontal-toolbar .text {
display: inline-block;
position: relative;
top: -2px;
margin: auto 5px;
font-size: var(--font-size);
}
.horizontal-toolbar .input,
.horizontal-toolbar .select {
box-sizing: content-box;
display: inline-block;
position: relative;
top: -3px;
margin: auto 5px;
font-family: var(--sans-serif);
font-size: var(--font-size);
border: 1px solid var(--system-gray3);
border-radius: 9.5px;
padding: 0px 6px 0px 6px;
height: 16px;
}
html[platform=win32] .horizontal-toolbar .input,
html[platform=win32] .horizontal-toolbar .select {
padding: 0px 6px 1px 6px;
}
html[platform=darwin] .horizontal-toolbar .input,
html[platform=darwin] .horizontal-toolbar .select {
padding: 1px 6px 0 6px;
}
.horizontal-toolbar .select {
top: -2.5px;
}
.horizontal-toolbar .separator {
display: inline-block;
margin: auto 10px;
width: 0;
height: var(--icon-size);
border-right: 1px solid var(--separator-color);
user-select: none;
}
.vertical-toolbar .separator {
display: block;
margin: 10px auto;
height: 0;
width: var(--icon-size);
border-bottom: 1px solid var(--separator-color);
user-select: none;
}
.codicon:hover,
.material-icons:hover,
.material-symbols-outlined:hover {
color: var(--highlight-color);
}
.codicon.active,
.material-icons.active,
.material-symbols-outlined.active {
color: var(--accent-color);
}
.codicon.disabled,
.material-icons.disabled,
.material-symbols-outlined.disabled,
.horizontal-toolbar .text.disabled,
.horizontal-toolbar .input.disabled,
.horizontal-toolbar .select.disabled,
.vertical-toolbar .material-icons.disabled {
pointer-events: none;
color: var(--system-gray3);
border-color: var(--system-gray3);
}
.horizontal-toolbar .right {
position: absolute;
right: 0;
}
.large-toolbar .material-icons {
margin: 5px auto;
width: var(--large-icon-size);
font-size: var(--large-icon-size);
}
.large-toolbar .image-icon {
background-repeat: no-repeat;
display: block;
width: 24px;
height: 24px;
margin: 10px auto;
cursor: pointer;
user-select: none;
filter: var(--filter-text-color);
}
.large-toolbar .image-icon:hover {
filter: var(--filter-highlight-color);
}
.large-toolbar .image-icon.active {
filter: var(--filter-accent-color);
}
.image-icon.hand {
background-image: url(../images/icons/hand.svg);
}
.image-icon.arrow {
background-image: url(../images/icons/arrow.svg);
}
/* Browser */
#browser-pane {
box-sizing: border-box;
position: relative;
width: 100%;
height: 100%;
}
#browser-frame {
box-sizing: border-box;
position: absolute;
top: 0;
left: 0;
width: calc(100% - var(--toolbar-width));
height: 100%;
border-top: 1px solid var(--border-color);
border-right: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
}
#browser {
box-sizing: border-box;
position: absolute;
width: 100%;
height: 100%;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
background-color: var(--system-gray7);
}
/* Dialog */
.dialog ::placeholder {
color: var(--system-gray1);
}
body.dark .dialog ::placeholder {
color: var(--system-gray2);
}
.dialog .tabs-panel {
margin: 0.5em 1em;
}
.dialog.ui-dialog {
z-index: 4000 ;
}
.dialog.ui-dialog .ui-dialog-content {
padding: 1rem;
}
.dialog.ui-dialog.ui-widget.ui-widget-content {
backdrop-filter: var(--tool-backdrop-filter);
background-color: var(--tool-background-color);
border-radius: var(--tool-border-radius);
border: var(--tool-border);
box-shadow: var(--tool-shadow);
}
/* Scene Properties */
.scene-properties .tabs-panel {
overflow-y: auto;
}
.scene-properties .button {
cursor: pointer;
}
.scene-properties .drag {
cursor: move;
}
.scene-properties .active {
color: var(--accent-color);
}
.scene-properties .disabled {
cursor: inherit;
color: var(--system-gray2);
}
.scene-properties td.meta-value {
display: flex;
}
.scene-properties .open-link {
padding-left: 4px;
}
/* Library */
.ui-widget .library-input {
box-sizing: border-box;
display: block;
background: none;
border: none;
width: 100%;
font-family: var(--sans-serif);
font-weight: lighter;
font-size: var(--large-font-size);
padding-bottom: 10px;
}
.ui-widget .library-buttons {
border-top: var(--tool-border);
border-bottom: var(--tool-border);
padding: 5px 0;
text-align: center;
}
.ui-widget .library-button {
cursor: pointer;
margin-right: 1em;
}
.ui-widget .library-button:hover {
color: var(--highlight-color);
}
.ui-widget .library-button.active {
color: var(--accent-color);
}
.ui-widget .library-output {
user-select: none;
position: absolute;
overflow: scroll;
margin: 1rem 1rem 0 1rem;
inset: 75px 0 0 0;
}
.ui-widget .library-list {
margin: 0;
padding: 0;
list-style-type: none;
}
.ui-widget .library-list .component {
margin: 1em 0;
font-size: var(--small-font-size);
border-bottom: 1px solid var(--system-gray1);
color: var(--system-gray1);
clear: both;
}
body.dark .ui-widget .library-list .component {
border-bottom: 1px solid var(--system-gray2);
color: var(--system-gray2);
}
.ui-widget .library-list .node {
cursor: pointer;
padding: 0.4em 0;
}
.ui-widget .library-list li:first-child {
margin-top: 0;
}
.ui-widget .library-list .node:hover {
background-color: rgba(0, 0, 0, 0.2)
}
.ui-widget .library-list .icon {
padding-left: calc(27px + 0.5em);
background: no-repeat;
}
.ui-widget .library-list .hidden {
display: none;
}
.ui-widget .library-list.materials .component {
padding-top: 1em;
}
.library-list.materials .icon {
--padding: 5%;
box-sizing: border-box;
float: left;
width: calc(100% / 6);
height: auto;
aspect-ratio: 1 / 1;
padding: var(--padding);
background-size: calc(100% - 2 * var(--padding)) auto;
background-position: 50%;
}
.library-list.materials .icon:hover {
border: 1px solid light-dark(var(--system-gray0), var(--system-gray2));
}
.library-list.materials .text {
display: none;
}
/* Node List */
.node-list {
user-select: none;
overflow: auto;
position: absolute;
inset: 0 0 0 0;
padding: 0;
}
.node-list ul {
margin: 0;
padding: 0;
width: fit-content;
min-width: 100%;
list-style-type: none;
}
.node-list > ul {
padding: 1px 0;
color: var(--system-blue);
}
.node-list > ul > li > ul {
color: var(--system-orange);
}
.node-list .main {
color: var(--system-indigo);
}
.node-list.alternating > ul li:has(li) {
border-bottom: 1px solid var(--tint-color2);
}
.node-list .item {
margin: 0;
padding: 5px 10px 5px 0;
white-space: nowrap;
}
.node-list > ul > li > .item {
padding-left: 10px;
}
.node-list > ul > li > ul > li > .item {
padding-left: 20px;
}
/* .node-list > ul > li:has(> .item:hover) {
outline: 1px solid var(--system-blue);
}
.node-list > ul > li > ul > li:has(> .item:hover) {
outline: 1px solid var(--system-orange);
} */
.node-list.alternating > ul li:not(:has(li)):nth-child(odd) > .item {
background-color: var(--tint-color1);
}
.node-list.alternating > ul .item:hover {
background-color: var(--tint-color2) ;
}
.node-list .icon {
position: relative;
margin-right: 5px;
top: 1px;
width: 16px;
height: 12px;
}
.node-list .button {
cursor: pointer;
position: relative;
top: 2px;
font-size: var(--font-size);
}
.node-list .button:hover {
color: var(--system-cyan);
}
.node-list .button.on {
color: var(--system-blue);
}
.node-list .button.on:hover {
color: var(--system-cyan);
}
.node-list .button.off {
color: var(--system-gray1);
}
.node-list .button.off:hover {
color: var(--system-gray0);
}
.node-list .button.disabled {
pointer-events: none;
color: var(--system-gray3);
}
.node-list .bold {
font-weight: bold;
color: var(--system-brown);
}
/* Footer */
#footer {
position: absolute;
box-sizing: border-box;
width: 100%;
height: 100%;
}
/* Console */
.console {
--min-input-height: 20px;
--max-input-height: calc(var(--min-input-height) * 4);
}
.console {
box-sizing: border-box;
}
.console-left {
overflow: hidden;
position: absolute;
box-sizing: border-box;
left: 0px;
right: var(--toolbar-width);
height: 100%;
}
.console-output {
position: absolute;
box-sizing: border-box;
overflow-y: scroll;
top: 0px;
border-right: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
padding: 5px;
width: 100%;
height: calc(100% - var(--min-input-height));
background: var(--system-gray7);
font-family: var(--monospace);
font-size: 8pt;
white-space: pre-wrap;
overflow-wrap: break-word;
}
.console-output p {
box-sizing: border-box;
position: relative;
z-index: 0;
margin: 0;
padding: 1px 2px;
white-space: pre-wrap;
overflow-wrap: break-word;
font-family: monospace;
font-size: 8pt;
}
.console-output p:where(.warn, .error):before {
content: "";
box-sizing: border-box;
position: absolute;
display: block;
z-index: -1;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
}
.console-output p.debug {
color: inherit;
}
.console-output p.log {
color: var(--system-blue);
}
.console-output p.info {
color: var(--system-blue);
}
.console-output p.warn {
color: var(--system-yellow);
}
.console-output p.error {
color: var(--system-red);
}
.console-output p.warn {
border-top: 1px solid var(--system-yellow);
border-bottom: 1px solid var(--system-yellow);
color: black;
}
.console-output p.warn:before {
background-color: color-mix(in srgb, color-mix(in srgb, var(--system-yellow), white 50%), transparent 30%);
}
.console-output p.error {
border-top: 1px solid var(--system-red);
border-bottom: 1px solid var(--system-red);
color: black;
}
.console-output p.error:before {
background-color: color-mix(in srgb, color-mix(in srgb, var(--system-red), white 50%), transparent 30%);
}
.console-output p.warn:has(+ p.warn),
.console-output p.error:has(+ p.error) {
border-bottom: none;
}
.console-output p.warn + p.warn,
.console-output p.error + p.error {
border-top: none;
}
.console-output p.warn:not(:has(+ p.warn)),
.console-output p.error:not(:has(+ p.error)) {
margin-bottom: 2px;
}
.console-output p.splitter {
margin: 5px 0px;
border-top: 1px solid var(--system-gray3);
padding: 0px;
}
.console-output p.splitter:first-child {
display: none;
}
.console-input {
position: absolute;
box-sizing: border-box;
bottom: 0;
width: 100%;
min-height: var(--min-input-height);
max-height: var(--max-input-height);
}
/* textarea cannot have a ::before */
.console-input::before {
display: block;
position: absolute;
box-sizing: border-box;
left: 5px;
top: 3px;
content: "❯";
color: var(--accent-color);
}
.console-input > textarea {
display: block;
position: absolute;
box-sizing: border-box;
outline: 0;
border: 0;
padding-top: 3px;
padding-left: 17px;
width: 100%;
height: 100%;
background-color: transparent;
color: var(--text-color);
resize: none;
}
.console-search {
--accent-color: var(--system-blue);
box-sizing: border-box;
display: flex;
gap: 5px;
position: absolute;
top: 0px;
right: 30px;
width: 300px;
height: 33px;
padding: 0 8px;
background: var(--background-color);
box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.36);
border-left: 2px solid var(--system-gray4);
}
.console-search-input-elements {
position: relative;
flex: 1 1 auto;
}
.console-search-input {
box-sizing: border-box;
display: block;
margin: 5px 0px;
padding: 2px 6px;
padding-right: 30px;
width: 100%;
height: 23px;
background: var(--system-gray5);
}
.console-search-input:focus {
outline: 1px solid var(--system-blue);
}
.console-search-case-sensitive {
cursor: pointer;
position: absolute;
right: 7px;
top: 9px;
padding: 0 1px;
border-radius: 2px;
}
.console-search-case-sensitive:hover {
background-color: var(--system-gray3);
}
.console-search-case-sensitive.active {
outline: 1px solid color-mix(in srgb, var(--system-blue), transparent 30%);
background: color-mix(in srgb, var(--system-blue), transparent 70%);
color: var(--system-gray0);
}
.console-search-status {
flex: 0 0 auto;
position: relative;
top: 10px;
min-width: 60px;
font-size: 90%;
}
.console-search :is(.search-previous, .search-next) {
user-select: none;
cursor: pointer;
box-sizing: border-box;
position: relative;
flex: 0 0 auto;
top: 5px;
height: 23px;
padding: 3px 2px;
padding-left: 1px;
border-radius: 3px;
font-size: 16px;
}
.console-search :is(.search-previous, .search-next):hover {
background-color: var(--system-gray5);
}
.console-search :is(.search-previous, .search-next):focus {
outline: 1px solid var(--system-blue);
}
body.dark .console-output .selected {
background: var(--system-gray5);
}
body.light .console-output .selected {
background: color-mix(in srgb, var(--system-yellow), white 80%);
}
/* Script Editor */
.script-editor {
box-sizing: border-box;
}
.script-editor .script-editor-left {
position: absolute;
box-sizing: border-box;
left: 0;
right: var(--toolbar-width);
width: unset;
height: 100%;
}
.script-editor .vertical-splitter-right {
border-left: 1px solid var(--border-color);
border-right: 1px solid var(--border-color);
}
.script-editor .horizontal-splitter-top {
border-bottom: 1px solid var(--border-color);
}
.script-editor .node-list {
bottom: var(--input-height);
border-bottom: 1px solid var(--border-color);
}
.script-editor .type-name {
font-weight: bold;
}
.script-editor .node-name {
position: absolute;
bottom: 0px;
width: 100%;
height: var(--input-height);
border: none;
background: none;
}
.script-editor .script-editor-monaco {
position: absolute;
inset: 0;
}
/* monaco editor */
.monaco-editor,
.monaco-editor * {
all: revert;
}
/* Hide monaco tooltips. */
.context-view.monaco-component {
display: none;
}
/* Animation Editor */
.animation-editor {
box-sizing: border-box;
}
.animation-editor-toolbar {
container-type: inline-size;
padding-left: 5px;
}
@container (max-width: 630px) {
.animation-editor-toolbar .right {
display: none;
}
}
.animation-editor-navigation {
top: var(--toolbar-width);
}
.animation-editor .animation-editor-content {
position: absolute;
box-sizing: border-box;
top: var(--toolbar-width);
right: var(--toolbar-width);
left: 0;
bottom: 0;
border-top: 1px solid var(--border-color);
border-right: 1px solid var(--border-color);
}
.animation-editor .timeline {
user-select: none;
border-left: 1px solid var(--border-color);
}
.animation-editor .pointer {
cursor: pointer;
}
.animation-editor .scrollbar {
position: absolute;
bottom: 0;
height: var(--scrollbar-width);
background: var(--scrollbar-thumb-color);
}
.animation-editor .node-list {
bottom: var(--input-height);
border-bottom: 1px solid var(--border-color);
}
.animation-editor .type-name {
font-weight: bold;
}
.animation-editor .node-name {
position: absolute;
bottom: 0px;
width: 100%;
height: var(--input-height);
border: none;
background-color: var(--background-color);
}
.animation-editor .tracks {
position: absolute;
display: block;
width: calc(100% - var(--toolbar-width));
height: calc(100% - var(--toolbar-width));
top: var(--toolbar-width);
image-rendering: pixelated;
}
/* Sidebar */
.sidebar.ui-widget.ui-widget-content {
position: absolute;
box-sizing: border-box;
width: 100%;
height: 100%;
border-top: 1px solid var(--border-color);
border-left: 1px solid var(--border-color);
background: var(--sidebar-background-color);
}
.sidebar.ui-tabs .ui-tabs-nav {
left: -1px;
width: calc(100% + 1px);
border-left: 1px solid var(--border-color);
}
/* Tree View */
.tree-view {
overflow: scroll;
box-sizing: border-box;
padding: 10px;
width: 100%;
height: 100%;
}
.tree-view:focus {
outline: none;
}
.tree-view .subtree {
display: inline-block;
min-width: 100%;
outline: none;
}
.tree-view ul {
margin: 0;
padding: 0;
list-style-type: none;
}
.tree-view ul ul {
padding-left: 20px;
}
.tree-view .item {
display: flex;
flex-direction: row;
white-space: nowrap;
}
.tree-view .item > * {
position: relative;
top: 2px;
}
.tree-view .jstree-ocl {
position: relative;
top: 0;
width: 22px;
cursor: pointer;
color: var(--expander-color);
}
.tree-view .jstree-anchor {
display: flex;
flex-direction: row;
flex: 1 1 auto;
color: inherit;
}
.tree-view .jstree-node.selected {
background-color: var(--tint-color1);
}
.tree-view .jstree-node.manually.node {
outline: 1px dashed var(--system-blue);
}
.tree-view .jstree-node.manually.externproto,
.tree-view .jstree-node.manually.proto {
outline: 1px dashed var(--system-indigo);
}
.tree-view .jstree-node.primary.externproto,
.tree-view .jstree-node.primary.proto {
outline: 1px solid var(--system-indigo);
}
.tree-view .jstree-node.primary.node {
outline: 1px solid var(--system-blue);
}
.tree-view .jstree-node.primary.field {
outline: 1px solid var(--system-orange);
}
.tree-view .jstree-node.manually.imported-node,
.tree-view .jstree-node.manually.exported-node {
outline: 1px dashed var(--system-brown);
}
.tree-view .jstree-node.primary.imported-node,
.tree-view .jstree-node.manually.exported-node {
outline: 1px solid var(--system-brown);
}
.tree-view .no-select {
user-select: none;
}
/* Outline Editor */
.scene-graph {
width: min-content;
}
.scene-graph .hidden {
display: none;
}
.scene-graph .description .jstree-anchor {
padding: 2px 0;
font-size: smaller;
}
.scene-graph .not-started-state {
color: var(--text-color);
}
.scene-graph .in-progress-state {
color: var(--system-yellow);
}
.scene-graph .complete-state {
color: var(--system-green);
}
.scene-graph .failed-state {
color: var(--system-red);
}
/* make drag & drop work */
.scene-graph .last {
overflow: hidden;
height: 2px;
}
.scene-graph .last .item *:not(.route-curves-wrapper, .route-curves) {
visibility: hidden;
}
.scene-graph .no-expand .jstree-ocl {
visibility: hidden;
}
.scene-graph .description .jstree-ocl {
display: none;
}
.scene-graph .icon {
position: relative;
top: 4px;
margin-right: 5px;
width: 16px;
height: 12px;
}
.scene-graph .item * {
vertical-align: top;
}
.scene-graph .item .node-type-name,
.scene-graph .item .as {
font-weight: bold;
}
.scene-graph .name {
position: relative;
top: 2px;
white-space: nowrap;
}
.scene-graph .externproto > .item .name,
.scene-graph .proto > .item .name{
color: var(--system-indigo);
}
.scene-graph .scene > .item .name {
font-weight: bold;
font-style: italic;
color: var(--system-purple);
}
.scene-graph .node > .item .name {
color: var(--system-blue);
}
.scene-graph [node-id=NULL] > .item .name {
color: var(--system-teal);
}
.scene-graph .imported-node > .item .name,
.scene-graph .exported-node > .item .name {
color: var(--system-brown);
}
.scene-graph .exported-node > .item :is(.boolean-button, .boolean-out-button) {
top: 2px
}
.scene-graph .field > .item .name {
color: var(--system-orange);
}
.scene-graph .field.user-defined > .item .name {
font-weight: bold;
}
.scene-graph .field.references > .item .name {
font-weight: bold;
color: var(--system-brown);
}
.scene-graph .special > .item .name {
font-style: italic;
font-weight: bold;
color: var(--system-purple);
}
.scene-graph .boolean-button {
position: relative;
margin-left: 10px;
width: 28px;
height: 12px;
top: 4px;
}
.scene-graph .boolean-out-button {
position: relative;
margin-left: 10px;
width: 12px;
height: 12px;
top: 4px;
}
.scene-graph .color-button {
position: relative;
box-sizing: border-box;
margin-left: 10px;
top: 4px;
width: 12px;
height: 12px;
border: 1px solid var(--border-color);
border-radius: 50%;
background: var(--border-color);
}
.scene-graph .time-button {
position: relative;
margin-left: 10px;
width: 12px;
height: 12px;
top: 4px;
}
.scene-graph .url-button {
position: relative;
top: 4px;
margin-left: 10px;
font-variation-settings: 'GRAD' 200;
}
.scene-graph .pointer {
cursor: pointer;
}
.scene-graph .access-type {
flex: 1 1 auto;
overflow: hidden;
position: relative;
top: 4px;
margin-left: 10px;
min-width: 50px;
}
.scene-graph .route .access-type {
top: 6px;
}
.scene-graph .access-type img.active {
display: none;
position: absolute;
pointer-events: none;
}
.scene-graph .access-type img.active.activated {
display: initial;
}
.scene-graph .access-type.inputOnly img.active.input,
.scene-graph .access-type.outputOnly img.active.output,
.scene-graph .access-type.inputOutput img.active.input,
.scene-graph .access-type.input img.active.input,
.scene-graph .access-type.output img.active.output {
left: 0;
}
.scene-graph .access-type.inputOutput img.active.output {
left: 14px;
}
.externproto area.input-selector,
.externproto area.output-selector,
.scene.instance-scene area.input-selector,
.scene.instance-scene area.output-selector,
.scene.internal-scene area.input-selector,
.scene.internal-scene area.output-selector {
cursor: inherit;
}
.scene-graph .field-routes,
.scene-graph .single-route {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.scene-graph .route-curves-wrapper {
position: relative;
width: 40px;
}
.scene-graph .route-curves {
position: absolute;
top: -2px;
width: 20px;
height: 25px;
}
.scene-graph .field-value-container,
.scene-graph .special-value-container {
flex: 1 1 auto;
}
.scene-graph .field-value input,
.scene-graph .field-value textarea,
.scene-graph .special-value textarea {
display: block;
box-sizing: border-box;
outline: none;
border: 0;
margin: 2px 0 2px 20px;
padding: 0;
min-width: 300px;
max-width: calc(100% - 20px);
width: calc(100% - 20px);
background: var(--tint-color1);
color: inherit;
font-family: var(--sans-serif);
font-size: inherit;
white-space: pre;
tab-size: 3;
}
.scene-graph .field-value input {
margin-top: 2px;
margin-bottom: 2px;
}
.scene-graph .field-value textarea,
.scene-graph .special-value textarea {
position: relative;
top: -4px;
overflow: scroll;
height: 140px;
white-space: pre;
resize: vertical;
}
.scene-graph .field-value input[disabled],
.scene-graph .field-value textarea[disabled],
.scene-graph .special-value textarea[disabled] {
background: var(--background-disabled);
}
.scene-graph .drag-before {
box-shadow: 0 -1px 0 var(--system-green);
}
.scene-graph .primary.drag-before {
box-shadow: 0 -2px 0 var(--system-green);
}
.scene-graph .drag-into > .item {
outline: 1px solid var(--system-green);
}
.scene-graph.drag-after {
outline: 1px solid var(--system-green);
}
.scene-graph .drag-after + * {
box-shadow: 0 -1px 0 var(--system-green);
}
.scene-graph .drag-after:last-child {
box-shadow: 0 1px 0 var(--system-green);
}
.scene-graph .drag-after + .primary {
box-shadow: 0 -2px 0 var(--system-green);
}
.scene-graph .primary.drag-after:last-child {
box-shadow: 0 2px 0 var(--system-green);
}
.scene-graph .button {
cursor: pointer;
font-size: var(--font-size);
position: relative;
top: 2.5px;
color: var(--system-blue);
}
.scene-graph .button:hover {
color: var(--system-gray0);
}
.scene-graph .button.on:hover {
color: var(--system-cyan);
}
.scene-graph .button.off {
color: var(--system-gray1);
}
.scene-graph .button.off:hover {
color: var(--system-gray0);
}
.scene-graph .field-button {
top: 4px;
}
/* Spectrum Color Picker */
.sp-container {
backdrop-filter: var(--tool-backdrop-filter);
background-color: var(--tool-background-color);
border-radius: var(--tool-border-radius);
outline: var(--tool-border);
box-shadow: var(--tool-shadow);
}
.sp-palette-container {
border: var(--tool-outline);
}
.sp-slider,
.sp-alpha-handle {
backdrop-filter: var(--tool-backdrop-filter);
background-color: var(--tool-background-color);
border: var(--tool-border);
}
.sp-slider {
left: -3px;
}
.sp-dragger {
border-radius: 50%;
}
/* Tweakpane */
.tp-dfwv {
overflow: auto;
box-shadow: var(--qtip-shadow);
border-radius: var(--tp-base-border-radius);
}
.tp-rotv {
border: var(--qtip-border);
}
.tp-lblv_v {
width: 185px ;
}
.tp-mllv_i:active {
background-color: var(--tp-monitor-background-color-active);
}
.tp-mllv_i:hover {
background-color: var(--tp-monitor-background-color-hover);
}
.tp-mllv_i:active {
background-color: var(--tp-monitor-background-color-focus);
}
.tp-mllv_i:read-only {
background-color: var(--tp-monitor-background-color-readonly);
}
.tp-colv_s,
.tp-colswv_b {
width: 100% ;
}
.tp-colv_t {
display: none;
}
/* check mark */
.tp-ckbv_w svg path {
stroke: var(--system-green) ;
}