
:root{--bg:#07101f;--panel:#101d31;--line:#263b59;--muted:#91a3bd;--blue:#1464db;--red:#ce2d3a;--green:#15803d;--gold:#f3c85b}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% -15%,#1b3964 0,#091425 42%,#050b14 100%);color:#f8fafc;font-family:Arial,"Noto Sans KR",sans-serif}button,input{font:inherit}.game{width:min(1180px,100%);margin:auto;padding:12px}.top{height:54px;display:flex;align-items:center;gap:12px;padding:0 15px;background:#0d192a;border:1px solid var(--line);border-radius:14px}.brand{font-size:19px;font-weight:900}.shoe{font-size:12px;color:var(--muted)}.top-spacer{flex:1}.wallet{text-align:right}.wallet small{display:block;color:var(--muted);font-size:10px}.wallet b{color:var(--gold)}.rules-btn{border:1px solid #496483;background:#142641;color:#fff;border-radius:9px;padding:8px 11px;cursor:pointer;font-weight:800}.stage{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(310px,.75fr);gap:12px;margin-top:12px}.table{position:relative;min-height:395px;border:1px solid #35604f;border-radius:18px;overflow:hidden;background:radial-gradient(ellipse at 50% 52%,#176243,#0c3c2c 58%,#08291f);box-shadow:inset 0 0 70px #00170faa}.table:before{content:"";position:absolute;inset:34px 7%;border:2px solid #c9aa5660;border-radius:46%}.status{position:absolute;z-index:3;left:50%;top:18px;transform:translateX(-50%);text-align:center}.timer{width:66px;height:66px;margin:auto;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--gold) var(--progress,100%),#ffffff20 0);box-shadow:0 0 22px #f5c95b55}.timer:after{content:"";position:absolute;width:54px;height:54px;border-radius:50%;background:#0b1727}.timer b{position:relative;z-index:1;font-size:21px}.status-label{font-size:12px;font-weight:800;margin-top:6px;color:#f8d979}.hands{position:absolute;inset:105px 7% 78px;display:grid;grid-template-columns:1fr 1fr;gap:18%}.hand{text-align:center}.hand-title{font-weight:900;font-size:17px}.hand.player .hand-title{color:#9fc7ff}.hand.banker .hand-title{color:#ffabb1}.score{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;margin-left:6px;background:#07111e;color:#fff}.cards{display:flex;justify-content:center;gap:7px;margin-top:15px;min-height:96px}.card{width:63px;height:88px;border-radius:7px;background:linear-gradient(145deg,#fff,#e8e8e8);color:#111;box-shadow:0 4px 8px #0008;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:900;font-size:22px}.card.red{color:#dc2626}.card.back{background:repeating-linear-gradient(45deg,#172554 0 5px,#2563eb 5px 10px);border:4px solid #fff}.bet-total{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);font-size:12px;color:#d8e3f3}.side{display:flex;flex-direction:column;gap:12px}.road,.history{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden}.box-title{padding:12px 14px;border-bottom:1px solid var(--line);font-size:13px;font-weight:900}.dots{padding:12px;display:grid;grid-template-columns:repeat(10,1fr);gap:6px;min-height:112px}.dot{aspect-ratio:1;border:3px solid;border-radius:50%;display:grid;place-items:center;font-size:9px;font-weight:900}.dot.player{border-color:#3b82f6;color:#93c5fd}.dot.banker{border-color:#ef4444;color:#fca5a5}.dot.tie{border-color:#22c55e;color:#86efac}.history-tabs{display:flex;border-bottom:1px solid var(--line)}.history-tabs button{flex:1;padding:11px;border:0;background:#0b1627;color:var(--muted);cursor:pointer;font-weight:800}.history-tabs button.on{background:#182a45;color:#fff}.history-list{height:196px;overflow:auto}.hist{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:9px 12px;border-bottom:1px solid #ffffff0c;font-size:11px}.hist b{display:block;font-size:12px}.hist small{color:var(--muted)}.hist strong{color:#f8d979}.empty{padding:35px 10px;text-align:center;color:var(--muted);font-size:12px}.board{margin-top:12px;display:grid;grid-template-columns:1fr .78fr 1fr;gap:7px}.bet{position:relative;min-height:108px;border:1px solid #ffffff32;border-radius:13px;color:#fff;cursor:pointer;overflow:hidden;box-shadow:inset 0 2px #ffffff22}.bet.player,.bet.player_pair{background:linear-gradient(#2459bd,#123b8d)}.bet.banker,.bet.banker_pair{background:linear-gradient(#bd3342,#84202b)}.bet.tie{background:linear-gradient(#26924a,#146630)}.bet span{display:block;font-weight:900;font-size:17px}.bet small{display:block;margin-top:4px;color:#dbeafe}.bet em{display:block;margin-top:8px;font-size:11px;font-style:normal;opacity:.82}.bet.selected{outline:3px solid var(--gold);transform:translateY(-2px)}.pair-row{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:7px}.pair-row .bet{min-height:70px}.controls{display:grid;grid-template-columns:minmax(210px,1fr) 2fr auto;gap:10px;align-items:center;margin-top:10px;padding:12px;background:#0d192a;border:1px solid var(--line);border-radius:14px}.chips{display:flex;gap:7px;overflow:auto}.chip{flex:0 0 46px;width:46px;height:46px;border-radius:50%;border:4px dashed #ffffff80;color:#fff;background:#334155;font-size:10px;font-weight:900;cursor:pointer}.chip.on{outline:3px solid var(--gold);transform:translateY(-3px)}.amount{display:flex;gap:7px}.amount input{width:100%;min-width:0;padding:12px;background:#08111f;border:1px solid var(--line);border-radius:9px;color:#fff}.submit{height:46px;border:0;border-radius:10px;background:linear-gradient(135deg,#f0b936,#e17b19);color:#201300;font-weight:900;padding:0 24px;cursor:pointer}.submit:disabled{filter:grayscale(1);opacity:.5}.notice{min-height:20px;margin-top:8px;text-align:center;font-size:12px;color:#f8d979}.modal{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;padding:18px;background:#000b}.modal.open{display:flex}.dialog{width:min(680px,100%);max-height:90vh;overflow:auto;background:#101d31;border:1px solid #3b526f;border-radius:17px;padding:20px}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog h2{margin:0}.close{border:0;background:none;color:#fff;font-size:25px;cursor:pointer}.rule{padding:13px 0;border-top:1px solid var(--line);font-size:13px;line-height:1.7;color:#cbd5e1}.rule:first-of-type{margin-top:15px}.rule b{color:#fff}.odds-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-top:8px}.odds-grid div{background:#091526;padding:10px;border-radius:8px}.toast{position:fixed;left:50%;top:16px;z-index:80;transform:translate(-50%,-30px);opacity:0;background:#111d30;border:1px solid #5d7595;padding:11px 18px;border-radius:10px;transition:.25s;pointer-events:none}.toast.show{transform:translate(-50%,0);opacity:1}
.history-list.compact{height:128px}@media(max-width:800px){.game{padding:7px}.top{height:48px;padding:0 10px}.brand{font-size:15px}.shoe{display:none}.stage{grid-template-columns:1fr}.table{min-height:325px}.hands{inset:96px 3% 60px;gap:4%}.card{width:48px;height:69px;font-size:18px}.cards{min-height:74px}.road{order:1}.history{order:2}.dots{grid-template-columns:repeat(15,1fr);min-height:auto}.history-list{height:180px}.history-list.compact{height:150px}.board{grid-template-columns:1fr .78fr 1fr}.bet{min-height:91px}.bet span{font-size:14px}.controls{grid-template-columns:1fr}.chips{justify-content:center}.submit{width:100%}.wallet small{display:none}.rules-btn{padding:7px}.odds-grid{grid-template-columns:1fr}.dialog{padding:16px}}

.cards{perspective:900px}.card.deal-card{position:relative;padding:0;background:none;box-shadow:none;opacity:0;transform:translateY(-18px) scale(.94);animation:baccaratDealIn .3s ease-out forwards;animation-delay:var(--deal-delay)}.card-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .62s cubic-bezier(.2,.72,.2,1);animation:baccaratTurn .62s cubic-bezier(.2,.72,.2,1) forwards;animation-delay:calc(var(--deal-delay) + .3s)}.card-face{position:absolute;inset:0;border-radius:7px;backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center}.card-front{background:linear-gradient(145deg,#fff,#e8e8e8);box-shadow:0 4px 8px #0008;transform:rotateY(180deg)}.card-back-face{background:repeating-linear-gradient(45deg,#172554 0 5px,#2563eb 5px 10px);border:4px solid #fff;box-shadow:0 4px 8px #0008}.score.score-reveal{animation:baccaratScoreIn .35s ease-out both;animation-delay:2.9s}@keyframes baccaratDealIn{to{opacity:1;transform:translateY(0) scale(1)}}@keyframes baccaratTurn{0%{transform:rotateY(0)}45%{transform:rotateY(84deg) scale(1.05)}55%{transform:rotateY(96deg) scale(1.05)}100%{transform:rotateY(180deg)}}@keyframes baccaratScoreIn{0%{opacity:0;transform:scale(.6)}65%{opacity:1;transform:scale(1.16)}100%{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.card.deal-card,.card-inner,.score.score-reveal{animation-duration:.01ms!important;animation-delay:0s!important}}
.big-ring .tie-count{position:absolute;z-index:0;inset:0;display:grid;place-items:center;color:#111;font-size:15px;line-height:1;font-style:normal;font-weight:900}.big-ring .tie-slash{z-index:1}