/* ═══════════════════════════════════════════════════════════════
   ANIMATIONS.CSS - Scroll-triggered animations & Navigation
   PMVW Landing Page - Phase 3
   ═══════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────
   SCROLL-TRIGGERED ANIMATIONS
   ───────────────────────────────────────── */

/* Base state - hidden before animation */
.animate-on-scroll {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Active state - visible after scroll */
.animate-on-scroll.animate-in {
  opacity: 1;
  transform: translateY(0);
}

/* Staggered animation delays */
.stagger-1 { transition-delay: 0ms; }
.stagger-2 { transition-delay: 100ms; }
.stagger-3 { transition-delay: 200ms; }
.stagger-4 { transition-delay: 300ms; }
.stagger-5 { transition-delay: 400ms; }
.stagger-6 { transition-delay: 500ms; }

/* Remove will-change after animation */
.animate-on-scroll.animate-in {
  will-change: auto;
}

/* ─────────────────────────────────────────
   FLOATING NAVIGATION DOTS
   ───────────────────────────────────────── */
.floating-nav {
  position: fixed;
  left: 11%;
  top: 5%;
  z-index: 100;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition-base);
}

.floating-nav.visible {
  opacity: 1;
  pointer-events: auto;
}

.nav-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  border: 2px solid rgba(255, 255, 255, 0.6);
  cursor: pointer;
  transition: all var(--transition-base);
  position: relative;
  padding: 0;
}

.nav-dot:hover {
  background: rgba(255, 255, 255, 0.7);
  transform: scale(1.3);
}

.nav-dot:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--blue-primary);
}

.nav-dot.active {
  background: var(--blue-primary);
  border-color: var(--blue-primary);
  transform: scale(1.4);
}

/* Tooltip label on hover */
.nav-label {
  position: absolute;
  right: calc(100% + 12px);
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.85);
  color: white;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  font-size: var(--text-xs);
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition-fast);
}

.nav-dot:hover .nav-label {
  opacity: 1;
}

/* Arrow pointer */
.nav-label::after {
  content: '';
  position: absolute;
  right: -6px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border-left: 6px solid rgba(0, 0, 0, 0.85);
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
}

/* ─────────────────────────────────────────
   LAMP GLOW AMBIENT ANIMATION
   ───────────────────────────────────────── */
.lamp-glow-overlay {
  position: absolute;
  top: 15%;
  left: 3%;
  width: 12%;
  height: 35%;
  background: radial-gradient(
    ellipse at center,
    rgba(255, 230, 180, 0.25) 0%,
    rgba(255, 220, 150, 0.1) 40%,
    transparent 70%
  );
  animation: lamp-glow 4s ease-in-out infinite;
  pointer-events: none;
  z-index: 1;
}

@keyframes lamp-glow {
  0%, 100% {
    opacity: 0.6;
    transform: scale(1);
  }
  50% {
    opacity: 0.9;
    transform: scale(1.05);
  }
}

/* ─────────────────────────────────────────
   REDUCED MOTION PREFERENCE
   ───────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .animate-on-scroll {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .animate-on-scroll.animate-in {
    transition: none;
  }

  .lamp-glow-overlay {
    animation: none;
    opacity: 0.7;
  }

  .scroll-hint__arrow {
    animation: none;
  }

  .nav-dot,
  .nav-label,
  .floating-nav {
    transition: none;
  }
}

/* ─────────────────────────────────────────
   MOBILE: HIDE NAVIGATION DOTS
   ───────────────────────────────────────── */
@media (max-width: 768px) {
  .floating-nav {
    display: none;
  }
}
