/* ── Loader ── */
@keyframes loaderFill {
  0%   { width: 0; }
  100% { width: 100%; }
}
#loader-bar {
  animation: loaderFill 1.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

/* ── Ticker ── */
@keyframes tickerScroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.ticker-track {
  animation: tickerScroll 30s linear infinite;
}

/* ── Reveal on scroll ── */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.75s ease, transform 0.75s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.delay-1 { transition-delay: 0.12s; }
.delay-2 { transition-delay: 0.24s; }
.delay-3 { transition-delay: 0.36s; }
.delay-4 { transition-delay: 0.48s; }

/* ── Navbar: scrolled state ── */
#navbar.scrolled {
  background: rgba(12, 10, 9, 0.96);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

/* ── Gallery grid fix ── */
#gallery .grid {
  grid-auto-rows: auto;
}
