/* ============================================
   JG Reformas — Loader de entrada
   ============================================ */

body:has(.loader:not(.is-out)) { overflow: hidden; }

.loader {
  position: fixed; inset: 0; z-index: 9999;
  background: var(--bg-dark);
  display: flex; align-items: center; justify-content: center;
  transition: transform 0.95s cubic-bezier(0.76, 0, 0.24, 1);
  will-change: transform;
}
.loader.is-out { transform: translateY(-100%); }

.loader__inner {
  display: flex; flex-direction: column; align-items: center; gap: 1.4rem;
  animation: ldIn 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both;
}

.loader__mark {
  font-family: var(--font-display);
  font-size: clamp(3.2rem, 11vw, 6.5rem);
  font-weight: var(--w-bold);
  color: var(--paper);
  letter-spacing: -0.03em;
  line-height: 1;
}
.loader__mark b { color: var(--gold); }

.loader__sub {
  font-family: var(--font-body);
  font-size: var(--text-label);
  letter-spacing: var(--tracking);
  text-transform: uppercase;
  color: color-mix(in srgb, var(--paper) 45%, transparent);
}

.loader__bar {
  width: 4rem; height: 1px;
  background: color-mix(in srgb, var(--paper) 15%, transparent);
  border-radius: 1px; overflow: hidden;
}
.loader__fill {
  height: 100%; width: 100%;
  background: var(--gold);
  transform: scaleX(0); transform-origin: left;
  animation: ldFill 1.15s cubic-bezier(0.65, 0, 0.35, 1) 0.35s both;
}

@keyframes ldIn {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: none; }
}
@keyframes ldFill {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

@media (prefers-reduced-motion: reduce) {
  .loader { display: none; }
}
