*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

body {
  background-color: #000;
  overflow: hidden;
}

.circle {
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background-color: #409de0f0;
  position: absolute;
  cursor: pointer;
  right: 50%;
  margin-right: -75px;
  box-shadow: inset 16px -20px 20px 0px #0005;
  transition: all .3s;
}

.circle.before_top {
  top: -150px;
}

.circle.top {
  top: -75px;
}
.circle.center {
  top: 50%;
  margin-top: -75px;
}
.circle.bottom {
  bottom: -75px;
}

.circle.before_top.active {
  animation-duration: 0.3s;
  animation-name: circle_before-top;
}
.circle.top.active {
  animation-duration: 0.3s;
  animation-name: circle_top;
}
.circle.center.active {
  animation-duration: 0.3s;
  animation-name: circle_center;
}
.circle.bottom.active {
  animation-duration: 0.3s;
  animation-name: circle_bottom;
}

.line {
  width: 10px;
  height: 100%;
  background: #fff;
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -5px;
  z-index: -1;
  box-shadow: inset 3px 0 5px #0005;
}

.count {
  color: #fff;
  font-size: 45px;
  font-family: Helvetica, sans-serif;
  position: absolute;
  top: 10%;
  right: 10%;
}

.reset {
  display: block;
  color: #fff;
  background-color: transparent;
  cursor: pointer;
  border: none;
  font-size: 45px;
  font-family: Helvetica, sans-serif;
  position: absolute;
  top: 10%;
  left: 10%;
  outline: none;
  transition: all .3s ease;
}

.reset:hover, .reset:focus {
  opacity: .7;
}

@media (max-width: 460px) {
  .reset, .count {
    font-size: 30px;
  }
  .reset {
    left: 5%;
  }
  .count {
    right: 5%;
  }
}


@keyframes circle_before-top {
  0% {
    top: -150px;
  }
  100% {
    top: -75px;
  }
}

@keyframes circle_top {
  0% {
    top: -75px;
  }
  100% {
    top: 50%;
    margin-top: -75px;
  }
}

@keyframes circle_center {
  0% {
    top: 50%;
  }
  100% {
    top: 100%;
    bottom: -75px;
  }
}

@keyframes circle_bottom {
  0% {
    bottom: -75px;
  }
  100% {
    bottom: -150px;
  }
}
