/* Full-screen 2-second results handoff.
 * Loading animation adapted from Uiverse.io by alexruix.
 */
.results-loading-screen {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  min-height: 100vh;
  min-height: 100dvh;
  padding: 24px;
  background: #fff;
  color: #111;
  text-align: center;
}

.results-loading-content {
  display: flex;
  width: min(100%, 440px);
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.results-loading-screen .loader {
  width: 80px;
  height: 50px;
  position: relative;
  margin-bottom: 16px;
}

.results-loading-screen .loader-text {
  position: absolute;
  top: 0;
  padding: 0;
  margin: 0;
  color: #333;
  animation: results_loading_text 2s ease both;
  font-size: .8rem;
  letter-spacing: 1px;
}

.results-loading-screen .load {
  background: #111;
  border-radius: 50px;
  display: block;
  height: 16px;
  width: 16px;
  bottom: 0;
  position: absolute;
  transform: translateX(64px);
  animation: results_loading_bar 2s ease both;
}

.results-loading-screen .load::before {
  position: absolute;
  content: "";
  width: 100%;
  height: 100%;
  background: #b5b5b5;
  border-radius: inherit;
  animation: results_loading_bar2 2s ease both;
}

.results-loading-title {
  margin: 0;
  font-size: clamp(1.65rem, 5vw, 2.4rem);
  line-height: 1.18;
}

.results-loading-title:focus {
  outline: none;
}

.results-loading-note {
  margin: 0;
  color: #595959;
  font-size: 1rem;
}

@keyframes results_loading_text {
  0% { letter-spacing: 1px; transform: translateX(0); }
  40% { letter-spacing: 2px; transform: translateX(26px); }
  80% { letter-spacing: 1px; transform: translateX(32px); }
  90% { letter-spacing: 2px; transform: translateX(0); }
  100% { letter-spacing: 1px; transform: translateX(0); }
}

@keyframes results_loading_bar {
  0% { width: 16px; transform: translateX(0); }
  40% { width: 100%; transform: translateX(0); }
  80% { width: 16px; transform: translateX(64px); }
  90% { width: 100%; transform: translateX(0); }
  100% { width: 16px; transform: translateX(0); }
}

@keyframes results_loading_bar2 {
  0% { transform: translateX(0); width: 16px; }
  40% { transform: translateX(0); width: 80%; }
  80% { width: 100%; transform: translateX(0); }
  90% { width: 80%; transform: translateX(15px); }
  100% { transform: translateX(0); width: 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .results-loading-screen .loader-text,
  .results-loading-screen .load,
  .results-loading-screen .load::before {
    animation: none;
  }
  .results-loading-screen .load { width: 80px; transform: translateX(0); }
  .results-loading-screen .load::before { width: 40px; }
}
