        /* 背景光斑 */
        /* ================================================================
           背景装饰光斑：四个半透明彩色圆形，持续漂移动画
           纯视觉效果，pointer-events: none 不阻挡交互
           ================================================================ */
        .bg-blobs {
            position: fixed;
            inset: 0;
            z-index: 0;
            overflow: hidden;
            pointer-events: none;
        }
        .blob {
            position: absolute;
            border-radius: 50%;
            filter: blur(80px);
            opacity: 0.35;
        }
        .blob-1 {
            width: 420px;
            height: 420px;
            background: var(--primary-color);
            top: -120px;
            left: -80px;
            animation: drift1 22s ease-in-out infinite;
        }
        .blob-2 {
            width: 350px;
            height: 350px;
            background: var(--accent-color);
            top: 55%;
            right: -100px;
            animation: drift2 26s ease-in-out infinite;
        }
        .blob-3 {
            width: 320px;
            height: 320px;
            background: #f093fb;
            bottom: -120px;
            left: 25%;
            animation: drift3 20s ease-in-out infinite;
        }
        .blob-4 {
            width: 260px;
            height: 260px;
            background: #a18cd1;
            top: 15%;
            left: 55%;
            animation: drift4 24s ease-in-out infinite;
        }

        @keyframes drift1 {
            0%, 100% { transform: translate(0, 0) scale(1); }
            20% { transform: translate(160px, 50px) scale(1.12); }
            45% { transform: translate(40px, 180px) scale(0.88); }
            70% { transform: translate(-60px, 100px) scale(1.08); }
        }
        @keyframes drift2 {
            0%, 100% { transform: translate(0, 0) scale(1); }
            30% { transform: translate(-140px, -80px) scale(1.15); }
            65% { transform: translate(-50px, 100px) scale(0.85); }
        }
        @keyframes drift3 {
            0%, 100% { transform: translate(0, 0) scale(1); }
            35% { transform: translate(120px, -160px) scale(1.18); }
            75% { transform: translate(-40px, -50px) scale(0.92); }
        }
        @keyframes drift4 {
            0%, 100% { transform: translate(0, 0) scale(1); }
            25% { transform: translate(-90px, -40px) scale(0.9); }
            55% { transform: translate(70px, 110px) scale(1.1); }
            80% { transform: translate(-20px, -90px) scale(0.95); }
        }

        /* 移动端禁用背景光斑以节省电量 */
        /* === 手机端（≤768px）关闭光斑动画以节省电量 === */
        @media (max-width: 768px) {
            .bg-blobs {
                display: none;
            }
        }
