.page-loader {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  place-items: center;
  background: #0A0A0A;
  transition: opacity .45s ease, visibility .45s ease;
}
.page-loader span {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.12);
  border-top-color: #C9A84C;
  border-right-color: #E8C97A;
  animation: spin 1s linear infinite;
}
.page-loader.hidden { opacity: 0; visibility: hidden; }
@keyframes spin { to { transform: rotate(360deg); } }

.reveal {
  opacity: 0;
  transform: translateY(34px);
  transition: opacity .75s ease, transform .75s ease;
  will-change: opacity, transform;
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.accent-gold { animation: gradientMove 7s ease infinite; }
@keyframes gradientMove {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
@keyframes whatsapp-pulse {
  0% { transform: scale(1); opacity: 0.8; }
  100% { transform: scale(1.8); opacity: 0; }
}
.scroll-cue { animation: bob 1.8s ease-in-out infinite; }
@keyframes bob {
  0%, 100% { transform: translate(-50%, 0); }
  50% { transform: translate(-50%, -8px); }
}
@keyframes socialFadeIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
body.page-transition { opacity: .2; transition: opacity .22s ease; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .001ms !important;
  }
}
