.blob {
      position: absolute;
      width: 420px;
      height: 420px;
      border-radius: 9999px;
      filter: blur(80px);
      opacity: 0.45;
      animation: blobFloat 14s infinite alternate ease-in-out;
    }

    .blob-left {
      left: -80px;
      bottom: -80px;
      background: radial-gradient(circle, #38bdf8, transparent 70%);
    }

    .blob-right {
      right: -80px;
      top: -40px;
      background: radial-gradient(circle, #c881f8, transparent 70%);
      animation-delay: 4s;
    }

    @keyframes blobFloat {
      0% { transform: translate(0, 0) scale(1); }
      100% { transform: translate(40px, -30px) scale(1.1); }
    }

    /* ===== Star background ===== */
    .stars {
      position: absolute;
      inset: 0;
      background-image:
        radial-gradient(1px 1px at 20% 30%, #93c5fd, transparent),
        radial-gradient(1.5px 1.5px at 70% 40%, #a5b4fc, transparent),
        radial-gradient(1px 1px at 40% 80%, #7dd3fc, transparent),
        radial-gradient(1.2px 1.2px at 85% 70%, #c7d2fe, transparent),
        radial-gradient(1px 1px at 60% 20%, #93c5fd, transparent);
      animation: starsMove 18s linear infinite, starsBlink 4s ease-in-out infinite;
      opacity: 0.6;
    }

    @keyframes starsMove {
      from { background-position: 0 0; }
      to { background-position: -200px 200px; }
    }

    @keyframes starsBlink {
      0%, 100% { opacity: 0.4; }
      50% { opacity: 0.9; }
    }

    /* ===== Floating background bubbles ===== */
    .bg-bubbles {
      position: absolute;
      inset: 0;
      overflow: hidden;
      z-index: 1;
    }

    .bg-bubbles span {
      position: absolute;
      bottom: -100px;
      width: 20px;
      height: 20px;
      background: radial-gradient(circle, rgba(99,102,241,0.6), transparent 70%);
      border-radius: 50%;
      animation: bubbleRise linear infinite, bubbleBlink ease-in-out infinite;
      opacity: 0.6;
      filter: blur(1px);
    }

    @keyframes bubbleRise {
      0% { transform: translateY(0) scale(0.6); }
      100% { transform: translateY(-120vh) scale(1.4); }
    }

    @keyframes bubbleBlink {
      0%, 100% { opacity: 0.3; }
      50% { opacity: 0.8; }
    }