@keyframes gradient-shift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
.hero-bg {
  background: linear-gradient(120deg, #1A1A2E, #0F3460, #9D4EDD, #E94560, #1A1A2E);
  background-size: 300% 300%;
  animation: gradient-shift 18s ease infinite;
}

.grid-floor {
  background-image:
    linear-gradient(rgba(255,110,199,0.35) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,110,199,0.35) 1px, transparent 1px);
  background-size: 60px 60px;
  transform: perspective(500px) rotateX(60deg) translateY(20%);
  transform-origin: center bottom;
  mask-image: linear-gradient(to top, black 0%, transparent 80%);
}

@keyframes glitch {
  0%, 100% { text-shadow: 2px 0 #22D3EE, -2px 0 #FF6EC7; }
  25% { text-shadow: -2px 0 #22D3EE, 2px 0 #FF6EC7; }
  50% { text-shadow: 2px 2px #9D4EDD, -2px -2px #E94560; }
  75% { text-shadow: -2px 2px #22D3EE, 2px -2px #FF6EC7; }
}
.glitch { animation: glitch 4s infinite; }

.reveal { opacity: 0; transform: translateY(30px); transition: all .8s ease-out; }
.reveal.visible { opacity: 1; transform: translateY(0); }

.review-item {
  position: absolute; inset: 0;
  opacity: 0; transition: opacity .6s ease;
  font-size: 1.25rem; color: #EAEAEA;
  display: flex; align-items: center; justify-content: center;
  padding: 0 1rem;
}
.review-item.active { opacity: 1; position: relative; }

.filter-btn.active { background: #FF6EC7; color: #1A1A2E; border-color: #FF6EC7; }

@keyframes vhs {
  0%,100% { opacity: .03; }
  50% { opacity: .08; }
}
body::before {
  content: "";
  position: fixed; inset: 0; pointer-events: none; z-index: 60;
  background: repeating-linear-gradient(0deg, rgba(255,255,255,.06) 0 1px, transparent 1px 3px);
  animation: vhs 3s infinite;
}
