* {
	padding: 0;
	margin: 0;
}
body {
	font-family: Helvetica, Arial, sans-serif;
}
h1, h2 {
	margin-bottom: 1em;
}
h2 small {
	font-size: .5em;
}
.deactivate {
	pointer-events: none;
}
div.overlay {
	position: absolute;
	display: flex;
	justify-content: center;
	align-items: center;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	background-color: rgba(51,51,51,.5);
	z-index: 1000;
}
div.overlay button {
	display: block;
	padding: 1rem;
	font-size: 1rem;
	border: none;
	outline: none;
	display: inline-block;
	cursor: pointer;
	color: #333;
	background-color: #FFF;
}
div.grid {
	position: fixed;
	top: 0;
	left: 0;
}
div.col {
	width: 100px;
	height: 100vh;
	border-right: 1px solid #CCC;
	float: left;
}
div.btn-container {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 1000;
}
button.btn {
	display: block;
	padding: 1rem;
	font-size: 1rem;
	border: 1px solid #000;
	outline: none;
	display: inline-block;
	cursor: pointer;
	color: #333;
}
button.btn.active {
	background-color: #333;
	color: #FFF;
}
button.btn:hover {
	background-color: #222;
	color: #FFF;
}
div.container {
	width: 100vw;
	height: 100vh;
	position: fixed;
	top: 0;
	left: 0;
	background-color: #FAFAFA;
}
div.canvas {
	width: 10000px;
	height: 10000px;
	position: absolute;
	top: 0;
	left: 0;
	overflow: visible;
	background-color: #FFF;
	background-image: radial-gradient(circle at 1px 1px, black 1px, transparent 0); /* SOURCE: https://stackoverflow.com/questions/55364127/making-a-dotted-grid-with-css/55364821#55364821 */
	background-size: 40px 40px;
}
div.deck {
	display: flex;
	position: fixed;
	bottom: 0;
	width: 100%;
	min-height: 200px;
	overflow: auto;
}
div.origin {
	position: absolute;
	top: -10px;
	left: -10px;
	overflow: visible;
	width: 20px;
	height: 20px;
}
div.origin::before {
	content: '';
	width: 20px;
	height: 1px;
	background-color: #333;
	position: absolute;
	top: 10px;
	left: 0;
}
div.origin::after {
	content: '';
	height: 20px;
	width: 1px;
	background-color: #333;
	position: absolute;
	left: 10px;
	top: 0;
}
div.dragging {
	z-index: 1000 !important;
}
div.dragging *:not(.sticky-area) {
	pointer-events: none;
}
div.matrix {
	position: absolute;
	display: grid;
	grid-template-columns: auto auto;
	padding: 0;
	margin: 0 2rem 2rem 0;
	z-index: 50;
	box-sizing: border-box;
	border: 1px solid #000;
}
div.matrix > div.sticky-area {
	grid-column: span 2;
	background-color: rgba(51,51,51,.1);
}
div.matrix table {
	resize: both;
	border-collapse: collapse;
	height: 1px;
}
div.matrix table tr {
	border-bottom: 1px solid #000;
}
div.matrix table tr th,
div.matrix table tr td {
	border-right: 1px solid #000;
}
div.matrix table th {
	border: 1px solid rgba(0,0,0,1);
	box-sizing: border-box;
	color: #FFF;
}
div.matrix table th.sticky-area {
	height: 100%;
	margin: 0;
	justify-content: center;
	align-items: center;
	padding: 1rem;
	text-align: center;
	box-sizing: border-box;
	background-color: rgba(255,255,255,.75);
	cursor: grab;
}
div.matrix table td > div.group {
	margin: 0;
	height: 100%;
	background-color: rgba(255,255,255,.75);
	border: none;
}
div.add-row,
div.add-col {
	position: absolute;
}
div.add-row button,
div.add-col button {
	opacity: 0;
	border: none;
}
div.add-row:hover button,
div.add-col:hover button {
	opacity: 1;
}

div.add-col {
	width: 4rem;
	left: 100%;
	height: 100%;
}
div.add-row {
	height: 4rem;
	top: 100%;
	width: 100%;
}
div.add-col button,
div.add-row button {
	width: 100%;
	height: 100%;
/*	border: none;*/
	font-size: 2rem;
	cursor: pointer;
}
/*div.matrix div.group div.sticky-area {
	display: none;
}*/
div.group {
	position: absolute;
/*	border: 1px solid #000;*/
/*	background-color: rgba(255, 255, 255, .75);*/
	border: 1px solid rgba(51,51,51,.25);
	background-color: rgba(225,225,225,.25);
	padding: 0 0 2rem 2rem;
	margin: 0 2rem 2rem 0;
	z-index: 50;
	resize: both;
	max-width: 2000px;
	resize: both;
	box-sizing: border-box;
}
div.group.immutable {
	padding-top: 2rem;
}
div.matrix input[type=text],
div.group input[type=text] {
	display: block;
	width: calc(100% - 2rem);
	border: none;
	background-color: transparent;
	font-family: Comic Sans MS;
	font-size: 1.25rem;
	margin-bottom: 15px;
}
div.matrix table th.sticky-area input[type=text] {
	margin-bottom: 0;
	text-align: center;
}
div.group button.pipe {
	position: absolute;
	width: 2rem;
	height: 2rem;
	min-height: 30px;
	min-width: 30px;
	right: 100%;
	top: -1px;
	z-index: 1001;
	padding: 0;
}
/*div.group button.pipe.connected {
	height: 100% !important;
}
button.pipe.connected span.flip {
	transform: rotate(-90deg);
}*/
div.pipeline {
	position: absolute;
	background-color: rgba(51,51,51,.7);
	width: 1px;
	height: 5px;
	border-radius: 5px;
	transform-origin: top left;
	z-index: 1000;
}
div.note {
	background-color: yellow;
	font-family: Comic Sans MS;
	display: inline-block;
	position: absolute;
	min-width: 100px;
	min-height: 100px;
/*	padding-top: 2rem;*/
	border: 1px solid rgba(51,51,51,.05);
	z-index: 100;
	transform-origin: top center;
	margin: 0 2rem 1rem 0;
	box-shadow: 0 10px 10px rgba(51,51,51,.25);
	box-sizing: border-box;
}
div.card {
	background-color: #FFF;
	display: inline-block;
	position: absolute;
	width: 200px;
	min-height: 100px;
	border: 1px solid rgba(51,51,51,.25);
	z-index: 100;
	transform-origin: top center;
	margin: 0 2rem 1rem 0;
}
div.card img {
	width: 200px;
}
div.card h1 {
	font-size: 1rem;
	margin-bottom: .25rem;
	padding: 1rem;
}
div.card p {
	font-size: .75rem;
	padding: 0 1rem 1rem 1rem;
	word-break: break-word;
}
/*div.deck div.card {
	position: relative;
}
div.deck div.card a h1 {
	font-size: 1rem;
}
div.deck div.card p {
	font-size: .75rem;
}*/
div.group.child,
div.note.child,
div.card.child {
	position: relative;
	vertical-align: top;
}
div.matrix.focus {
	border: 1px solid rgba(51,51,51,1);
}
div.group.focus {
	border: 1px solid rgba(51,51,51,1);
}
div.note.focus,
div.card.focus {
	border: 1px solid rgba(51,51,51,1);	
}
div.locked {
	pointer-events: none !important;
}
div.locked div.note,
div.locked div.card,
div.locked div.group {
	pointer-events: all;
}
div.locked::before {
	content: attr(data-locked-by);
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 2rem;
	line-height: 2rem;
	font-family: 'Helvetica', 'Arial', sans-serif;
	text-align: center;
	color: rgba(51,51,51,.5);
	font-size: 10px;
}
div.hit {
	border-color: #333;
}
/*div.hit::before {
	content: '';
	position: absolute;
	top: -2rem;
	left: -2rem;
	width: 100%;
	height: 100%;
	border: 1px solid #333;
	padding: 2rem;
}*/
div.sticky-area {
	width: 100%;
/*	margin: -2rem 0 0 -2rem;*/
	min-height: 30px;
	height: 30px;
	max-height: 120px;
	background-color: rgba(51,51,51,.05);
	cursor: grab;
}
div.group > div.sticky-area {
	width: calc(100% + 2rem);
	margin: 0 0 1rem -2rem;
}
div.note div.color-swatches {
	/*width: 150px;*/
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	height: 100%;
	position: absolute;
	top: 0;
	left: -20px;
	transform: scale(0);
	transform-origin: top center;
	transition: transform .1s;
}
div.note.focus div.color-swatches {
	transform: scale(1);
}
div.color-swatches div.color {
	width: 10px;
	height: 10px;
	color: yellow;
	border-radius: 10px;
	border: 1px solid rgba(51,51,51,.15);
	display: block;
/*	margin: 10px 10px 0 0;*/
	cursor: pointer;
}
div.group.dragging div.sticky-area,
div.note.dragging div.sticky-area
div.card.dragging div.sticky-area {
	cursor: grabbing;
}
textarea {
	font-family: Comic Sans MS;
	display: block;
	outline: none;
	border: none;
	width: 100%;
/*	margin: 1rem 0 0 1rem;*/
	min-height: 200px;
	background-color: transparent;
	min-width: 100px;
	font-size: 1rem;
	/*width: 100%;*/
	/*display: flex;*/
	/*align-items: center;*/
	/*justify-content: center;*/
	text-align: center;
	resize: both;
	padding: 1rem 2rem 2rem 2rem;
/*	position: absolute;*/
	left: 0;
	overflow: hidden;
	box-sizing: border-box;
}
div.title {
	/*padding: 2rem;*/
	/*margin: -2rem 0 0 -2rem;*/
	position: absolute;
	height: 3rem;
	line-height: 3rem;
	/*border-left: 1rem solid rgba(51,51,51,0);*/
}
div.title div.sticky-area {
	width: 30px;
	height: 3rem;
	display: inline-block;
	position: absolute;
	left: -40px;
	cursor: grab;
}
div.title:hover div.sticky-area {
	background-color: rgba(51,51,51,.1);
}
div.title.dragging div.sticky-area {
	cursor: grabbing;
}
div.title input[type=text] {
	font-family: Comic Sans MS;
	font-size: 2rem;
	border: none;
	outline: none;
	margin-bottom: .5rem;
	/*vertical-align: middle;*/
}