/* ===== 微型预览动画（卡片上的效果预览） ===== */
.effect-preview{position:absolute;inset:0;overflow:hidden;opacity:0;transition:opacity .5s var(--ease-out,cubic-bezier(.16,1,.3,1));pointer-events:none;z-index:2}
.carousel-card.active .effect-preview{opacity:1}
.ep-pixel{position:absolute;background:rgba(255,255,255,.5);border-radius:2px}

/* 像素融化 */
@keyframes epMelt{0%{filter:blur(5px);opacity:.2}50%{filter:blur(1px);opacity:.7}100%{filter:blur(5px);opacity:.2}}
.ep-melt .ep-pixel{animation:epMelt 2.4s ease-in-out infinite}
.ep-melt .ep-pixel:nth-child(1){width:20px;height:20px;top:18%;left:13%;animation-delay:0s}
.ep-melt .ep-pixel:nth-child(2){width:16px;height:16px;top:13%;right:18%;animation-delay:.3s}
.ep-melt .ep-pixel:nth-child(3){width:18px;height:18px;bottom:23%;left:23%;animation-delay:.6s}
.ep-melt .ep-pixel:nth-child(4){width:14px;height:14px;bottom:18%;right:13%;animation-delay:.9s}

/* 像素消散 */
@keyframes epScatter{0%,100%{opacity:0}10%{opacity:.8}30%{opacity:0}}
.ep-scatter .ep-pixel{width:7px;height:7px;animation:epScatter 2s ease infinite}
.ep-scatter .ep-pixel:nth-child(1){top:16%;left:20%;animation-delay:0s}
.ep-scatter .ep-pixel:nth-child(2){top:33%;right:16%;animation-delay:.4s}
.ep-scatter .ep-pixel:nth-child(3){bottom:28%;left:38%;animation-delay:.8s}
.ep-scatter .ep-pixel:nth-child(4){top:48%;left:13%;animation-delay:1.2s}
.ep-scatter .ep-pixel:nth-child(5){bottom:16%;right:23%;animation-delay:.2s}
.ep-scatter .ep-pixel:nth-child(6){top:23%;left:53%;animation-delay:.6s}

/* 对角渐显 */
@keyframes epDiag{0%{transform:translate(-100%,-100%)}100%{transform:translate(100%,100%)}}
.ep-diagonal::after{content:'';position:absolute;width:200%;height:3px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);top:50%;left:-50%;animation:epDiag 2s ease-in-out infinite;transform-origin:center}

/* 像素雨帘 */
@keyframes epRain{0%{transform:translateY(-100%);opacity:0}20%{opacity:.7}100%{transform:translateY(200%);opacity:0}}
.ep-rain .ep-pixel{width:3px;height:22px;border-radius:2px;animation:epRain 1.8s linear infinite}
.ep-rain .ep-pixel:nth-child(1){left:18%;animation-delay:0s}
.ep-rain .ep-pixel:nth-child(2){left:38%;animation-delay:.3s}
.ep-rain .ep-pixel:nth-child(3){left:58%;animation-delay:.6s}
.ep-rain .ep-pixel:nth-child(4){left:78%;animation-delay:.15s}

/* 光影渐现 */
@keyframes epLum{0%{transform:scale(0);opacity:.8}100%{transform:scale(2.5);opacity:0}}
.ep-luminance::after{content:'';position:absolute;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.6),transparent);top:50%;left:50%;transform:translate(-50%,-50%);animation:epLum 2s ease-out infinite}

/* 回字展开 */
@keyframes epExpand{0%{transform:scale(.3);opacity:.8}100%{transform:scale(1.5);opacity:0}}
.ep-expand .ep-pixel{border:2px solid rgba(255,255,255,.4);border-radius:3px;animation:epExpand 2s ease-out infinite}
.ep-expand .ep-pixel:nth-child(1){width:22px;height:22px;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:0s}
.ep-expand .ep-pixel:nth-child(2){width:34px;height:34px;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:.3s}
.ep-expand .ep-pixel:nth-child(3){width:48px;height:48px;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:.6s}

/* 黄金螺旋 */
@keyframes epSpiral{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
.ep-spiral::after{content:'';position:absolute;width:52px;height:52px;top:50%;left:50%;transform:translate(-50%,-50%);border:2px solid transparent;border-top-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.3);border-radius:50%;animation:epSpiral 2s linear infinite}

/* 水波涟漪 */
@keyframes epRipple{0%{transform:scale(0);opacity:.6}100%{transform:scale(2);opacity:0}}
.ep-ripple .ep-pixel{border:2px solid rgba(255,255,255,.35);border-radius:50%;animation:epRipple 2s ease-out infinite}
.ep-ripple .ep-pixel:nth-child(1){width:22px;height:22px;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:0s}
.ep-ripple .ep-pixel:nth-child(2){width:22px;height:22px;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:.5s}
.ep-ripple .ep-pixel:nth-child(3){width:22px;height:22px;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:1s}

/* 多点绽放 */
@keyframes epBloom{0%{transform:scale(0);opacity:.7}100%{transform:scale(2);opacity:0}}
.ep-bloom .ep-pixel{border:2px solid rgba(255,255,255,.35);border-radius:50%;animation:epBloom 2s ease-out infinite}
.ep-bloom .ep-pixel:nth-child(1){width:16px;height:16px;top:23%;left:28%;animation-delay:0s}
.ep-bloom .ep-pixel:nth-child(2){width:12px;height:12px;top:18%;right:23%;animation-delay:.3s}
.ep-bloom .ep-pixel:nth-child(3){width:18px;height:18px;bottom:28%;left:38%;animation-delay:.6s}
.ep-bloom .ep-pixel:nth-child(4){width:14px;height:14px;bottom:23%;right:28%;animation-delay:.15s}
