/* ════════════════════════════════════════════
   LOADER — Open the Door
   ════════════════════════════════════════════ */

#loader {
  position: fixed;
  inset: 0;
  background: #000;
  z-index: 9999;
  overflow: hidden;
  /* Exit: curtain slides up */
  transition: transform 1.1s cubic-bezier(0.76, 0, 0.24, 1);
}

#loader.exit {
  transform: translateY(-100%);
}

/* Wrapper — only for centering, no overflow clipping needed */
.loader__brand-wrapper {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

/* Logo stays in place — JS drives clip-path from inset(100%) → inset(0%) */
.loader__brand {
  display: block;
  height: clamp(2.4rem, 4vw, 4rem);
  width: auto;
  object-fit: contain;
  /* Fully hidden at start — top inset 100% = nothing visible */
  clip-path: inset(100% 0 0 0);
  /* No CSS transition — JS animates this every rAF frame */
}

/* Percentage — right edge, vertically centered */
.loader__percent {
  position: absolute;
  right: clamp(2rem, 4.5vw, 5rem);
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: baseline;
  gap: 1px;
  color: #fff;
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: clamp(0.6rem, 0.75vw, 0.78rem);
  font-weight: 700;
  letter-spacing: 0.06em;
  font-variant-numeric: tabular-nums;
  opacity: 0;
  transition: opacity 0.7s ease, transform 0.42s ease;
}

.loader__percent.visible {
  opacity: 1;
}

/* Exit: drifts right and fades */
.loader__percent.fade-out {
  opacity: 0 !important;
  transform: translateY(-50%) translateX(14px);
  transition: opacity 0.42s ease, transform 0.42s ease;
}

.loader__percent-num {
  display: inline-block;
  min-width: 2.2ch;
  text-align: right;
}

.loader__percent-sign {
  opacity: 0.6;
  font-size: 0.85em;
}
