/* ════════════════════════════════════════════════════════════════
   preloader.css · loading counter + shutter reveal
   ════════════════════════════════════════════════════════════════ */

.preloader {
  position: fixed; inset: 0;
  z-index: var(--z-loader);
  display: grid; place-items: center;
  overflow: hidden;
  background: var(--ink-000);
}

.preloader.is-done { pointer-events: none; }
.preloader.is-removed { display: none; }

/* Shutter panels ------------------------------------------------- */
.preloader__panel {
  position: absolute; left: 0; right: 0;
  height: 50.5%;
  background:
    radial-gradient(120% 100% at 50% 50%, rgba(43,140,255,0.07), transparent 62%),
    var(--ink-000);
  transition: transform 1.15s var(--e-out);
  will-change: transform;
}
.preloader__panel[data-panel="1"] { top: 0; }
.preloader__panel[data-panel="2"] { bottom: 0; }

.preloader__panel[data-panel="1"]::after,
.preloader__panel[data-panel="2"]::after {
  content: ''; position: absolute; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--ice-300), transparent);
  opacity: 0;
  transition: opacity 0.4s ease;
}
.preloader__panel[data-panel="1"]::after { bottom: 0; }
.preloader__panel[data-panel="2"]::after { top: 0; }

.preloader.is-done .preloader__panel::after { opacity: 1; }
.preloader.is-done .preloader__panel[data-panel="1"] { transform: translateY(-100%); }
.preloader.is-done .preloader__panel[data-panel="2"] { transform: translateY(100%); }

/* Inner ---------------------------------------------------------- */
.preloader__inner {
  position: relative; z-index: 2;
  width: min(560px, calc(100% - 2.5rem));
  display: flex; flex-direction: column; align-items: center;
  gap: clamp(1.4rem, 3vh, 2.2rem);
  transition: opacity 0.5s ease, transform 0.8s var(--e-out), filter 0.6s ease;
}
.preloader.is-done .preloader__inner {
  opacity: 0; transform: translateY(-14px) scale(0.98); filter: blur(6px);
}

/* Crystal -------------------------------------------------------- */
.preloader__crystal {
  width: clamp(58px, 9vw, 84px);
  height: auto;
  overflow: visible;
  filter: drop-shadow(0 0 22px rgba(110, 201, 255, 0.28));
}
.pl-stroke {
  stroke: var(--ice-200);
  stroke-width: 1.1;
  stroke-linejoin: round;
  stroke-linecap: round;
  fill: none;
  stroke-dasharray: 460;
  stroke-dashoffset: 460;
  animation: plDraw 2.4s var(--e-out) forwards;
}
.pl-stroke:nth-of-type(2) { opacity: 0.55; stroke-width: 0.8; animation-delay: 0.35s; }

@keyframes plDraw { to { stroke-dashoffset: 0; } }

.preloader__crystal { animation: plSpin 9s linear infinite; }
@keyframes plSpin {
  0%   { transform: rotate(0deg) scale(1); }
  50%  { transform: rotate(180deg) scale(1.06); }
  100% { transform: rotate(360deg) scale(1); }
}

/* Name ----------------------------------------------------------- */
.preloader__name {
  display: flex; align-items: center; justify-content: center;
  font-family: var(--f-display);
  font-size: clamp(1.15rem, 0.7rem + 2.1vw, 2.1rem);
  font-weight: 600;
  letter-spacing: clamp(0.08em, 0.4vw, 0.2em);
  text-transform: uppercase;
  color: var(--fog-100);
  white-space: nowrap;
}
.preloader__name i { width: clamp(0.5rem, 2vw, 1.1rem); }
.preloader__name span {
  display: inline-block;
  opacity: 0;
  transform: translateY(70%) rotateX(-70deg);
  animation: plLetter 0.85s var(--e-out) forwards;
}
.preloader__name span:nth-child(1)  { animation-delay: 0.10s; }
.preloader__name span:nth-child(2)  { animation-delay: 0.16s; }
.preloader__name span:nth-child(3)  { animation-delay: 0.22s; }
.preloader__name span:nth-child(4)  { animation-delay: 0.28s; }
.preloader__name span:nth-child(5)  { animation-delay: 0.34s; }
.preloader__name span:nth-child(6)  { animation-delay: 0.40s; }
.preloader__name span:nth-child(7)  { animation-delay: 0.46s; }
.preloader__name span:nth-child(9)  { animation-delay: 0.54s; }
.preloader__name span:nth-child(10) { animation-delay: 0.60s; }
.preloader__name span:nth-child(11) { animation-delay: 0.66s; }
.preloader__name span:nth-child(12) { animation-delay: 0.72s; }
.preloader__name span:nth-child(13) { animation-delay: 0.78s; }
.preloader__name span:nth-child(14) { animation-delay: 0.84s; }

@keyframes plLetter {
  to { opacity: 1; transform: translateY(0) rotateX(0); }
}

/* Meta ----------------------------------------------------------- */
.preloader__meta {
  width: 100%;
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 1rem;
  font: 400 0.625rem/1 var(--f-mono);
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--fog-400);
}

.preloader__status {
  overflow: hidden;
  white-space: nowrap;
  max-width: 60%;
  text-overflow: ellipsis;
}

.preloader__count {
  font-size: clamp(0.75rem, 0.6rem + 0.4vw, 0.9rem);
  color: var(--ice-200);
  letter-spacing: 0.1em;
  font-variant-numeric: tabular-nums;
}

/* Track ---------------------------------------------------------- */
.preloader__track {
  position: relative;
  width: 100%; height: 1px;
  background: var(--line-1);
  overflow: hidden;
}
.preloader__track i {
  position: absolute; inset: 0 auto 0 0;
  display: block; width: 0%;
  background: var(--grad-ice);
  box-shadow: 0 0 16px var(--glow-ice);
  transition: width 0.35s var(--e-soft);
}

/* Loading state on body ------------------------------------------ */
body.is-loading .chrome,
body.is-loading .scroll-progress { opacity: 0; pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
  .preloader__crystal, .pl-stroke { animation: none; }
  .pl-stroke { stroke-dashoffset: 0; }
  .preloader__name span { opacity: 1; transform: none; animation: none; }
}
