/* 万花筒动画模式 */
.stage.stage-kaleidoscope {
    overflow: visible;
}
.stage.stage-kaleidoscope .stage-tiles {
    opacity: 0;
    pointer-events: none;
}
.stage.stage-kaleidoscope::after {
    display: none;
}

/* 万花筒镜筒：铺满屏幕的圆形容器（120vmax 保证覆盖矩形视口对角线） */
.kaleido-hub {
    position: absolute;
    width: var(--kaleido-size, 120vmax);
    height: var(--kaleido-size, 120vmax);
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0.3);
    overflow: visible;
    opacity: 0;
    will-change: transform, opacity;
    z-index: 1;
    transform-origin: center;
    backface-visibility: hidden;
    pointer-events: none;
}

/* 棱镜片：三角形裁切 */
.kaleido-wedge {
    position: absolute;
    inset: 0;
    clip-path: polygon(50% 50%, 48.5% -2%, 95% 23.5%);
    -webkit-clip-path: polygon(50% 50%, 48.5% -2%, 95% 23.5%);
    will-change: transform, opacity;
    transform-origin: center;
    backface-visibility: hidden;
}

/* 棱镜内容区 */
.kaleido-wedge-inner {
    position: absolute;
    top: -25%;
    left: -25%;
    width: 150%;
    height: 150%;
    will-change: transform;
    transform-origin: center;
    backface-visibility: hidden;
}

/* 棱镜片内的瓷砖克隆：重置原始定位 */
.kaleido-wedge-inner .stage-tiles {
    opacity: 1 !important;
    pointer-events: none;
    position: absolute;
    inset: auto;
    top: 50%;
    left: 50%;
    right: auto;
    bottom: auto;
    width: 100%;
    height: auto;
    transform: translate(-50%, -50%) rotate(var(--kaleido-tiles-rotate, -15deg)) scale(var(--kaleido-tiles-scale, 1.3));
    transform-origin: center;
}

/* 中心光晕 */
.kaleido-bloom {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 30%;
    height: 30%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,255,255,0.8) 0%, rgba(255,200,255,0.2) 40%, transparent 70%);
    pointer-events: none;
    z-index: 2;
    opacity: 0;
    mix-blend-mode: overlay;
    will-change: transform, opacity;
    backface-visibility: hidden;
}

/* 棱镜色散层 */
.kaleido-prism {
    position: absolute;
    inset: -10%;
    background: conic-gradient(
        from 0deg,
        rgba(255, 60, 60, 0.15),
        rgba(255, 200, 40, 0.15),
        rgba(60, 255, 100, 0.15),
        rgba(40, 200, 255, 0.15),
        rgba(100, 60, 255, 0.15),
        rgba(255, 60, 200, 0.15),
        rgba(255, 60, 60, 0.15)
    );
    mix-blend-mode: color;
    pointer-events: none;
    z-index: 3;
    opacity: 0;
    will-change: transform, opacity;
    backface-visibility: hidden;
}

/* 暗角 */
.kaleido-vignette {
    position: absolute;
    inset: -20%;
    background: radial-gradient(ellipse 60% 60% at 50% 50%, transparent 40%, rgba(0,0,0,0.45) 100%);
    pointer-events: none;
    z-index: 4;
    will-change: opacity;
}

/* 外圈光环 */
.kaleido-ring {
    position: absolute;
    inset: -3px;
    border: none;
    pointer-events: none;
    z-index: 5;
    opacity: 0;
}

/* 棱镜片接缝线 */
.kaleido-seam {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 50%;
    height: 1px;
    transform-origin: left center;
    background: linear-gradient(90deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0.02) 60%, transparent 100%);
    pointer-events: none;
    z-index: 2;
}

@media (max-width: 768px) {
    .stage.stage-kaleidoscope {
        overflow: visible;
    }

    .kaleido-hub {
        --kaleido-size: 150vmax;
        --kaleido-tiles-rotate: -12deg;
        --kaleido-tiles-scale: 1.4;
    }

    .kaleido-wedge-inner {
        top: -34%;
        left: -34%;
        width: 168%;
        height: 168%;
    }

    .kaleido-bloom {
        width: 36%;
        height: 36%;
        background: radial-gradient(circle, rgba(255,255,255,0.66) 0%, rgba(170,210,255,0.24) 38%, transparent 70%);
    }

    .kaleido-prism {
        inset: -14%;
        opacity: 0;
    }

    .kaleido-wedge,
    .kaleido-wedge-inner,
    .kaleido-bloom,
    .kaleido-prism {
        will-change: auto;
    }

    .kaleido-vignette {
        inset: -24%;
        background: radial-gradient(ellipse 64% 64% at 50% 50%, transparent 42%, rgba(0,0,0,0.38) 100%);
    }
}

@supports not (clip-path: polygon(50% 50%, 48.5% -2%, 95% 23.5%)) {
    .kaleido-wedge {
        overflow: hidden;
    }
}
