*, *:before, *:after {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

html {
	font-size: 12px;
}
body {
	background: #dddddd;
}

body > div {
    opacity: 1;
}

body > div, body.loading:after {
	-webkit-transition: opacity 0.1s ease;
   -moz-transition: opacity 0.1s ease;
    -ms-transition: opacity 0.1s ease;
     -o-transition: opacity 0.1s ease;
        transition: opacity 0.1s ease;
}
body:after {
	opacity: 0;
}
body.loading > div {
	opacity: 0;
}
body.loading {
	width: 100%;
	height: 100%;
	overflow: hidden;
}
body.loading:after {
	display: block;
	content: ' ';
	background-color: rgba(0,0,0,0);
	opacity: .8;
	border-radius: 6rem;
	animation: spinner 1s infinite linear;
	-moz-animation: spinner 1s infinite linear;
	-webkit-animation: spinner 1s infinite linear;
	border: 1rem solid #999;
	border-top: 1rem solid rgba(0,0,0,0);
	border-left: 1rem solid rgba(0,0,0,0);
	width: 6rem;
	height: 6rem;
	position: fixed;
	top: 30%;
	margin: 2em 0;
	margin-left: -3rem;
	left: 50%;
}

@-webkit-keyframes spinner {
    0%  {-webkit-transform: rotate(0deg);}
    100% {-webkit-transform: rotate(360deg);}   
}

@keyframes spinner {
    0%  {transform: rotate(0deg);}
    100% {transform: rotate(360deg);}   
}

@-moz-keyframes spinner {
    0%  {-moz-transform: rotate(0deg);}
    100% {-moz-transform: rotate(360deg);}   
}

.loading-failure {
	position: fixed !important;
	top: 30% !important;
	z-index: 9999;
}