/* ═══════════════════════════════════════════════════
   ANIMATIONS.CSS — Keyframes, Loader, Curtain
═══════════════════════════════════════════════════ */

/* ── LOADER ──────────────────────────────────────── */
#loader {
  position:fixed; inset:0; z-index:999999;
  background:var(--accent);
  display:flex; align-items:center; justify-content:center;
  will-change:transform;
}
#loader.exit {
  transform:translateY(-100%);
  transition:transform 0.6s var(--ease-in);
}
.loader-inner { text-align:center; }
.loader-line {
  display:block;
  font-family:'Playfair Display',serif;
  font-size:clamp(1.8rem,4.5vw,3rem);
  color:#fff; font-style:italic;
  transform:translateY(110%);
  transition:transform 0.75s var(--ease-out);
}
.loader-line.up { transform:translateY(0); }

/* ── CURTAIN ─────────────────────────────────────── */
#curtain {
  position:fixed; inset:0; z-index:99997;
  background:var(--accent);
  display:flex; align-items:center; justify-content:center;
  visibility:hidden;
  transform:translateY(100%);
  will-change:transform;
  pointer-events:none;
}
#curtain.active { pointer-events:none; }
.curtain-inner { text-align:center; }
.curtain-line {
  display:block;
  font-family:'Playfair Display',serif;
  font-size:clamp(1.8rem,4vw,2.8rem);
  color:#fff; font-style:italic;
  transform:translateY(110%);
  transition:transform 0.5s var(--ease-out);
}
.curtain-line.up { transform:translateY(0); }

/* ── KEYFRAMES ───────────────────────────────────── */
@keyframes ticker-scroll {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}

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

@keyframes confetti-fall {
  0%   { transform:translateY(0) rotate(0deg); opacity:1; }
  100% { transform:translateY(105vh) rotate(720deg); opacity:0; }
}

@keyframes slideDown {
  from { opacity:0; transform:translateX(-50%) translateY(-20px); }
  to   { opacity:1; transform:translateX(-50%) translateY(0); }
}

@keyframes fadeIn {
  from { opacity:0; }
  to   { opacity:1; }
}

@keyframes scaleIn {
  from { opacity:0; transform:scale(0.95) translateY(8px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}

@keyframes pulse-glow {
  0%,100% { box-shadow:0 0 0 0 var(--accent-dim); }
  50%     { box-shadow:0 0 0 8px transparent; }
}

/* ── HERO META ───────────────────────────────────── */
.hero-meta-item {
  opacity:0; transform:translateY(10px);
  transition:opacity .6s ease, transform .6s var(--ease-out);
}
.hero-meta-item.up { opacity:1; transform:none; }

/* ── NAME LINES ──────────────────────────────────── */
.name-line {
  display:inline-block; will-change:transform;
  transform:translateY(115%); opacity:0;
}
.name-line.up {
  transform:translateY(0); opacity:1;
  transition:transform 1.1s var(--ease-out), opacity 0.7s ease;
}
