/* - 全局加载动画 */
#global-loader-iframe {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: none;
    z-index: 10010;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    pointer-events: none; /* 允许点击穿透 */
}

#global-loader-iframe {
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: transform; /* 性能优化 */
}

#global-loader-iframe.start {
    animation: loaderStart 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

#global-loader-iframe.end {
    animation: loaderEnd 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes loaderStart {
    from {
        transform: translateY(-100%);
    }
    to {
        transform: translateY(0);
    }
}

@keyframes loaderEnd {
    from {
        transform: translateY(0);
    }
    to {
        transform: translateY(-100%);
    }
}
/* - 全局加载动画 End */

/* - 配色方案加载动画 */
#theme-color-loader-iframe {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: none;
    z-index: 10009;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    pointer-events: none;

    transform: translateY(100%);
    will-change: transform; /* 性能优化 */
}

#theme-color-loader-iframe {
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

#theme-color-loader-iframe.start {
    animation: loaderStart 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

#theme-color-loader-iframe.end {
    animation: loaderEnd 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes loaderStart {
    from {
        transform: translateY(100%);
    }
    to {
        transform: translateY(0);
    }
}

@keyframes loaderEnd {
    from {
        transform: translateY(0);
    }
    to {
        transform: translateY(100%);
    }
}
/* - 配色方案加载动画 End */

/* - 性能优化：减少重绘 */
@media (prefers-reduced-motion: reduce) {
    #global-loader-iframe,
    #theme-color-loader-iframe {
        transition: none;
        animation: none;
    }
}
/* - 性能优化 End */
