#children-effects-container,
.festival-effects-children {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 999999;
    overflow: hidden;
}

/* ---------------- ★ 定制版小熊小兔 NPC ★ ---------------- */
.cd-mascot-container {
    position: absolute; bottom: -45px; right: 20px; width: 180px; height: 140px; z-index: 9998;
    filter: drop-shadow(0 8px 15px rgba(0,0,0,0.3));
    pointer-events: auto; cursor: pointer;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), bottom 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.cd-mascot-container:hover {
    bottom: -5px; transform: scale(1.05);
}
.cd-balloons { animation: floatBalloons 2.5s ease-in-out infinite alternate; }
.cd-mascot-container:hover .cd-pinwheel { animation: spinPinwheel 0.6s linear infinite; }
.cd-mascot-container .cd-mascot-face-hover { opacity: 0; transition: opacity 0.2s; }
.cd-mascot-container:hover .cd-mascot-face-normal { opacity: 0; }
.cd-mascot-container:hover .cd-mascot-face-hover { opacity: 1; }
.cd-mascot-container:hover .cd-mascot-arm-left { animation: armWaveL 1s infinite alternate; }
.cd-mascot-container:hover .cd-mascot-arm-right { animation: armWaveR 1s infinite alternate; }

/* ---------------- ★ 七彩上升气球（SVG 立体版） ★ ---------------- */
.cd-rise-balloon {
    position: absolute;
    z-index: 9995;
    pointer-events: auto;
    cursor: pointer;
    will-change: transform;
    --balloon-size: 52px;
}
.cd-rise-balloon-svg {
    display: block;
    overflow: visible;
    filter: drop-shadow(0 6px 10px rgba(0,0,0,0.12));
}
/* ---------------- ★ 幻彩纸飞机与动态粒子拖尾 ★ ---------------- */
.cd-plane-wrap {
    position: absolute; z-index: 9997; pointer-events: none;
    filter: drop-shadow(0 8px 12px rgba(0,0,0,0.18));
    will-change: transform;
    transform-origin: center center;
}
.cd-plane {
    width: 70px; height: 70px;
    overflow: visible;
}

/* ---------------- ★ 动态粒子云朵拖尾 ★ ---------------- */
.cd-trail-puff {
    position: absolute;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 50%; pointer-events: none;
    z-index: 9996;
    transform: translate(-50%, -50%);
    filter: blur(1px);
    animation: puffFade 1.2s cubic-bezier(0.1, 0.8, 0.3, 1) forwards;
    will-change: transform, opacity;
}

/* ---------------- ★ 糖果大爆炸 (点击特效) ★ ---------------- */
.cd-candy-particle {
    position: absolute; z-index: 10000; pointer-events: none;
    border-radius: 4px; box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    font-size: 14px; display: flex; justify-content: center; align-items: center;
}
.cd-pop-ripple {
    position: absolute; border-radius: 50%; border: 3px solid #FFF;
    z-index: 9999; pointer-events: none; transform: translate(-50%, -50%) scale(0);
    box-shadow: 0 0 15px rgba(255, 105, 180, 0.5), inset 0 0 15px rgba(135, 206, 250, 0.5);
    animation: cdRippleExpand 0.6s cubic-bezier(0.1, 0.8, 0.3, 1) forwards;
}

@keyframes cdRippleExpand { 0% { width: 0; height: 0; opacity: 1; border-width: 5px; } 100% { width: 80px; height: 80px; opacity: 0; border-width: 1px; } }
@keyframes floatBalloons { 0% { transform: translateY(0); } 100% { transform: translateY(-8px); } }
@keyframes spinPinwheel { from { transform: translate(85px, 10px) rotate(0deg); } to { transform: translate(85px, 10px) rotate(360deg); } }
@keyframes armWaveL { 0% { transform: translate(0, 0) rotate(0); } 100% { transform: translate(-5px, -10px) rotate(-15deg); } }
@keyframes armWaveR { 0% { transform: translate(0, 0) rotate(0); } 100% { transform: translate(5px, -10px) rotate(15deg); } }
@keyframes puffFade {
    0% { transform: translate(-50%, -50%) scale(0.5); opacity: 0.8; }
    100% { transform: translate(-50%, -50%) scale(2.5); opacity: 0; }
}

@media (max-width: 768px) {
    .cd-mascot-container { transform: scale(0.7); right: 0; bottom: -30px; }
}
