html, body {
  margin: 0;
  overflow: hidden;
}

.stage {
  min-height: 100vh;
  display: grid;
  place-items: center;
  margin: 0;
  background: #ff4d1f;
  font-family: -apple-system, "Segoe UI", "Noto Sans KR", sans-serif;
}

.btn {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border: 2.5px solid #fff7e6;
  border-radius: 14px;
  padding: 20px 44px;
  font: 800 20px/1 inherit;
  color: #fff7e6;
  background: transparent;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
}
.btn__fill {
  position: absolute;
  inset: 0;
  background: #17141a;
  transform: scaleX(0);
  transform-origin: left;
  z-index: -1;
  transition: transform 200ms ease-out;
}
.btn.is-holding .btn__fill {
  animation: fill 1.2s linear forwards;
}
.btn.is-done .btn__fill {
  transform: scaleX(1);
}
.btn.is-done {
  color: #fff7e6;
}
.btn__label {
  position: relative;
}
.btn.is-demo .btn__fill {
  animation: fill-loop 2s linear infinite;
}

@keyframes fill {
  from {
    transform: scaleX(0);
  }
  to {
    transform: scaleX(1);
  }
}
@keyframes fill-loop {
  0%, 10% {
    transform: scaleX(0);
  }
  70%, 85% {
    transform: scaleX(1);
  }
  100% {
    transform: scaleX(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .btn__fill {
    transition: none;
  }
  .btn.is-demo .btn__fill {
    animation: none;
  }
  .btn.is-holding .btn__fill {
    animation-duration: 1.2s;
  }
}
