/* ══════════════════════════════════════════════════════════════════════
   BUILD 138 · 鱼虾蟹(老板:「摇骰子的碗换一个好看点的」「从下注到结算太快了,很赶」)
   青花瓷碗倒扣在朱漆描金托盘上;开骰分几拍演:停止下注 → 摇碗 → 落碗 → 掀碗(骰子一颗一颗亮)→ 中的格子一格一格亮。
   开骰那几拍骰盅那一格放大到台面中间(下注已经停了,盖住旁边几格没关系),亮中奖格之前缩回去。
   拍子由 public/fish.js 写在 #fsStage 的 data-beat 上:bet / stop / shake / slam / lift / win / done。
   ══════════════════════════════════════════════════════════════════════ */
#app .fswrap .fbx,#app .fswrap .fbx-mid,#app .fswrap .fbx-six{overflow:visible}
#app .fswrap .fbx-bowl .fsstage.fs2{overflow:hidden;z-index:3;transform-origin:50% 0%;
  transition:transform .55s cubic-bezier(.2,.8,.2,1),box-shadow .55s,border-radius .55s}
#app .fswrap .fbx-bowl .fsstage.fs2[data-beat="stop"],
#app .fswrap .fbx-bowl .fsstage.fs2[data-beat="shake"],
#app .fswrap .fbx-bowl .fsstage.fs2[data-beat="slam"],
#app .fswrap .fbx-bowl .fsstage.fs2[data-beat="lift"]{transform:scale(1.62);z-index:25;border-radius:10px;
  box-shadow:0 0 0 2px #e8c170,0 0 0 5px rgba(122,31,20,.85),0 22px 44px rgba(0,0,0,.6)}
#app .fswrap .fbx-bowl .fsstage.fs2.skip,#app .fswrap .fbx-bowl .fsstage.fs2.skip .fs2bowl{transition:none}
/* 托盘 / 骰子 / 碗 */
#app .fsstage.fs2 .fs2plate{position:absolute;left:50%;bottom:2%;width:min(46%,210px);transform:translateX(-50%);z-index:0;pointer-events:none}
#app .fsstage.fs2 .fs2plate svg{display:block;width:100%;height:auto}
#app .fsstage.fs2 .fs2dice{position:absolute;left:50%;bottom:16%;transform:translateX(-50%);z-index:1;display:flex;gap:3px;align-items:flex-end;pointer-events:none}
#app .fsstage.fs2 .fs2dice .fsdie,#app .fsstage.fs2 .fs2dice .fsdie svg{width:clamp(18px,5.6vh,28px);height:clamp(18px,5.6vh,28px)}
#app .fsstage.fs2 .fs2dice .fsdie{background:linear-gradient(160deg,#fffaf0,#efe3c8);border:1.2px solid var(--vt-ink,#2b241d);border-radius:5px;box-shadow:0 2px 3px rgba(60,20,10,.45)}
#app .fsstage.fs2 .fs2dice .fsdie.pop{animation:fs2pop .5s cubic-bezier(.2,.9,.3,1.45) both}
#app .fsstage.fs2 .fs2dice .fsdie.pop.k0{animation-delay:.26s}
#app .fsstage.fs2 .fs2dice .fsdie.pop.k1{animation-delay:.62s}
#app .fsstage.fs2 .fs2dice .fsdie.pop.k2{animation-delay:.98s}
@keyframes fs2pop{0%{opacity:0;transform:translateY(-10px) scale(.4) rotate(-24deg)}70%{opacity:1}100%{opacity:1;transform:none}}
#app .fsstage.fs2 .fs2bowl{position:absolute;left:50%;bottom:9%;width:min(34%,160px);z-index:2;pointer-events:none;
  transform:translateX(-50%);transform-origin:50% 100%;transition:transform .5s cubic-bezier(.3,.7,.2,1),opacity .4s}
#app .fsstage.fs2 .fs2bowlin{transform-origin:50% 92%}
#app .fsstage.fs2 .fs2bowl svg{display:block;width:100%;height:auto;overflow:visible}
/* 下注:碗扣着,轻轻呼吸一下 */
#app .fsstage.fs2[data-beat="bet"] .fs2bowlin{animation:fs2idle 3.2s ease-in-out infinite}
@keyframes fs2idle{50%{transform:translateY(-1.5%)}}
/* 停止下注:碗压一下 */
#app .fsstage.fs2[data-beat="stop"] .fs2bowlin{animation:fs2press .55s ease-out both}
@keyframes fs2press{0%{transform:none}40%{transform:translateY(3%) scaleY(.95)}100%{transform:none}}
/* 摇:整只碗离开托盘一点点,里面那层来回晃 */
#app .fsstage.fs2[data-beat="shake"] .fs2bowl{transform:translate(-50%,-9%)}
#app .fsstage.fs2[data-beat="shake"] .fs2bowlin{animation:fs2shake .15s ease-in-out infinite alternate}
@keyframes fs2shake{0%{transform:translate(-5%,1%) rotate(-6deg)}50%{transform:translate(0,-3%) rotate(0)}100%{transform:translate(5%,1%) rotate(6deg)}}
/* 落碗:砸回托盘,压扁一下再弹 */
#app .fsstage.fs2[data-beat="slam"] .fs2bowl{transform:translateX(-50%);transition:transform .16s cubic-bezier(.6,0,.9,.4)}
#app .fsstage.fs2[data-beat="slam"] .fs2bowlin{animation:fs2slam .5s ease-out .12s both}
@keyframes fs2slam{0%{transform:none}30%{transform:scaleY(.93) scaleX(1.03)}60%{transform:scaleY(1.02)}100%{transform:none}}
/* 掀碗:往左上提起、侧过去、淡出 —— 底下三颗骰子一颗一颗弹出来 */
#app .fsstage.fs2[data-beat="lift"] .fs2bowl{transform:translate(-8%,-92%) rotate(-18deg);opacity:0;
  transition:transform 1.25s cubic-bezier(.35,.1,.25,1),opacity .45s ease-in .85s}
#app .fsstage.fs2[data-beat="win"] .fs2bowl,#app .fsstage.fs2[data-beat="done"] .fs2bowl{transform:translate(-8%,-92%) rotate(-18deg);opacity:0}
/* 提示条:停止下注(朱红)/ 开!(青花蓝) */
#app .fsstage.fs2 .fs2cue{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);z-index:6;pointer-events:none;opacity:0}
#app .fsstage.fs2 .fs2cue b{display:block;white-space:nowrap;font:900 clamp(12px,3.6vh,17px)/1 var(--vt-serif,serif);letter-spacing:.32em;padding:5px 22px 5px 26px;color:#fff6e0;
  background:linear-gradient(90deg,transparent,#b3201e 16%,#b3201e 84%,transparent);text-shadow:0 1px 0 rgba(60,4,2,.8)}
#app .fsstage.fs2 .fs2cue.open b{background:linear-gradient(90deg,transparent,#1f3f9a 16%,#1f3f9a 84%,transparent)}
#app .fsstage.fs2 .fs2cue.on{animation:fs2cue 1.15s ease-out both}
@keyframes fs2cue{0%{opacity:0;transform:translate(-50%,-50%) scale(1.6)}16%{opacity:1;transform:translate(-50%,-50%) scale(1)}72%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(.96)}}
/* 倒计时的红印章挪到右上角,不压着碗;结果阶段最后几秒写「下一场 N 秒」 */
#app .fswrap .fbx-bowl .fsstage.fs2 .dkclock{left:auto;right:4px;top:4px;transform:none}
#app .fsstage.fs2 .fs2next{position:absolute;right:5px;bottom:4px;z-index:4;display:none;padding:2px 8px;border-radius:99px;background:rgba(43,36,29,.82);color:#fbf1dc;
  font:800 clamp(9px,2.4vh,11px)/1.5 var(--display,sans-serif);letter-spacing:.06em}
#app .fsstage.fs2 .fs2next.on{display:block;animation:fs2blink 1s ease-in-out infinite}
@keyframes fs2blink{50%{opacity:.6}}
/* 旧的窄横幅 / 点数条:结算大卡 + 每格输赢已经写清楚了,台面这一格只留骰子 */
#app .fsstage.fs2 .fsres,#app .fsstage.fs2 .fssum{display:none !important}
/* 开出来以后、结算以前:中的格子一格一格亮(--hd = 第几个) */
#app .fswrap .fscell.hitnow,#app .fswrap .fspair.hitnow{animation:fs2hit .75s ease-out var(--hd,0s) both}
@keyframes fs2hit{0%{box-shadow:inset 0 0 0 0 rgba(31,138,76,0)}45%{box-shadow:inset 0 0 0 4px #1f8a4c,0 0 18px rgba(31,138,76,.85)}100%{box-shadow:inset 0 0 0 3px #1f8a4c,inset 0 0 22px rgba(31,138,76,.3)}}
@media (prefers-reduced-motion:reduce){
  #app .fsstage.fs2 .fs2bowlin,#app .fsstage.fs2 .fs2dice .fsdie.pop,#app .fswrap .fscell.hitnow,#app .fswrap .fspair.hitnow,#app .fsstage.fs2 .fs2cue.on{animation:none}
  #app .fswrap .fbx-bowl .fsstage.fs2{transition:none}
}
/* 开骰时台面不再整片调暗(以前用 filter:brightness,结算那一下切回来时,带版画滤镜的格子偶尔会闪一帧黑)—— 放大的骰盅已经把视线拉过去了 */
#app .fswrap[data-phase="rolling"] .fbx .fscell,#app .fswrap[data-phase="rolling"] .fbx .fspair{filter:none}
