/* ========== PRELOADER (first-visit overlay) ==========
   Отключён по умолчанию. Чтобы включить — в <head> любой страницы добавить:
   <link rel="stylesheet" href="css/preloader.css">
   <script src="js/preloader.js"></script>
   Логотип и разметка инжектятся скриптом, ничего больше делать не нужно.
   ====================================================== */
.preloader {
  position: fixed;
  inset: 0;
  background: #fff;
  z-index: 99999;
  display: none;
  align-items: center;
  justify-content: center;
  opacity: 1;
  transition: opacity .45s cubic-bezier(.4,0,.2,1);
}
html.preloader-on { overflow: hidden; }
html.preloader-on body > :not(.preloader) { visibility: hidden; }
html.preloader-on .preloader { display: flex; visibility: visible; }
.preloader.is-leaving { opacity: 0; pointer-events: none; }
.preloader__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
}
.preloader__logo {
  width: 80px;
  height: auto;
  display: block;
  animation: preloaderPulse 1.1s ease-in-out infinite alternate;
  will-change: transform, opacity;
}
@keyframes preloaderPulse {
  from { transform: scale(.94); opacity: .75; }
  to   { transform: scale(1);   opacity: 1; }
}
.preloader__bar {
  width: 180px;
  height: 2px;
  background: #f0f0f0;
  position: relative;
  overflow: hidden;
}
.preloader__bar-fill {
  position: absolute;
  inset: 0;
  background: var(--red, #F82B2B);
  transform-origin: left center;
  transform: scaleX(0);
  animation: preloaderFill 900ms cubic-bezier(.4,0,.2,1) forwards;
}
@keyframes preloaderFill {
  0%   { transform: scaleX(0); }
  60%  { transform: scaleX(.7); }
  100% { transform: scaleX(1); }
}
@media (prefers-reduced-motion: reduce) {
  .preloader__logo { animation: none; }
  .preloader__bar-fill { animation: none; transform: scaleX(1); }
}
