/* ================= per-game stages ================= */
.stage .shade-top{position:absolute;inset:0 0 auto 0;height:80px;background:linear-gradient(#000a,transparent);pointer-events:none;z-index:1}
.stage.won{box-shadow:inset 0 0 0 2px #22d58b55,inset 0 0 60px #22d58b22}
.stage.lost{box-shadow:inset 0 0 0 2px #ff4d6a40,inset 0 0 60px #ff4d6a18}

/* ---------- CRASH ---------- */
.crash-stage{background:#05070f}
#crash-cv{position:absolute;inset:0;width:100%;height:100%;display:block}
.crash-hist{position:absolute;top:14px;left:16px;right:300px;display:flex;gap:5px;z-index:3;overflow:hidden;mask-image:linear-gradient(90deg,#000 80%,transparent)}
.crash-hist span{flex:none;font-size:13px;font-weight:800;padding:5px 10px;border-radius:99px;background:#000b;font-variant-numeric:tabular-nums}
.crash-hist span:first-child{box-shadow:inset 0 0 0 1px #ffffff40}
.crash-hist .l{color:#ff8b9e}.crash-hist .w{color:#4fe3a6}.crash-hist .g{color:var(--gold)}
.crash-hud{position:absolute;left:50%;top:15%;transform:translateX(-50%);text-align:center;z-index:2;pointer-events:none;min-width:240px}
.crash-phase{font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#b9c6e4;text-shadow:0 2px 8px #000}
.crash-mult{font-size:96px;font-weight:800;letter-spacing:-.03em;line-height:1.05;color:#fff;text-shadow:0 4px 24px #000c,0 0 3px #000,0 0 18px #081228}
.crash-hud.count .crash-mult{font-size:64px;color:#cfe0ff}
.crash-hud.bust .crash-mult{color:var(--lose)}
.crash-hud.bust .crash-phase{color:#ff9fb0}
.crash-bar{width:260px;height:6px;border-radius:99px;background:#ffffff1f;margin:10px auto 0;overflow:hidden;display:none}
.crash-hud.count .crash-bar{display:block}
.crash-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#7fd8ff);border-radius:inherit}
.crash-you{position:absolute;top:14px;right:16px;z-index:3;display:none;align-items:center;gap:8px;padding:8px 14px;border-radius:99px;font-size:14.5px;font-weight:600;
  background:#081228e6;border:1px solid var(--border);backdrop-filter:blur(4px);max-width:62%}
.crash-you .ic{width:17px;height:17px}
.crash-you b{font-weight:800}
.crash-you span{color:var(--muted);font-weight:700}
.crash-you.in,.crash-you.won,.crash-you.queued{display:flex}
.crash-you.in{border-color:#4a80ff88}.crash-you.in .ic{color:var(--accent-hi)}
.crash-you.won{border-color:#22d58b88;color:#c9ffe7}.crash-you.won .ic,.crash-you.won span{color:var(--win)}
.crash-you.queued{border-color:#ffc94a66}.crash-you.queued .ic{color:var(--gold)}
.crash-you .q{color:var(--gold)!important;font-size:13px}

/* ---------- DICE ---------- */
.dice-stage{background-image:linear-gradient(#0008,#000a),url(../assets/game/dice_bg.jpg);display:flex;flex-direction:column;padding:32px 44px 36px}
.dice-arena{flex:1;display:flex;align-items:center;justify-content:center;gap:48px;min-height:0}
.dice-readout{text-align:center;min-width:220px}
.dice-readout small{display:block;font-size:14.5px;font-weight:700;color:#b8d9c6;letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px}
.dice-readout div{font-size:88px;font-weight:800;letter-spacing:-.03em;line-height:1;color:#fff;text-shadow:0 4px 24px #000a;transition:color .2s}
.dice-readout div.rolling{color:#cfe8da}
.dice-readout div.w{color:var(--win);text-shadow:0 0 30px #22d58b66}
.dice-readout div.l{color:var(--lose);text-shadow:0 0 30px #ff4d6a55}
.tumbler{position:relative;width:120px;height:150px;perspective:520px;display:grid;place-items:center}
.cube{width:86px;height:86px;position:relative;transform-style:preserve-3d;transform:rotateX(-24deg) rotateY(32deg);transition:transform .9s cubic-bezier(.2,.75,.25,1)}
.cube .face{position:absolute;inset:0;border-radius:13px;display:grid;place-items:center;backface-visibility:hidden;
  background:radial-gradient(circle at 30% 25%,#7cf2ae,#17a85a 55%,#0b6a37);box-shadow:inset 0 0 0 2px #ffffff30,inset 0 -6px 14px #0006}
.cube .face i{width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,transparent 0 30%,#fff3dd 32% 48%,#f2c27b 50% 66%,transparent 68%);box-shadow:0 2px 4px #0004}
.cube .f1{transform:translateZ(43px)}.cube .f6{transform:rotateY(180deg) translateZ(43px)}
.cube .f2{transform:rotateX(90deg) translateZ(43px)}.cube .f5{transform:rotateX(-90deg) translateZ(43px)}
.cube .f3{transform:rotateY(90deg) translateZ(43px)}.cube .f4{transform:rotateY(-90deg) translateZ(43px)}
.cube-shadow{position:absolute;bottom:4px;left:50%;width:90px;height:16px;margin-left:-45px;border-radius:50%;background:radial-gradient(#000a,transparent 70%)}
.tumbler.toss{animation:toss .9s cubic-bezier(.3,.7,.3,1)}
@keyframes toss{0%{transform:translate(-120px,-50px)}35%{transform:translate(-30px,6px)}55%{transform:translate(0,-22px)}75%{transform:translate(8px,2px)}88%{transform:translate(4px,-5px)}100%{transform:none}}
.scale-wrap{background:#081228cc;border:1px solid #ffffff18;border-radius:16px;padding:54px 26px 14px;backdrop-filter:blur(4px)}
.scale{position:relative;height:14px;border-radius:99px;background:#ffffff14}
.scale .zone{position:absolute;top:0;bottom:0}
.scale .zone.lose{background:linear-gradient(#ff6a80,#d6304d)}
.scale .zone.win{background:linear-gradient(#45f0a8,#16b06e)}
.scale .zone:first-child{border-radius:99px 0 0 99px}
.scale .zone[style*="left: 0%"]{border-radius:99px 0 0 99px}
.scale .zone[style*="width: 100%"],.scale .zone.win:last-of-type{border-radius:0 99px 99px 0}
.pin{position:absolute;top:-46px;left:50%;transform:translateX(-50%);opacity:0;transition:left .45s cubic-bezier(.2,.9,.3,1.15),opacity .2s;z-index:2;pointer-events:none}
.pin.on{opacity:1}
.pin span{display:block;background:#fff;color:#111;font-weight:800;font-size:16px;padding:6px 11px;border-radius:7px;position:relative;font-variant-numeric:tabular-nums;box-shadow:0 6px 16px #0008}
.pin span:after{content:"";position:absolute;left:50%;bottom:-5px;transform:translateX(-50%);border:5px solid transparent;border-bottom:0;border-top-color:#fff}
.pin.w span{background:var(--win);color:#04241a}.pin.w span:after{border-top-color:var(--win)}
.pin.l span{background:var(--lose);color:#fff}.pin.l span:after{border-top-color:var(--lose)}
.scale input[type=range]{-webkit-appearance:none;appearance:none;position:absolute;left:-11px;right:-11px;width:calc(100% + 22px);top:-8px;height:28px;background:transparent;margin:0;z-index:1}
.scale input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:32px;border-radius:6px;background:linear-gradient(#fff,#dfe6f5);box-shadow:0 4px 12px #000a,inset 0 0 0 2px #ffffffaa;cursor:grab}
.scale input[type=range]::-moz-range-thumb{width:22px;height:28px;border-radius:6px;background:#fff;border:0;cursor:grab}
.scale input[type=range]:disabled::-webkit-slider-thumb{cursor:not-allowed;opacity:.8}
.scale-ticks{display:flex;justify-content:space-between;color:#c4d6ca;font-weight:700;font-size:13.5px;margin-top:10px}

/* ---------- MINES ---------- */
.mines-stage{background-image:linear-gradient(#0007,#000b),url(../assets/game/mines_bg.jpg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px}
.mines-hud{display:flex;gap:8px}
.mines-hud span{font-size:14.5px;font-weight:600;color:#e7c9cf;background:#000a;border:1px solid #ffffff14;border-radius:99px;padding:5px 11px}
.mines-hud b{color:#fff}
.mgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;width:min(100%, calc(var(--stage-h) - 90px));padding:10px;border-radius:14px;background:#0009;border:1px solid #ffffff12;transition:box-shadow .3s}
.mines-stage.live .mgrid{box-shadow:0 0 0 1px #6f8dff55,0 0 40px -10px #4a80ff}
.mines-stage.hit .mgrid{animation:hitflash .6s}
@keyframes hitflash{0%,100%{box-shadow:0 0 0 1px #ff4d6a00}30%{box-shadow:0 0 0 2px #ff4d6a,0 0 60px #ff4d6a88}}
.mtile{position:relative;aspect-ratio:1;border:0;padding:0;background:none;cursor:pointer;perspective:500px}
.mtile:disabled{cursor:default}
.mt-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .38s cubic-bezier(.3,.7,.3,1.2)}
.mtile:not(:disabled):hover .mt-inner{transform:translateY(-3px) scale(1.03)}
.mtile:not(:disabled):active .mt-inner{transform:scale(.96)}
.mtile.open .mt-inner{transform:rotateY(180deg)}
.mt-front,.mt-back{position:absolute;inset:0;border-radius:10px;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.mt-front{background:url(../assets/game/mines_tile.jpg) center/cover;box-shadow:0 4px 0 #120c2e,0 6px 12px #0008;transition:filter .2s}
.mtile:disabled:not(.open) .mt-front{filter:saturate(.6) brightness(.75)}
.mines-stage.live .mtile:not(:disabled) .mt-front{filter:none}
.mtile:not(:disabled):hover .mt-front{filter:brightness(1.18)}
.mt-back{transform:rotateY(180deg);display:grid;place-items:center;background:radial-gradient(circle,#2a1a3d,#120a1c)}
.mt-back img{width:80%;height:80%;object-fit:contain;filter:drop-shadow(0 4px 8px #000a)}
.mtile.safe .mt-back{background:radial-gradient(circle,#3a2350,#160d22);box-shadow:inset 0 0 0 2px #ff9fd0aa,0 0 18px -4px #ff7ac0}
.mtile.mine .mt-back{background:radial-gradient(circle,#5a1420,#1c060a);box-shadow:inset 0 0 0 2px #ff4d6a}
.mtile.ghost .mt-back{opacity:.4;box-shadow:none;filter:saturate(.4)}
.mtile.boom{z-index:2}
.mburst{position:absolute;inset:-45%;width:190%;height:190%;pointer-events:none;animation:mburst .8s ease-out forwards;z-index:3}
@keyframes mburst{0%{transform:scale(.3);opacity:1}60%{opacity:1}100%{transform:scale(1.15);opacity:0}}

/* ---------- PLINKO ---------- */
#plinko-stage{background:#12040f}
#plinko-cv{display:block;width:100%;height:100%}

/* ---------- LIMBO ---------- */
.limbo-stage{background-image:linear-gradient(#0005,#0007),url(../assets/game/limbo_bg.jpg)}
.gauge{position:absolute;left:30px;top:130px;bottom:56px;width:10px;border-radius:99px;background:#ffffff1c;z-index:2}
.gfill{position:absolute;left:0;right:0;bottom:0;height:0;border-radius:99px;background:linear-gradient(#ffd16a,#ff8a2b)}
.gauge .tick{position:absolute;left:20px;transform:translateY(50%);font-size:12.5px;font-weight:700;color:#ffffffa0;white-space:nowrap}
.gauge .tick:before{content:"";position:absolute;left:-14px;top:50%;width:6px;height:1px;background:#ffffff60}
.gtarget{position:absolute;left:-5px;width:18px;height:3px;background:#fff;border-radius:3px;transform:translateY(50%);transition:bottom .25s}
.gtarget span{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:10px;font-weight:800;color:#fff;background:var(--accent);padding:2px 5px;border-radius:4px;display:none}
.limbo-sky{position:absolute;inset:0}
.limbo-num{position:absolute;top:22px;left:0;right:0;text-align:center;z-index:3}
.limbo-num small{display:block;font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#ffd9b5;text-shadow:0 2px 6px #000}
.limbo-num div{font-size:80px;font-weight:800;letter-spacing:-.03em;line-height:1.05;color:#fff;text-shadow:0 4px 22px #000b}
.limbo-num div.w{color:var(--win)} .limbo-num div.l{color:var(--lose)}
.limbo-lane{position:absolute;left:110px;right:48px;top:130px;bottom:56px}
.limbo-line{position:absolute;left:0;right:0;height:0;border-top:2px dashed #ffffffb0;transform:translateY(50%);transition:bottom .25s,border-color .2s;z-index:1}
.limbo-line span{position:absolute;right:0;top:-30px;font-size:12.5px;font-weight:800;letter-spacing:.1em;color:#fff;background:#000a;padding:3px 7px;border-radius:4px}
.limbo-stage.won .limbo-line{border-top-color:var(--win)} .limbo-stage.won .limbo-line span{background:var(--win);color:#04241a}
.limbo-stage.lost .limbo-line{border-top-color:var(--lose)} .limbo-stage.lost .limbo-line span{background:var(--lose)}
.limbo-donut{position:absolute;left:50%;bottom:0;width:84px;height:84px;transform:translate(-50%,50%);z-index:2}
.limbo-donut img{position:relative;width:100%;height:100%;filter:drop-shadow(0 6px 10px #0009);z-index:1}
.limbo-donut .aura{position:absolute;inset:-26px;border-radius:50%;background:radial-gradient(circle,#ffd77a88,transparent 65%);opacity:0;transition:opacity .2s}
.limbo-stage.charging .aura{opacity:1;animation:charge .42s ease-in}
@keyframes charge{0%{transform:scale(.4)}100%{transform:scale(1.15)}}
.limbo-stage.charging .limbo-donut img{animation:shiver .42s linear}
@keyframes shiver{0%,100%{transform:none}25%{transform:translateX(-1px) rotate(-3deg)}75%{transform:translateX(1px) rotate(3deg)}}
.limbo-donut .trail{position:absolute;left:50%;top:50%;width:26px;height:0;margin-left:-13px;border-radius:0 0 13px 13px;background:linear-gradient(#ffd77acc,#ff8a2b00);transition:height .2s}
.limbo-stage.flying .limbo-donut .trail{height:150px}
.limbo-stage.won .limbo-donut .aura{opacity:1;background:radial-gradient(circle,#22d58b88,transparent 65%)}
.limbo-stage.lost .limbo-donut img{filter:grayscale(.6) drop-shadow(0 6px 10px #0009)}
.limbo-pad{position:absolute;left:50%;bottom:-38px;width:140px;height:20px;margin-left:-70px;border-radius:50%;background:radial-gradient(#ffd77a66,transparent 70%)}

/* ---------- PLAYING CARDS (blackjack + hi-lo) ---------- */
.pcard{--w:94px;--h:132px;position:relative;width:var(--w);height:var(--h);flex:none;perspective:700px}
.pcard.lg{--w:150px;--h:210px}
.pcard.xs{--w:42px;--h:58px}
.pc-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .42s cubic-bezier(.3,.7,.3,1)}
.pcard.down .pc-inner{transform:rotateY(180deg)}
.pc-front,.pc-back{position:absolute;inset:0;border-radius:calc(var(--w) * .09);backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 8px 20px #0009}
.pc-back{transform:rotateY(180deg);background:#1d3fa8 url(../assets/game/card_back.jpg) center/cover;box-shadow:0 8px 20px #0009,inset 0 0 0 2px #ffffff90}
.pc-front{background:linear-gradient(160deg,#ffffff,#f1ece3);color:#1a1d2a;box-shadow:0 8px 20px #0009,inset 0 0 0 1px #00000018}
.pcard.red .pc-front{color:#d42a46}
.pc-cn{position:absolute;display:flex;flex-direction:column;align-items:center;font-weight:800;line-height:.95;font-size:calc(var(--w) * .21)}
.pc-cn i{font-style:normal;font-size:.85em}
.pc-cn.tl{top:6%;left:8%}.pc-cn.br{bottom:6%;right:8%;transform:rotate(180deg)}
.pc-pip,.pc-ace{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--w) * .5)}
.pc-ace{font-size:calc(var(--w) * .58)}
.pc-ace:before{content:"";position:absolute;width:62%;aspect-ratio:1;border-radius:50%;border:2px solid currentColor;opacity:.18}
.pc-court{position:absolute;inset:18% 20%;border-radius:5px;border:2px solid currentColor;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2%;
  background:repeating-linear-gradient(45deg,#00000008 0 4px,transparent 4px 8px)}
.pc-court b{font-size:calc(var(--w) * .34);line-height:1}
.pc-court svg{width:38%;height:auto}
.pc-court i{font-style:normal;font-size:calc(var(--w) * .16)}
.pcard.xs .pc-pip,.pcard.xs .pc-ace,.pcard.xs .pc-court,.pcard.xs .pc-cn.br{display:none}
.pcard.xs .pc-cn.tl{top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px}
.pcard.leaving{transition:opacity .2s,transform .2s;opacity:0;transform:translateY(-14px) scale(.96)}
.shoe-card{position:absolute;inset:0;border-radius:6px;background:#1d3fa8 url(../assets/game/card_back.jpg) center/cover;box-shadow:0 3px 8px #0009,inset 0 0 0 2px #ffffff90}
.shoe-card:nth-child(2){transform:translate(3px,-3px)}.shoe-card:nth-child(3){transform:translate(6px,-6px)}

/* ---------- BLACKJACK ---------- */
.bj-stage{background-image:url(../assets/game/felt.jpg);background-position:center top}
.bj-stage:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 55%,transparent 40%,#0007);pointer-events:none}
.shoe{position:absolute;top:26px;right:40px;width:64px;height:90px;z-index:1}
.shoe:after{content:"SHOE";position:absolute;left:0;right:-6px;bottom:-22px;text-align:center;font-size:11px;font-weight:800;letter-spacing:.14em;color:#cfe0ff88}
.bj-zone{position:absolute;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:2}
.bj-zone.dealer{top:26px}
.bj-zone.player{bottom:26px}
.bj-zone .hand{display:flex;min-height:132px;padding:0 10px}
.bj-zone .hand .pcard+.pcard{margin-left:-42px}
.total{display:flex;align-items:center;gap:7px;padding:5px 7px 5px 13px;border-radius:99px;background:#081228e6;border:1px solid #ffffff1f;font-size:13px;font-weight:700;color:#b9c8ee;transition:box-shadow .2s,border-color .2s}
.total b{background:#ffffff14;color:#fff;border-radius:99px;padding:3px 11px;font-size:16px;min-width:30px;text-align:center;font-variant-numeric:tabular-nums}
.total.bust b{background:var(--lose)}
.bj-zone.turn .total{border-color:#4a80ff;box-shadow:0 0 0 3px #2f6bff33}
.bj-zone.turn .total small:after{content:" · to act";color:var(--accent-hi)}
.bj-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.96);z-index:3;padding:10px 22px;border-radius:99px;font-weight:800;font-size:18px;
  background:#081228ee;border:1px solid #ffffff22;opacity:0;transition:opacity .2s,transform .25s;white-space:nowrap;pointer-events:none}
.bj-banner.on{opacity:1;transform:translate(-50%,-50%)}
.bj-banner.turn{border-color:#4a80ff;color:#cfe0ff}
.bj-banner.win{background:var(--win);color:#04241a;border-color:transparent}
.bj-banner.loss{background:#2b0710e6;color:#ff9fb0;border-color:#ff4d6a66}
.bj-banner.push{color:#fff}
.bet-spot{position:absolute;left:40px;bottom:40px;width:104px;height:104px;border-radius:50%;border:2px dashed #ffffff40;display:grid;place-items:center;z-index:1}
.bet-spot.on{border-color:#ffc94a99}
.bet-spot span{position:absolute;bottom:-24px;left:50%;transform:translateX(-50%);font-size:13.5px;font-weight:800;white-space:nowrap;color:#fff;background:#000a;padding:2px 7px;border-radius:99px}
.bet-spot span:empty{display:none}
.chipstack{position:relative;width:52px;height:52px;display:flex;gap:4px;justify-content:center}
.chipstack .stack{position:relative;width:58px;height:58px}
.chipstack .stack+.stack{margin-left:-14px}
.chipstack img{position:absolute;left:0;top:0;width:58px;height:58px;transform:translateY(calc(var(--i) * -4px));filter:drop-shadow(0 2px 2px #0009);animation:chipin .25s backwards}
@keyframes chipin{from{transform:translateY(-30px);opacity:0}}
.bj-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:8px}
.bj-actions.two{grid-template-columns:1fr 1fr;margin-top:0}
.bj-actions .btn{padding:0 8px;gap:6px;height:48px}
.bj-actions .btn .ic{width:14px;height:14px}

/* ---------- COINFLIP ---------- */
.cf-stage{background-image:url(../assets/game/coin_bg.jpg);display:flex;flex-direction:column;align-items:center;justify-content:center}
.cf-call{position:absolute;top:20px;left:50%;transform:translateX(-50%);font-size:15px;font-weight:700;color:#c8d6f5;background:#000a;border:1px solid #ffffff1a;border-radius:99px;padding:5px 12px;z-index:2}
.cf-call b{color:#fff}
.cf-toss{perspective:900px;margin-top:-20px;z-index:1}
.cf-coin{position:relative;width:224px;height:224px;transform-style:preserve-3d;transition:transform 1.3s cubic-bezier(.2,.65,.25,1)}
.cf-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:50%}
.cf-face img{width:100%;height:100%;display:block;filter:drop-shadow(0 0 1px #0006)}
.cf-face.heads{transform:translateZ(6.6px)}
.cf-face.tails{transform:rotateX(180deg) translateZ(6.6px)}
.cf-edge{position:absolute;inset:3px;border-radius:50%;background:radial-gradient(circle,#c79a3c,#8a6420)}
.cf-shadow{width:190px;height:26px;border-radius:50%;background:radial-gradient(#000c,transparent 70%);margin-top:26px;opacity:.6}
.cf-landed{position:absolute;bottom:80px;left:50%;transform:translate(-50%,6px);font-size:16px;font-weight:700;color:#d6e2ff;opacity:0;transition:.25s;white-space:nowrap}
.cf-landed.on{opacity:1;transform:translate(-50%,0)}
.cf-landed b{font-size:19px;color:#fff}
.cf-landed.w b{color:var(--win)}.cf-landed.l b{color:var(--lose)}
.cf-pick{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cf-pick button{display:flex;align-items:center;gap:10px;height:58px;font-size:15.5px;padding:0 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);color:var(--muted);font-weight:700;cursor:pointer;transition:.15s}
.cf-pick button img{width:38px;height:38px}
.cf-pick button:hover:not(:disabled){color:var(--text);border-color:#3a3f4a}
.cf-pick button.on{border-color:var(--accent);background:#2f6bff18;color:var(--text);box-shadow:inset 0 0 0 1px var(--accent)}
.cf-pick button:disabled{cursor:not-allowed;opacity:.6}

/* ---------- KENO ---------- */
.keno-stage{background-image:linear-gradient(#0006,#0009),url(../assets/game/keno_bg.jpg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:14px 20px}
.keno-tray{display:flex;gap:8px;padding:8px 12px;border-radius:99px;background:#0009;border:1px solid #ffffff14}
.kslot{width:44px;height:44px;border-radius:50%;background:#ffffff0d;box-shadow:inset 0 2px 6px #0008;position:relative}
.kball{position:absolute;inset:-1px;animation:roll .32s cubic-bezier(.3,.8,.3,1.2)}
.kball img{width:100%;height:100%;display:block}
.kball b{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;font-weight:800;color:#2b1650}
.kball.hit img{filter:hue-rotate(-60deg) saturate(1.4)}
@keyframes roll{from{transform:translateY(-26px) rotate(-180deg);opacity:0}to{transform:none;opacity:1}}
.kgrid{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;width:min(100%,680px)}
.ktile{position:relative;aspect-ratio:1.35;border:1px solid #ffffff14;border-radius:8px;background:linear-gradient(#2a2044,#1b142e);color:#d9cff7;font-weight:800;font-size:18px;cursor:pointer;
  box-shadow:inset 0 -3px 0 #0006;transition:transform .12s,background .15s,opacity .15s;font-variant-numeric:tabular-nums}
.ktile:hover:not(:disabled){transform:translateY(-2px);background:linear-gradient(#352a58,#221a3a)}
.ktile:disabled{cursor:default}
.ktile.pick{background:linear-gradient(#5a92ff,#2f5fe0);color:#fff;border-color:#9fbfff88}
.ktile.full:not(.pick){opacity:.45;cursor:not-allowed}
.ktile.miss{color:#ff8fa2;box-shadow:inset 0 0 0 2px #ff4d6a99}
.ktile.hit{background:linear-gradient(#ffe08a,#f2a93b);color:#3a2205;border-color:#fff3;box-shadow:0 0 18px -2px #ffc94a;animation:pop .3s}
.ktile.hit:after{content:"";position:absolute;right:3px;top:3px;width:12px;height:12px;border-radius:50%;background:radial-gradient(circle,transparent 0 28%,#fff8 30% 60%,transparent 62%)}
@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.08)}100%{transform:scale(1)}}
.paytbl{display:flex;gap:4px;width:min(100%,680px);margin-bottom:48px}
.paytbl div{flex:1;text-align:center;background:#000a;border:1px solid #ffffff14;border-radius:6px;padding:5px 0;font-size:13.5px;min-width:0}
.paytbl div b{display:block;font-weight:800}
.paytbl div.zero b{color:var(--dim)}
.paytbl small{display:block;color:var(--muted);font-weight:600;font-size:11.5px}
.paytbl div.on{border-color:var(--gold);background:#ffc94a22}.paytbl div.on b{color:var(--gold)}
.paytbl .hint{color:#d9cff7;font-weight:600;font-size:14.5px;padding:8px}

/* ---------- HI-LO ---------- */
.hl-stage{background-image:linear-gradient(#0004,#0008),url(../assets/game/hilo_bg.jpg);display:flex;flex-direction:column;padding:12px 16px}
.hl-stage.bust{animation:hitflash2 .6s}
@keyframes hitflash2{30%{box-shadow:inset 0 0 0 2px var(--lose),inset 0 0 80px #ff4d6a55}}
.hl-streak{display:flex;gap:8px;min-height:80px;overflow-x:auto;scrollbar-width:none;padding:4px;border-radius:10px;background:#0007;border:1px solid #ffffff12}
.hl-streak:empty:before{content:"Your streak shows up here";margin:auto;color:#b5dad4;font-size:14.5px;font-weight:600}
.hl-step{position:relative;flex:none;animation:fade .25s}
.hl-step em{position:absolute;bottom:-4px;right:-4px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-style:normal;background:#333a;color:#fff}
.hl-step em .ic{width:11px;height:11px}
.hl-step.up em{background:var(--win);color:#04241a}.hl-step.down em{background:var(--win);color:#04241a}
.hl-step.bust em{background:var(--lose)}.hl-step.skip em{background:#555c6c}.hl-step.start em{background:var(--accent)}
.hl-step.skip .pcard{opacity:.5}
.hl-table{flex:1;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;min-height:0}
.hl-deck{position:relative;width:88px;height:124px;justify-self:end}
.hl-deck small{position:absolute;left:0;right:-6px;bottom:-24px;text-align:center;font-size:11px;font-weight:800;letter-spacing:.14em;color:#cde9e5aa}
.hl-slot{position:relative;width:150px;height:210px;display:grid}
.hl-slot .pcard{grid-area:1/1}
.hl-meter{justify-self:start;display:flex;flex-direction:column;gap:12px;min-width:230px}
.mrow{display:grid;grid-template-columns:1fr;gap:4px;background:#081228cc;border:1px solid #ffffff18;border-radius:10px;padding:10px 12px}
.mrow span{display:flex;align-items:center;gap:7px;font-size:14.5px;font-weight:700}
.mrow span .ic{width:14px;height:14px}
.mrow i{display:block;height:6px;border-radius:99px;background:#ffffff14;position:relative;overflow:hidden}
.mrow i:after{content:"";position:absolute;inset:0 auto 0 0;width:calc(var(--p) * 100%);border-radius:inherit;transition:width .3s}
.mrow.hi i:after{background:var(--win)}.mrow.lo i:after{background:#ff8a5b}
.mrow.hi .ic{color:var(--win)}.mrow.lo .ic{color:#ff8a5b}
.mrow b{font-size:16px;font-variant-numeric:tabular-nums}
.hl-msg{text-align:center;font-weight:700;font-size:16.5px;color:#d9f0ec;margin-bottom:60px;min-height:20px}
.hl-msg.w{color:var(--win)}.hl-msg.l{color:#ff9fb0}
.hl-choices{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.hl-choice{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:center;text-align:left;padding:8px 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);cursor:pointer;transition:.15s}
.hl-choice .ic{grid-row:span 2;width:18px;height:18px}
.hl-choice .t{font-size:14.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hl-choice .p{font-size:13.5px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.hl-choice.hi .ic{color:var(--win)}.hl-choice.lo .ic{color:#ff8a5b}
.hl-choice.hi:hover:not(:disabled){border-color:#22d58b88;background:#22d58b12}
.hl-choice.lo:hover:not(:disabled){border-color:#ff8a5b88;background:#ff8a5b12}
.hl-choice:disabled{opacity:.5;cursor:not-allowed}

@media (max-width:900px){
  .dice-arena{gap:16px}.dice-readout div{font-size:46px}.dice-stage{padding:18px}
  .crash-mult{font-size:46px}
  .hl-table{grid-template-columns:auto auto;justify-content:center}.hl-meter{display:none}
  .limbo-num div{font-size:44px}
  .bet-spot{left:14px;bottom:14px;transform:scale(.8)}
  .shoe{right:16px}
}
@media (prefers-reduced-motion: reduce){
  .cube,.cf-coin,.mt-inner,.pc-inner{transition-duration:.01ms!important}
}

/* ---------- result pill placement per stage ---------- */
.crash-stage .outcome{bottom:74px}
.dice-stage .outcome{bottom:auto;top:14px}
.bj-stage .outcome{bottom:auto;top:calc(50% + 26px)}
.mines-stage .mgrid{width:min(100%, calc(var(--stage-h) - 150px))}
.mines-stage{justify-content:flex-start;padding-top:14px}
/* keno balls: number on a clean white disc */
.kball b{inset:22%;border-radius:50%;background:#fff;font-size:13.5px;color:#2b1650;box-shadow:inset 0 0 0 1px #0001}
.kball.hit img{filter:none}
.kball.hit{border-radius:50%;box-shadow:0 0 0 2px var(--gold),0 0 12px var(--gold)}
/* hi-lo choices: full width rows so labels and odds never clip */
.hl-choices{grid-template-columns:1fr}
.hl-choice{grid-template-columns:auto 1fr auto;grid-template-rows:auto;padding:0 14px;height:50px}
.hl-choice .ic{grid-row:auto}
.hl-choice .p{text-align:right}
@media (max-width:900px){
  #bj-stage,#hl-stage,#keno-stage{height:520px}
  .bj-zone.dealer{top:18px}.bj-zone.player{bottom:18px}
}
.mt-front{filter:brightness(1.2) saturate(1.15)}
.mtile:disabled:not(.open) .mt-front{filter:brightness(.95) saturate(.9)}
.mines-stage.live .mtile:not(:disabled) .mt-front{filter:brightness(1.25) saturate(1.2)}
.mtile:not(:disabled):hover .mt-front{filter:brightness(1.45) saturate(1.25)}

/* ================= pass 5 ================= */
/* ---------- DICE: the bar is the game ---------- */
.dice-stage{background-image:radial-gradient(ellipse 80% 70% at 50% 40%,#1f8a55,#0f5a37 60%,#0a3d27);justify-content:center;gap:44px;padding:40px 56px}
.dice-hero{text-align:center}
.dice-hero small{display:block;font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#c8eedb}
.dice-num{font-size:112px;font-weight:800;letter-spacing:-.04em;line-height:1.02;color:#fff;transition:color .2s}
.dice-num.rolling{color:#d9f3e6}
.dice-num.w{color:#3dffa8;text-shadow:0 0 40px #2fe08f55}
.dice-num.l{color:#ff7088;text-shadow:0 0 40px #ff547044}
.dice-legend{display:flex;gap:10px;justify-content:center;margin-top:12px}
.dice-legend span{font-size:14px;font-weight:700;padding:6px 12px;border-radius:99px;background:#0a2a1cb0;border:1px solid #ffffff18}
.dice-legend .lz{color:#ff9aab}.dice-legend .wz{color:#6fffc0}
.dice-stage .scale-wrap{padding:62px 30px 16px;background:#06231ab0}
.dice-stage .scale{height:24px}
.dice-stage .scale input[type=range]{top:-6px;height:36px}
.dice-stage .scale input[type=range]::-webkit-slider-thumb{width:30px;height:38px;border-radius:8px}
.dice-stage .pin{top:-54px}
.dice-stage .pin span{font-size:18px;padding:7px 13px}
.pin.rolling{transition:left .085s linear}
.dice-stage .scale-ticks{font-size:13px;color:#cfeedd}

/* ---------- CRASH: countdown ring + colour tiers ---------- */
.crash-hud{top:11%}
.crash-ring{position:relative;display:grid;place-items:center;margin:4px auto 0}
.crash-hud.count .crash-ring{width:190px;height:190px;margin-top:12px}
.crash-hud.count .crash-ring:before{content:"";position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(var(--cyan) calc(var(--p, 0) * 360deg), #ffffff1c 0);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 9px),#000 calc(100% - 8px));mask:radial-gradient(farthest-side,transparent calc(100% - 9px),#000 calc(100% - 8px))}
.crash-hud.count .crash-ring:after{content:"";position:absolute;inset:14px;border-radius:50%;background:#0a1631c0;z-index:-1}
.crash-hud.count .crash-mult{font-size:58px}
.crash-mult .x{font-size:.55em;margin-left:3px;opacity:.85}
.crash-hud.fly.t2 .crash-mult{color:#a9e4ff}
.crash-hud.fly.t3 .crash-mult{color:var(--gold)}
.crash-mult{font-size:104px}

/* ---------- LIMBO ---------- */
.limbo-stage{background-image:url(../assets/game/limbo_bg2.jpg)}
.limbo-num{top:18px;display:flex;justify-content:center;gap:12px}
.lbx{min-width:200px;background:#0a1631cc;border:1px solid #ffffff22;border-radius:14px;padding:8px 20px 10px;text-align:center;transition:border-color .2s,background .2s}
.lbx small{display:block;font-size:12.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#c9d6f2}
.lbx b{display:block;font-size:50px;font-weight:800;line-height:1.05;letter-spacing:-.02em;color:#fff}
.lbx.tgt b{color:#ffe08a}
.lbx b.w{color:var(--win)}.lbx b.l{color:var(--lose)}
.limbo-stage.won .lbx.res{border-color:#2fe08f99;background:#0b2a22d9}
.limbo-stage.lost .lbx.res{border-color:#ff547088;background:#2a0e1ad9}
.limbo-lane{top:150px}
.gauge{top:150px}
.limbo-donut{width:92px;height:128px;transform:translate(-50%,64%)}
.limbo-donut img{width:100%;height:100%;object-fit:contain;clip-path:inset(0 0 30% 0);transition:clip-path .15s}
.limbo-stage.charging .limbo-donut img,.limbo-stage.flying .limbo-donut img{clip-path:inset(0)}
.limbo-donut .aura{inset:-20px -20px 20px -20px}
.limbo-donut .trail{display:none}
.limbo-pad{display:none}
.limbo-rline{position:absolute;left:0;right:0;height:0;border-top:3px solid #fff;transform:translateY(50%);opacity:0;transition:opacity .2s;z-index:1}
.limbo-rline.on{opacity:1}
.limbo-rline.w{border-color:var(--win)}.limbo-rline.l{border-color:var(--lose)}
.limbo-rline span{position:absolute;left:0;top:-32px;font-size:14px;font-weight:800;padding:4px 10px;border-radius:6px;color:#fff;background:#0a1631e6}
.limbo-rline.w span{background:var(--win);color:#03261a}.limbo-rline.l span{background:var(--lose)}
.limbo-line{border-top-width:3px}
.limbo-line span{font-size:13px;padding:4px 9px}

/* ---------- KENO: board + payout ladder ---------- */
.keno-stage{background-image:url(../assets/game/keno_bg2.jpg);display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:18px;padding:20px 22px;align-items:stretch;justify-content:stretch}
.keno-main{display:flex;flex-direction:column;justify-content:center;gap:14px;min-width:0;padding-bottom:64px}
.keno-tray{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:16px;background:#140d2ccc;border:1px solid #ffffff18}
.keno-tl{font-size:12.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#cbbdf3;white-space:nowrap}
.keno-slots{display:flex;gap:8px;flex-wrap:wrap}
.kslot{width:44px;height:44px;border-radius:50%;background:#ffffff0f;box-shadow:inset 0 2px 6px #0007;position:relative}
.kball{position:absolute;inset:0;border-radius:50%;display:grid;place-items:center;animation:roll .32s cubic-bezier(.3,.8,.3,1.2);
  background:radial-gradient(circle at 50% 50%,#fff 0 46%,#7b55e0 47% 60%,#fff 61%);box-shadow:inset 0 -3px 0 #0002,0 3px 8px #0006}
.kball b{position:static;inset:auto;background:none;font-size:15px;font-weight:800;color:#2b1650;box-shadow:none}
.kball.hit{background:radial-gradient(circle at 50% 50%,#fff6d6 0 46%,#f2a93b 47% 60%,#ffe08a 61%);box-shadow:0 0 0 2px var(--gold),0 0 14px #ffc94a88}
.keno-board{background:#140d2ccc;border:1px solid #ffffff18;border-radius:16px;padding:14px}
.keno-bh{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:700;color:#d9cff7;margin:0 2px 12px}
.keno-bh #keno-bh2{color:var(--gold)}
.kgrid{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;width:100%}
.ktile{aspect-ratio:1.3;border:0;border-radius:10px;background:linear-gradient(180deg,#43307e,#36266a);color:#f1ecff;font-size:19px;font-weight:800;
  box-shadow:inset 0 2px 0 #ffffff1c,0 3px 0 #1c1240;transition:transform .12s,background .15s,opacity .15s}
.ktile:hover:not(:disabled){transform:translateY(-2px);background:linear-gradient(180deg,#5440a0,#43307e)}
.ktile.pick{background:linear-gradient(180deg,#5b97ff,#3a6fe0);color:#fff;box-shadow:inset 0 2px 0 #ffffff40,0 3px 0 #1d3f99,0 0 0 2px #ffffff55}
.ktile.full:not(.pick){opacity:.4}
.ktile.miss{background:#2a1f52;color:#ff8ea2;box-shadow:inset 0 0 0 2px #ff547099}
.ktile.pick.miss{background:linear-gradient(180deg,#5b97ff,#3a6fe0);color:#fff;box-shadow:inset 0 0 0 2px #ff5470;opacity:1}
.ktile.hit{background:linear-gradient(180deg,#ffe08a,#f2a93b);color:#3a2205;box-shadow:inset 0 2px 0 #fff8,0 3px 0 #a86a12,0 0 18px -2px #ffc94a}
.ktile.hit:after{width:14px;height:14px;right:5px;top:5px;background:radial-gradient(circle,transparent 0 30%,#fff 32% 62%,transparent 64%)}
.keno-ladder{display:flex;flex-direction:column;gap:5px;padding:14px;border-radius:16px;background:#140d2ccc;border:1px solid #ffffff18;overflow:auto;margin-bottom:64px}
.kl-h{font-size:12.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#cbbdf3;margin-bottom:4px}
#keno-pay{display:flex;flex-direction:column;gap:4px}
.kl-row{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border-radius:8px;font-size:14.5px;font-weight:700;color:#e8e1ff;background:#ffffff08;transition:background .15s}
.kl-row b{font-variant-numeric:tabular-nums}
.kl-row.zero{opacity:.45}
.kl-row.live{background:#4285ff;color:#fff;opacity:1}
.kl-row.on:not(.live){background:var(--gold);color:#2a1d00;opacity:1}
.kl-empty{font-size:14px;color:#cbbdf3;line-height:1.45}
.keno-stage .outcome{left:calc(50% - 115px)}
@media (max-width:900px){
  .keno-stage{grid-template-columns:1fr;padding:12px}
  .keno-ladder{display:none}
  .keno-main{padding-bottom:56px}
  .keno-tl{display:none}
  .kslot{width:30px;height:30px}.kball b{font-size:12px}
  .ktile{font-size:15px}
  .keno-stage .outcome{left:50%}
}

/* ---------- BLACKJACK: flat, simple felt ---------- */
.bj-stage{background:radial-gradient(ellipse 80% 70% at 50% 45%,#2468cc 0%,#1a4f9e 55%,#123a7a 100%)}
.bj-stage:before{display:none}
.bj-stage:after{content:"";position:absolute;left:6%;right:6%;top:-62%;height:100%;border-radius:50%;border:2px solid #ffffff1c;pointer-events:none}
.bj-print{position:absolute;left:0;right:0;top:calc(26px + 132px + 74px);text-align:center;pointer-events:none;z-index:1}
.bj-print b{display:block;font-size:13px;letter-spacing:.24em;color:#ffffff45}
.bj-print span{display:block;font-size:11.5px;letter-spacing:.14em;color:#ffffff30;text-transform:uppercase;margin-top:3px}
.bet-spot{border:2px solid #ffffff30;background:#ffffff0a}
.bet-spot.on{border-color:#ffffff66}
.chipstack{display:flex;align-items:center;justify-content:center}
.fchip{width:56px;height:56px;border-radius:50%;flex:none;display:block;
  background:radial-gradient(circle,#fff 0 18%,#2f6ae6 19% 52%,#fff 53% 57%,#2f6ae6 58%);border:5px dashed #fff;box-shadow:0 4px 0 #173f8f,0 8px 14px #0006;animation:chipin .25s backwards}
.fchip+.fchip{margin-left:-20px}
.pc-back,.shoe-card{background:radial-gradient(circle,transparent 0 13%,#ffffff70 14% 21%,transparent 22%),repeating-linear-gradient(45deg,#3a74ea 0 7px,#2f63d3 7px 14px);box-shadow:0 6px 16px #0007,inset 0 0 0 3px #fff}
.total{background:#0b2350e6}
.bj-banner{background:#0b2350f0}

/* ---------- MINES: flat tiles on a flat backdrop ---------- */
.mines-stage{background-image:radial-gradient(ellipse 80% 70% at 50% 40%,#a8243f,#6e1530 60%,#4a0f22)}
.mt-front{background:radial-gradient(circle,transparent 0 20%,#ffffff2e 21% 29%,transparent 30%),linear-gradient(180deg,#4a73d6,#3356b0);box-shadow:inset 0 3px 0 #ffffff33,0 5px 0 #1d2f6e,0 8px 14px #0006;filter:none}
.mtile:disabled:not(.open) .mt-front{filter:saturate(.75) brightness(.9)}
.mines-stage.live .mtile:not(:disabled) .mt-front{filter:none}
.mtile:not(:disabled):hover .mt-front{filter:brightness(1.15)}
.mt-back{background:#2b1030}
.mtile.safe .mt-back{background:#3a1f4f;box-shadow:inset 0 0 0 3px #ff9fd0}
.mtile.mine .mt-back{background:#3a0c18;box-shadow:inset 0 0 0 3px var(--lose)}
.mgrid{background:#2a0a18aa}
.bet-spot:not(.on):before{content:"BET";font-size:12px;font-weight:800;letter-spacing:.2em;color:#ffffff50}

.keno-slots{flex-wrap:nowrap;gap:6px}
.keno-stage .kslot{width:clamp(28px,3.1vw,40px);height:clamp(28px,3.1vw,40px)}
.keno-stage .kball b{font-size:clamp(11px,1.1vw,14px)}
.keno-tray{flex-direction:column;align-items:stretch;gap:8px}
.keno-slots{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;flex-wrap:initial}
.keno-stage .kslot{width:100%;height:auto;aspect-ratio:1;max-width:44px;justify-self:center}
.keno-stage .kball b{font-size:clamp(11px,1.05vw,15px)}
.ktile.hit:after{width:10px;height:10px;right:4px;top:4px}
