.btn-toggle {
  position: relative;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  padding: 0;
  background-color: transparent;
  border-color: transparent;
  outline: none;
  transform: translateZ(0);
  transition: transform 0.1s ease-out;
}

.btn-toggle:active {
  transform: translateY(4px);
}

.btn-toggle:focus .line:after {
  background-color: black;
}

.line {
  display: block;
  width: 16px;
  padding: 1.75px;
}

.line:after {
  content: '';
  display: block;
  width: 100%;
  height: 2px;
  background-color: dimgray;
  border-radius: 2px;
  transform: translateZ(0) rotate(0);
  transition: background-color 0.2s ease-out;
}

.open .line:nth-child(1) {
  -webkit-animation: jump-1 0.9s forwards ease;
  animation: jump-1 0.9s forwards ease;
}

.open .line:nth-child(1):after {
  -webkit-animation: line-1 0.9s forwards ease-in-out;
  animation: line-1 0.9s forwards ease-in-out;
}

.open .line:nth-child(2) {
  -webkit-animation: jump-2 0.9s forwards ease;
  animation: jump-2 0.9s forwards ease;
}

.open .line:nth-child(2):after {
  -webkit-animation: line-2 0.9s forwards ease-in-out;
  animation: line-2 0.9s forwards ease-in-out;
}

.close .line:nth-child(1) {
  animation: jump-1 0.9s reverse ease;
}

.close .line:nth-child(1):after {
  animation: line-1 0.9s reverse ease-in-out;
}

.close .line:nth-child(2) {
  animation: jump-2 0.9s reverse ease;
}

.close .line:nth-child(2):after {
  animation: line-2 0.9s reverse ease-in-out;
}

.open .line:nth-child(3),
.close .line:nth-child(3) {
  -webkit-animation: jump-3 0.9s forwards ease-out;
  animation: jump-3 0.9s forwards ease-out;
}

@-webkit-keyframes line-1 {
  10% {
    transform: translateZ(0) rotate(0);
  }

  80% {
    transform: translateZ(0) rotate(395deg);
  }

  90%,
  100% {
    transform: translateZ(0) rotate(405deg);
  }
}

@keyframes line-1 {
  10% {
    transform: translateZ(0) rotate(0);
  }

  80% {
    transform: translateZ(0) rotate(395deg);
  }

  90%,
  100% {
    transform: translateZ(0) rotate(405deg);
  }
}

@-webkit-keyframes line-2 {
  10% {
    transform: translateZ(0) rotate(0);
  }

  20% {
    transform: translateZ(0) rotate(10deg);
  }

  90%,
  100% {
    transform: translateZ(0) rotate(-405deg);
  }
}

@keyframes line-2 {
  10% {
    transform: translateZ(0) rotate(0);
  }

  20% {
    transform: translateZ(0) rotate(10deg);
  }

  90%,
  100% {
    transform: translateZ(0) rotate(-405deg);
  }
}

@-webkit-keyframes jump-1 {
  10% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-5px);
  }

  90%,
  100% {
    transform: translateY(2px);
  }
}

@keyframes jump-1 {
  10% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-5px);
  }

  90%,
  100% {
    transform: translateY(2px);
  }
}

@-webkit-keyframes jump-2 {
  10% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-5px);
  }

  85%,
  100% {
    transform: translateY(-3.5px);
  }
}

@keyframes jump-2 {
  10% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-5px);
  }

  85%,
  100% {
    transform: translateY(-3.5px);
  }
}

@-webkit-keyframes jump-3 {
  10% {
    transform: translateY(-7.5px) rotate(15deg);
  }

  30% {
    transform: translateY(-15px) rotate(-10deg);
  }

  50% {
    transform: translateY(7.5px) rotate(5deg);
  }

  80% {
    transform: translateY(0);
  }
}

@keyframes jump-3 {
  10% {
    transform: translateY(-7.5px) rotate(15deg);
  }

  30% {
    transform: translateY(-15px) rotate(-10deg);
  }

  50% {
    transform: translateY(7.5px) rotate(5deg);
  }

  80% {
    transform: translateY(0);
  }
}

@-webkit-keyframes glow {
  50% {
    box-shadow: rgba(131, 131, 131, 0.4) 0 0 2px 2px;
  }
}

@keyframes glow {
  50% {
    box-shadow: rgba(131, 131, 131, 0.4) 0 0 2px 2px;
  }
}
