/* Fade & Scroll Reveal */
.reveal {
  opacity: 0;
  transform: translateY(60px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.reveal.active {
  opacity: 1;
  transform: translateY(0);
}

/* Floating */
@keyframes float {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}

.float {
  animation: float 4s ease-in-out infinite;
}

/* Typing Cursor */
#typing::after {
  content: "|";
  margin-left: 4px;
  animation: blink 0.8s infinite;
}

@keyframes blink {
  0%,50% { opacity: 1; }
  51%,100% { opacity: 0; }
}

/* Glow Pulse */
@keyframes glow {
  0%,100% {
    box-shadow: 0 0 8px rgba(99,102,241,.4);
  }
  50% {
    box-shadow: 0 0 25px rgba(99,102,241,.8);
  }
}

.glow {
  animation: glow 2s ease-in-out infinite;
}

/* Button Hover */
.btn {
  transition: transform .3s ease, box-shadow .3s ease;
}

.btn:hover {
  transform: translateY(-4px) scale(1.03);
}

/* Card Hover */
.card {
  transition: transform .35s ease, box-shadow .35s ease;
}

.card:hover {
  transform: translateY(-8px);
}

/* Cursor Glow */
#cursor-glow {
  position: fixed;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  pointer-events: none;
  background: radial-gradient(circle, rgba(120,119,255,.25), transparent 70%);
  transform: translate(-50%, -50%);
  z-index: -1;
  transition: left .08s linear, top .08s linear;
}

.cursor-star{
    position: fixed;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #7c5cff;
    box-shadow:
        0 0 10px #7c5cff,
        0 0 20px #7c5cff,
        0 0 35px #7c5cff;
    pointer-events:none;
    z-index:9999;
}

.cursor-star::after{
    content:"";
    position:absolute;
    width:40px;
    height:2px;
    background:linear-gradient(to right,#7c5cff,transparent);
    top:5px;
    left:-38px;
}