*{box-sizing:border-box}body{margin:0;background:#131c29;color:#fff;font-family:Arial,"PingFang TC",sans-serif;min-height:100vh;display:flex;align-items:center;justify-content:center}button,input{font:inherit}button{cursor:pointer;color:inherit;border:0;background:#ffffff19}button:disabled{opacity:.45;cursor:default}#stage{width:min(100vw,160vh);aspect-ratio:1.6;position:relative;overflow:hidden;background:#125b78;font-size:clamp(10px,1.15vw,18px)}#dealer{position:absolute;width:100%;height:80%;object-fit:cover;object-position:center top}.shade{position:absolute;inset:0;background:linear-gradient(90deg,#173344bf,transparent 25%,transparent 75%,#173344bf),linear-gradient(0deg,#15324c 0%,#163753aa 28%,transparent 52%);pointer-events:none}header{position:absolute;top:1%;left:1%;right:1%;display:flex;align-items:center;gap:1%;font-weight:bold}header button{width:2.8em;height:2.8em;border:1px solid #ffffff30;border-radius:50%;background:#17262f80}header small{font-weight:normal}.right{margin-left:auto;display:flex;gap:.5em}#banner{position:absolute;top:8%;left:38%;width:24%;padding:1em;text-align:center;background:linear-gradient(90deg,transparent,#151925aa,transparent);font-weight:bold;pointer-events:none}#banner:empty{display:none}#timer{position:absolute;top:57%;left:48.5%;border:3px solid #67b990;border-radius:50%;width:3em;height:3em;display:none;align-items:center;justify-content:center;background:#102c2480;font-size:1.1em}#tableCards{position:absolute;inset:0;pointer-events:none}.paper{position:absolute;width:4.4%;height:7.1%;background:#f6f5ef;border-radius:5%;box-shadow:0 1px 2px #0006;color:#141719;transform:perspective(600px) rotateX(44deg);display:flex;align-items:center;justify-content:center;font-size:2em;font-weight:bold}.paper i{position:absolute;left:9%;top:2%;font-size:.48em;font-style:normal}.paper.redCard{color:#b82b36}.paper.appear{animation:turn .65s ease-out}@keyframes turn{from{transform:perspective(600px) rotateX(100deg) translateY(-8px);opacity:.1}to{transform:perspective(600px) rotateX(44deg);opacity:1}}.tabs{position:absolute;right:.2%;top:26%;display:grid;gap:.5em}.tabs button{writing-mode:vertical-rl;padding:.9em .5em;background:#ffffff24;border-radius:8px 0 0 8px}#betPanel{position:absolute;left:30%;width:40%;bottom:1%;}#betGrid{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:4.8em 4.8em 8.5em;gap:2px}#betGrid button{position:relative;text-align:left;background:#ffffff21;border-radius:7px;padding:.45em;transition:background .2s;overflow:hidden}#betGrid button:hover{background:#ffffff38}.side{grid-column:span 2}.pair{grid-column:span 3}#betGrid .tie{grid-column:4/span 2;grid-row:2/span 2;text-align:center!important}.main{grid-column:span 3;grid-row:3}.main[data-bet=banker]{grid-column:6/span 3}.pair[data-bet=bp]{grid-column:6/span 3}.blue span{color:#60a2f4}.red span{color:#f46980}.green span{color:#76db9c}#betGrid span{font-size:1.35em;font-weight:bold}#betGrid .main span,#betGrid .tie span{font-size:2em}#betGrid b{position:absolute;bottom:.65em;left:.4em;font-size:1.15em;font-style:italic}#betGrid .tie b{bottom:1em!important;left:0!important;width:100%;text-align:center}#betGrid small{position:absolute;bottom:.7em;right:.4em;font-size:.7em}#betGrid em{display:block;font-style:normal;font-size:.8em;opacity:.8}.mini{position:absolute;right:.5em;top:.5em;display:flex;gap:2px}.mini .card{background:white;color:#111;font-size:1.2em;padding:2px;border-radius:2px}.betChip{position:absolute;top:47%;left:43%;width:2.1em;height:2.1em;border-radius:50%;border:3px dashed white;background:#b68c41;display:grid;place-items:center;font-size:.85em;color:white;box-shadow:0 0 0 2px #8d6336}.betChip.pending{opacity:.6}.winning{box-shadow:inset 0 0 25px #ffc451!important}.balance{display:flex;justify-content:space-between;gap:.5em;font-size:.66em;margin:1em 0}.balance button{background:transparent}footer{display:flex;align-items:center;justify-content:space-between;gap:.3em}footer button{height:2.9em;min-width:2.9em;border-radius:50%;background:#ffffff26}footer #ai{border-radius:2em;white-space:nowrap;font-size:.8em;padding:0 .7em}#chips{display:flex;gap:.6em}#chips button{width:2.8em;height:2.8em;background:#f0eee3;color:#664724;border:4px dashed #d0b45f;font-size:.9em;font-weight:bold;box-shadow:0 0 0 2px #6a5e41}#chips button.selected{box-shadow:0 0 9px 4px #f9e297}#chips button:nth-child(2){border-color:#b15049}#chips button:nth-child(3){border-color:#935bbc}#clear{background:#b24950b0}#confirm{background:#70b993bb}#repeat{background:#c68c5a90}#allin{background:#705fac;font-size:.75em}.localmark{position:absolute;top:4.8%;left:1%;font-size:.6em;opacity:.65}#chat{position:absolute;left:.5%;bottom:1%;width:29%;}.message{font-size:.8em;padding:.8em;display:inline-block;background:#ffffff17;border-radius:2em;margin-bottom:1em}.quick{display:flex;gap:3px;white-space:nowrap;overflow:hidden}.quick button{font-size:.65em;padding:.7em;border-radius:6px}form{display:flex;background:#ffffff14;border-radius:2em;padding:.4em;margin:.5em 0;font-size:.7em}form input{background:none;border:0;color:white;min-width:0;width:60%;outline:none}form button{background:#677ca444;border-radius:1em}form label{display:flex;white-space:nowrap;align-items:center;color:#85deaf}form label input{width:auto}#beads{height:11.8em;background:#10263966;border-radius:6px;display:grid;grid-template-rows:repeat(6,1fr);grid-auto-flow:column;grid-auto-columns:1.8em;padding:.4em;overflow:hidden}.bead{border-radius:50%;height:1.65em;width:1.65em;display:grid;place-items:center;font-size:.8em;background:#416bd2}.bead.banker{background:#d85869}.bead.tie{background:#4ea273}#roadPanel{position:absolute;right:.5%;bottom:1%;width:29%;background:#10263966;border-radius:6px}#stats{font-size:.7em;text-align:right;padding:.5em;background:#ffffff15;border-radius:8px}#road{width:100%;height:11em;display:block}dialog{background:#203348;color:white;border:1px solid #ffffff30;border-radius:12px;max-width:80%;max-height:80%;overflow:auto;min-width:350px}dialog::backdrop{background:#0009}#close{float:right;border-radius:50%;padding:.4em}#dialogBody{padding:1.5em;line-height:1.6}dialog table{border-collapse:collapse;width:100%;font-size:.8em}dialog td,dialog th{padding:.5em;border-bottom:1px solid #ffffff20}dialog button{padding:.6em;border-radius:6px}dialog input{padding:.5em} @media(max-width:700px){#stage{font-size:8px}footer{gap:1px}#chips{gap:3px}#chat form{font-size:6px}dialog{min-width:80vw}}

#stage{font-size:clamp(8px,.95vw,15px)}#betGrid{grid-template-rows:4em 4em 8em}#chips button{border:0;background-color:transparent;background-size:100% 100%;color:#54361e;box-shadow:none}#chips button.selected{box-shadow:0 0 8px 3px #fff5bc}#confirm,#clear,#repeat,#allin{background-color:transparent;background-size:100% 100%;font-size:0;width:35px;height:35px;min-width:35px}#confirm{background-image:url(assets/bet-confirm.png.webp)}#clear{background-image:url(assets/bet-cancel.png.webp)}#repeat{background-image:url(assets/bet-repeat.png.webp)}#allin{background-image:url(assets/bet-all-in.png.webp)}#chipsConfig{background:transparent url(assets/bet-chip-setting.png.webp) center/100% no-repeat;font-size:0;width:35px;height:35px}#tableCards canvas{position:absolute;top:0;left:0;width:100%;height:80%}
#betPanel{font-size:.84em}#chips button{color:transparent}#beads .tie{grid-column:auto;grid-row:auto}
#connection{position:absolute;top:5%;right:1%;padding:.5em .8em;background:#102539b0;border-radius:1em;font-size:.7em}#dealer{cursor:pointer}button:focus-visible{outline:2px solid #fff8b4;outline-offset:2px}

.dealer-video{position:absolute;width:100%;height:80%;object-fit:cover;object-position:center top;visibility:hidden}.dealer-video.video-active{visibility:visible}#dealerBuffer{cursor:pointer}
/* Separate desktop design coordinates and touch layout. */
.pc-mode #betPanel{left:29.7917%;width:40.4167%;bottom:.6667%;height:37.3333%;font-size:1em;display:flex;flex-direction:column}
.pc-mode #betGrid{flex:1;grid-template-rows:24% 24% 52%;min-height:0}
.pc-mode #chat{width:22%;left:.4167%}.pc-mode #roadPanel{width:22%;right:.4167%}
#timer{border:0;background:#102c2490;width:60px;height:60px;color:#62dc95;z-index:7}
#timer svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
#timer circle{fill:none;stroke-width:3}.timer-track{stroke:#62dc9540}.timer-progress{stroke:currentColor;stroke-dasharray:163.363;stroke-linecap:round}
#timer span{font-size:22px;font-weight:700;color:white;z-index:1}#timer.urgent{color:#ef495b;background:#3d1725b0}.pulse{animation:countPulse .7s ease-out}@keyframes countPulse{0%{transform:scale(1.2)}100%{transform:scale(1)}}
.betChip.pending{outline:2px solid #ffdc6e;animation:pendingPulse 1s ease-in-out infinite}@keyframes pendingPulse{50%{filter:brightness(1.25)}}
#allin.selected{outline:2px solid #ffe18d;border-radius:50%}.chip-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.chip-options label{display:flex;align-items:center;gap:8px}
@media(max-width:700px), (max-width:1000px) and (max-height:500px){
 body.mobile-mode{display:block;min-height:100dvh;background:#09344e}
 .mobile-mode #stage{width:100%;aspect-ratio:auto;min-height:100dvh;overflow:visible;font-size:12px;display:flex;flex-direction:column;padding-top:calc(51vw + env(safe-area-inset-top));padding-bottom:env(safe-area-inset-bottom)}
 .mobile-mode .dealer-video{height:51vw;object-fit:cover;object-position:center top;top:env(safe-area-inset-top)}
 .mobile-mode .shade{height:54vw;bottom:auto;background:linear-gradient(0deg,#09344e,transparent 45%)}
 .mobile-mode header{top:calc(4px + env(safe-area-inset-top));font-size:11px}.mobile-mode header button{min-width:36px;min-height:36px}
 .mobile-mode #banner{top:12vw;left:20%;width:60%;padding:8px}.mobile-mode #connection{top:calc(42px + env(safe-area-inset-top));font-size:9px}
 .mobile-mode #betPanel{position:relative;left:auto;bottom:auto;width:100%;padding:0 6px;order:1;font-size:12px}
 .mobile-mode #betGrid{height:230px;grid-template-rows:25% 25% 50%;gap:3px}
 .mobile-mode #betGrid button{padding:6px}.mobile-mode #betGrid span{font-size:16px}.mobile-mode #betGrid .main span,.mobile-mode #betGrid .tie span{font-size:27px}
 .mobile-mode .balance{font-size:10px;min-height:36px;gap:5px;flex-wrap:wrap}.mobile-mode footer{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;min-height:98px;padding:4px 0}
 .mobile-mode footer>button,.mobile-mode #chipsConfig,.mobile-mode #confirm,.mobile-mode #clear,.mobile-mode #repeat,.mobile-mode #allin{width:44px;height:44px;min-width:44px}
 .mobile-mode #chips{gap:5px}.mobile-mode #chips button{width:44px;height:44px;min-width:44px}.mobile-mode #ai{font-size:10px;width:75px}
 .mobile-mode #timer{top:calc(51vw - 44px + env(safe-area-inset-top));left:calc(50% - 25px);width:50px;height:50px}
 .mobile-mode #roadPanel{position:relative;order:2;width:100%;left:auto;right:auto;bottom:auto;padding:8px;margin-top:6px}.mobile-mode #road{height:130px}
 .mobile-mode #chat{position:relative;order:3;width:100%;left:auto;bottom:auto;padding:8px}.mobile-mode #chat form{font-size:12px}.mobile-mode #beads{height:100px}
 .mobile-mode .tabs{top:18vw}.mobile-mode .tabs button{font-size:9px;padding:7px}.mobile-mode .localmark{position:relative;order:4;text-align:center;font-size:10px;padding:8px}
 .mobile-mode dialog{min-width:0;width:94%;max-width:94%;max-height:85dvh}.mobile-mode #dialogBody{padding:12px}
}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){.mobile-mode #stage{padding-top:0;padding-left:50%;min-height:100dvh}.mobile-mode .dealer-video{width:50%;height:100dvh;left:0;object-fit:cover}.mobile-mode #betGrid{height:190px}.mobile-mode header{right:51%}.mobile-mode #banner{left:2%;width:46%;top:40px}.mobile-mode #timer{left:calc(25% - 25px);top:calc(50dvh - 25px)}.mobile-mode .shade{width:50%;height:100dvh}.mobile-mode #connection{left:4px;right:auto}.mobile-mode .tabs{display:none}}

#betPopup{position:fixed;z-index:30;display:flex;gap:4px;padding:5px;border-radius:10px;background:#253840;box-shadow:0 3px 14px #0008}#betPopup[hidden]{display:none}#betPopup button{width:44px;height:44px;border-radius:50%;font-size:14px}#betPopup [data-action=confirm]{background:#68a775}#betPopup [data-action=clear]{background:#a84a4b}.mobile-mode footer>#confirm,.mobile-mode footer>#clear,.mobile-mode footer>#repeat,.mobile-mode footer>#allin{display:none}

@media(max-width:700px) and (orientation:portrait){
 body.mobile-mode{display:flex;align-items:center;justify-content:center;height:100dvh;overflow:hidden}
 .mobile-mode #stage{min-height:0;height:180vw;max-height:100dvh;padding-top:64.1vw;padding-bottom:0;overflow:hidden}
 .mobile-mode .dealer-video{height:64.1vw;top:0}.mobile-mode .shade{height:71vw}
 .mobile-mode #betPanel{padding:7.46vw .8vw 0;display:flex;flex-direction:column}
 .mobile-mode #betPanel:before{content:'走地百家樂 1';position:absolute;top:2vw;right:26%;font-size:11px}
 .mobile-mode #betGrid{height:86.56vw;flex:none;grid-template-rows:28% 28% 44%;gap:2px}
 .mobile-mode #betGrid .main span,.mobile-mode #betGrid .tie span{font-size:35px}.mobile-mode #betGrid span{font-size:18px}
 .mobile-mode #betGrid .mini .card{font-size:20px}.mobile-mode #betGrid b{font-size:15px}
 .mobile-mode #timer{top:calc(64.1vw - 8px);left:calc(50% - 25px)}
 .mobile-mode .balance{order:2;min-height:9.5vw;background:#ddd;color:#343434;padding:3px 5px;display:flex;flex-wrap:nowrap;font-size:10px;justify-content:space-between}.mobile-mode .balance strong{color:#111}
 .mobile-mode #limit{position:absolute;right:1vw;top:1.5vw;font-size:11px;background:none;color:white;min-height:24px}
 .mobile-mode footer{order:1;min-height:12.27vw;flex-wrap:nowrap;gap:3px;padding:2px 4px;justify-content:space-between}.mobile-mode #chips{flex:1;justify-content:space-around;gap:1px}
 .mobile-mode #chips button{width:10vw;height:10vw;min-width:0}.mobile-mode #chipsConfig,.mobile-mode #history{width:10vw;height:10vw;min-width:0}
 .mobile-mode #prevChip,.mobile-mode #nextChip,.mobile-mode #ai,.mobile-mode #roadPanel,.mobile-mode #chat,.mobile-mode .localmark,.mobile-mode .tabs{display:none}
 .mobile-mode header{top:4px}.mobile-mode #connection{top:43px}.mobile-mode #banner{top:18vw}
}
@media(max-width:700px), (max-width:1000px) and (max-height:500px){.mobile-mode #dealer,.mobile-mode #dealerBuffer{width:100%;height:51vw;top:0;object-fit:cover;object-position:center top}}
@media(max-width:700px) and (orientation:portrait){.mobile-mode #dealer,.mobile-mode #dealerBuffer{height:64.1vw;object-fit:cover;background:#09344e}}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){.mobile-mode #dealer,.mobile-mode #dealerBuffer{width:50%;height:100dvh;left:0;object-fit:cover}}

#betPopup{width:140px;height:96px;padding:0;background:none;box-shadow:none}#betPopup button{position:absolute;width:44px;height:44px;font-size:0;background-color:transparent;background-size:contain;background-repeat:no-repeat}#betPopup [data-action=clear]{left:0;top:26px;background-image:url(assets/bet-cancel.png.webp)}#betPopup [data-action=allin]{left:48px;top:0;background-image:url(assets/bet-all-in.png.webp)}#betPopup [data-action=repeat]{left:48px;top:52px;background-image:url(assets/bet-repeat.png.webp)}#betPopup [data-action=confirm]{left:96px;top:26px;background-image:url(assets/bet-confirm.png.webp)}

.chip-options{grid-template-columns:repeat(6,1fr);gap:10px}.chip-option{position:relative;display:flex!important;flex-direction:column;cursor:pointer}.chip-option img{width:44px;height:44px;opacity:.45}.chip-option input{position:absolute;opacity:0;width:44px;height:44px;top:0;left:0;cursor:pointer}.chip-option input:checked+img{opacity:1;filter:drop-shadow(0 0 5px #ffda7c)}.chip-option span{position:absolute;top:12px;color:#674817;font-weight:bold;font-size:10px;pointer-events:none}.chip-option button{width:40px;padding:2px;background:none;border:1px solid #b5a46a;color:#dec777}.number-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.number-pad button{min-height:44px}.number-pad+input,#customAmount{width:100%;margin-bottom:12px;font-size:24px}

.mini .card{position:relative;display:flex;align-items:flex-end;justify-content:center;width:1.05em;height:1.5em;padding:1px}.mini .card i{position:absolute;top:0;left:1px;font-size:.45em;font-style:normal;line-height:1}.mini .card strong{font-size:1em;line-height:1}
.pc-mode #timer{width:4.5vw;height:4.5vw;max-width:86px;max-height:86px;left:47.75%}.pc-mode #timer span{font-size:1.7vw}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 .mobile-mode #stage{height:100dvh;overflow:hidden;min-height:0}
 .mobile-mode #chat,.mobile-mode #roadPanel,.mobile-mode .localmark,.mobile-mode #ai,.mobile-mode #prevChip,.mobile-mode #nextChip{display:none}
 .mobile-mode footer{flex-wrap:nowrap;min-height:50px;gap:1px;justify-content:space-between}
 .mobile-mode #chips{flex:1;min-width:0;gap:1px;justify-content:space-around}
 .mobile-mode #chips button,.mobile-mode #chipsConfig,.mobile-mode #history{width:38px;height:38px;min-width:0}
 .mobile-mode #betPanel{display:flex;flex-direction:column;height:100dvh}
 .mobile-mode #betGrid{flex:1;min-height:0;height:auto}
 .mobile-mode .balance{min-height:26px;font-size:9px;margin:4px 0;flex-wrap:nowrap}
}

/* Original PcLayoutVideoArea: 1800×900 at (60,0), countdown (572,148). */
.pc-mode #dealer,.pc-mode #dealerBuffer{left:3.125%;top:0;width:93.75%;height:75%;object-fit:contain;object-position:center top}
.pc-mode #timer{left:29.791667%;top:12.333333%;width:6.25%;height:10%;max-width:none;max-height:none;background:#171917c9;color:#62dc95}
.pc-mode #timer span{font-size:2.083333vw}.pc-mode #timer.urgent{background:#171917c9;color:#ef495b}
.pc-mode #betGrid{flex:none;height:77.678571%;grid-template-rows:24% 24% 52%}
.pc-mode #betPanel{perspective:133.333vw;perspective-origin:top center}
#betGrid{transform-style:preserve-3d;transition:transform .8s,box-shadow .8s;transform-origin:center center}
.cards-opening #betGrid{transform:rotateX(20deg) scaleY(.92) translateZ(calc(-1 * var(--retract-depth,75px)))}
.mobile-mode #betPanel{perspective:133.333vw;perspective-origin:top center}

.pc-mode #betPanel{perspective:34.722222vw}
/* Register our repaired source plate: its slot baseline is 19 design pixels lower. */
.pc-mode #dealer,.pc-mode #dealerBuffer{transform:translateY(-2.1%)}
.betChip,.betChip.pending{top:auto;bottom:30%;left:50%;transform:translateX(-50%);width:2.5vw;height:2.5vw;max-width:48px;max-height:48px;border:0;border-radius:0;background:none;box-shadow:none;outline:0;opacity:1;animation:none;overflow:visible;pointer-events:none}
.betChip img{position:absolute;inset:auto 0 calc(var(--layer) * 4px) 0;width:100%;height:100%;filter:drop-shadow(0 2px 2px #0007)}
.chip-total{position:absolute!important;left:50%;bottom:calc(100% + 22px);transform:translateX(-50%);background:#24313bc9;border-radius:12px;padding:2px 8px;color:#fff!important;font-size:12px!important;font-weight:700;white-space:nowrap}
.betChip.confirmed .chip-total{background:#204638dd}
#resultEffect{position:absolute;left:50%;top:50%;width:29.270833%;transform:translate(-50%,-50%);z-index:12;pointer-events:none;text-align:center;color:white}
#resultEffect[hidden]{display:none}#resultEffect>img{width:100%;display:block}#resultEffect>div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.2}#resultEffect strong{font-size:1.875vw}#resultEffect span{color:#53e48d;font-weight:700;font-size:1.8vw}#resultEffect.enter{animation:resultAppear .3s ease forwards}@keyframes resultAppear{from{opacity:.3;scale:.9}to{opacity:1;scale:1}}
.result-winning:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 25%,#d8efff99 45%,transparent 65%);background-size:300% 100%;animation:resultSheen 1.6s linear infinite}@keyframes resultSheen{from{background-position:150% 0}to{background-position:-50% 0}}
.mobile-mode .betChip{width:6.4vw;height:6.4vw}.mobile-mode #resultEffect{top:28%;width:75%}.mobile-mode #resultEffect strong{font-size:6.4vw}.mobile-mode #resultEffect span{font-size:5.333vw}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){.mobile-mode #resultEffect{left:25%;top:50%;width:35%}.mobile-mode #resultEffect strong{font-size:24px}.mobile-mode #resultEffect span{font-size:20px}.mobile-mode .betChip{width:28px;height:28px}}
/* Keep market labels in the upper band and odds/statistics in the lower band. */
#betGrid button{display:block;padding:0}
#betGrid button>span:not(.chip-total){position:absolute;top:8%;left:4%;line-height:1.1;white-space:nowrap}
#betGrid button>b{bottom:10%;left:4%;line-height:1.1;margin:0}
#betGrid button>small{bottom:10%;right:4%;line-height:1.1}
#betGrid .tie>span{left:0;top:8%;width:100%;text-align:center}
#betGrid .tie>b{bottom:10%!important}
#betGrid .main>span{top:33%}
#betGrid .main>em{position:absolute;top:55%;left:4%;line-height:1.1}
#stage{container-type:inline-size}
.pc-mode #resultEffect strong{font-size:1.875cqw}
.pc-mode #resultEffect span{font-size:2.5cqw}
/* AgToast: replace-in-place, 2-second lifetime, top/middle/bottom placement. */
#banner{position:absolute;left:50%;top:18%;width:max-content;min-width:17.916667%;max-width:68.8%;height:3.541667cqw;padding:0 2cqw;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;background:transparent url(assets/toast-normal-bg.png) center/cover no-repeat;border:0;border-radius:0;color:#fff;font-size:1.25cqw;font-weight:700;line-height:1.2;z-index:99999;pointer-events:none;overflow-wrap:anywhere}
#banner[hidden],#banner:empty{display:none}#banner[data-position=middle]{top:50%;transform:translate(-50%,-50%)}#banner[data-position=bottom]{top:auto;bottom:18%}#banner[data-type=success]{background-image:url(assets/toast-success-bg.png)}#banner[data-type=failure]{background-image:url(assets/toast-failure-bg.png)}
.mobile-mode #banner{left:50%;top:18%;width:max-content;height:9.067vw;min-width:29.6vw;font-size:3.2vw;padding:0 4vw;max-width:68.8vw}

/* Original BetItem (45c4f67c), identical desktop/mobile odds blink. */
#betGrid b{transition:color .2s}
#betGrid b.odds-blink{animation:odds-blink-anim 1.2s ease-in-out 1}
@keyframes odds-blink-anim{0%,100%{opacity:1}16%,50%,83%{opacity:.2}33%,66%{opacity:1}}

/* BetItem parity: mirror banker, leave disabled displays readable. */
#betGrid button:disabled{opacity:1;cursor:default}
#betGrid button:disabled:hover{background:var(--bet-bg,#ffffff21)}
#betGrid .red>span{left:auto;right:4%;text-align:right}
#betGrid .red>b{left:auto;right:4%}
#betGrid .red>small{right:auto;left:4%}
#betGrid .main>span{top:6%}
#betGrid .main>em{top:35%;width:2.5cqw;height:2.5cqw;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#0005;font-size:1.875cqw;font-weight:700;font-style:normal;color:#369cf9}
#betGrid .main>em:empty{display:none}
#betGrid .main[data-bet=banker]>em{left:auto;right:4%;color:#ff435f}
#betGrid .mini{position:absolute;top:5%;right:4%;left:auto;display:flex;gap:.416667cqw;font-size:2.5cqw}
#betGrid [data-bet=banker] .mini{left:4%;right:auto}
#betGrid .mini .card{width:2.5cqw;height:3.75cqw;border-radius:.1cqw;background:#fff;box-shadow:none;flex:none}
#betGrid .mini .card i{font-size:.9375cqw;left:.2cqw;top:.1cqw}
#betGrid .mini .card strong{font-size:2.5cqw}
#betGrid .mini .third{position:absolute;top:4.125cqw;right:.416667cqw;transform:rotate(90deg)}
#betGrid [data-bet=banker] .mini .third{left:.416667cqw;right:auto;transform:rotate(-90deg)}
#betGrid .tie>b{left:0;right:0;width:100%;bottom:10%;text-align:center}
#betGrid .tie>small{left:0;right:0;width:100%;bottom:2%;text-align:center}
#tieMissed{position:absolute;top:25%;left:0;right:0;text-align:center;color:#ffffffb3;font-size:1.041667cqw;font-weight:400}
.gold-coin{display:inline-flex;align-items:center;justify-content:center;width:1.041667cqw;height:1.041667cqw;margin-right:.208333cqw;font-size:.9375cqw;vertical-align:middle}
#betGrid button>small{color:#ffffffb3;font-weight:400;font-style:normal}
.result-winning:after{background:linear-gradient(90deg,transparent 0%,transparent 20%,rgba(201,228,251,.85) 50%,transparent 80%,transparent 100%);background-size:100% 100%;transform:skewX(-25deg);mix-blend-mode:screen;animation:originalWinSweep 2s linear infinite}
@keyframes originalWinSweep{0%{left:-150%}50%,100%{left:150%}}
.mobile-mode #betGrid .main>em{width:6.4vw;height:6.4vw;font-size:5.333vw}
.mobile-mode #betGrid .mini{font-size:6.4vw;gap:1.067vw}.mobile-mode #betGrid .mini .card{width:6.4vw;height:9.6vw}.mobile-mode #betGrid .mini .card strong{font-size:6.4vw}.mobile-mode #betGrid .mini .card i{font-size:2.4vw}
.mobile-mode #betGrid .mini .third{top:10.56vw;right:1.067vw}.mobile-mode #betGrid [data-bet=banker] .mini .third{left:1.067vw;right:auto}.mobile-mode #tieMissed{font-size:2.667vw}.mobile-mode .gold-coin{width:2.667vw;height:2.667vw;font-size:2.4vw}

#mobileRoad,#roadToggle,#roadRecommend{display:none}
@media(max-width:700px) and (orientation:portrait){
 body.mobile-mode{height:100dvh;overflow:auto;align-items:flex-start}
 .mobile-mode #stage{width:100vw;height:auto;min-height:0;max-height:none;padding-top:50vw;aspect-ratio:auto;display:flex;flex-direction:column;overflow:visible;font-size:2vw}
 .mobile-mode #dealer,.mobile-mode #dealerBuffer{height:50vw;object-fit:cover}
 .mobile-mode #betPanel{padding:5.5vw .8vw 0;position:relative;left:auto;bottom:auto;width:100%;height:auto;flex:none;order:1}
 .mobile-mode #betGrid{height:65vw;grid-template-rows:28% 28% 44%;gap:.533vw}
 .mobile-mode:not(.road-expanded) #betGrid{height:96vw}
 .mobile-mode #betPanel:before{top:1.7vw;right:19%;font-size:2.4vw}
 .mobile-mode #timer{top:37vw;left:26%;width:10vw;height:10vw}
 .mobile-mode footer{height:13.6vw;min-height:0;padding:.8vw;gap:.533vw}
 .mobile-mode .balance{height:8.5vw;min-height:0;padding:.8vw 1vw;display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr .35fr;align-items:center;gap:1vw;font-size:2vw;background:#f4f4f4;color:#888}
 .mobile-mode .balance>strong{grid-column:1;grid-row:2;text-align:center}.mobile-mode .balance>span{grid-row:1/span 2;display:flex;flex-direction:column;gap:1vw}.mobile-mode .balance span strong{font-size:2.5vw;text-align:right}
 .mobile-mode #roadRecommend,.mobile-mode #roadToggle{display:block;background:none;color:#222;padding:0;font-size:2.4vw;height:100%;grid-row:1/span 2;min-height:0}.mobile-mode #roadToggle{border-left:1px solid #ddd;font-size:2vw}
 .mobile-mode #mobileRoad{order:2;width:100%;height:33vw;display:none;position:relative;background:white;color:black;padding:.5vw .8vw 4vw;grid-template-columns:28% 72%;overflow:hidden}
 .mobile-mode.road-expanded #mobileRoad{display:grid}
 #mobileBeads{height:27vw;display:grid;grid-template-rows:repeat(6,1fr);grid-auto-flow:column;grid-auto-columns:4.2vw;overflow:hidden;gap:.2vw}
 #mobileBeads .bead{height:3.7vw;width:3.7vw;font-size:2.4vw;display:flex;align-items:center;justify-content:center;margin:0;background:#369cf9}#mobileBeads .banker{background:#ff435f}#mobileBeads .tie{background:#30c86d}
 #mobileRoadCanvas{width:100%;height:27vw;display:block}
 #mobileRoadStats{position:absolute;bottom:.5vw;left:1vw;right:1vw;display:flex;align-items:center;justify-content:space-between;gap:.5vw;font-size:2.2vw;font-weight:700;height:3.5vw}
 #mobileRoadStats span{display:flex;align-items:center;gap:.5vw}#mobileRoadStats i{font-style:normal;border-radius:.4vw;color:white;padding:.3vw .6vw;background:#369cf9}#mobileRoadStats .banker{background:#ff435f}#mobileRoadStats .tie{background:#30c86d}#mobileRoadStats .total{background:#df9d39}#mobileRoadStats .road-room{font-size:1.8vw;display:block}
 .mobile-mode #betGrid .tie>b{bottom:10%!important}.mobile-mode #betGrid .tie>small{bottom:2%}
 .mobile-mode #betGrid .main>em{top:35%;left:4%;font-size:4.267vw;width:6.4vw;height:6.4vw}.mobile-mode #betGrid [data-bet=banker]>em{left:auto;right:4%}
}
/* Mobile Orientator 3aca1a50: center countdown over the 7.467vw bet header. */
@media(max-width:700px) and (orientation:portrait){
 .mobile-mode #betPanel{padding-top:7.467vw}
 .mobile-mode #timer{left:50%;top:calc(50vw - 2.133vw);transform:translateX(-50%);width:11.733vw;height:11.733vw;max-width:none;max-height:none;background:#000b;color:#62dc95;pointer-events:none}
 .mobile-mode #timer span{font-size:4.267vw}.mobile-mode #timer.urgent{background:#000b;color:#ef495b}.mobile-mode #timer .timer-track{stroke:#0003}
 .mobile-mode #betPanel:before{top:2.5vw;right:20%;font-size:2.667vw}
 .mobile-mode #limit{top:1.6vw;right:1.067vw;font-size:2.667vw;height:4.8vw;min-height:0}
 .mobile-mode header{top:2.133vw;left:2.133vw;right:2.133vw;gap:0;font-size:2.667vw}
 .mobile-mode header>span{display:none}.mobile-mode header button{width:8vw;height:8vw;font-size:4.267vw;background:#0005}
 .mobile-mode header .right{display:contents}
 .mobile-mode #rules{position:absolute;right:12vw;top:0}.mobile-mode #menu{position:absolute;right:0;top:0}.mobile-mode #sound{position:absolute;right:0;top:11vw}
 .mobile-mode #connection{display:none}
 .mobile-mode #ai{display:block;position:absolute;top:-12vw;left:3vw;height:6.4vw;padding:0 2vw;border-radius:5vw;font-size:2.667vw;background:#0003;min-width:0}
 .mobile-mode footer{position:static}
 .mobile-mode #chips{position:relative}.mobile-mode #chips:after{content:'';position:absolute;bottom:-1.3vw;left:50%;width:3.7vw;height:.8vw;border-radius:.4vw;transform:translateX(-50%);background:linear-gradient(90deg,#fff 45%,#ffffff44 45%)}
}

#stage{touch-action:manipulation;-webkit-text-size-adjust:100%}#stage button,#stage canvas{touch-action:manipulation;-webkit-tap-highlight-color:transparent}#betPopup button svg{position:absolute;inset:20%;width:60%;height:60%;fill:none;stroke:white;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}#betPopup button:disabled svg{stroke:#9ca6a6}

/* Include page margins and dialogs in the mobile tap policy. */
html,body{touch-action:manipulation}
@media (pointer:coarse){input,textarea,select{font-size:16px}}
