.flight-loader {
  --flight-ink: #d9f6fa;
  position: relative;
  display: grid;
  min-height: 380px;
  overflow: hidden;
  isolation: isolate;
  place-items: center;
  background: #060d15;
  color: var(--flight-ink);
  font-family: 'IBM Plex Sans', 'Noto Sans SC', 'PingFang SC', 'Microsoft Yahei', sans-serif;
}
.flight-loader--fullscreen {
  position: fixed;
  inset: 0;
  min-height: 100dvh;
  z-index: 9999;
}
.flight-loader::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  content: '';
  background:
    radial-gradient(ellipse at 50% 47%, #12384490, transparent 47%),
    radial-gradient(1px 1px at 15% 23%, #b5e4f780 98%, transparent),
    radial-gradient(1px 1px at 78% 18%, #b5e4f770 98%, transparent),
    radial-gradient(1px 1px at 88% 64%, #b5e4f790 98%, transparent),
    radial-gradient(1px 1px at 26% 78%, #b5e4f770 98%, transparent),
    radial-gradient(1px 1px at 65% 86%, #b5e4f760 98%, transparent);
}
.flight-loader__content {
  position: relative;
  display: flex;
  width: min(100%, 480px);
  flex-direction: column;
  align-items: center;
  padding: 36px 24px;
  text-align: center;
}
.flight-loader__eyebrow,
.flight-loader__signature {
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 0.32em;
  color: #82b2bd;
}
.flight-loader__instrument {
  position: relative;
  display: grid;
  width: 240px;
  height: 240px;
  margin: 22px 0 28px;
  place-items: center;
}
.flight-loader__instrument::before {
  position: absolute;
  width: min(76vw, 750px);
  height: 1px;
  content: '';
  background: linear-gradient(90deg, transparent, #83e5f333, transparent);
}
.flight-loader__ring {
  position: absolute;
  inset: 7px;
  border: 1px solid #a0e7f21a;
  border-radius: 50%;
}
.flight-loader__ring::before,
.flight-loader__ring::after {
  position: absolute;
  inset: 16px;
  border: 1px dashed #a0e7f226;
  border-radius: 50%;
  content: '';
}
.flight-loader__ring::after {
  inset: 36px;
  border-style: solid;
  border-color: #a0e7f20d;
}
.flight-loader__sweep {
  position: absolute;
  inset: 7px;
  border: 1px solid transparent;
  border-top-color: #8cebf2;
  border-right-color: #8cebf240;
  border-radius: 50%;
  animation: flight-sweep 5s linear infinite;
}
.flight-loader__sweep::before {
  position: absolute;
  top: 28px;
  right: 28px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  content: '';
  background: #d2fbff;
  box-shadow: 0 0 12px 3px #8cebf24d;
}
.flight-loader__wings {
  position: relative;
  width: 112px;
  height: 78px;
  color: #c1f2f5;
  filter: drop-shadow(0 0 20px #67e8f933);
  animation: flight-breathe 3s ease-in-out infinite;
}
.flight-loader__title {
  margin: 0;
  font-size: 19px;
  font-weight: 500;
  letter-spacing: 0.12em;
}
.flight-loader__description {
  margin: 12px 0 28px;
  font-size: 12px;
  line-height: 1.8;
  color: #88a1ad;
}
.flight-loader__track {
  position: relative;
  width: 128px;
  height: 1px;
  overflow: hidden;
  background: #9de6f026;
}
.flight-loader__track::after {
  position: absolute;
  width: 60%;
  height: 100%;
  content: '';
  background: linear-gradient(90deg, transparent, #bdfaff, transparent);
  animation: flight-pass 2s ease-in-out infinite;
}
.flight-loader__signature {
  margin-top: 24px;
  font-size: 8px;
  letter-spacing: 0.24em;
  color: #5e808d;
}
#app-preloader {
  transition:
    opacity 400ms ease,
    visibility 400ms ease;
}
#app-preloader.preloader--hide {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
@keyframes flight-sweep {
  to {
    transform: rotate(360deg);
  }
}
@keyframes flight-breathe {
  50% {
    opacity: 0.55;
    transform: translateY(-3px);
  }
}
@keyframes flight-pass {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(270%);
  }
}
@media (max-height: 580px) {
  .flight-loader__instrument {
    width: 180px;
    height: 180px;
    margin: 12px 0 18px;
  }
  .flight-loader__description {
    margin-bottom: 18px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .flight-loader *,
  .flight-loader *::before,
  .flight-loader *::after {
    animation: none !important;
  }
  #app-preloader {
    transition: none;
  }
}
