/* ═══════════════════════════════════════════════════════ */
/*  I'm Wizzard — motion (Living-Room Invasion)              */
/* ═══════════════════════════════════════════════════════ */

/* ── Hero entrance: staggered pop-rise ── */
.rise {
  opacity: 0;
  transform: translateY(26px) scale(0.985);
  animation: rise-in 0.85s var(--ease) forwards;
}
.r-1 { animation-delay: 0.05s; }
.r-2 { animation-delay: 0.16s; }
.r-3 { animation-delay: 0.28s; }
.r-4 { animation-delay: 0.42s; }
.r-5 { animation-delay: 0.54s; }
.r-6 { animation-delay: 0.68s; }

@keyframes rise-in {
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* ── Scroll reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.7s var(--ease-soft), transform 0.7s var(--ease);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.stagger-1 { transition-delay: 0.1s; }
.stagger-2 { transition-delay: 0.2s; }
.stagger-3 { transition-delay: 0.3s; }

/* ── Ambient float (mobs, cubes, badges) ── */
.float { animation: bob 6s ease-in-out infinite; }
.f-1 { animation-duration: 5.2s; }
.f-2 { animation-duration: 6.4s; animation-delay: 0.7s; }
.f-3 { animation-duration: 7.1s; animation-delay: 1.4s; }
.f-4 { animation-duration: 5.8s; animation-delay: 2.1s; }

@keyframes bob {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -13px; }
}

@keyframes hud-bob {
  0%, 100% { margin-top: 0; }
  50% { margin-top: -10px; }
}

/* ── Portal rim rotation ── */
@keyframes portal-spin {
  to { transform: rotate(360deg); }
}

/* ── Ticker marquee ── */
@keyframes ticker-slide {
  to { transform: translateX(-50%); }
}

/* ── HUD pulse dot ── */
.pulse-dot { animation: dot-pulse 1.6s ease-in-out infinite; }
@keyframes dot-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.45; transform: scale(0.72); }
}

@keyframes brand-wiggle {
  0%, 100% { transform: rotate(0); }
  30% { transform: rotate(-9deg); }
  65% { transform: rotate(7deg); }
}

/* ── GO button sonar rings ── */
@keyframes pulse-ring {
  0% { transform: scale(1); opacity: 0.8; }
  100% { transform: scale(1.5); opacity: 0; }
}

/* ── Mobile menu: sticker chips drop in ── */
.mobile-menu.open a { animation: menu-pop 0.32s var(--ease) backwards; }
.mobile-menu.open a:nth-child(2) { animation-delay: 0.045s; }
.mobile-menu.open a:nth-child(3) { animation-delay: 0.09s; }
.mobile-menu.open a:nth-child(4) { animation-delay: 0.135s; }
.mobile-menu.open a:nth-child(5) { animation-delay: 0.18s; }

@keyframes menu-pop {
  from { opacity: 0; translate: 0 -10px; }
  to { opacity: 1; translate: 0 0; }
}

/* ── Cursor loot trail ── */
@keyframes trail-fall {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(0.4) rotate(45deg); }
  18% { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(60deg); }
  100% { opacity: 0; transform: translate(-50%, 26px) scale(0.7) rotate(135deg); }
}

/* ── Reduced motion: everything settles ── */
@media (prefers-reduced-motion: reduce) {
  .rise { opacity: 1; transform: none; animation: none; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .float, .hud-badge, .pulse-dot, .portal-ring, .portal-disc::before { animation: none; }
  .ticker-track { animation: none; }
  .go-circle::before, .go-circle::after { animation: none; opacity: 0; }
  .brand:hover .brand-mob, .guild-card:hover .guild-icon { animation: none; }
  .mobile-menu.open a { animation: none; }
  .trail-cube { display: none; }
  html { scroll-behavior: auto; }
}
