/*
  Aegiscan shared preloader — premium dark, no cheap loader.
  Markup snippet (insert into <body> of every page, right after <body class="funnel-page">):

  <div class="aegiscan-preloader" id="aegiscan-preloader" aria-hidden="true">
    <div class="aegiscan-preloader__inner">
      <div class="aegiscan-preloader__brand">Aegiscan</div>
      <div class="aegiscan-preloader__bar" aria-hidden="true"></div>
    </div>
  </div>
  <script>
    // Hard fallback: even if preloader.js fails to load, hide after 2500ms.
    setTimeout(function () {
      var p = document.getElementById('aegiscan-preloader');
      if (p) p.classList.add('aegiscan-preloader--hidden');
    }, 2500);
  </script>
*/

.aegiscan-preloader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg, #040406);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 0.4s ease, visibility 0s linear 0s;
}

.aegiscan-preloader--hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.4s ease, visibility 0s linear 0.4s;
}

.aegiscan-preloader__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  width: min(280px, 70vw);
}

.aegiscan-preloader__brand {
  font-family: var(--font-ui, "Geist", sans-serif);
  font-size: clamp(20px, 4vw, 26px);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, 0.85);
  line-height: 1;
}

.aegiscan-preloader__bar {
  position: relative;
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.08);
  overflow: hidden;
}

.aegiscan-preloader__bar::after {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 0;
  height: 100%;
  background: var(--accent, #b4462d);
  opacity: 0.7;
  animation: aegiscan-preloader-fill 1.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@keyframes aegiscan-preloader-fill {
  0%   { width: 0; }
  60%  { width: 72%; }
  100% { width: 100%; }
}

/* Respect reduced motion: skip the fill animation, show a static accent dot line. */
@media (prefers-reduced-motion: reduce) {
  .aegiscan-preloader__bar::after {
    animation: none;
    width: 100%;
    opacity: 0.5;
  }
}

/* Sub-line under the brand (e.g. "Подготавливаем проверку"). */
.aegiscan-preloader__sub {
  font-family: var(--font-ui, "Geist", sans-serif);
  font-size: clamp(12px, 2.2vw, 14px);
  font-weight: 400;
  letter-spacing: 0.02em;
  color: rgba(255, 255, 255, 0.5);
  text-align: center;
  line-height: 1.3;
  margin-top: 2px;
}

/* After reveal: let the numbers/shader background fade in gracefully. */
.aegiscan-numbers-bg { transition: opacity 0.8s ease; }
