/* ===== 15 子站摇奖动画（2026-10-07，与 49tuku.html 金澳新新彩同口径）=====
   金澳新新彩 open 起：0-8s 灰底带字「官方正在摇奖中」（按位 官方正在摇奖中），
   每球揭号前 3s 起翻滚（独立 rotate + hue-rotate 阶跃变色、字透明），
   open+8+3i 逐球亮号（8,11,14,17,20,23,26s 亮完）并 pop 出场，之后静态。
   球底是 balls-bg.css 的 bg-amage-* 背景图：灰态走 grayscale 普通声明，
   翻滚变色是动画（动画覆盖普通 filter）—— 禁写 filter: ... !important（会压死变色动画）。
   DOM 由 shared/draw_anim.js 幂等 reconcile 驱动（Vue 覆写后下一拍自愈）。 */

.balls-row .sd-grey .ball {
    filter: grayscale(1) saturate(0) brightness(.92);
    color: #111827;
    font-weight: 900;
    text-shadow: 0 1px 2px rgba(255, 255, 255, .75);
}

.balls-row .sd-grey .ball-tag,
.balls-row .sd-tumble .ball-tag {
    visibility: hidden;
}

.balls-row .sd-tumble .ball {
    color: transparent;
    text-shadow: none;
    animation: sd-ball-tumble .9s linear infinite, sd-tumble-random-color 1.4s step-end infinite;
}

.balls-row .ball-wrapper.sd-reveal {
    animation: sd-ball-reveal .38s cubic-bezier(.2, .8, .2, 1) both;
}

@keyframes sd-ball-tumble {
    from { rotate: 0deg; }
    to { rotate: 360deg; }
}

@keyframes sd-tumble-random-color {
    0%   { filter: hue-rotate(0deg); }
    14%  { filter: hue-rotate(240deg); }
    29%  { filter: hue-rotate(120deg); }
    43%  { filter: hue-rotate(0deg); }
    57%  { filter: hue-rotate(260deg); }
    71%  { filter: hue-rotate(120deg); }
    86%  { filter: hue-rotate(180deg); }
    100% { filter: hue-rotate(0deg); }
}

@keyframes sd-ball-reveal {
    0% {
        opacity: 0;
        transform: translateY(-10px) scale(.72) rotate(-12deg);
    }
    70% {
        opacity: 1;
        transform: translateY(2px) scale(1.08) rotate(3deg);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1) rotate(0);
    }
}
