body {
	margin: 0;
	padding: 0;
	font-family: "Work Sans";
	font-size: 12pt;
	background: #191919;
	width: 100%;
	height: 100%;
}

.App {
}

.App .error-message {
	position: fixed;
	bottom: 1em;
	left: 1em;
	z-index: 999999;
}

#todo-create-node {
	position: absolute;
	left: 0;
	top: 0;
	z-index: 999;
}

.App .main-menu {
	width: 100%;
	background: #080808;
	border-bottom: 1px solid rgba(0, 0, 0, 0.8);
	color: #7b7b7b;
	padding: 0.5em 1em;
	box-sizing: border-box;
	z-index: 1;
	position: relative;
}

.App .edit-board {
	position: fixed;
	left: 0;
	top: 2.5em;
	right: 0;
	bottom: 0;
	background: url(/static/media/grid-bg.79d44276.png);
}

.App .edit-board .connections-board,
.App .edit-board .node-board {
	position: absolute;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
	/* z-index: 1; */
}
.App .edit-board .connections-board {
	z-index: 2;
}
.App .edit-board .connections-board.is-cables-muted {
	z-index: 1;
}
.App .edit-board .node-board {
	z-index: 1;
}

.App .screen {
	z-index: 9999;
}

.App .zoom-controls {
	z-index: 999;
	position: absolute;
	left: 1.2em;
	top: 3em;
	display: none; /* @TODO */
}

.App .modal {
	z-index: 999999;
}

.App > .node-search-menu {
	position: absolute;
	right: 16.7em;
	top: 4.6em;
}

.node-board {
	transition: background-color 0.2s, transform 0.2s;
	background: rgba(0, 0, 0, 0.2);
}

.node-board.is-connecting {
	background-color: black;
}

.node-board.is-connecting .node,
.node-board.is-connecting .node * {
	pointer-events: none;
}

.node-board.is-connecting-type-output .node .node-input .label {
	color: #ffe501;
	font-weight: bold;
}
.node-board.is-connecting-type-output .node .node-input .label:hover {
	color: black;
}

.node-board.is-connecting-type-output .node .node-input .label {
	pointer-events: all;
}

.node-board.is-connecting-type-input .node .node-output .label {
	color: #ffe501;
	font-weight: bold;
}
.node-board.is-connecting-type-input .node .node-output .label:hover {
	color: black;
}

.node-board.is-connecting-type-input .node .node-output .label {
	pointer-events: all;
}

.node-board .node {
	position: absolute;
	border: 1px solid rgba(0, 0, 0, 0.2);
}

.node-board .menu-container {
	position: absolute;
	z-index: 999;
}

.node {
	background: #4a4a4a;
	border-radius: 0.25em;
	color: white;
	display: inline-block;
	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
}

.node header {
	width: 100%;
	height: 1.5em;
	background: #737373;

	border-top-left-radius: 0.25em;
	border-top-right-radius: 0.25em;
	position: relative;
	box-sizing: border-box;
	font-weight: bold;
}

.node header .name {
	cursor: move;
	padding: 0.2em;
	width: 100%;
	display: inline-block;
	box-sizing: border-box;
}

.node header .id {
	font-weight: normal;
	font-size: 0.8em;
	opacity: 0.2;
	position: absolute;
	right: 6em;
	top: 0.3em;
	pointer-events: none;
}

.node header .controls {
	position: absolute;
	right: 0;
	top: 0;
	background: rgba(0, 0, 0, 0.7);
	border-top-right-radius: 0.25em;
}

.node header .controls button {
	background: none;
	border: none;
	font-size: 1.2em;
	padding: 0;
	width: 1.25em;
	height: 1.25em;
	color: white;
	vertical-align: top;
	color: white;
	cursor: pointer;
	padding-bottom: 0.1em;
}

.node header .controls .edit-button,
.node header .controls .copy-button {
	transform: rotateY(180deg);
}

.node header .controls button:hover {
	background: #ffe501;
	color: black;
}

.node header .controls button:last-child {
	border-top-right-radius: 0.208em;
}

.node .node .ports {
	position: relative;
	vertical-align: top;
	display: inline-block;
}

.node .inputs {
	float: left;
	text-align: left;
	width: 60%;
}

.node .outputs {
	float: right;
	text-align: right;
	width: 40%;
}

.node .component-container {
	min-width: 15em;
	clear: both;
	box-sizing: border-box;
	background: rgba(0, 0, 0, 0.1);
}

.node.is-type-hardware {
	background: #6f425a;
}

.node.is-type-hardware header {
	background: rgba(0, 0, 0, 0.5);
}

.node.is-type-info {
	background: #2f9254;
}

.node.is-type-info header {
	background: rgba(0, 0, 0, 0.3);
}

.node.is-type-screen {
	background: #234556;
}

.node.is-type-screen header {
	background: rgba(0, 0, 0, 0.5);
}

.node-port {
	position: relative;
	line-height: 1em;
}

.node-port .port {
	width: 0.5em;
	height: 0.5em;
	border-radius: 0.5em;
	border: 1px solid rgba(255, 255, 255, 0.5);
	position: absolute;
}

.node-port .label {
	font-size: 0.85em;
	white-space: nowrap;
	overflow: hidden;
	display: inline-block;
}

.node-port .port {
	position: absolute;
}

.node-input {
	padding-left: 3em;
}

.node-input .label {
	width: 7.25em;
}

.node-output .label {
	width: 5em;
}

.node-output {
	padding-right: 1.25em;
}

.node-port .transform {
	width: 0.35em;
	height: 0.35em;
	border: 1px solid rgba(255, 255, 255, 0.5);
	position: absolute;
	top: 0.5em;
	left: 1.25em;
	transform: translate(0, -50%) translate(0, 1px) rotate(45deg);
	cursor: pointer;
}

.node-port .transform.is-transform-set {
	background: #ffe501;
	border: 1px solid #ffe501;
}

.node-port .transform:hover {
	background: #ffe501;
	border: 1px solid #ffe501;
}

.node-input .port {
	top: 0.5em;
	left: 0.25em;
	transform: translate(0, -50%) translate(0, 1px);
}

.node-port .label {
	cursor: pointer;
}

.node-port .label:hover {
	background: #ffe501;
	border-radius: 0.25em;
	color: black;
}

.node-port .expand {
	cursor: pointer;
	position: absolute;
	left: 2em;
	top: 0.05em;
}

.node-input .expand:hover {
	color: #ffe501;
}

/* .port.is-connected {
	background: #ffe501;
	border: 1px solid #ffe501;
} */

.node-output .port {
	top: 0.5em;
	right: 0.25em;
	transform: translate(0, -50%) translate(0, 1px);
}

.node-input .node-input-user-transform-dialog {
	position: absolute;
	left: 1.5em;
	top: -0.6em;
	transform: translate(-100%, 0);
}

.node-input .input-component {
	width: 9em;
	background: rgba(255, 255, 255, 0.2);
	padding: 0.2em;
	border-radius: 0.25em;
	margin-top: 0.2em;
	box-sizing: border-box;
	margin-left: -2.75em;
	box-sizing: border-box;
}

.node-input-user-transform-dialog {
	position: relative;
	padding: 0.5em;
	box-sizing: border-box;
	border-radius: 0.25em;
	background: #c5c5c5;
	color: #424242;
	padding-right: 1.3em;
	z-index: 1;
}

.node-input-user-transform-dialog:before {
	position: absolute;
	content: " ";
	width: 0.5em;
	height: 0.5em;
	background: #c5c5c5;
	top: 50%;
	right: 0;
	transform: translate(50%, -50%) rotate(45deg);
}

.node-input-user-transform-dialog > * {
	font-size: 0.85em;
}

.node-input-user-transform-dialog > .close-button {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translate(0, -50%);
	background: transparent;
	border-radius: 1em;
	width: 1.5em;
	height: 1.5em;
	padding: 0;
	border: none;
	cursor: pointer;
	padding-bottom: 0.2em;
	padding-right: 0.1em;
}

.node-input-user-transform-dialog > .close-button:hover {
	color: #990000;
	background: white;
}

.node-input-user-transform-dialog > .user-transform {
	width: 11em;
}

.node-input-user-transform-dialog > .user-transform > span {
	width: 22%;
	vertical-align: middle;
	display: inline-block;
	transform: translate(0, -1px);
}

.node-input-user-transform-dialog > .user-transform > input {
	border: none;
	font-family: monospace;
	border-radius: 0.25em;
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
	height: 2em;
	padding: 0.25em;
	box-sizing: border-box;
	vertical-align: middle;
	width: 53%;
}

.node-input-user-transform-dialog > .user-transform > .update-transform-button {
	width: 25%;
	vertical-align: middle;
	border-radius: 0.25em;
	border-top-left-radius: 0;
	border-bottom-left-radius: 0;
	height: 2em;
	padding: 0.25em;
	box-sizing: border-box;
	border: none;
	background: #ffe501;
	color: black;
	cursor: pointer;
}

.node-input-user-transform-dialog > .user-transform > .update-transform-button:hover {
	background: #ffe501;
}

.range {
	position: relative;
	width: 100%;
	margin-bottom: 0.1em;
}

.range > .slider {
	width: calc(100% - 7em);
	margin-top: 0.5em;
}

.range > .input {
	position: absolute;
	right: 0;
	top: 0;
	width: 6em;
	margin: 0;
	box-sizing: border-box;
	border-radius: 0.25em;
	border: none;
	padding: 0.5em;
	box-sizing: border-box;
	font-family: monospace;
}

.color {
	position: relative;
	width: 100%;
	height: 1.5em;
}

.color label {
	border: 1px solid rgba(0, 0, 0, 0.3);
	width: 1.5em;
	height: 1.5em;
	position: absolute;
	left: 0;
	top: 0;
	display: inline-block;
	border-radius: 1.7em;
	cursor: pointer;
}

.color .color-input {
	opacity: 0;
	position: absolute;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
}

.color .text-input {
	position: absolute;
	left: 2.75em;
	top: 0;
	border: none;
	font-family: monospace;
	border-radius: 0.25em;
	height: 2.2em;
	padding: 0.25em;
	box-sizing: border-box;
	vertical-align: middle;
	width: 78%;
}

.toggle {
}

.text {
}

.text textarea,
.text input {
	border-radius: 0.25em;
	border: none;
	width: 100%;
	padding: 0.5em;
	box-sizing: border-box;
	font-family: monospace;
}

.number {
	position: relative;
	width: 100%;
	margin-bottom: 0.1em;
}

.number > .input {
	margin: 0;
	box-sizing: border-box;
	border-radius: 0.25em;
	border: none;
	width: 100%;
	padding: 0.5em;
	font-family: monospace;
}

.select {
}

.select select {
	font-size: 0.7em;
	width: 12.2em;
}

.file input {
	width: 100%;
}

.button button {
	width: 100%;
}

.node-web-component-wrapper.is-templated {
	padding: 1em;
}

.node-search-menu {
	position: relative;
	background: rgba(0, 0, 0, 0.7);
	width: 15em;
	border-radius: 0.25em;
	box-shadow: 0 2px 2px black;
	padding-top: 1em;
	transform: translate(-0.5em, -2em);
}

.node-search-menu .close-button {
	position: absolute;
	right: 0;
	top: 0;
	transform: translate(0, 0);
	background: transparent;
	border-radius: 0.3125em;
	width: 1.5em;
	height: 1.5em;
	padding: 0;
	border: none;
	cursor: pointer;
	padding-bottom: 0.2em;
	padding-right: 0.1em;
	color: white;
	font-size: 0.8em;
}

.node-search-menu .close-button:hover {
	color: black;
	background: #ffe501;
}

.node-search-menu .search-field {
	font-size: 1em;
	width: 14.5em;
	padding: 0.25em;
	box-sizing: border-box;
	border-radius: 0.25em;
	border: none;
	margin: 0.25em;
}

.node-search-menu .hidden-input {
	position: absolute;
	right: 0;
	bottom: 0;
	opacity: 0;
	transform: translate(0, 100%);
	pointer-events: none;
}

.node-search-menu .menu {
	width: 100%;
	color: white;
	max-height: 13.3em;
	overflow: scroll;
}

.node-search-menu .menu li {
	padding: 0.25em;
}

.node-search-menu .menu li:hover,
.node-search-menu .menu li.is-selected,
.node-search-menu .menu li.is-highlighted {
	background: #ffe501;
	color: black;
}

.node-search-menu .menu li:last-child {
	border-bottom-left-radius: 0.25em;
	border-bottom-right-radius: 0.25em;
}

.menu {
	display: inline-block;
	padding: 0;
	margin: 0;
}

.menu li {
	list-style-type: none;
	box-sizing: border-box;
	cursor: pointer;
}

.connections-board {
	pointer-events: none;
	position: relative;
}

.cable {
	position: absolute;
	z-index: 1;
	pointer-events: none;
}

.cable.is-hover .path {
	stroke: rgb(0, 200, 214);
}

.cable.is-hover circle {
	fill: rgb(0, 200, 214);
}

.cable.is-selected .path {
	stroke: #ff0065;
	stroke-dasharray: 3;
}

.cable.is-selected circle {
	fill: #ff0065;
}

.cable .path-bg,
.cable circle {
	cursor: pointer;
	pointer-events: all;
}

.cable.is-not-complete .path-bg,
.cable.is-not-complete circle {
	pointer-events: none;
}

.main-menu {
	height: 2.5em;
	vertical-align: middle;
}

.main-menu img {
	display: inline-block;
	height: 1.3em;
	vertical-align: middle;
	margin-right: 0.5em;
	opacity: 0.6;
}

.main-menu .toolbar {
	position: absolute;
	right: 0.5em;
	top: 0;
	height: 2.5em;
}

.toolbar {
}

.toolbar button {
	border: none;
	background: none;
	font-family: "Work Sans";
	color: white;
	font-size: 0.8em;
	cursor: pointer;
	height: 3.125em;
}

.toolbar button:hover {
	color: #ffe501;
}

.modal {
	background: rgba(0, 0, 0, 0.25);
	position: fixed;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
}

.modal > .container {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
}

.edit-node {
	width: 98vw;
	height: 98vh;
	position: relative;
	background: rgba(0, 0, 0, 0.7);
	background: #3a3a3a;
	color: white;
	box-sizing: border-box;
	border-radius: 0.25em;
}

.edit-node header {
	position: absolute;
	left: 50%;
	top: 0.5em;
	transform: translate(-50%, 0);
}

.edit-node header button {
	background: black;
	border-radius: 0.25em;
	font-family: "Work Sans";
	font-weight: bold;
	color: black;
	font-size: 1em;
	border: none;
	background: gray;
}

.edit-node header button:disabled {
	background: #ffe501;
}

.edit-node header button:focus {
	position: relative;
	z-index: 1;
}

.edit-node header .js-button {
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
}

.edit-node header .html-css-button {
	border-top-left-radius: 0;
	border-bottom-left-radius: 0;
}

.edit-node #ace-editor {
	border-radius: 0.25em;
}

.edit-node .js,
.edit-node .html-css {
	position: absolute;
	left: 1em;
	right: 1em;
	top: 2.5em;
	bottom: 4em;
}

.edit-node .button-container {
	position: absolute;
	bottom: 1em;
	left: 50%;
	transform: translate(-50%, 0);
	text-align: center;
}

.edit-node .save-and-close-button,
.edit-node .save-button {
	border-radius: 0.25em;
	height: 2em;
	padding: 0.25em 1.5em;
	box-sizing: border-box;
	border: none;
	background: #ffe501;
	color: black;
	cursor: pointer;
	font-size: 1em;
	display: inline-block;
	margin-left: 0.5em;
	margin-right: 0.5em;
}

.edit-node .cancel-button {
	position: absolute;
	right: 0;
	top: 0;
	transform: translate(0, 0px);
	background: transparent;
	border-radius: 0.25em;
	width: 1.2em;
	height: 1.2em;
	padding: 0;
	border: none;
	cursor: pointer;
	color: white;
	font-size: 1em;
}

.edit-node .cancel-button:hover {
	background: #ffe501;
	color: black;
}

.edit-html .container {
	background: rgba(0, 0, 0, 0.9);
	border-radius: 0.25em;
}

.edit-html .container.html {
	position: absolute;
	top: 0;
	bottom: 0;
	width: calc(50% - 0.5em);
	height: calc(50% - 1em);
}
.edit-html .container.css {
	position: absolute;
	top: 0;
	bottom: 0;
	width: calc(50% - 0.5em);
	left: calc(50% + 0.5em);
	height: 100%;
}

.edit-html .container.preview {
	position: absolute;
	top: 50%;
	bottom: 0;
	width: calc(50% - 0.5em);
	height: 50%;
}

.edit-html .container h1 {
	margin: 0;
	padding: 0;
	font-size: 1em;
	margin-left: 0.4em;
	margin-top: 0.4em;
}

.edit-html .ace_editor {
	position: absolute;
	left: 0;
	top: 2.2em;
	right: 0;
	bottom: 0;
	border-radius: 0.25em;
	border-top-left-radius: 0;
	border-top-right-radius: 0;
	height: auto !important;
}

.edit-html iframe {
	position: absolute;
	left: 0;
	top: 2em;
	border-radius: 0.25em;
	border-top-left-radius: 0;
	border-top-right-radius: 0;
	right: 0;
	bottom: 0;
	width: 100%;
	height: calc(100% - 2em);
	border: none;
	background: white;
}

.screen {
	position: relative;
}

.screen.mini {
	position: fixed;
	background: white;
	border: 1px solid #3e3e3e;
	right: 1em;
	top: 3.6em;
	box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
	width: 20vw;
	height: 20vh;
}

.screen.fullscreen {
	position: fixed;
	background: white;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
	cursor: none;
}

.screen.fullscreen #\--app--screen {
	width: 100%;
	height: 100%;
	transform: none;
}

#\--app--screen {
	position: absolute;
	left: 0;
	top: 0;
	transform: scale(0.2);
	width: 500%;
	height: 500%;
	border: none;
	transform-origin: top left;
	border: none;
	pointer-events: none;
}

.screen button {
	position: absolute;
	left: 50%;
	transform: translate(-50%, 0);
	bottom: 0.5em;
	border-radius: 0.25em;
	height: 2em;
	padding: 0.25em 1em;
	box-sizing: border-box;
	background: black;
	color: gray;
	cursor: pointer;
	border: 1px solid rgba(255, 255, 255, 0.2);
}

.screen.fullscreen button {
	background: rgba(0, 0, 0, 0.5);
	color: rgba(255, 255, 255, 0.5);
}

.screen button:hover {
	background: #ffe501;
	border: 1px solid #ffe501;
	color: black;
}

.edit-page {
	width: 98vw;
	height: 98vh;
	position: relative;
	background: rgba(0, 0, 0, 0.7);
	background: #3a3a3a;
	color: white;
	box-sizing: border-box;
	border-radius: 0.25em;
}

.edit-page .edit-html {
	position: absolute;
	left: 1em;
	right: 1em;
	top: 1em;
	bottom: 4em;
}

.edit-page .container {
	background: rgba(0, 0, 0, 0.9);
	border-radius: 0.25em;
}

.edit-page .save-and-close-button {
	border-radius: 0.25em;
	height: 2em;
	padding: 0.25em 1.5em;
	box-sizing: border-box;
	border: none;
	background: #ffe501;
	color: black;
	cursor: pointer;
	font-size: 1em;
	margin: 0 auto;
	display: block;
	position: absolute;
	bottom: 1em;
	left: 50%;
	transform: translate(-50%, 0);
}

.edit-page .cancel-button {
	position: absolute;
	right: 0;
	top: 0;
	transform: translate(0, 0px);
	background: transparent;
	border-radius: 0.25em;
	width: 1.2em;
	height: 1.2em;
	padding: 0;
	border: none;
	cursor: pointer;
	color: white;
	font-size: 1em;
}

.edit-page .cancel-button:hover {
	background: #ffe501;
	color: black;
}

.import-export-dialog {
	width: 50vw;
	height: 50vh;
	background: rgba(0, 0, 0, 0.7);
	color: white;
	padding: 0.5em 1em;
	border-radius: 0.25em;
}

.import-export-dialog p {
	margin: 0;
	padding: 0;
	font-weight: bold;
	margin-bottom: 0.5em;
}

.import-export-dialog textarea {
	width: 100%;
	height: calc(100% - 83px);
	padding: 0;
	font-family: monospace;
	border: none;
	border-radius: 0.25em;
	margin-bottom: 1em;
	background: #2b2b2d;
	color: #bbbbbb;
}

.import-export-dialog .close-button {
	position: absolute;
	right: 0.5em;
	top: 0.5em;
	transform: translate(0, -2px);
	background: transparent;
	border-radius: 1.5em;
	width: 1.5em;
	height: 1.5em;
	padding: 0;
	border: none;
	cursor: pointer;
	padding-bottom: 0.2em;
	color: white;
	font-size: 1em;
}

.import-export-dialog .close-button:hover {
	background: #ffe501;
	color: black;
}

.import-export-dialog .ok-button,
.import-export-dialog .import-button {
	border-radius: 0.25em;
	height: 2em;
	padding: 0.25em 1.5em;
	box-sizing: border-box;
	border: none;
	background: #ffe501;
	color: black;
	cursor: pointer;
	font-size: 1em;
	margin: 0 auto;
	display: block;
}

@keyframes error-message-pulse {
	0% {
		transform: translate(0, 0);
	}
	40% {
		transform: translate(0, -4px);
	}
	80% {
		transform: translate(0, 0);
	}
	90% {
		transform: translate(0, 2px);
	}
	100% {
		transform: translate(0, 0);
	}
}
.error-message {
	background: #b50000;
	color: #ffd9d9;
	padding: 1em;
	border-radius: 0.25em;
	width: 25em;
	cursor: pointer;
	font-size: 0.9em;
	animation: error-message-pulse 0.2s ease-in-out 1;
}

.error-message:hover {
	background: #520000;
}

.error-message span {
	display: block;
}

.zoom-controls {
	width: 2em;
}

.zoom-controls button {
	background: #3e3e3e;
	border: none;
	color: rgba(255, 255, 255, 0.5);
	font-family: "Work Sans";
	width: 2em;
	height: 2em;
	font-weight: bold;
	user-select: none;
	cursor: pointer;
	font-size: 0.7em;
}

.zoom-controls button:hover {
	background: #ffe501;
	color: black;
}

.zoom-controls button:focus {
	outline: none;
}

.zoom-controls .zoom-in {
	border-top-left-radius: 0.25em;
	border-top-right-radius: 0.25em;
	margin-bottom: 1px;
}

.zoom-controls .zoom-out {
	border-bottom-left-radius: 0.25em;
	border-bottom-right-radius: 0.25em;
}


/*# sourceMappingURL=main.ea7bd3ef.chunk.css.map*/