* {
  box-sizing: border-box;
}

html,
body {
  min-height: 100%;
}

body {
  margin: 0;
  overflow: hidden;
  background:
    linear-gradient(120deg, rgba(255, 107, 107, 0.26), transparent 34%),
    linear-gradient(240deg, rgba(6, 214, 160, 0.24), transparent 36%),
    linear-gradient(180deg, #fff8ed 0%, #e9f6f2 100%);
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(rgba(31, 41, 55, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(31, 41, 55, 0.06) 1px, transparent 1px);
  background-size: 42px 42px;
  animation: drift 18s linear infinite;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  background:
    linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.42), transparent),
    linear-gradient(180deg, transparent 0%, rgba(255, 255, 255, 0.5) 100%);
  transform: translateX(-100%);
  animation: sweep 9s ease-in-out infinite;
}

.loader {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 28px;
}

.progress-wrap {
  width: min(760px, 82vw);
}

.bar {
  height: clamp(24px, 5vw, 44px);
  overflow: hidden;
  border: 2px solid rgba(31, 41, 55, 0.88);
  border-radius: 999px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.32)),
    rgba(31, 41, 55, 0.08);
  box-shadow:
    0 24px 70px rgba(31, 41, 55, 0.18),
    inset 0 2px 5px rgba(255, 255, 255, 0.8),
    inset 0 -3px 10px rgba(31, 41, 55, 0.1);
}

.percent {
  margin-top: 18px;
  color: rgba(31, 41, 55, 0.82);
  font-family: Arial, Helvetica, sans-serif;
  font-size: clamp(28px, 6vw, 58px);
  font-weight: 800;
  line-height: 1;
  text-align: center;
}

#fill {
  display: block;
  width: 0%;
  height: 100%;
  border-radius: inherit;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.44), transparent 28%),
    linear-gradient(90deg, #ff6b6b 0%, #ffd166 48%, #06d6a0 100%);
  box-shadow:
    0 0 28px rgba(6, 214, 160, 0.48),
    inset 0 2px 4px rgba(255, 255, 255, 0.55);
}

body.done {
  background:
    linear-gradient(120deg, rgba(6, 214, 160, 0.24), transparent 36%),
    linear-gradient(240deg, rgba(255, 209, 102, 0.26), transparent 38%),
    linear-gradient(180deg, #f4fff9 0%, #e8f7ff 100%);
}

@keyframes drift {
  to {
    background-position: 42px 42px;
  }
}

@keyframes sweep {
  0%,
  45% {
    transform: translateX(-100%);
  }

  100% {
    transform: translateX(100%);
  }
}

@media (max-width: 520px) {
  .progress-wrap {
    width: 88vw;
  }
}
