
/* Positive-Spark Effects Pack (drop-in) */
:root{
  --bg:#0f0f13; --card:#16161d; --muted:#8b8da3; --text:#f5f6fb;
  --accent1:#FF8A00; --accent2:#FF4FD8; --accent3:#7A5CFF;
  --radius:16px; --shadow:0 10px 30px rgba(0,0,0,.35);
}

/* Opening curtain */
.ps-curtain {
  position: fixed; inset: 0; z-index: 9999; pointer-events: none;
  background: radial-gradient(1200px 600px at 50% -10%,
    rgba(255,79,216,.35), transparent 60%), var(--bg);
  display:grid; place-items:center; transform:translateY(0); opacity:1;
  transition: opacity .6s ease .2s, transform .8s cubic-bezier(.16,1,.3,1);
}
.ps-curtain.hide { opacity:0; transform:translateY(-6%); }

.ps-curtain .mark {
  width: 140px; height: 140px; border-radius:50%;
  background: conic-gradient(from 0deg, var(--accent1), var(--accent2), var(--accent3), var(--accent1));
  filter: blur(10px) saturate(120%);
  animation: spin 2.2s cubic-bezier(.2,.7,.2,1) infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Cursor glow */
#ps-cursor {
  position: fixed; width: 380px; height: 380px; border-radius:50%;
  background: radial-gradient(circle at 50% 50%, rgba(255,79,216,.14), rgba(122,92,255,.10), transparent 60%);
  pointer-events:none; mix-blend-mode: screen; z-index: 0; opacity:.65;
  transform: translate(-50%, -50%);
}

/* Reveal on scroll */
.ps-reveal { opacity:0; transform: translateY(10px) scale(.98); will-change: transform, opacity; }
.ps-reveal.in { opacity:1; transform: translateY(0) scale(1); transition: transform .6s cubic-bezier(.2,.7,.2,1), opacity .6s ease; }
.ps-stagger > * { opacity:0; transform: translateY(10px); }
.ps-stagger.in > * { opacity:1; transform: translateY(0); transition: transform .6s cubic-bezier(.2,.7,.2,1), opacity .6s ease; }
.ps-stagger.in > *:nth-child(1){transition-delay:.05s}
.ps-stagger.in > *:nth-child(2){transition-delay:.12s}
.ps-stagger.in > *:nth-child(3){transition-delay:.2s}
.ps-stagger.in > *:nth-child(4){transition-delay:.28s}
.ps-stagger.in > *:nth-child(5){transition-delay:.36s}

/* Parallax layers */
.ps-parallax { position:relative; overflow:hidden; }
.ps-layer { position:absolute; inset:auto; pointer-events:none; filter: blur(24px); opacity:.5; }
.ps-layer.a { width:480px; height:480px; right:-120px; top:-120px;
  background: radial-gradient(closest-side, rgba(255,138,0,.25), transparent 70%); }
.ps-layer.b { width:420px; height:420px; left:-150px; top:20px;
  background: radial-gradient(closest-side, rgba(122,92,255,.22), transparent 70%); }
.ps-layer.c { width:420px; height:420px; right:10%; bottom:-140px;
  background: radial-gradient(closest-side, rgba(255,79,216,.20), transparent 70%); }

/* Tilt cards */
.ps-tilt { transform: perspective(800px) rotateX(0) rotateY(0) translateZ(0); transition: transform .18s ease, box-shadow .2s ease; }
.ps-tilt:hover { box-shadow: 0 16px 50px rgba(0,0,0,.35); }

/* Magnetic buttons */
.ps-magnet { position:relative; overflow:hidden; }
.ps-magnet span { position:relative; z-index:2 }
.ps-magnet::after {
  content:""; position:absolute; inset:0; z-index:1; background: radial-gradient(220px 120px at var(--mx,50%) var(--my,50%), rgba(255,255,255,.06), transparent 60%);
  transition: opacity .2s; opacity:0;
}
.ps-magnet:hover::after { opacity:1; }

/* Gradient border utility */
.ps-gb { position:relative; }
.ps-gb::before {
  content:""; position:absolute; inset:0; border-radius:inherit; padding:1px; background: linear-gradient(135deg, rgba(255,138,0,.7), rgba(255,79,216,.7), rgba(122,92,255,.7));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none;
}


/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}
