/* ---------- Loader ---------- */
#loader {
  position: fixed;
  inset: 0;
  z-index: 999;
  background: var(--charcoal);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}

#loader .lines {
  font-family: 'IBM Plex Mono', monospace;
  font-size: clamp(12px, 1.6vw, 15px);
  color: var(--muted-dark);
  min-height: 120px;
  text-align: left;
}

#loader .lines div {
  opacity: 0;
  margin-bottom: 6px;
}

#loader .lines div.show {
  opacity: 1;
}

#loader .lines .ok {
  color: var(--violet);
}

#loader .bar {
  width: min(260px, 60vw);
  height: 2px;
  background: var(--hair-dark);
  margin-top: 28px;
  position: relative;
  overflow: hidden;
}

#loader .bar::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0%;
  background: var(--ember);
  transition: width 1.6s cubic-bezier(0.6, 0, 0.2, 1);
}

#loader.loading .bar::after {
  width: 100%;
}

#loader-curtain {
  position: fixed;
  inset: 0;
  z-index: 998;
  background: var(--charcoal);
  transform: translateY(0%);
}
