html {
	height: 100vh;
}
body {
	margin: 0;
	padding: 0;
}

#kv_game {
	margin: 0 auto;
}

#kv_input_receiver {
	position: absolute;
	opacity: 0;
	width: 0;
	overflow: hidden;
}

#canvas {
	display: block;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	margin-left: auto;
	margin-right: auto;

	width: auto;
	max-width: 100vw;
	max-height: 100vh;
	height: auto;
	vertical-align: middle;
}

#kv_canvas_area {
	z-index: 1000;
	width: auto;
	margin: 0 auto;
}

#kv_loading_overlay {
	position: absolute;
	width: 100%;
	height: 100%;
	z-index: 1;
	top: 0;
	background: black;
	text-align: center;
	line-height: 3em;
	overflow: hidden;
}

#kv_load_progress {
	filter: grayscale(95%);
	position: absolute;
	top: 100%;
	margin-top: -96px;
	width: 100%;
}

#kv_output {
	display: none;
	margin: 0 auto;
	resize: none;
	height: 172px;
	max-width: 100%;
	background: black;
	color: white;
	font-weight: bold;
	font-size: 10px;
	border: none;
	border-top: 2px dashed grey;
	box-sizing: border-box
}

#kv_load_progress:after {
	display: block;
	margin-top: -0.75em;
	color: white;
	font-family: monospace;
	font-weight: bold;
	content: attr(data-progress);

	-webkit-animation: anim-determinate 5s ease-out infinite;
	   -moz-animation: anim-determinate 5s ease-out infinite;
	     -o-animation: anim-determinate 5s ease-out infinite;
	        animation: anim-determinate 5s ease-out infinite;

	text-rendering: optimizeSpeed;
	font-smooth: none;
	backface-visibility: visible;
	-webkit-backface-visibility: visible;
	-webkit-font-smoothing: none;
}

.kv_fade_out {
	-webkit-opacity: 0;
	-moz-opacity: 0;
	opacity: 0;
	-webkit-transition: all 1s ease-in;
	-moz-transition: all 1s ease-in;
	-ms-transition: all 1s ease-in;
	-o-transition: all 1s ease-in;
	transition: all 1s ease-in;
}

.loading-bar__square {
}

.loading-bar__square {
	transform: rotate(-2deg);
	background-color: red;
	display: inline-block;
	vertical-align: middle;
	margin: 0;
	padding: 0;
	width:  1em;
	height: 1em;
	margin-left: -1px;
	opacity: 0.8;

	transition: height 0.2s ease-out;
}

.anim-indeterminate {
	-webkit-animation: anim-indeterminate 1.6s infinite, anim-determinate 0.4s infinite;
	-moz-animation: anim-indeterminate 1.6s infinite, anim-determinate 0.4s infinite;
	-o-animation: anim-indeterminate 1.6s infinite, anim-determinate 0.4s infinite;
	animation: anim-indeterminate 1.6s infinite, anim-determinate 0.4s infinite;
	-webkit-animation-timing-function: ease-out;
	-moz-animation-timing-function: ease-out;
	-o-animation-timing-function: ease-out;
	animation-timing-function: ease-out;
}

.anim-determinate {
	-webkit-animation: anim-determinate 0.25s infinite;
	-moz-animation: anim-determinate 0.25s infinite;
	-o-animation: anim-determinate 0.25s infinite;
	animation: anim-determinate 0.25s infinite;
	-webkit-animation-timing-function: ease-out;
	-moz-animation-timing-function: ease-out;
	-o-animation-timing-function: ease-out;
	animation-timing-function: ease-out;
}

.loading-bar__square.lbs-0 {
	background: #b33636;-webkit-animation-delay: 0.0s;-moz-animation-delay: 0.0s;-o-animation-delay: 0.0s;animation-delay: 0.0s;
}
.loading-bar__square.lbs-1 {
	background: #b36436;-webkit-animation-delay: 0.1s;-moz-animation-delay: 0.1s;-o-animation-delay: 0.1s;animation-delay: 0.1s;
}
.loading-bar__square.lbs-2 {
	background: #b39336;-webkit-animation-delay: 0.2s;-moz-animation-delay: 0.2s;-o-animation-delay: 0.2s;animation-delay: 0.2s;
}
.loading-bar__square.lbs-3 {
	background: #a3b336;-webkit-animation-delay: 0.3s;-moz-animation-delay: 0.3s;-o-animation-delay: 0.3s;animation-delay: 0.3s;
}
.loading-bar__square.lbs-4 {
	background: #74b336;-webkit-animation-delay: 0.4s;-moz-animation-delay: 0.4s;-o-animation-delay: 0.4s;animation-delay: 0.4s;
}
.loading-bar__square.lbs-5 {
	background: #45b336;-webkit-animation-delay: 0.5s;-moz-animation-delay: 0.5s;-o-animation-delay: 0.5s;animation-delay: 0.5s;
}
.loading-bar__square.lbs-6 {
	background: #36b355;-webkit-animation-delay: 0.6s;-moz-animation-delay: 0.6s;-o-animation-delay: 0.6s;animation-delay: 0.6s;
}
.loading-bar__square.lbs-7 {
	background: #36b384;-webkit-animation-delay: 0.7s;-moz-animation-delay: 0.7s;-o-animation-delay: 0.7s;animation-delay: 0.7s;
}
.loading-bar__square.lbs-8 {
	background: #36b3b3;-webkit-animation-delay: 0.8s;-moz-animation-delay: 0.8s;-o-animation-delay: 0.8s;animation-delay: 0.8s;
}
.loading-bar__square.lbs-9 {
	background: #3684b3;-webkit-animation-delay: 0.9s;-moz-animation-delay: 0.9s;-o-animation-delay: 0.9s;animation-delay: 0.9s;
}
.loading-bar__square.lbs-10 {
	background: #3655b3;-webkit-animation-delay: 1.0s;-moz-animation-delay: 1.0s;-o-animation-delay: 1.0s;animation-delay: 1.0s;
}
.loading-bar__square.lbs-11 {
	background: #4536b3;-webkit-animation-delay: 1.1s;-moz-animation-delay: 1.1s;-o-animation-delay: 1.1s;animation-delay: 1.1s;
}
.loading-bar__square.lbs-12 {
	background: #7436b3;-webkit-animation-delay: 1.2s;-moz-animation-delay: 1.2s;-o-animation-delay: 1.2s;animation-delay: 1.2s;
}
.loading-bar__square.lbs-13 {
	background: #a336b3;-webkit-animation-delay: 1.3s;-moz-animation-delay: 1.3s;-o-animation-delay: 1.3s;animation-delay: 1.3s;
}
.loading-bar__square.lbs-14 {
	background: #b33693;-webkit-animation-delay: 1.4s;-moz-animation-delay: 1.4s;-o-animation-delay: 1.4s;animation-delay: 1.4s;
}
.loading-bar__square.lbs-15 {
	background: #b33664;-webkit-animation-delay: 1.5s;-moz-animation-delay: 1.5s;-o-animation-delay: 1.5s;animation-delay: 1.5s;
}

@keyframes anim-indeterminate {
	0%  { height: 1em;   }
	25% { height: 1em;   }
	36% { height: 1.5em; }
	47% { height: 1.5em; }
	55% { height: 1em;   }
}

@keyframes anim-determinate {
	0% { transform: rotate(0deg);   }
	30% { transform: rotate(4deg);	}
	70% { transform: rotate(-3deg);	}
	100% { transform: rotate(0deg); }
}
