/* Nesen Studio — preloader tolko dlya glavnoy stranicy (index.html).
   Freza prohodit po konturu bukv NESEN, potom vsplyvayut designo / corporeus.
   Ostalnye stranicy prodolzhayut ispolzovat css/preloader.css. */

html.nsp-lock { overflow: hidden; }

#nesen-preloader-home {
  position: fixed;
  inset: 0;
  z-index: 999999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(18px, 3vw, 34px);
  /* matovoe steklo nad glavnoy: fon poluprozrachnyy + razmytie togo, chto szadi */
  background: rgba(26, 26, 26, .72);
  -webkit-backdrop-filter: blur(26px) saturate(115%);
  backdrop-filter: blur(26px) saturate(115%);
  opacity: 1;
  visibility: visible;
  transition: opacity .55s ease, visibility .55s ease;
}

/* brauzery bez backdrop-filter — plotnyy fon, chtoby stranica ne prosvechivala */
@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))) {
  #nesen-preloader-home { background: #1a1a1a; }
}

#nesen-preloader-home.nesen-loaded {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.nsp-logo {
  width: min(78vw, 880px);
  height: auto;
  overflow: visible;
}

/* --- schetchik zagruzki pod logotipom --- */
.nsp-progress {
  font-family: "Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: clamp(12px, 1.4vw, 15px);
  letter-spacing: .16em;
  color: rgba(230, 230, 230, .5);
  user-select: none;
}

/* --- telo bukv: do reza "zagotovka", posle reza — cvet logotipa --- */
.nsp-glyph {
  opacity: .07;
  transition: opacity .45s ease, transform .5s cubic-bezier(.2, .8, .25, 1);
  transform-box: fill-box;
  transform-origin: center;
}

.nsp-glyph.is-cut { opacity: 1; }
.nsp-glyph--white { fill: #e6e6e6; }
.nsp-glyph--red { fill: #df2125; }

/* --- liniya reza: idet za frezoy, potom gasnet --- */
.nsp-cutline {
  fill: none;
  stroke: #e0913f;
  stroke-width: .9;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: .95;
  filter: url(#nsp-glow);
  transition: opacity .5s ease .1s;
}

.nsp-cutline.is-done { opacity: 0; }

/* --- designo sverhu, corporeus snizu; freza ih ne kasaetsya --- */
.nsp-tagline {
  fill: #e6e6e6;
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  transition: opacity .55s ease, transform .7s cubic-bezier(.16, .9, .24, 1);
}

#nsp-tag-top { transform: translateY(-9px); }
#nsp-tag-bottom { transform: translateY(9px); }

#nsp-tag-top.is-in,
#nsp-tag-bottom.is-in {
  opacity: 1;
  transform: translateY(0);
}

/* --- instrument --- */
#nsp-tool { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .55)); }

#nsp-tool-scale {
  transform-box: fill-box;
  transform-origin: center;
  transition: transform .18s ease, opacity .18s ease;
}

#nsp-tool-spin {
  transform-box: fill-box;
  transform-origin: center;
  animation: nsp-spin .4s linear infinite;
}

#nsp-tool.is-up #nsp-tool-scale { transform: scale(1.34); opacity: .55; }
#nsp-tool.is-off #nsp-tool-scale { transform: scale(1.9); opacity: 0; }

@keyframes nsp-spin {
  to { transform: rotate(360deg); }
}

/* struzhka: zavitok krutitsya vokrug svoego centra */
.nsp-chip {
  transform-box: fill-box;
  transform-origin: center;
}

#nsp-heat {
  opacity: 0;
  transition: opacity .2s ease;
}

/* --- bez animacii: srazu gotovyy logotip --- */
@media (prefers-reduced-motion: reduce) {
  .nsp-glyph { opacity: 1; }
  .nsp-tagline { opacity: 1; transform: none; }
  .nsp-cutline,
  #nsp-tool,
  #nsp-heat { display: none; }
  #nsp-tool-spin { animation: none; }
}
