/* =====================================================================
 * 子比 zibll 子主题 · 明暗切换过渡（hezi-theme-smoke v9）
 * ---------------------------------------------------------------------
 * 视觉恢复 39-星云.html：blur 柔光 + screen 叠加提亮 + 三色团流动。
 *
 * 性能修复（这次的关键）：
 *   上一版(v9 初版)为治卡顿把 blur+screen 全删了，导致质感退化。
 *   实测卡顿根因是「每帧重算」——整层在动、浏览器每帧重跑 blur+screen。
 *   修复：把视觉(blur+screen+渐变)放到【静态内层 .hezi-nebula-blobs】，
 *        仅在外层 .hezi-nebula-overlay 上做 transform/opacity 动画
 *        (合成器/GPU，零逐帧重绘)。内层在组首次栅格化时计算一次 blur+screen，
 *        之后外层只移动/淡出已缓存的栅格 → 既恢复 39 辉光又丝滑。
 *   blur 半径由 45px 降到 32px：仍柔软，一次性栅格开销更低。
 * ===================================================================== */

.hezi-nebula-overlay {
    position: fixed;
    inset: -30%;                 /* 恢复 39 的充足外扩，旋转/缩放时不露边 */
    z-index: 99990;
    pointer-events: none;
    opacity: 0;
    /* 外层 = 动画组：transform/opacity 全部走合成器(GPU)，不触发子层重绘。
       blur+screen 在内层静态，组栅格化一次后被缓存，外层只平移/旋转/缩放
       这块已缓存的纹理 → 长页面也不卡。 */
    transform: translateZ(0) translate(10%, -10%) rotate(0deg) scale(.8);
    will-change: transform, opacity;
    backface-visibility: hidden;
    contain: layout style paint;
}

.hezi-nebula-overlay .hezi-nebula-blobs {
    position: absolute;
    inset: 0;
    /* 恢复 39 的柔和辉光：blur 把径向渐变边缘融化成云；screen 让颜色叠加处
       更亮、并与页面融合出星云质感。此层静态 → blur+screen 只算一次。 */
    filter: blur(32px);
    mix-blend-mode: screen;
    /* 三色团：对齐 39 的紫/蓝/粉，alpha 与收边恢复到 39 量感
       (初版被调淡到 .42~.55、收边 55~60% 是退化主因之一)。 */
    background:
        radial-gradient(circle at 30% 40%, rgba(140, 90, 255, .72), rgba(140, 90, 255, 0) 42%),
        radial-gradient(circle at 70% 60%, rgba(80, 140, 255, .70), rgba(80, 140, 255, 0) 46%),
        radial-gradient(circle at 50% 50%, rgba(255, 120, 200, .62), rgba(255, 120, 200, 0) 42%);
}

.hezi-nebula-overlay.run {
    animation: heziNebulaFlow var(--hezi-neb-dur, 1200ms) var(--hezi-neb-ease, ease) forwards;
}

@keyframes heziNebulaFlow {
    0% {
        opacity: 0;
        transform: translateZ(0) translate(10%, -10%) rotate(0deg) scale(.8);
    }
    40% {
        opacity: .95;            /* 辉光铺满（与 39 一致：40%~60% 保持） */
    }
    60% {
        opacity: .95;
    }
    100% {
        opacity: 0;
        transform: translateZ(0) translate(-10%, 10%) rotate(40deg) scale(1.2);
    }
}

/* 尊重「减少动态效果」：几乎瞬时，仍保留极短淡入避免生硬跳变 */
@media (prefers-reduced-motion: reduce) {
    .hezi-nebula-overlay.run {
        animation-duration: 1ms !important;
    }
}
