
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
:root{
  --bg:#05060a; --line:#1c2033; --card:#f7f3e8;
  --cyan:#00f0ff; --pink:#ff2a9d; --green:#00ff9d; --gold:#ffd54a; --purple:#9d4dff;
  --red:#e8283c; --ink:#14141c;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{background:radial-gradient(ellipse at 50% 120%,#141a30 0%,#05060a 60%);font-family:'Press Start 2P','Courier New',monospace;color:#e8ecff;display:flex;align-items:center;justify-content:center}
.frame{position:relative;width:98vw;height:98vh;max-width:1500px;display:flex;flex-direction:column;gap:1vh;padding:1vh 1.2vw;border:2px solid var(--line);border-radius:14px;background:linear-gradient(180deg,rgba(10,12,22,.92),rgba(6,7,12,.96));box-shadow:0 0 50px rgba(0,240,255,.15),inset 0 0 80px rgba(0,240,255,.05);overflow:hidden;z-index:0}
.frame::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px);pointer-events:none;z-index:30}
.grid{position:absolute;left:-30%;right:-30%;bottom:-8%;height:55%;background:repeating-linear-gradient(90deg,rgba(0,240,255,.16) 0 2px,transparent 2px 5vw),repeating-linear-gradient(0deg,rgba(0,240,255,.16) 0 2px,transparent 2px 4vh);transform:perspective(45vh) rotateX(60deg);transform-origin:top;pointer-events:none;z-index:0;animation:gridmove 2.2s linear infinite;mask-image:linear-gradient(180deg,transparent,#000 30%);-webkit-mask-image:linear-gradient(180deg,transparent,#000 30%)}
@keyframes gridmove{to{background-position:0 0,0 4vh}}
.topbar{display:flex;align-items:stretch;gap:1vw;z-index:2}
.led{background:#05070d;border:2px solid var(--line);border-radius:8px;padding:.7vh .8vw;display:flex;flex-direction:column;justify-content:center;min-width:11vw;box-shadow:inset 0 0 18px rgba(0,0,0,.8),0 0 12px rgba(0,240,255,.08)}
.led .lbl{font-size:.42rem;letter-spacing:2px;color:#5a6480;margin-bottom:.5vh}
.led .val{font-size:1rem;letter-spacing:1px;white-space:nowrap}
.led.credits .val{color:var(--green);text-shadow:0 0 12px rgba(0,255,157,.8)}
.led.bet .val{color:var(--cyan);text-shadow:0 0 12px rgba(0,240,255,.8)}
.title{flex:1;text-align:center;display:flex;flex-direction:column;justify-content:center;gap:.5vh;min-width:0}
.title .t1{font-size:.5rem;color:var(--pink);text-shadow:0 0 10px var(--pink);letter-spacing:4px}
.title .t2{font-size:clamp(.7rem,1.6vw,1.05rem);color:#fff;text-shadow:0 0 16px var(--cyan),0 0 34px rgba(0,240,255,.55);letter-spacing:3px;white-space:nowrap}
.status{text-align:center;font-size:.5rem;letter-spacing:2px;color:#5f6a8a;z-index:2;min-height:1.4vh}
.status.win{color:var(--green);text-shadow:0 0 10px rgba(0,255,157,.7)}
.status.bad{color:var(--pink);text-shadow:0 0 10px rgba(255,42,157,.7)}
.table{flex:1;display:flex;align-items:center;justify-content:center;position:relative;z-index:2;min-height:0}
.cards{display:flex;gap:.7vw;width:100%;justify-content:center;align-items:center}
.card{flex:1 1 0;aspect-ratio:5/7;max-height:100%;max-width:15vw;perspective:900px;cursor:pointer;position:relative;container-type:inline-size;transition:transform .25s ease}
.card-inner{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(0deg);transition:transform .5s cubic-bezier(.35,1.3,.55,1)}
.card.show .card-inner{transform:rotateY(180deg)}
.card-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:2.5cqw;display:flex;flex-direction:column;justify-content:space-between;padding:4cqw 3.5cqw}
.card-back{background:repeating-linear-gradient(45deg,#101528 0 .9cqw,#0b0f1e .9cqw 1.8cqw);border:.7cqw solid #2a3560;box-shadow:inset 0 0 4cqw rgba(0,240,255,.25),0 1cqw 3cqw rgba(0,0,0,.6);transform:rotateY(0deg)}
.card-front{background:linear-gradient(160deg,#fffdf5,#efe9d6);border:.7cqw solid #d8d0b8;box-shadow:0 1cqw 3cqw rgba(0,0,0,.5);transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.card-back .gem{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:26cqw;color:var(--cyan);text-shadow:0 0 3cqw var(--cyan)}
.card-front{background:linear-gradient(160deg,#fffdf5,#efe9d6);border:.7cqw solid #d8d0b8;box-shadow:0 1cqw 3cqw rgba(0,0,0,.5);transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.corner{display:flex;flex-direction:column;align-items:center;line-height:1.15;font-size:13cqw;z-index:1}
.corner .s{font-size:14cqw}
.corner.bottom{transform:rotate(180deg)}
.pip{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:42cqw;z-index:0}
.red .corner,.red .pip{color:var(--red)}
.black .corner,.black .pip{color:var(--ink)}
.card.held{transform:translateY(-7%)}
.card.held .card-front{box-shadow:0 0 0 1cqw var(--gold),0 0 5cqw rgba(255,213,74,.65),inset 0 0 5cqw rgba(255,213,74,.22)}
.hold-flag{position:absolute;top:-6cqw;left:50%;transform:translateX(-50%) scale(.6);background:linear-gradient(90deg,var(--gold),#ff9d2a);color:#221a00;font-size:6.5cqw;padding:1.2cqw 3cqw;border-radius:1cqw;letter-spacing:.5cqw;opacity:0;transition:opacity .18s,transform .18s;box-shadow:0 0 3cqw rgba(255,213,74,.8);z-index:5;white-space:nowrap}
.card.held .hold-flag{opacity:1;transform:translateX(-50%) scale(1)}
.card.winner .card-front{animation:winpulse .6s ease-in-out infinite alternate}
@keyframes winpulse{from{box-shadow:0 0 0 1cqw var(--gold),0 0 3cqw rgba(255,213,74,.5)}to{box-shadow:0 0 0 1.2cqw #fff,0 0 7cqw rgba(255,213,74,.95)}}
.controls{display:flex;align-items:center;justify-content:center;gap:1.2vw;z-index:2;padding:.4vh 0}
.btn{font-family:inherit;font-size:.58rem;letter-spacing:2px;padding:1.2vh 1.5vw;border-radius:10px;border:2px solid #2a3560;background:linear-gradient(180deg,#1a2140,#0d1126);color:#9fb0d8;cursor:pointer;box-shadow:0 4px 0 #05070f,0 6px 16px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.08);transition:transform .08s,box-shadow .08s,color .15s}
.btn:hover:not(:disabled){color:#fff}
.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #05070f,0 3px 8px rgba(0,0,0,.6)}
.btn:disabled{opacity:.35;cursor:default}
.btn.big{font-size:.8rem;padding:1.5vh 3.2vw;border-color:var(--green);color:var(--green);box-shadow:0 4px 0 #053020,0 0 22px rgba(0,255,157,.35),0 6px 16px rgba(0,0,0,.6)}
.btn.big:hover:not(:disabled){color:#eafff5;box-shadow:0 4px 0 #053020,0 0 34px rgba(0,255,157,.6),0 6px 16px rgba(0,0,0,.6)}
.btn.gold{border-color:var(--gold);color:var(--gold);box-shadow:0 4px 0 #3a2a00,0 0 16px rgba(255,213,74,.28),0 6px 16px rgba(0,0,0,.6)}
.btn.sfx{min-width:12vw;font-size:.45rem}
.paytable{z-index:2;display:grid;grid-template-columns:repeat(auto-fit,minmax(10.5vw,1fr));gap:.5vw;border:2px solid var(--line);border-radius:10px;background:rgba(5,7,13,.85);padding:.8vh 1vw}
.pay-cell{display:flex;justify-content:space-between;align-items:center;gap:.4vw;font-size:.45rem;color:#5f6a8a;padding:.4vh .5vw;border:1px solid transparent;border-radius:5px;letter-spacing:1px}
.pay-cell .amt{color:var(--gold);text-shadow:0 0 8px rgba(255,213,74,.45);white-space:nowrap}
.pay-cell.hit{border-color:var(--gold);color:#ffe9a8;background:rgba(255,213,74,.08);box-shadow:inset 0 0 12px rgba(255,213,74,.18);animation:hitpulse .7s ease-in-out infinite alternate}
.pay-cell.hit .amt{color:var(--gold);text-shadow:0 0 12px rgba(255,213,74,.9)}
@keyframes hitpulse{to{box-shadow:inset 0 0 20px rgba(255,213,74,.35)}}
#fx{position:absolute;inset:0;pointer-events:none;z-index:10}
.flash{position:absolute;inset:0;pointer-events:none;z-index:15;opacity:0}
.flash.go{animation:flash .55s ease-out}
@keyframes flash{from{opacity:.5}to{opacity:0}}
.banner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:20;pointer-events:none;opacity:0;transition:opacity .2s}
.banner.show{opacity:1}
.banner .b-main{font-size:clamp(1rem,3.2vw,2.4rem);letter-spacing:.35em;color:var(--gold);text-shadow:0 0 18px rgba(255,213,74,.9),0 0 50px rgba(255,42,157,.6);animation:bannerpop .55s cubic-bezier(.2,1.6,.4,1) both;text-align:center;padding:0 2vw}
.banner .b-sub{margin-top:1.4vh;font-size:clamp(.5rem,1.3vw,.9rem);color:var(--green);text-shadow:0 0 12px rgba(0,255,157,.8);letter-spacing:.25em}
.banner.lose .b-main{color:var(--pink);text-shadow:0 0 18px rgba(255,42,157,.9),0 0 50px rgba(255,42,157,.4)}
.banner.lose .b-sub{color:#8c8c9a;text-shadow:none}
.banner.over .b-main{color:#fff;text-shadow:0 0 18px var(--cyan),0 0 60px var(--pink)}
.banner.over .b-sub{animation:blink 1s step-end infinite}
@keyframes blink{50%{opacity:.2}}
@keyframes bannerpop{from{transform:scale(.15);opacity:0}to{transform:scale(1);opacity:1}}
.frame.shake{animation:shake .45s}
@keyframes shake{10%{transform:translate(-9px,5px)}30%{transform:translate(8px,-6px)}50%{transform:translate(-6px,4px)}70%{transform:translate(5px,-3px)}90%{transform:translate(-2px,1px)}}
