/* ══════════════════════════════════════════════════════════════════════
   BUILD 144:西游跑灯 2D 机台 —— 外圈一圈灯(Canvas),圈里面是押注台(5 列 × 3 行)+ 下面一条操作栏。
   BUILD 156:改成全服同一把(下注倒数 → 跑灯 → 结果),画风改国风工笔:红漆金边的台面、掐丝珐琅的灯牌、墨线勾边。
   BUILD 166:改回单机(押好按「开始」)+ 动态赔率 + BIG BONUS:26 盏灯(上排正中南天门、下排正中水帘洞),
     南天门两边 = 彩金 / BIG BONUS 转盘,水帘洞两边 = 庄和闲 / 路单(这四块的框在 Canvas 里画,彩金数字和路单是 DOM 叠上去的);
     「开始」大金钮、快速档、彩金大画面、赔率跳动。
   横屏外壳沿用 landscape.css 的 .lswrap(竖拿手机时整体转 90°)。
   ══════════════════════════════════════════════════════════════════════ */
#app .jlwrap{--jltop:40px;--gold:#d9a83c;--gold2:#f7dd8a;--gold3:#8a5a10;--lac1:#7a1610;--lac2:#3a0806;--cellbg1:#3a0c08;--cellbg2:#1c0503;--ink:#f7e9c8;position:relative;background:#0b1c2a;color:var(--ink);overflow:hidden;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#app .jlwrap *{touch-action:manipulation}
#app .jlstage{position:absolute;left:0;right:0;top:var(--jltop);bottom:0}
#app .jlstage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#app .jltop{z-index:6}
#app .jltop .lsname i{color:#ffd98a}

/* 路单:最近 8 把(下排水帘洞右边那一块里;框在 Canvas 里画) */
#app .jlroad{position:absolute;z-index:4;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:4px;padding:6px 8px;box-sizing:border-box;overflow:hidden;pointer-events:none}
#app .jlroad b{position:relative;flex:0 0 auto;width:calc(var(--jlbox,56px) * .3);height:calc(var(--jlbox,56px) * .3);min-width:15px;min-height:15px;max-width:24px;max-height:24px;border-radius:50%;display:grid;place-items:center;font:900 10px/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#fff;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.35),transparent 55%),var(--c);box-shadow:inset 0 0 0 2px rgba(0,0,0,.35),0 0 0 1px var(--gold);text-shadow:0 1px 2px rgba(0,0,0,.6)}
#app .jlroad b.jp{box-shadow:0 0 0 2px #ffd84a,0 0 10px #ffd84a}
#app .jlroad b i{position:absolute;right:-3px;bottom:-3px;width:10px;height:10px;border-radius:50%;font:800 7px/10px sans-serif;font-style:normal;text-align:center;background:#1a1206;color:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.4)}
#app .jlroad b i.b0{background:#c8281e}#app .jlroad b i.b1{background:#c89a10}#app .jlroad b i.b2{background:#1a9a44}
#app .jlroad b em{position:absolute;left:-3px;top:-3px;width:9px;height:9px;border-radius:50%;background:#6a6a70;box-shadow:0 0 0 1px rgba(255,255,255,.5)}
#app .jlroad b.won em{background:#ffd84a;box-shadow:0 0 0 1px #fff6c0,0 0 6px #ffd84a}

/* 彩金牌:上排南天门左边那一块(框在 Canvas 里画,这里只放字) */
#app .jljp{position:absolute;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px 6px;box-sizing:border-box;pointer-events:none}
#app .jljp i{font:900 calc(var(--jlbox,56px) * .17)/1 "Arial Black","KaiTi","STKaiti",serif;font-style:normal;letter-spacing:.14em;color:#ffe9a0;text-shadow:0 1px 0 #3a2a00}
#app .jljp b{max-width:100%;box-sizing:border-box;overflow:hidden;font:900 var(--jljpf,16px)/1 var(--num,ui-monospace,monospace);color:#fff3c8;letter-spacing:.01em;padding:3px 7px;border-radius:6px;background:#0c0302;box-shadow:inset 0 0 0 1px rgba(255,220,140,.3);
  text-shadow:0 0 8px rgba(255,210,100,.6);white-space:nowrap}

/* 圈里面:押注台 + 操作栏(开奖时收下去)—— 红漆金边 */
#app .jlin{position:absolute;z-index:3;overflow:hidden;border-radius:12px;pointer-events:none}
#app .jlpanel{position:absolute;inset:0;display:flex;flex-direction:column;gap:5px;padding:6px;border-radius:12px;pointer-events:auto;
  background:linear-gradient(180deg,#5a0e0a,#2a0604 60%,#1c0402);box-shadow:inset 0 0 0 2px var(--gold),inset 0 0 0 4px #3a1a04,inset 0 0 0 5px rgba(247,221,138,.35),0 8px 24px rgba(0,0,0,.6);
  transition:transform .45s cubic-bezier(.6,-.05,.3,1),opacity .45s;will-change:transform}
#app .jlpanel::before{content:"";position:absolute;inset:6px;border-radius:9px;pointer-events:none;background:
  radial-gradient(circle at 12% 18%,rgba(255,220,140,.08),transparent 26%),radial-gradient(circle at 88% 82%,rgba(255,220,140,.08),transparent 26%)}
#app .jlpanel.down{transform:translateY(106%);opacity:.3;pointer-events:none}
#app .jltab{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,.86fr);grid-template-rows:repeat(3,minmax(0,1fr));gap:4px;position:relative;z-index:1}
#app .jlcell{all:unset;box-sizing:border-box;position:relative;cursor:pointer;min-width:0;min-height:0;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:1fr auto;column-gap:5px;align-items:center;padding:3px 7px 3px 4px;border-radius:8px;overflow:hidden;
  background:linear-gradient(180deg,var(--cellbg1),var(--cellbg2));box-shadow:inset 0 0 0 1.5px var(--gold),inset 0 0 0 3px rgba(0,0,0,.35),0 2px 4px rgba(0,0,0,.45);touch-action:manipulation}
#app .jlcell::after{content:"";position:absolute;left:0;right:0;top:0;height:40%;background:linear-gradient(180deg,rgba(255,230,170,.08),transparent);pointer-events:none}
#app .jlcell .jlface{grid-row:1 / 3;height:var(--jlface,40px);width:var(--jlface,40px);display:block}
#app .jlcell .jlo{justify-self:end;font:900 var(--jlodds,22px)/1 "KaiTi","STKaiti",var(--num,ui-monospace,monospace);color:#f7dd8a;text-shadow:0 0 6px rgba(255,200,90,.45),0 1px 0 #200}
#app .jlcell .jlo small{font-size:.58em;opacity:.8;margin-right:1px}
#app .jlcell .jlo b{font:inherit;display:inline-block;min-width:1.2em;text-align:right}
#app .jlcell.odflash .jlo{animation:jlodd .5s ease-out}
@keyframes jlodd{0%{color:#fff;text-shadow:0 0 14px #fff,0 0 22px #ffd84a;transform:scale(1.25)}100%{transform:none}}
#app .jlcell .jlmy{justify-self:end;min-height:12px;font:800 var(--jlmyf,12px)/1 var(--num,ui-monospace,monospace);color:#fff2c0;padding:2px 6px;border-radius:5px;background:rgba(0,0,0,.35);box-shadow:inset 0 0 0 1px rgba(217,168,60,.3)}
#app .jlcell .jltot{position:absolute;left:5px;top:3px;font:700 9px/1 var(--num,ui-monospace,monospace);color:rgba(255,230,170,.62);letter-spacing:.02em}
#app .jlcell .jlwin{position:absolute;right:5px;top:3px;font:900 11px/1 var(--num,sans-serif);color:#fff;background:#d02a1e;border-radius:5px;padding:2px 4px;opacity:0;transform:scale(.6);transition:all .25s;box-shadow:0 0 0 1px var(--gold)}
#app .jlcell.mine{box-shadow:inset 0 0 0 2px #ffe9a0,0 0 10px rgba(255,216,74,.55)}
#app .jlcell.won{animation:jlwon .7s ease-in-out 4}
#app .jlcell.won .jlwin{opacity:1;transform:none}
#app .jlcell:active{transform:scale(.97)}
#app .jlcell:disabled{cursor:default;filter:saturate(.7) brightness(.85)}
#app .jlcell.bp{grid-template-columns:auto minmax(0,1fr)}
#app .jlcell .jlbp{grid-row:1 / 3;display:grid;place-items:center;height:calc(var(--jlface,40px) - 2px);min-width:calc(var(--jlface,40px) + 2px);padding:0 6px;border-radius:8px;
  font:900 calc(var(--jlface,40px) * .46)/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#fff8e0;text-shadow:0 1px 2px rgba(0,0,0,.6);
  background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.3),transparent 60%),var(--c);box-shadow:inset 0 0 0 2px rgba(0,0,0,.3),0 0 0 2px var(--gold)}
@keyframes jlwon{0%,100%{box-shadow:inset 0 0 0 2px #ffe27a,0 0 6px rgba(255,216,74,.5)}50%{box-shadow:inset 0 0 0 3px #fff,0 0 22px rgba(255,216,74,.95)}}

/* 操作栏:筹码 · 本把押 · 赢 · 撤销 · 清除 · 续押 */
#app .jlbar{flex:0 0 auto;display:flex;align-items:center;gap:6px;min-width:0;position:relative;z-index:1}
#app .jlchips{display:flex;gap:4px;flex:0 1 auto;min-width:0}
#app .jlchip{all:unset;box-sizing:border-box;cursor:pointer;flex:0 0 auto;width:calc(34px * var(--jlk,1));height:calc(34px * var(--jlk,1));border-radius:50%;display:grid;place-items:center;font:900 calc(11px * var(--jlk,1))/1 var(--num,sans-serif);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.7);
  background:radial-gradient(circle at 50% 50%,var(--c) 0 50%,#f7dd8a 51% 58%,var(--c) 59% 78%,#8a5a10 79%);box-shadow:inset 0 0 0 1px rgba(0,0,0,.28),0 2px 3px rgba(0,0,0,.5);transition:transform .15s}
#app .jlchip.on{transform:translateY(-4px) scale(1.08);box-shadow:inset 0 0 0 1px rgba(0,0,0,.28),0 0 0 2px #ffe27a,0 0 12px rgba(255,216,74,.8)}
#app .jllcd{flex:0 1 auto;min-width:64px;display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:3px 8px;border-radius:7px;background:#160302;box-shadow:inset 0 0 0 1px rgba(217,168,60,.45)}
#app .jllcd i{font:800 calc(9px * var(--jlk,1))/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;font-style:normal;color:rgba(255,230,160,.7);letter-spacing:.08em}
#app .jllcd b{font:900 calc(15px * var(--jlk,1))/1 var(--num,ui-monospace,monospace);color:#ffd84a;text-shadow:0 0 6px rgba(255,200,60,.5)}
#app .jllcd.win b{color:#9dffc0;text-shadow:0 0 6px rgba(80,255,150,.5)}
#app .jlbtn{all:unset;box-sizing:border-box;cursor:pointer;flex:0 0 auto;height:calc(34px * var(--jlk,1));padding:0 calc(10px * var(--jlk,1));border-radius:8px;display:grid;place-items:center;font:800 calc(12px * var(--jlk,1))/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#fff2c0;letter-spacing:.06em;
  background:linear-gradient(180deg,#4a1c10,#2a0a06);box-shadow:inset 0 0 0 1px var(--gold),0 2px 4px rgba(0,0,0,.4)}
#app .jlbtn:disabled{opacity:.4;cursor:default}
#app .jlbtn.re{background:linear-gradient(180deg,#f7dd8a,#d9a83c 55%,#a06a10);color:#3a1400;box-shadow:inset 0 0 0 1px #fff6c0,0 0 0 1px #6a3a06,0 3px 8px rgba(0,0,0,.5);font-weight:900}
#app .jlgo{all:unset;box-sizing:border-box;cursor:pointer;flex:0 0 auto;margin-left:auto;height:calc(40px * var(--jlk,1));min-width:calc(92px * var(--jlk,1));padding:0 16px;border-radius:10px;display:grid;place-items:center;
  font:900 calc(17px * var(--jlk,1))/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;letter-spacing:.2em;color:#3a1400;text-shadow:0 1px 0 rgba(255,255,255,.4);
  background:linear-gradient(180deg,#fff2b0,#f0c050 45%,#c88a18 55%,#a06a10);box-shadow:inset 0 0 0 1px #fff6c0,0 0 0 2px #6a3a06,0 4px 10px rgba(0,0,0,.55);transition:transform .12s,filter .2s}
#app .jlgo.ready{animation:jlgoPulse 1.4s ease-in-out infinite}
#app .jlgo:active{transform:scale(.95)}
#app .jlgo:disabled{filter:grayscale(.7) brightness(.7);cursor:default;animation:none}
#app .jlgo.nope{animation:jlnope .35s}
@keyframes jlgoPulse{0%,100%{box-shadow:inset 0 0 0 1px #fff6c0,0 0 0 2px #6a3a06,0 4px 10px rgba(0,0,0,.55)}50%{box-shadow:inset 0 0 0 1px #fff6c0,0 0 0 2px #6a3a06,0 0 18px rgba(255,216,74,.9)}}
@keyframes jlnope{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
#app .jltop .jlsp{flex:1 1 auto}
#app .jltop .jlturbo.on{background:linear-gradient(180deg,#f7dd8a,#c88a18);color:#3a1400;border-color:#fff2b0}
#app .jlfoot{flex:0 0 auto;display:flex;justify-content:space-between;gap:8px;min-width:0;padding:0 4px;position:relative;z-index:1}
#app .jlfoot span{font:700 calc(10px * var(--jlk,1))/1.2 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:rgba(255,235,190,.8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#app .jlfoot span:empty{display:none}
#app .jllcd.lose b{color:#ff9a8a;text-shadow:0 0 6px rgba(255,120,100,.5)}
#app .jlres em{font:700 12px/1.2 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;font-style:normal;color:rgba(255,235,190,.85)}
#app .jlnote{flex:1 1 auto;min-width:0;text-align:right;font:700 10.5px/1.2 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:rgba(255,235,190,.75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 开奖时的大字 / 结果 / 赢家 */
#app .jlban{position:absolute;left:50%;top:var(--jlbanY,calc(var(--jltop) + 22%));z-index:5;transform:translate(-50%,-50%) scale(.6);opacity:0;pointer-events:none;white-space:nowrap;transition:opacity .2s}
#app .jlban b{display:block;padding:calc(6px * var(--jlk,1)) calc(20px * var(--jlk,1));border-radius:14px;font:900 calc(clamp(16px,2.9vw,28px) * var(--jlk,1))/1.1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#fff6dc;letter-spacing:.08em;
  background:linear-gradient(180deg,rgba(40,8,4,.9),rgba(14,2,0,.92));box-shadow:0 0 0 2px var(--gold),0 0 0 4px rgba(0,0,0,.5),0 0 30px var(--c,#ffd166);text-shadow:0 0 12px var(--c,#ffd166),0 2px 0 #000}
#app .jlban.on{animation:jlban var(--dur,1.9s) ease-out forwards}
@keyframes jlban{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}20%{transform:translate(-50%,-50%) scale(1)}85%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
#app .jlres{position:absolute;left:50%;top:calc(var(--jltop) + 27%);z-index:5;transform:translate(-50%,-50%) scale(.8);opacity:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 26px;border-radius:14px;
  background:linear-gradient(180deg,rgba(60,10,6,.92),rgba(20,4,2,.94));box-shadow:0 0 0 2px var(--gold),0 0 0 4px rgba(0,0,0,.5),0 10px 30px rgba(0,0,0,.6);transition:opacity .25s,transform .25s}
#app .jlres.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
#app .jlres i{font:700 13px/1.2 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;font-style:normal;color:#ffe9b0;letter-spacing:.06em}
#app .jlres b{font:900 clamp(22px,4vw,40px)/1 var(--num,sans-serif);color:#ffd84a;text-shadow:0 0 16px rgba(255,200,60,.8)}
#app .jlres.lose b{color:#ff9a8a;text-shadow:none;font-size:clamp(18px,3vw,28px)}
#app .jlres.win{box-shadow:0 0 0 3px #ffd84a,0 0 40px rgba(255,210,60,.7)}

/* 彩金大画面:整台暗下来,正中一块金牌,数字从 0 数上去 */
#app .jljpx{position:absolute;left:0;right:0;top:var(--jltop);bottom:0;z-index:7;display:grid;place-items:center;pointer-events:none;opacity:0;transition:opacity .35s;
  background:radial-gradient(ellipse at center,rgba(60,20,0,.55),rgba(0,0,0,.82) 70%)}
#app .jljpx.on{opacity:1}
#app .jljpx .jpxbox{display:flex;flex-direction:column;align-items:center;gap:10px;transform:scale(.7);transition:transform .5s cubic-bezier(.2,1.6,.4,1)}
#app .jljpx.on .jpxbox{transform:none}
#app .jljpx .jpxring{width:clamp(130px,26vh,220px);height:clamp(130px,26vh,220px);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  background:radial-gradient(circle at 40% 30%,#8a3ac8,#3a0a6a 70%);box-shadow:0 0 0 6px #f7dd8a,0 0 0 11px #8a5a10,0 0 0 13px #f7dd8a,0 0 60px 10px rgba(255,210,80,.8);animation:jpxspin 6s linear infinite}
#app .jljpx .jpxring b{font:900 clamp(34px,8vh,64px)/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#fff3c8;letter-spacing:.1em;text-shadow:0 0 16px #ffd84a,0 3px 0 #3a1400}
#app .jljpx .jpxring i{font:900 clamp(12px,2.6vh,18px)/1 "Arial Black",sans-serif;font-style:normal;letter-spacing:.3em;color:#ffe9a0}
#app .jljpx .jpxamt{font:900 clamp(30px,8vh,64px)/1 var(--num,sans-serif);color:#ffd84a;padding:8px 26px;border-radius:14px;background:linear-gradient(180deg,#3a0a06,#140200);
  box-shadow:0 0 0 3px #f7dd8a,0 0 40px rgba(255,210,60,.8);text-shadow:0 0 18px rgba(255,210,60,.9)}
#app .jljpx .jpxsub{font:700 13px/1.3 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#ffe9b0;min-height:1em}
@keyframes jpxspin{0%{filter:hue-rotate(0deg)}100%{filter:hue-rotate(30deg)}}

/* 台面窄(竖拿手机整体转 90° 之后):操作栏挤一挤,筹码 / 按钮一个都不许被盖住 */
#app .jlwrap.tight .jlbar{gap:4px}
#app .jlwrap.tight .jlchips{gap:3px}
#app .jlwrap.tight .jlchip{width:30px;height:30px;font-size:10px}
#app .jlwrap.tight .jlbtn{height:30px;padding:0 7px;font-size:11px}
#app .jlwrap.tight .jllcd{min-width:50px;padding:2px 6px}#app .jlwrap.tight .jllcd b{font-size:13px}
#app .jlwrap.tight .jlnote{display:none}
#app .jlwrap.tight .jlgo{min-width:70px;height:34px;padding:0 10px;font-size:15px;letter-spacing:.1em}

/* 矮屏(手机横着):再挤一点 */
@media (max-height:420px){
  #app .jlchip{width:30px;height:30px;font-size:10px}
  #app .jlbtn{height:30px;padding:0 8px;font-size:11px}
  #app .jllcd{min-width:54px;padding:2px 6px}#app .jllcd b{font-size:13px}
  #app .jlgo{height:34px;min-width:76px;font-size:15px}
}
@media (prefers-reduced-motion:reduce){#app .jlcell.won,#app .jlgo.ready,#app .jlcell.odflash .jlo,#app .jljpx .jpxring{animation:none}#app .jlpanel{transition:none}}

/* ══════════ BUILD 169:改回全服同一把(下注 15 秒 → 开奖 → 结果)—— 顶栏的场次 / 倒数、操作栏右边的钟、赢家一排、格子里的全场合计 ══════════ */
#app .jlphase{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:118px;height:28px;padding:0 12px;border-radius:99px;
  background:linear-gradient(180deg,rgba(60,10,6,.92),rgba(30,4,2,.94));border:1px solid rgba(217,168,60,.7);box-shadow:0 0 0 1px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,230,160,.12)}
#app .jlphase b{font:900 12px/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;color:#ffe9b0;letter-spacing:.08em;white-space:nowrap}
#app .jlphase i{display:block;width:100%;height:3px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden;font-style:normal}
#app .jlphase i::after{content:"";display:block;height:100%;width:var(--p,0%);background:linear-gradient(90deg,#f7dd8a,#d9a83c);transition:width .25s linear}
#app .jlphase.bet b{color:#fff2c0}#app .jlphase.spin b{color:#ffb070}#app .jlphase.res b{color:#a8f0c0}
#app .jlphase.last b{animation:jlblink .5s steps(2,end) infinite}
@keyframes jlblink{50%{opacity:.35}}
#app .jlwatch{font:700 10px/1 var(--display,sans-serif);color:rgba(255,235,190,.7);white-space:nowrap}
/* 操作栏最右:倒数的钟(原来「开始」的位置)—— 金色圆角牌,上面一行字、下面大数字,底下一条慢慢缩短的金线;最后 5 秒变红闪 */
#app .jlclock{flex:0 0 auto;margin-left:auto;position:relative;overflow:hidden;min-width:calc(78px * var(--jlk,1));height:calc(40px * var(--jlk,1));padding:0 12px;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  background:linear-gradient(180deg,#fff2b0,#f0c050 45%,#c88a18 55%,#a06a10);box-shadow:inset 0 0 0 1px #fff6c0,0 0 0 2px #6a3a06,0 4px 10px rgba(0,0,0,.55);color:#3a1400}
#app .jlclock i{font:900 calc(9.5px * var(--jlk,1))/1 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;font-style:normal;letter-spacing:.14em;opacity:.8}
#app .jlclock b{font:900 calc(20px * var(--jlk,1))/1 var(--num,ui-monospace,monospace);font-variant-numeric:tabular-nums;text-shadow:0 1px 0 rgba(255,255,255,.4)}
#app .jlclock::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:var(--p,0%);background:#3a1400;opacity:.55;transition:width .25s linear}
#app .jlclock.last{background:linear-gradient(180deg,#ffb0a0,#e8392e 50%,#a0180e);color:#fff;box-shadow:inset 0 0 0 1px #ffd0c0,0 0 0 2px #5a0a04,0 0 16px rgba(255,80,50,.7);animation:jlclk .5s steps(2,end) infinite}
#app .jlclock.last b{text-shadow:0 0 8px rgba(255,255,255,.6)}
#app .jlclock.spin,#app .jlclock.res{filter:grayscale(.55) brightness(.8)}
@keyframes jlclk{50%{filter:brightness(1.25)}}
#app .jlwinners{position:absolute;left:50%;top:calc(var(--jltop) + 27% + 58px);transform:translateX(-50%);z-index:5;display:flex;flex-wrap:wrap;justify-content:center;gap:3px;max-width:72%;pointer-events:none;opacity:0;transition:opacity .3s}
#app .jlres.lose ~ .jlwinners{top:calc(var(--jltop) + 27% + 48px)}
#app .jlwinners.on{opacity:1}
#app .jlwinners span{font:700 10.5px/1.25 "KaiTi","STKaiti","PingFang SC","Microsoft YaHei",serif;padding:4px 9px;border-radius:8px;background:rgba(40,8,4,.88);border:1px solid rgba(217,168,60,.55);color:#ffe9b0;white-space:nowrap}
#app .jlwinners span b{color:#9dffc0;margin-left:4px}
#app .jlwinners span.jp{border-color:#ffd84a;color:#fff3c8}
#app .jlwrap.tight .jlclock{min-width:62px;height:34px;padding:0 8px}#app .jlwrap.tight .jlclock b{font-size:17px}
@media (max-height:420px){ #app .jlphase{min-width:104px;height:26px} #app .jlclock{height:34px;min-width:66px} #app .jlclock b{font-size:17px} }
@media (max-width:760px){ #app .jlwatch{display:none} }
@media (prefers-reduced-motion:reduce){ #app .jlphase.last b,#app .jlclock.last{animation:none} }
#app .jlcell .jlmy:empty{visibility:hidden}   /* 没押的格子不留空框 */
