* {
	font-family: inherit;
	font-weight:inherit;
	margin:0;
	padding:0;
	border:0;
	line-height:inherit;
	font-size:inherit;
	text-align:inherit;

	-ms-user-callout: none;

	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;

	-webkit-touch-callout: none;
	-moz-touch-callout: none;
	-ms-touch-callout: none;
	touch-callout: none;

	-webkit-user-drag: none;
	-moz-user-drag: none;
	-ms-user-drag: none;
	user-drag: none;

	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	
	-webkit-tap-highlight-color: rgba(0,0,0,0);
    -webkit-tap-highlight-color: transparent; /* For some Androids */

	-webkit-appearance: none;
}

/* :focus { outline:none; } */
::-moz-focus-inner { border:0; } /* removes dotted outline on selected fields/buttons in firefox */
 
html {
	line-height:0;
	font-weight: normal;
	font-size:0;
}

body {
	position:relative;
    height:100%;
}

input[type=text],
input[type=email],
input[type=tel],
input[type=password],
input[type=file],
input[type=number],
textarea {
	-webkit-user-select: text;
	-khtml-user-select: text;
	-moz-user-select: text;
	-ms-user-select: text;
	user-select: text;
    outline: none;
}

button {
    outline: none;
}

input::placeholder {
	overflow: visible;
	line-height: normal;
}

div.vcenter {
  display: table;
  width:100%;
  height:100%;
}

div.vcenter > div {
  display: table-cell;
  vertical-align: middle;
}

a:link, a:hover, a:active, a:visited {
  color:inherit;
  text-decoration:inherit;
}

.transparent {
	opacity: 0.5;
}

.semitransparent {
	opacity: 0.75;
}

.uppercase {
	text-transform:uppercase !important;
}

.underline {
	text-decoration:underline !important;
}

strong, .strong {
	font-weight:bold;
}

.italic {
	font-style:italic;
}

.scale-down {
	-ms-transform: scale(0.95);
  -webkit-transform: scale(0.95);
  transform: scale(0.95);
}

.scale-up {
	-ms-transform: scale(1.05);
  -webkit-transform: scale(1.05);
  transform: scale(1.05);
}

.bounce {
	animation: bouncing 1.5s linear infinite;
}

@keyframes bouncing {
  0%       { transform: scale(1.0); }
  50%      { transform: scale(0.9); }
  100%     { transform: scale(1.0); }
}

.rotate {
	animation: rotation 5s linear infinite;
}

.rotate-reverse {
	animation: rotation 5s linear infinite reverse;
}

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

.bounce-out {
	animation: bouncing-out 0.5s linear;
	animation-fill-mode: forwards;
}

@keyframes bouncing-out {
	0% { transform: translateY(0) }
	100% { transform: translateY(-100vmin) rotate(360deg) scale(2); }
}

.shake {
	animation: shake 0.25s linear infinite;
}

@keyframes shake {
	0% { transform: translate(0.3vmin, 0.3vmin); }
	10% { transform: translate(-0.3vmin, -0.6vmin); }
	20% { transform: translate(-0.9vmin, 0); }
	30% { transform: translate(0.9vmin, 0.6vmin);  }
	40% { transform: translate(0.3vmin, -0.3vmin); }
	50% { transform: translate(-0.3vmin, 0.6vmin); }
	60% { transform: translate(0.9vmin, 0.3vmin); }
	70% { transform: translate(0.9vmin, 0.3vmin); }
	80% { transform: translate(-0.3vmin, -0.3vmin); }
	90% { transform: translate(0.3vmin, 0.6vmin); }
	100% { transform: translate(0.3vmin, -0.6vmin); }
}