/* --------------------------------

Main Components
Source: https://codepen.io/elorenn/pen/qXzXPv

-------------------------------- */
.bsection {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-width: 1em;
  overflow: scroll;
  flex-wrap: wrap;
  flex-basis: 50%;
}
.bsection:first-of-type {
  border-right: 2px solid #fff;
}

.badge {
  cursor: help;
  background: #e7cc9c;
  height: 33%;
  width: 33%;
  min-width: 30%;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  -webkit-filter: drop-shadow(0px 0px 0px rgba(0, 0, 0, 0));
          filter: drop-shadow(0px 0px 0px rgba(0, 0, 0, 0));
  transition: 150ms linear;
}
.badge:hover {
  -webkit-transform: translateY(-2px);
          transform: translateY(-2px);
  -webkit-filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, 0.15));
          filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, 0.15));
}
.badge:active:after {
  content: 'Prost!';
  position: absolute;
  color: #fff;
  font-family: sans-serif;
  text-transform: uppercase;
  font-weight: bold;
  font-size: 3em;
  letter-spacing: .1em;
  top: -25%;
}
.badge.anim {
  height: 33%;
  width: 33%;
}
.badge.anim:active:after {
  content: 'cheers!';
}

.beer-single-div {
  position: relative;
  height: 150px;
  width: 112.5px;
  min-width: 112.5px;
  margin-top: 30px;
  background-image: radial-gradient(97.5px 22.5px at 50% 103%, #f1ecdb 40%, transparent 40%), radial-gradient(6px 9px at 15% 67%, #ffe799 80%, transparent 83%), radial-gradient(6px 9px at 15% 18%, #ffe799 80%, transparent 83%), radial-gradient(9px 9px at 25% 85%, #ffda66 80%, transparent 80%), radial-gradient(25.5px 45px at 15% 90%, #ffc200 70%, transparent 70%), radial-gradient(25.5px 25.5px at 15% 5%, #ffc200 70%, transparent 70%), linear-gradient(to right, transparent 0%, transparent 10%, #ffe799 10%, #ffe799 20%, transparent 20%), radial-gradient(6px 6px at 70% 45%, #fecf75 80%, transparent 80%), radial-gradient(7.5px 7.5px at 35% 27%, #ffda66 80%, transparent 80%), radial-gradient(4.5px 4.5px at 80% 12%, #fecf75 80%, transparent 80%), radial-gradient(6px 6px at 60% 81%, #fecf75 80%, transparent 80%), radial-gradient(4.5px 4.5px at 89% 89%, #fecf75 80%, transparent 80%), radial-gradient(7.5px 7.5px at 77% 78%, #fecf75 80%, transparent 80%), radial-gradient(4.5px 4.5px at 40% 57%, #ffda66 80%, transparent 80%), linear-gradient(to right, #ffc200 50%, #fdac10 50%);
  border-radius: 0 0 15% 15%;
  border: 9px solid #f1ecdb;
  /*mug*/
  box-sizing: border-box;
}
.beer-single-div:before {
  content: '';
  position: absolute;
  z-index: -1;
  border-radius: 0 50% 50% 0;
  height: 75px;
  width: 52.5px;
  top: 22.5px;
  right: -49.5px;
  background-color: transparent;
  box-sizing: border-box;
  border: 12px solid #f1ecdb;
  /*mug handle*/
  border-left: 12px solid transparent;
}
.beer-single-div:after {
  content: '';
  position: absolute;
  top: -20%;
  right: 20%;
  height: 15px;
  width: 15px;
  background: #fffef8;
  border-radius: 25.5px;
  box-shadow: 0 16.5px 0 10.5px #fff9de, 0 10.5px 0 10.5px #fffef8, -40.5px 10.5px 0 6px #fff9de, -58.5px 9px 0 9px #fffef8, -27px 18px 0 6px #fff9de, -75px 12px 0 6px #fff9de, -22.5px 0 0 9px #fffef8, 21px 10.5px 0 9px #fffef8, -48px -12px 0 7.5px #fffef8, -27px -21px 0 7.5px #fff9de, -7.5px -10.5px 0 7.5px #fff9de, 10.5px -7.5px 0 1.5px #fffef8, 13.5px -10.5px 0 1.5px #fff9de, 37.5px 10.5px 0 1.5px #fff9de;
}

.beer-animation-wrapper {
  position: relative;
  overflow-y: hidden;
  padding: 25.5px;
  padding-right: 0;
  padding-top: 10%;
}
.beer-animation-wrapper .beer {
  position: relative;
  height: 150px;
  width: 112.5px;
  min-width: 112.5px;
  margin-top: 48px;
  margin-right: 40.5px;
  margin-left: 13.5px;
  z-index: -2;
  background-image: radial-gradient(97.5px 22.5px at 50% 103%, #f1ecdb 40%, transparent 40%), linear-gradient(to right, #ffc200 50%, #fdac10 50%);
  border-radius: 0 0 15% 15%;
  /*mug*/
  border: 9px solid #f1ecdb;
  box-sizing: border-box;
}
.beer-animation-wrapper .beer:before {
  content: '';
  position: absolute;
  height: 130%;
  width: 100%;
  bottom: -5%;
  z-index: -1;
  opacity: 1;
  -webkit-animation: 3s bubbles linear infinite;
          animation: 3s bubbles linear infinite;
  background: radial-gradient(9px 9px at 25% 85%, #ffda66 80%, transparent 80%), radial-gradient(6px 6px at 70% 45%, #fecf75 80%, transparent 80%), radial-gradient(7.5px 7.5px at 35% 40%, #fecf75 80%, transparent 80%), radial-gradient(4.5px 4.5px at 80% 30%, #fecf75 80%, transparent 80%), radial-gradient(6px 6px at 60% 81%, #fecf75 80%, transparent 80%), radial-gradient(4.5px 4.5px at 89% 89%, #fecf75 80%, transparent 80%), radial-gradient(7.5px 7.5px at 77% 78%, #fecf75 80%, transparent 80%), radial-gradient(4.5px 4.5px at 40% 57%, #ffda66 80%, transparent 80%), radial-gradient(3px 3px at 30% 67%, #ffda66 80%, transparent 80%), radial-gradient(3px 3px at 30% 17%, #ffda66 80%, transparent 80%), radial-gradient(4.5px 4.5px at 40% 10%, #ffda66 80%, transparent 80%), radial-gradient(7.5px 7.5px at 62% 24%, #ffda66 80%, transparent 80%), radial-gradient(6px 6px at 18% 31%, #ffda66 80%, transparent 80%), radial-gradient(9px 9px at 83% 60%, #ffda66 80%, transparent 80%);
}
.beer-animation-wrapper .beer:after {
  /*mug handle*/
  content: '';
  position: absolute;
  border-radius: 0 50% 50% 0;
  height: 75px;
  width: 49.5px;
  top: 22.5px;
  right: -49.5px;
  background-color: transparent;
  box-sizing: border-box;
  border: 12px solid #f1ecdb;
  border-left: 9px solid #f1ecdb;
}
.beer-animation-wrapper .foam {
  position: relative;
  top: -20%;
  left: 63%;
  height: 15px;
  width: 15px;
  background: #fffef8;
  border-radius: 25.5px;
  box-shadow: -52.5px 42px 0 -2.25px #ffe799, -52.5px 43.5px 0 -2.25px #ffe799, -52.5px 45px 0 -2.25px #ffe799, -52.5px 46.5px 0 -2.25px #ffe799, -52.5px 48px 0 -2.25px #ffe799, -52.5px 49.5px 0 -2.25px #ffe799, -52.5px 51px 0 -2.25px #ffe799, -52.5px 52.5px 0 -2.25px #ffe799, -52.5px 54px 0 -2.25px #ffe799, -52.5px 55.5px 0 -2.25px #ffe799, -52.5px 57px 0 -2.25px #ffe799, -52.5px 58.5px 0 -2.25px #ffe799, -52.5px 60px 0 -2.25px #ffe799, -52.5px 61.5px 0 -2.25px #ffe799, -52.5px 63px 0 -2.25px #ffe799, -52.5px 64.5px 0 -2.25px #ffe799, -52.5px 66px 0 -2.25px #ffe799, -52.5px 67.5px 0 -2.25px #ffe799, -52.5px 69px 0 -2.25px #ffe799, -52.5px 70.5px 0 -2.25px #ffe799, -52.5px 72px 0 -2.25px #ffe799, -52.5px 73.5px 0 -2.25px #ffe799, -52.5px 75px 0 -2.25px #ffe799, -52.5px 76.5px 0 -2.25px #ffe799, -52.5px 78px 0 -2.25px #ffe799, -52.5px 79.5px 0 -2.25px #ffe799, -52.5px 81px 0 -2.25px #ffe799, -52.5px 82.5px 0 -2.25px #ffe799, -52.5px 84px 0 -2.25px #ffe799, -52.5px 85.5px 0 -2.25px #ffe799, -52.5px 87px 0 -2.25px #ffe799, -52.5px 88.5px 0 -2.25px #ffe799, -52.5px 90px 0 -2.25px #ffe799, -52.5px 91.5px 0 -2.25px #ffe799, -52.5px 93px 0 -2.25px #ffe799, -52.5px 94.5px 0 -2.25px #ffe799, -52.5px 96px 0 -2.25px #ffe799, -52.5px 97.5px 0 -2.25px #ffe799, -52.5px 99px 0 -2.25px #ffe799, -52.5px 100.5px 0 -2.25px #ffe799, -52.5px 102px 0 -2.25px #ffe799, -52.5px 103.5px 0 -2.25px #ffe799, -52.5px 105px 0 -2.25px #ffe799, -52.5px 106.5px 0 -2.25px #ffe799, -52.5px 108px 0 -2.25px #ffe799, -52.5px 109.5px 0 -2.25px #ffe799, 0 16.5px 0 10.5px #fff9de, 0 10.5px 0 10.5px #fffef8, -40.5px 10.5px 0 6px #fff9de, -58.5px 9px 0 9px #fffef8, -27px 18px 0 6px #fff9de, -75px 12px 0 6px #fff9de, -22.5px 0 0 9px #fffef8, 21px 10.5px 0 9px #fffef8, -48px -12px 0 7.5px #fffef8, -27px -21px 0 7.5px #fff9de, -7.5px -10.5px 0 7.5px #fff9de, 10.5px -7.5px 0 1.5px #fffef8, 13.5px -10.5px 0 1.5px #fff9de, 37.5px 10.5px 0 1.5px #fff9de;
}
.beer-animation-wrapper .foam:before, .beer-animation-wrapper .foam:after {
  z-index: -1;
  content: '';
  position: absolute;
  top: 200%;
  width: 15px;
  border-radius: 25.5px;
  background: #fff9de;
  background: linear-gradient(to right, #fff9de 75%, #fffef8 75%);
}
.beer-animation-wrapper .foam:after {
  left: 100%;
  height: 0px;
  -webkit-animation: drip1 2s ease-out forwards;
          animation: drip1 2s ease-out forwards;
}
.beer-animation-wrapper .foam:before {
  right: 25%;
  height: 0px;
  -webkit-animation: drip2 5s ease-out forwards;
          animation: drip2 5s ease-out forwards;
}

#popup-modal .modal-body {
  background:url(https://i.imgur.com/f4wfsnL.jpg);
  background-size:cover;
  padding:0; 
  position:relative;
  height:300px;
  border-top-left-radius:6px;
  border-top-right-radius:6px;
}

#popup-modal h1 {
  color:#fff;
  margin:0;
  padding-top:30px;
  text-transform:uppercase;
  letter-spacing:3px;
  font-weight:100;
}

#popup-modal h1 span {
  color:#888;
  font-weight:700;
}

#popup-modal p {
  color:#ccc;
  font-weight:400;
}

#popup-modal .modal-social {
  /*position:absolute;
  right: 65px;
  top: 130px;
  width: 215px;*/
}

#popup-modal .modal-box {
  margin: auto;
  position:absolute;
  top: 40%; left: 15%; bottom: 50%; right: 15%;
  z-index:9999;
}

.overlay {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.7);
  transition: opacity 500ms;
  visibility: hidden;
  opacity: 0;
}
.overlay:target {
  visibility: visible;
  opacity: 1;
}

.popup {
  margin: 70px auto;
  padding: 20px;
  background: #fff;
  border-radius: 5px;
  width: 30%;
  position: relative;
  transition: all 5s ease-in-out;
}

.popup h2 {
  margin-top: 0;
  color: #333;
  font-family: Tahoma, Arial, sans-serif;
}
.popup .close {
  position: absolute;
  top: 20px;
  right: 30px;
  transition: all 200ms;
  font-size: 30px;
  font-weight: bold;
  text-decoration: none;
  color: #333;
}
.popup .close:hover {
  color: #06D85F;
}
.popup .content {
  max-height: 30%;
  overflow: auto;
}

@media screen and (max-width: 700px){
  .box{
    width: 70%;
  }
  .popup{
    width: 70%;
  }
}

.layout {
	margin: 0 auto;
	max-width: 1170px;
	width: 100%;
	padding: 0 15px;
}

/********Grid Widht *******/
.grid-3 {	width: 25%;	float: left;	min-height: 1px;	padding-left: 15px;	padding-right: 15px;
	position: relative;}
/********Grid Widht *******/	

/***Section Css******/
.counting {
    /* background: #34495e none repeat scroll 0 0; */
    color: #fff;
    overflow: hidden;
    padding: 36px 0;
}

.counting span {
    font-size: 70px;
    font-weight: 700;
    position: relative;
	text-align:center;
	display:block;
}
.counting p {
    font-size: 20px;
    font-weight: 700;
    letter-spacing: 2px;
    padding-top: 30px;
    text-transform: uppercase;
	text-align:center;
}

.counting span::before {
    /*background: #b7b7b7 none repeat scroll 0 0; */
    bottom: -10px;
    content: " ";
    height: 4px;
    left: 32%;
    position: absolute;
    width: 36%;
}


@media (max-width:980px) {
	.layout {				width: 767px;	}
	.grid-3 {				width: 50%;	}
}
@media (max-width:640px) {
	.layout {		width: 300px;	}
	.grid-3 {		width: 100%;	}
}

@-webkit-keyframes drip2 {
  0% {
    height: 0px;
  }
  50% {
    height: 45px;
  }
  75% {
    height: 45px;
  }
  80% {
    height: 45px;
  }
  100% {
    height: 52.5px;
  }
}

@keyframes drip2 {
  0% {
    height: 0px;
  }
  50% {
    height: 45px;
  }
  75% {
    height: 45px;
  }
  80% {
    height: 45px;
  }
  100% {
    height: 52.5px;
  }
}
@-webkit-keyframes drip1 {
  0% {
    height: 0px;
  }
  100% {
    height: 75px;
  }
}
@keyframes drip1 {
  0% {
    height: 0px;
  }
  100% {
    height: 75px;
  }
}
@-webkit-keyframes bubbles {
  0% {
    -webkit-transform: translatey(0%);
            transform: translatey(0%);
  }
  99% {
    -webkit-transform: translatey(-50%);
            transform: translatey(-50%);
  }
  100% {
    opacity: 0;
  }
}
@keyframes bubbles {
  0% {
    -webkit-transform: translatey(0%);
            transform: translatey(0%);
  }
  99% {
    -webkit-transform: translatey(-50%);
            transform: translatey(-50%);
  }
  100% {
    opacity: 0;
  }
}

/* Anim
width: 378px;
  height: 290px;
 */
.animation {
  display: inline-block;
  position: relative;
  width: 26em;
  height: 16em;
  margin: -2vh auto 0 auto;
  vertical-align: middle;
}
/*@media (max-width:720px) {
  .animation {margin-left:-30rem;margin-right:-30rem;}
} 
@media (max-width:450px) {
  .animation {width:58rem;height:38rem;}
}
@media (max-width:450px) {
  .animation {width:58rem;height:38rem;}
}
@media (max-width:400px) {
  .animation {width:55rem;height:36rem;}
}
@media (max-width:380px) {
  .animation {width:50rem;height:33rem;}
}
@media (max-width:340px) {
  .animation {width:47rem;height:31rem;}
}
@media (max-width:320px) {
  .animation {width:42rem;height:28rem;}
}*/
@media (max-height:650px) {
  .animation {margin-top: -7vh !important;margin-bottom: 10vh !important;}
}
@media (min-height:651px) {
  .animation {margin-top: -8vh !important;margin-bottom: 10vh !important;}
}
@media (min-height:670px) {
  .animation {margin-top: -6.5vh !important;margin-bottom: 10vh !important;}
}
@media (min-height:720px) {
  .animation {margin-top: -2vh !important;margin-bottom: 10vh !important;overflow-y:visible}
}
@media (min-height:800px) {
  .animation {margin-top: 0 !important;margin-bottom: 10vh !important;overflow-y:visible}
}
.animation .device {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 50%;
  top: 50%;
  background: #111;
  -webkit-transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  -moz-transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  -ms-transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  -moz-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
.animation .device .phone-home-button,
.animation .device .tablet-home-button {
  position: absolute;
  border-radius: 50%;
  background: #444;
  opacity: 0;
  z-index: 1;
  -webkit-transition: all 0.4s ease;
  -moz-transition: all 0.4s ease;
  -ms-transition: all 0.4s ease;
  transition: all 0.4s ease;
}
.animation .device .phone-home-button {
  width: 16px;
  height: 16px;
  margin-top: -8px;
  right: 11px;
  top: 50%;
}
.animation .device .tablet-home-button {
  width: 12px;
  height: 12px;
  margin-left: -6px;
  bottom: 7px;
  left: 50%;
}
.animation .device .screen-stand {
  position: absolute;
  width: 100%;
  margin-left: -10px;
  margin-top: -1px;
  top: 60%;
  opacity: 0;
  z-index: 1;
  -webkit-transition: all 0.4s ease-out;
  -moz-transition: all 0.4s ease-out;
  -ms-transition: all 0.4s ease-out;
  transition: all 0.4s ease-out;
}
.animation .device .screen-stand .leg {
  position: absolute;
  width: 12px;
  height: 16px;
  left: 50%;
  top: 0;
  margin-left: -6px;
  background: #111;
}
.animation .device .screen-stand .foot {
  position: absolute;
  width: 120px;
  height: 4px;
  left: 50%;
  top: 15px;
  margin-left: -60px;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  background: #111;
}
.animation .device .display {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #34495e;
  z-index: 3;
}
.animation .device .display div {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 100%;
  white-space: nowrap;
  -webkit-transition: all 0.4s ease;
  -moz-transition: all 0.4s ease;
  -ms-transition: all 0.4s ease;
  transition: all 0.4s ease;
}
.animation .device .display div div {
  position: absolute;
  width: 100%;
  left: 0;
  top: 50%;
  margin-top: -24px;
  font-size: 18px;
  text-align: center;
 /* color: #0080ff;*/
}
@media (max-width:450px) {
  .animation .device .display div div {width:100%;max-width:100%;font-size:12px !important;}
  .display-3 { font-size: 3.5rem;}
}
  .animation .device .display .slide1 div {margin-top:0px;}
.animation .device .display div div em {
  font-weight: bold;
}
.animation .device .display .slide1 {
  /* background: #000; */
  background: url("https://i.imgur.com/wCp0xpe.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  text-shadow:  1px 1px 2px #1f1f1f, -1px -1px 2px #1f1f1f, -1px 0 2px #1f1f1f, 0 -1px 2px #1f1f1f, 1px 0 2px #1f1f1f, 0 1px 2px #1f1f1f, 1px -1px 2px #1f1f1f, -1px 1px 2px #1f1f1f,
                2px 2px 2px #1f1f1f, -2px -2px 2px #1f1f1f, -2px 0 2px #1f1f1f, 0 -2px 2px #1f1f1f, 2px 0 2px #1f1f1f, 0 2px 2px #1f1f1f, 2px -2px 2px #1f1f1f, -2px 2px 2px #1f1f1f,
                3px 3px 2px #1f1f1f, -3px -3px 2px #1f1f1f, -3px 0 2px #1f1f1f, 0 -3px 2px #1f1f1f, 3px 0 2px #1f1f1f, 0 3px 2px #1f1f1f, 3px -3px 2px #1f1f1f, -3px 3px 2px #1f1f1f,
                4px 4px 4px #1f1f1f, -4px -4px 4px #1f1f1f, -4px 0 4px #1f1f1f, 0 -4px 4px #1f1f1f, 4px 0 4px #1f1f1f, 0 4px 4px #1f1f1f, 4px -4px 4px #1f1f1f, -4px 4px 4px #1f1f1f;
    color:white;
}
.animation .device .display .slide2 {
  /* background: #000; */
  background: url("https://i.imgur.com/KfArkPZ.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  text-shadow:  1px 1px 2px #fff, -1px -1px 2px #fff, -1px 0 2px #fff, 0 -1px 2px #fff, 1px 0 2px #fff, 0 1px 2px #fff, 1px -1px 2px #fff, -1px 1px 2px #fff,
                2px 2px 2px #fff, -2px -2px 2px #fff, -2px 0 2px #fff, 0 -2px 2px #fff, 2px 0 2px #fff, 0 2px 2px #fff, 2px -2px 2px #fff, -2px 2px 2px #fff,
                3px 3px 2px #fff, -3px -3px 2px #fff, -3px 0 2px #fff, 0 -3px 2px #fff, 3px 0 2px #fff, 0 3px 2px #fff, 3px -3px 2px #fff, -3px 3px 2px #fff,
                4px 4px 4px #fff, -4px -4px 4px #fff, -4px 0 4px #fff, 0 -4px 4px #fff, 4px 0 4px #fff, 0 4px 4px #fff, 4px -4px 4px #fff, -4px 4px 4px #fff;
  color:#0080ff;
}
.animation .device .display .slide3 {
  /* background: #000; */
  background: url("https://i.imgur.com/c55mey7.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  text-shadow:  1px 1px 2px #000, -1px -1px 2px #000, -1px 0 2px #000, 0 -1px 2px #000, 1px 0 2px #000, 0 1px 2px #000, 1px -1px 2px #000, -1px 1px 2px #000,
                2px 2px 2px #000, -2px -2px 2px #000, -2px 0 2px #000, 0 -2px 2px #000, 2px 0 2px #000, 0 2px 2px #000, 2px -2px 2px #000, -2px 2px 2px #000,
                3px 3px 2px #000, -3px -3px 2px #000, -3px 0 2px #000, 0 -3px 2px #000, 3px 0 2px #000, 0 3px 2px #000, 3px -3px 2px #000, -3px 3px 2px #000,
                4px 4px 4px #000, -4px -4px 4px #000, -4px 0 4px #000, 0 -4px 4px #000, 4px 0 4px #000, 0 4px 4px #000, 4px -4px 4px #000, -4px 4px 4px #000;
  color:white;
}
.animation[data-animation-step="1"] .device {
  width: 87%;
  height: 90%;
  padding: 10px;
  border-radius: 4px;
}
.animation[data-animation-step="1"] .device .slide1 {
  left: 0%;
}
.animation[data-animation-step="1"] .device .screen-stand {
  opacity: 1;
  top: 100%;
}
.animation[data-animation-step="2"] .device {
  width: 74%;
  height: 75%;
  padding: 16px;
  border-radius: 10px;
}
.animation[data-animation-step="2"] .device .slide1 {
  left: -100%;
}
.animation[data-animation-step="2"] .device .slide2 {
  left: 0%;
}
.animation[data-animation-step="2"] .device .tablet-home-button {
  opacity: 1;
}
.animation[data-animation-step="3"] .device {
  width: 27%;
  height: 75%;
  padding: 16px 4px;
  border-radius: 6px;
}
.animation[data-animation-step="3"] .device .slide1,
.animation[data-animation-step="3"] .device .slide2 {
  left: -100%;
}
.animation[data-animation-step="3"] .device .slide3 {
  left: 0%;
}
.animation[data-animation-step="3"] .device .phone-home-button {
  opacity: 1;
}
  @media (min-height:800px) {
    .animation[data-animation-step="1"] .device {width:87%; height:90%;}
    .animation[data-animation-step="2"] .device {width:80%; height:80%;}
    .animation[data-animation-step="3"] .device {width:28%; height:80%;}
  }
  @media (max-height:720px) {
    .animation[data-animation-step="1"] .device {width:72%; height:75%;}
    .animation[data-animation-step="2"] .device {width:59%; height:60%;}
    .animation[data-animation-step="3"] .device {width:22%; height:63%;}
    .animation .device .display div div {font-size:16px;}
  }
  @media (max-height:650px) {
    .animation[data-animation-step="1"] .device {width:62%; height:65%;}
    .animation[data-animation-step="2"] .device {width:54%; height:55%;}
    .animation[data-animation-step="3"] .device {width:22%; height:63%;}
    .animation .device .display div div {font-size:15px;}
  }
  @media (max-width:560px) {
    .animation[data-animation-step="1"] .device {margin-top:1%;width:72%; height:75%;}
    .animation[data-animation-step="2"] .device {margin-top:1%;width:65%; height:66%;}
    .animation[data-animation-step="3"] .device {margin-top:1%;width:28%; height:80%;}
    .animation .device .display div div {font-size:15px;}
  }
  @media (max-width:520px) {
    .animation[data-animation-step="1"] .device {margin-top:0%;width:66%; height:69%;}
    .animation[data-animation-step="2"] .device {margin-top:0%;width:62%; height:63%;}
    .animation[data-animation-step="3"] .device {margin-top:0%;width:28%; height:80%;}
    .animation .device .display div div {font-size:15px;}
  }
  @media (max-width:460px) {
    .animation[data-animation-step="1"] .device {margin-top:0%;width:58%; height:61%;}
    .animation[data-animation-step="2"] .device {margin-top:0%;width:54%; height:55%;}
    .animation[data-animation-step="3"] .device {margin-top:0%;width:25%; height:72%;}
    .animation .device .display div div {font-size:15px;}
  }
  @media (max-width:350px) {
    .animation[data-animation-step="1"] .device {margin-top:3%;width:62%; height:65%;}
    .animation[data-animation-step="2"] .device {margin-top:3%;width:58%; height:60%;}
    .animation[data-animation-step="3"] .device {margin-top:9%;width:30%; height:80%;}
    .animation .device .display div div {font-size:15px;}
  }
  @media (max-width:320px) {
    .animation[data-animation-step="1"] .device {margin-top:6%;width:62%; height:65%;}
    .animation[data-animation-step="2"] .device {margin-top:6%;width:58%; height:60%;}
    .animation[data-animation-step="3"] .device {margin-top:12%;width:30%; height:80%;}
    .animation .device .display div div {font-size:15px;}
  }
  
.glow {
  font-size: 80px;
  color: #fff;
  text-align: center;
  -webkit-animation: glow 1s ease-in-out infinite alternate;
  -moz-animation: glow 1s ease-in-out infinite alternate;
  animation: glow 1s ease-in-out infinite alternate;
}

@-webkit-keyframes glow {
  from {
    text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #0095e6, 0 0 40px #0095e6, 0 0 50px #0095e6, 0 0 60px #0095e6, 0 0 70px #0095e6;
  }
  to {
    text-shadow: 0 0 20px #fff, 0 0 30px #4db1ff, 0 0 40px #4db1ff, 0 0 50px #4db1ff, 0 0 60px #4db1ff, 0 0 70px #4db1ff, 0 0 80px #4db1ff;
  }
}

.device {
  transform: rotateX(25deg) rotateZ(-25deg) translateX(0) scale(.93);
  margin: auto;
	position: relative;
	display: inline-block;
	background: #333333;
	box-shadow:
		0 1px 4px 0 rgba(0,0,0,0.20),
		0 8px 24px 0 rgba(0,0,0,0.20),
		0 0 0 1px rgba(0, 0, 0, 0.53),
		inset 0 -2px 2px 2px rgba(0,0,0,0.55);
  box-shadow: -1px 1px 4px 0 rgba(0, 0, 0, 0.20), -8px 8px 24px 0 rgba(0, 0, 0, 0.20), inset 5px -5px 5px 5px rgba(0, 0, 0, 0.24);
	border-radius: 40px;
	position: relative;
	box-sizing: content-box;
	padding: 50px 10px;
  padding: 45px 10px 55px 20px;
  width: 200px;
  height: 360px;
}
.device-screen {
	width: 98%;
	height: 98%;
	background: #111111;
	overflow: hidden;
	border-radius: 4px;
	box-shadow: inset 0px 1px 3px rgba(0,0,0,0.1);
	position: relative;
}
.device-screen:before {
	content: "";
	top: 0;
	bottom: 0;
	width: 98%;
	height: 98%;
	box-shadow: inset 0px 1px 3px rgba(0,0,0,0.1);
	position: absolute;
	border-radius: 8px;
	overflow: hidden;
}
.device video {
	border-radius: 0px;
	width: 100%;
	height: 105%;
  object-fit: cover;
}

.device-screen img {
  height: 100%;
  width: 105%;
  object-fit: cover;
}

@media (max-width: 850px) {
  .device {
    border-radius: 4.6vw;
    padding: 6vw 1.2vw;
    width: 33vw;
    height: 59vw;
  }
  .device video,
  .device-screen {
    border-radius: .33vw;
  }
}




