html, body { 
  scroll-behavior: auto;
}

/* === PRELOADER === */

.preloader {
  position: fixed;
  inset: 0; 
  z-index: 9999;
  background: #000000;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: auto;

  transform: translate3d(0, 0, 0);
  backface-visibility: hidden; 
  contain: layout paint style; 
  will-change: transform; 

  /* шторка уезжает только после сборки слова */ 
  animation: preloader-slide 1.75s cubic-bezier(0.96, 0, 0.1, 1) forwards 1.2s; 
  overflow: hidden; /* важно */
}

.preloader::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 52vh;
  z-index: 5;
  pointer-events: none;

  background: linear-gradient(
    to top,
    rgba(0, 0, 0, 1) 0%,
    rgba(0, 0, 0, 1) 18%,
    rgba(0, 0, 0, 0.96) 32%,
    rgba(0, 0, 0, 0.82) 48%,
    rgba(0, 0, 0, 0.45) 68%,
    rgba(0, 0, 0, 0) 100%
  );
}

.preloader-block,
.preloader-line,
.preloader-letter {
  position: relative;
  z-index: 2;
}

.preloader--gone {
  display: none;
}

/* Блок */
.preloader-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start; 
  text-align: left;

  transform: translate3d(0, 30, 0); 
  backface-visibility: hidden;
  will-change: transform; 

  /* лёгкий общий подъём блока во время сборки */   
  animation: pl-block-drift 1.4s cubic-bezier(0.75, 0.75, 0.75, 0.75) forwards;     
}
 
/* Текст */ 
.preloader-line {
  display: block;
  font-family: "DrukTextWideTT", sans-serif;
  text-transform: uppercase;
  color: #ffffff;
  white-space: nowrap;
  backface-visibility: hidden;
  transform: translateZ(0);
} 

.preloader-line--top {
  font-size: 30px; 
  letter-spacing: 0em;
  line-height: 1;
  margin-bottom: 6px;
  transform: translate3d(-2px, 0, 0);
}

.preloader-line--bottom { 
  font-size: 10px; 
  letter-spacing: 0em;  
  line-height: 1;  
}

/* Буквы */  
.preloader-letter {  
  display: inline-block;
  opacity: 0;
  transform: translate3d(0, 100vh, 0); /* старт снизу экрана */ 
  transform-origin: center center;
  backface-visibility: hidden;
  will-change: transform, opacity;
  
filter: blur(30px); 
  animation: pl-letter-rise 0.75s cubic-bezier(0.3, 0.8, 0.3, 0.1) forwards;               
  animation-delay: calc(0.1s * var(--i));   
}  

/* Пробел */
.preloader-letter--space {
  width: 0.7em;
  animation: none !important;
  opacity: 1;
  transform: translate3d(0, 0, 0);
  will-change: auto;
}

/* Буквы поднимаются снизу экрана и собираются в слово */
@keyframes pl-letter-rise {
  0% {
    opacity: 0;
    transform: translate3d(0, 100vh, 0); 
    filter: blur(50px);  
  }  
  40% {
    opacity: 1;
    filter: blur(5px);
  }
  75% {
    opacity: 1;
    transform: translate3d(0, 0px, 0);
    filter: blur(0px);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    filter: blur(0px);
  } 
}

/* Блок чуть поднимается во время сборки */
@keyframes pl-block-drift {
  0% {
    transform: translate3d(0, 30px, 0);
  }
  100% {
    transform: translate3d(0, -30px, 0);
  }
}

/* Шторка уезжает вверх */
@keyframes preloader-slide {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(0, -100vh, 0);
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .preloader,
  .preloader-block,
  .preloader-line,
  .preloader-letter {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}

/* === MOBILE === */
@media (max-width: 640px) {
  .preloader-line--top {
    font-size: 26px;
    letter-spacing: 0em; 
    margin-bottom: 4px;  
    transform: translate3d(-1px, 0, 0);
  }

  .preloader-line--bottom {
    font-size: 9px;
    letter-spacing: 0em;
  }

  .preloader-letter {
    animation-duration: 0.95s;
  }

  @keyframes pl-block-drift {
    0% {
      transform: translate3d(0, 0, 0);
    }
    100% {
      transform: translate3d(0, -28px, 0);
    }
  }
}

.js-justify .tn-atom {
  max-width: 268px;
  margin: 0;
  text-align: justify;
  text-justify: inter-word;
  hyphens: auto;
  -webkit-hyphens: auto;
  -ms-hyphens: auto;
  text-align-last: left;
  word-break: normal;
}