/* ── Reveal on scroll ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s ease, transform .7s ease;
}
.reveal.visible { opacity: 1; transform: none; }
.reveal-delay-1 { transition-delay: .1s; }
.reveal-delay-2 { transition-delay: .2s; }
.reveal-delay-3 { transition-delay: .32s; }
.reveal-delay-4 { transition-delay: .46s; }
.reveal-delay-5 { transition-delay: .6s; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .reveal-delay-1, .reveal-delay-2, .reveal-delay-3,
  .reveal-delay-4, .reveal-delay-5 { transition-delay: 0s; }
}

/* ── Hero entrance animations ── */
@keyframes fade-in-left {
  to { opacity: 1; transform: none; }
}
@keyframes fade-in-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: none; }
}

/* ── Ember rise ── */
@keyframes ember-rise {
  0%   { opacity: 0;    transform: translateY(0) translateX(0) scale(1); }
  8%   { opacity: 0.85; }
  75%  { opacity: 0.25; }
  100% { opacity: 0;    transform: translateY(-220px) translateX(var(--d)) scale(0.4); }
}

/* ── Mandala / sacred geometry ── */
@keyframes mandala-spin     { to { transform: translateY(-50%) rotate(360deg); } }
@keyframes mandala-spin-rev { to { transform: translateY(-50%) rotate(-360deg); } }

@keyframes yantra-pulse {
  0%,100% { opacity: 0.04; transform: translate(-50%,-50%) rotate(0deg) scale(1); }
  50%     { opacity: 0.08; transform: translate(-50%,-50%) rotate(180deg) scale(1.05); }
}

@keyframes lotus-breathe {
  0%,100% { opacity: 0.06; transform: translateY(-50%) scale(1) rotate(0deg); }
  50%     { opacity: 0.10; transform: translateY(-50%) scale(1.04) rotate(45deg); }
}

/* ── Drifting specks ── */
@keyframes speck-drift {
  0%   { opacity: 0;   transform: translate(0,0) scale(1); }
  10%  { opacity: 0.7; }
  85%  { opacity: 0.4; }
  100% { opacity: 0;   transform: translate(var(--dx,20px), -300px) scale(0.3); }
}

/* ── Constellation twinkle ── */
@keyframes constellation-twinkle {
  0%,100% { opacity: 0.4; }
  50%     { opacity: 0.85; }
}

/* ── Ken Burns (slideshow) ── */
@keyframes ken-burns {
  0%   { transform: scale(1.0) translate(0,0); }
  100% { transform: scale(1.10) translate(-1.5%,-1%); }
}

/* ── Sweep shimmer ── */
@keyframes sweep-shimmer {
  0%   { background-position: 0% 0%; }
  100% { background-position: 200% 200%; }
}

/* ── Flagship active badge dot ── */
@keyframes pulse-dot {
  0%,100% { opacity: 1; box-shadow: 0 0 12px var(--gold-bright); }
  50%     { opacity: 0.5; box-shadow: 0 0 4px var(--gold-bright); }
}

/* ── BGM pulse ring ── */
@keyframes bgm-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(239,159,39,0.4); }
  70%  { box-shadow: 0 0 0 14px rgba(239,159,39,0); }
  100% { box-shadow: 0 0 0 0 rgba(239,159,39,0); }
}

/* ── Wave flow (speaker icon) ── */
@keyframes wave-flow {
  0%,100% { opacity: 1; }
  50%     { opacity: 0.3; }
}

@media (prefers-reduced-motion: reduce) {
  .ember { animation: none; opacity: 0; }
  .speck { animation: none; opacity: 0; }
  .mission-mandala { animation: none; }
  .bg-mandala-sm { animation: none; }
  .bg-yantra { animation: none; }
  .bg-lotus { animation: none; }
}
