.source-slide-wrap {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}
.source-slide-wrap .source-slide-mask {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.5);
    pointer-events: none;
}
.source-slide-box {
    position: relative;
    z-index: 1;
    width: 340px;
    background: #fff;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    animation: source-slide-in .25s ease-out;
}
@keyframes source-slide-in {
    from { transform: scale(.9); opacity: 0; }
    to   { transform: scale(1);   opacity: 1; }
}
.source-slide-box.source-slide-ok { animation: source-slide-ok .3s ease-out; }
@keyframes source-slide-ok {
    0%,100% { transform: translateX(0); }
    25% { transform: translateX(-6px); }
    75% { transform: translateX(6px); }
}

.source-slide-close {
    position: absolute;
    top: 10px; right: 14px;
    width: 28px; height: 28px;
    border: none; background: transparent;
    font-size: 22px; color: #999;
    cursor: pointer; border-radius: 50%;
    line-height: 28px;
}
.source-slide-close:hover { background: #f5f5f5; color: #333; }

.source-slide-title {
    font-size: 16px; font-weight: 600;
    color: #333; margin-bottom: 12px;
}

.source-slide-img-wrap {
    position: relative;
    width: 300px; height: 220px; /* 与后端生成图片原生尺寸一致，避免缩放误差 */
    border-radius: 6px; overflow: hidden;
    background: #eee;
    user-select: none;
}
.source-slide-bg {
    display: block;
    width: 100%; height: 100%;
    pointer-events: none;
}
.source-slide-tile {
    position: absolute;
    top: 0; left: 0;
    width: 50px; height: 50px;
    pointer-events: none;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,.3));
}
.source-slide-loading {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,.75);
    color: #666; font-size: 13px;
}

.source-slide-track {
    position: relative;
    width: 100%; height: 42px;
    margin-top: 14px;
    background: #f2f2f2;
    border-radius: 21px;
    overflow: hidden;
}
.source-slide-track-fill {
    position: absolute; top: 0; left: 0;
    height: 100%; width: 0;
    background: linear-gradient(90deg, #4f46e5, #228be6);
    border-radius: 21px;
}
.source-slide-handle {
    position: absolute; top: 2px; left: 0;
    width: 38px; height: 38px;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(0,0,0,.2);
    text-align: center; line-height: 38px;
    color: #228be6; font-size: 14px;
    cursor: grab;
    user-select: none;
    transition: transform .1s;
}
.source-slide-handle:active { cursor: grabbing; }

.source-slide-tip {
    position: absolute;
    inset: 0;
    text-align: center;
    line-height: 42px;
    color: #999; font-size: 13px;
    pointer-events: none;
}
