/* ── Decorative background: blobs, particles, topline ── */
.bg-mesh { position: fixed; inset: 0; z-index: 0; overflow: hidden; }
.blob { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.18; animation: drift 12s ease-in-out infinite alternate; }
.blob-1 { width: 600px; height: 600px; background: radial-gradient(circle, #7B3FBE, #3B1A6E); top: -200px; left: -150px; animation-duration: 14s; }
.blob-2 { width: 500px; height: 500px; background: radial-gradient(circle, #1A8FBF, #0D4F7A); bottom: -150px; right: -100px; animation-duration: 10s; animation-delay: -5s; }
.blob-3 { width: 300px; height: 300px; background: radial-gradient(circle, #9B59B6, #6C3483); top: 40%; left: 50%; transform: translate(-50%, -50%); animation-duration: 16s; animation-delay: -3s; opacity: 0.1; }
@keyframes drift {
  0%   { transform: translate(0, 0) scale(1); }
  50%  { transform: translate(30px, -20px) scale(1.05); }
  100% { transform: translate(-20px, 30px) scale(0.97); }
}
#particles { position: fixed; inset: 0; z-index: 1; pointer-events: none; }
.topline { position: fixed; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--purple) 30%, var(--cyan) 70%, transparent); z-index: 10; }
