:root{color-scheme:light;--paper:#f5f3ee;--ink:#243a33;--muted:#7f8880;--gold:#d4b77e;--blue:#6893b4;--red:#c07870;--green:#80a88c;--line:#e2e4dc;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,a:focus-visible{outline:3px solid #c5974a;outline-offset:4px}button{transition:background .18s,transform .18s,opacity .18s}a{color:inherit}.topbar{height:82px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 5.5vw;background:#f8f7f3}.brand{text-decoration:none;display:flex;align-items:center;gap:12px;font-size:21px;font-weight:650;letter-spacing:3px}.brand-mark{font-size:31px;line-height:1}.brand-sub{font-size:11px;letter-spacing:2px;border-left:1px solid #cbd0c7;padding-left:17px;margin-left:9px;font-weight:400}.top-actions{display:flex;align-items:center;gap:36px}.live{font-size:11px;letter-spacing:.5px;color:#6c7b70}.live i,.save-status i{width:6px;height:6px;display:inline-block;border-radius:50%;background:#72917a;margin-right:8px}.text-button{background:transparent;border:0;color:inherit;font-size:12px;padding:8px 5px}.text-button:hover{color:#af813c}.text-button span{margin-left:14px}main{max-width:1480px;margin:auto;padding:44px 5.5vw 0}.game-layout{display:flex;align-items:flex-start;gap:24px}.table-wrap{flex:1;min-width:0;border-radius:12px;overflow:hidden;background:#fff;border:1px solid #dce0d7;box-shadow:0 6px 25px #233d2c06}.session{flex:0 0 170px;text-align:right;padding:24px 8px 0}.session>span{font-size:11px;letter-spacing:2px;color:#7f887d}.session strong{display:block;font-size:35px;font-weight:450;font-variant-numeric:tabular-nums;letter-spacing:1px;margin:8px 0}.session small{color:#92988b;font-size:10px}.session b{font-weight:500;color:#537d60;margin-left:9px}.table-heading{height:47px;background:#18352c;color:#d1d7c8;padding:0 24px;display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:1px;border-bottom:1px solid #ffffff0e}.status-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#c8b080;margin-right:8px}.muted{color:#798f82;font-size:8px;margin-left:8px}.felt{position:relative;padding:24px 28px 17px;background:radial-gradient(ellipse at 50% 18%,#244f40 0%,#163c30 62%,#153529 100%);color:#e7e7d7;isolation:isolate}.felt:before{content:"";position:absolute;inset:12px;border:1px solid #bdab7530;border-radius:7px 7px 90px 90px;z-index:-1;pointer-events:none}.table-rules{text-align:center;color:#90a697;font-size:9px;letter-spacing:1px}.table-rules span{margin:0 13px;color:#ac9a68}.hands{display:grid;grid-template-columns:1fr 42px 1fr;max-width:540px;margin:27px auto 0;align-items:center}.hand-title{display:flex;justify-content:space-between;align-items:center;padding:0 8px;margin-bottom:13px}.hand-title span{font-size:20px;letter-spacing:4px}.hand-title small{font-size:8px;letter-spacing:2px;margin-left:7px;color:#87a797}.hand-title b{font-size:22px;font-weight:400;color:#d3bf89}.player .hand-title span{color:#a3bed4}.banker .hand-title span{color:#d7a39a}.cards{display:flex;justify-content:center;gap:9px;height:100px}.card{width:64px;height:94px;background:#f9f7ee;border-radius:5px;box-shadow:0 3px 5px #061e2245;color:#2c3c38;display:flex;flex-direction:column;justify-content:space-between;padding:7px 8px;font-family:Georgia,serif;flex-shrink:0}.card .rank{font-size:20px;line-height:1}.card .suit{font-size:32px;align-self:center}.card .bottom{font-size:11px;align-self:flex-end}.card.red{color:#af514b}.card.back{background:repeating-linear-gradient(45deg,#234938 0 3px,#315b4530 3px 5px),#1e402f;border:4px solid #b6bea071;outline:1px solid #132d23;position:relative;color:#9dae9060;align-items:center;justify-content:center;font-size:31px}.card.back:before{content:"";position:absolute;inset:4px;border:1px solid #a7b49345;border-radius:2px}.card.revealed{animation:reveal .35s ease both}.card.third{transform:rotate(6deg);margin-left:1px}@keyframes reveal{from{opacity:0;translate:0 -10px;rotate:0 1 0 80deg}to{opacity:1;translate:0 0;rotate:0 1 0 0deg}}.versus{font-family:Georgia,serif;font-size:12px;letter-spacing:2px;color:#739481;text-align:center;margin-top:25px}.outcome{height:86px;text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px}.outcome>span{font-size:11px;letter-spacing:3px;color:#d4bd83}.outcome p{font-size:10px;letter-spacing:.5px;color:#a6b8aa;margin:0}.betting{display:grid;grid-template-columns:.76fr 1.3fr 1fr 1.3fr .76fr;gap:8px}.bet-zone{height:112px;background:#ffffff03;border:1px solid #80988450;border-radius:7px;color:#bdc8b7;display:flex;align-items:center;flex-direction:column;padding:13px 4px 8px;position:relative}.bet-zone:hover:not(:disabled){background:#ffffff0d;transform:translateY(-2px)}.bet-zone>span{font-family:"Songti SC",serif;font-size:25px}.bet-zone small{font-size:8px;letter-spacing:.5px;margin-top:5px;color:#8a9f8f;white-space:nowrap}.bet-zone .bet-value{font-size:12px;font-weight:400;margin-top:auto;color:#a9b39f}.main-bet>span{font-size:29px}.player-bet{border-color:#79a2bb4d}.player-bet>span{color:#a5bfd2}.banker-bet{border-color:#b67f774d}.banker-bet>span{color:#d3a39a}.tie-bet>span{color:#a4c49e}.bet-zone.has-bet{background:#d1b77d16;border-color:#d1b77d90}.bet-zone.has-bet .bet-value{background:#d1b77d;color:#24382b;min-width:40px;border-radius:12px;padding:3px 8px;font-size:10px;font-weight:600}.table-signature{font-size:7px;text-align:center;letter-spacing:3px;color:#7e96846e;margin-top:18px}.table-signature span{margin:0 8px;font-size:13px}.controls{padding:19px 23px;display:flex;align-items:center;gap:20px;justify-content:space-between}.control-label{font-size:9px;color:#8c9386;letter-spacing:1px;display:block;margin-bottom:9px}.chips{display:flex;gap:10px}.chip{height:41px;width:41px;border:3px dashed #a1aba0;border-radius:50%;background:#f1f3ed;outline:1px solid #d8dcd2;color:#5c7062;font-size:10px;font-weight:650;box-shadow:inset 0 0 0 3px #fafaf5}.chip:nth-child(2){border-color:#8da9bc;background:#e5edf1;color:#476b80}.chip:nth-child(3){border-color:#c3918c;background:#f5eae5;color:#995f56}.chip:nth-child(4){border-color:#baa273;background:#f4efdd;color:#8f7647}.chip.selected{outline:2px solid #b3955f;outline-offset:3px;transform:translateY(-3px)}.bet-actions{text-align:right;white-space:nowrap}.stake-total{font-size:10px;color:#979b91;margin:3px 0}.stake-total strong{color:#35463a;font-size:17px;font-weight:500;margin-left:8px}.bet-actions .text-button{font-size:10px;color:#7f897a;padding:8px}.deal-button{border:0;background:#1d4536;color:#f7f3e5;border-radius:5px;min-width:117px;padding:17px 22px;letter-spacing:2px;font-size:13px}.deal-button span{margin-left:18px}.deal-button:hover:not(:disabled){background:#2c5f48}.sidebar{display:none}.utility-bar{display:flex;justify-content:flex-end;align-items:center;gap:18px;margin-top:16px}.panel{background:#f9f8f4;border:1px solid #e2e3da;border-radius:9px;padding:23px 20px}.panel .eyebrow{font-size:8px;letter-spacing:2px}h2{font-family:"Songti SC",serif;font-size:20px;font-weight:500;letter-spacing:1px;margin:0}h3{font-size:15px;font-weight:500}.shoe-metric{display:flex;align-items:baseline;margin:20px 0 16px;position:relative}.shoe-metric strong{font-size:40px;font-weight:350;letter-spacing:-1px}.shoe-metric span{font-size:9px;color:#92998a;margin-left:10px}.shoe-metric svg{width:55px;height:55px;position:absolute;right:0;top:-4px;fill:#f9f8f4;stroke:#bcbca9;stroke-width:1}.shoe-metric svg text{fill:#aeb5a3;stroke:none;font-size:26px}.shoe-progress{height:3px;background:#e3e5dc;border-radius:3px;overflow:hidden}.shoe-progress span{height:100%;display:block;background:#a1af94;width:2%}.mini-meta{display:flex;justify-content:space-between;font-size:8px;color:#939b8a;margin-top:10px}.mini-meta b{font-weight:400}.counts{display:flex;justify-content:space-between;margin:24px 0;color:#84907f;font-size:10px}.counts>div{display:flex;align-items:center;gap:6px}.counts strong{font-weight:500;color:#465a49}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0}.banker-dot{background:var(--red)}.player-dot{background:var(--blue)}.tie-dot{background:var(--green)}.outline-button{width:100%;padding:11px 12px;border:1px solid #d6d9cd;border-radius:4px;background:transparent;color:#6d7b68;font-size:10px;letter-spacing:.5px}.outline-button span{float:right;font-size:13px}.outline-button:hover{background:#e9ede2}.note{background:#edeee5;border:0;position:relative;padding:21px}.note-symbol{position:absolute;right:17px;top:17px;color:#99a68d;font-size:23px}.note h3{font-family:"Songti SC",serif;font-size:16px;letter-spacing:1px;margin:18px 0 12px}.note>p:not(.eyebrow){font-size:10px;line-height:1.9;color:#86907d;min-height:57px;margin-bottom:9px}.note .text-button{font-size:9px;color:#71816b;padding:0}.save-status{font-size:9px;color:#979e90;text-align:center;margin-top:auto}.save-status i{width:4px;height:4px}.reset-button{border:0;background:none;color:#969d90;font-size:9px;padding:0 0 2px}.road-panel{background:#faf9f5;border:1px solid var(--line);border-radius:9px;margin-top:24px;padding:0 22px 19px}.road-header{display:flex;align-items:center;gap:22px;height:60px}.road-tabs{display:flex;gap:19px;height:100%;align-items:center}.road-tabs button{font-size:11px;color:#99a08f;background:none;border:0;height:100%;padding:2px 0 0}.road-tabs .active{color:#304d3a;box-shadow:inset 0 -2px #7e9374}.road-header p{font-size:9px;color:#a2a697}.road-header p span{margin:0 7px}.road-legend{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:9px;color:#7f8c79}.road-legend i:not(:first-child){margin-left:7px}.road-scroll{overflow-x:auto;position:relative;background:#fdfcf8;border:1px solid #e1e5d9}.road{display:grid;grid-template-rows:repeat(6,25px);grid-auto-columns:29px;grid-auto-flow:column;min-width:100%;width:max-content;height:150px;background-image:linear-gradient(to right,#e4e7dd 1px,transparent 1px),linear-gradient(to bottom,#e4e7dd 1px,transparent 1px);background-size:29px 25px;position:relative}.road-cell{width:29px;height:25px;display:flex;align-items:center;justify-content:center;position:relative}.road-ball{width:19px;height:19px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--red);color:white;font-size:10px;position:relative}.road-ball.w1{background:var(--blue)}.road-ball.w0{background:var(--green)}.road.big .road-ball{border:2px solid var(--red);background:transparent;color:#678760;font-size:9px}.road.big .road-ball.w1{border-color:var(--blue)}.road.big .road-ball.w0{border-color:var(--green)}.pair-dot{position:absolute;width:5px;height:5px;border:1px solid #fff;border-radius:50%;z-index:1}.pair-dot.bp{top:-1px;left:-1px;background:var(--red)}.pair-dot.pp{bottom:-1px;right:-1px;background:var(--blue)}#road-empty{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;color:#b8bdad;font-size:11px;letter-spacing:3px;pointer-events:none}footer{display:flex;justify-content:space-between;padding:26px 0;font-size:9px;letter-spacing:.6px;color:#9ba18f}.footer-diamond{margin:0 12px;color:#b0ac91}dialog{border:1px solid #e0e1d6;border-radius:12px;max-width:650px;width:calc(100% - 32px);max-height:85dvh;padding:30px;background:#f8f7f2;color:var(--ink);box-shadow:0 25px 120px #0003}dialog::backdrop{background:#10251ccc;backdrop-filter:blur(5px)}dialog p{font-size:12px;line-height:1.9;color:#72806d}dialog h3{margin-top:27px}dialog table{border-collapse:collapse;width:100%;font-size:12px}dialog td,dialog th{padding:10px;border-bottom:1px solid #e2e4d9;text-align:left}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.close-button{font-size:25px;background:none;border:0;color:#768370;padding:10px}.source{font-size:11px}.source a{display:block;color:#315f44}#confirm{max-width:410px}.confirm-actions{display:flex;gap:12px;margin-top:25px}.confirm-actions>*{width:50%;min-width:0}.confirm-actions .deal-button{padding:12px}.error{color:#b36350!important}
@media(min-width:1450px){main{padding-left:60px;padding-right:60px}.felt{padding-top:28px;padding-bottom:20px}.hands{margin-top:32px}.cards{height:108px}.card{height:102px;width:70px}.outcome{height:94px}.bet-zone{height:118px}.sidebar{gap:20px}.panel{padding:25px}.note>p:not(.eyebrow){min-height:65px}}
@media(max-width:1100px){main{padding:30px 3vw 0}.felt{padding-left:19px;padding-right:19px}.controls{padding:18px 15px;gap:12px}.chips{gap:8px}.chip{width:36px;height:36px;font-size:9px}.deal-button{min-width:100px;padding:15px}.bet-actions .text-button{padding:7px 4px}.card{width:56px;height:86px}.cards{gap:7px;height:90px}.hands{grid-template-columns:1fr 28px 1fr}.hand-title small{font-size:7px}.topbar{padding:0 3vw}.panel{padding:20px 16px}}
@media(max-width:820px){.table-heading{height:44px}.felt{padding-left:26px;padding-right:26px}.cards{height:100px}.card{width:64px;height:94px}.road-header p{display:none}.road-legend{margin-left:auto}.topbar{height:68px}.brand-sub{font-size:9px}.top-actions{gap:17px}.live{font-size:9px}.session{flex-basis:145px;padding-top:20px}.session strong{font-size:30px}.controls{padding:19px 24px}.chip{width:42px;height:42px}.chips{gap:12px}.bet-actions{margin-left:auto}.deal-button{min-width:125px}.road-panel{margin-top:18px}}
@media(max-width:500px){.topbar{padding:0 20px;height:62px}.brand{font-size:18px;gap:8px}.brand-mark{font-size:26px}.brand-sub{display:none}.top-actions{gap:16px}.live{font-size:8px}.top-actions .text-button{font-size:10px}.top-actions .text-button span{display:none}main{padding:25px 14px 0}.game-layout{display:block}.session{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 5px 0}.session strong{font-size:25px;margin:0}.session small{font-size:8px}.session>span{font-size:9px;letter-spacing:1px}.session b{margin-left:3px}.table-heading{font-size:9px;padding:0 15px}.muted{font-size:6px;margin-left:3px;letter-spacing:.5px}.felt{padding:21px 12px 14px}.felt:before{inset:7px}.table-rules{font-size:7px;letter-spacing:.3px}.table-rules span{margin:0 7px}.hands{grid-template-columns:minmax(0,1fr) 19px minmax(0,1fr);margin-top:23px}.cards{gap:4px;height:78px}.card{width:44px;height:70px;padding:5px 6px;border-radius:4px}.card .rank{font-size:15px}.card .suit{font-size:25px}.card .bottom{font-size:8px}.card.back{border-width:3px;font-size:26px}.hand-title{margin-bottom:10px;padding:0 5px}.hand-title span{font-size:17px;letter-spacing:2px}.hand-title small{font-size:6px;letter-spacing:1px;margin-left:4px}.hand-title b{font-size:20px}.versus{font-size:8px;letter-spacing:0}.outcome{height:78px;gap:9px}.outcome p{font-size:9px;max-width:290px;line-height:1.6}.betting{gap:5px;grid-template-columns:.78fr 1.15fr .93fr 1.15fr .78fr}.bet-zone{height:98px;padding:11px 2px 8px}.bet-zone>span{font-size:19px}.main-bet>span{font-size:26px}.bet-zone small{font-size:6px;letter-spacing:0;margin-top:7px}.pair small{font-size:8px}.bet-zone.has-bet .bet-value{font-size:9px;min-width:0;padding:3px 5px}.table-signature{font-size:6px;margin-top:15px}.controls{display:grid;grid-template-columns:1fr auto;padding:17px 15px 15px;gap:15px 10px}.chip-section{grid-column:1;grid-row:1}.chips{gap:11px}.chip{width:36px;height:36px}.control-label{font-size:8px;margin-bottom:10px}.bet-actions{grid-column:2;grid-row:1}.stake-total{font-size:9px}.stake-total strong{font-size:15px}.bet-actions .text-button{font-size:9px;padding:10px 4px 0}.deal-button{grid-column:1 / -1;padding:13px;min-width:0}.utility-bar{margin-top:11px;gap:12px}.save-status{font-size:8px}.reset-button{font-size:8px}.road-panel{padding:0 12px 12px}.road-header{height:50px;gap:12px}.road-tabs{gap:17px}.road-tabs button{font-size:10px}.road-legend{font-size:8px;gap:4px}.road-legend i:not(:first-child){margin-left:5px}footer{font-size:7px;letter-spacing:0;padding:22px 4px}.footer-diamond{margin:0 6px}dialog{padding:23px}dialog h2{font-size:18px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.bet-zone kbd{font:9px -apple-system,BlinkMacSystemFont,sans-serif;border:1px solid currentColor;border-radius:3px;padding:1px 4px;vertical-align:middle;opacity:.75;letter-spacing:0}
@media(max-width:500px){.bet-zone kbd{font-size:7px;padding:1px 3px}}

.session-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}.session-actions button{min-height:44px;padding:10px 12px;border:1px solid #d8dcd2;border-radius:6px;background:#f9f8f4;color:#35463a;font-size:14px}.session-actions #reset{grid-column:1 / -1;min-height:48px;border-color:#b3955f;background:#f4efdd;font-size:16px;font-weight:600;letter-spacing:1px}.session-actions #repeat{grid-column:1 / -1}.session-actions button:hover:not(:disabled){background:#eae1c9}
@media(max-width:500px){.session{display:grid;grid-template-columns:1fr auto;text-align:right}.session>span{grid-column:1;grid-row:1;text-align:left}.session strong{grid-column:2;grid-row:1}.session small{grid-column:1 / -1}.session-actions{grid-column:1 / -1;width:170px;justify-self:end;margin-top:6px}}

body{padding-left:200px}.topbar{position:fixed;inset:0 auto 0 0;width:200px;height:100dvh;padding:34px 20px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:30px;border-bottom:0;border-right:1px solid var(--line)}.brand{flex-wrap:wrap;font-size:20px;gap:10px}.brand-sub{width:100%;margin:8px 0 0;padding:0;border-left:0;font-size:11px;display:block}.top-actions{flex-direction:column;align-items:flex-start;gap:20px}.live{font-size:11px}.top-actions .text-button{font-size:13px;padding:10px 0}.top-actions .text-button span{display:inline;margin-left:10px}
@media(max-width:820px){body{padding-left:130px}.topbar{width:130px;padding:25px 12px}.brand{font-size:16px;gap:6px;letter-spacing:1px}.brand-mark{font-size:24px}.brand-sub{font-size:9px;letter-spacing:1px}.live{font-size:9px}}
@media(max-width:500px){body{padding-left:86px}.topbar{width:86px;padding:20px 8px;gap:24px}.brand{font-size:13px;gap:4px}.brand-mark{font-size:20px}.brand-sub{font-size:8px;letter-spacing:0}.top-actions{gap:16px}.live{font-size:8px;line-height:1.8}.live i{margin-right:4px}.top-actions .text-button{font-size:11px}.top-actions .text-button span{display:none}main{padding:18px 8px 0}.controls{padding:14px 8px;gap:14px 5px}.chips{gap:6px}.chip{width:32px;height:32px;font-size:9px}.hands{grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr)}.cards{gap:3px}.card{width:32px;height:58px;padding:4px}.card .rank{font-size:12px}.card .suit{font-size:20px}.card .bottom{font-size:8px}.hand-title small{display:none}.table-rules{line-height:1.8}.table-rules span{margin:0 3px}.table-heading{padding:0 8px}.muted{display:none}}

body{padding-left:320px}.topbar{width:320px;overflow-y:auto}.topbar .road-panel{width:100%;min-width:0;margin-top:0;padding:0 10px 10px;flex-shrink:0}.topbar .road-header{height:auto;min-height:58px;flex-wrap:wrap;gap:10px;padding:10px 0}.topbar .road-tabs{height:30px;gap:16px}.topbar .road-header p{display:none}.topbar .road-legend{margin-left:0}.topbar .road-scroll{width:100%}
@media(max-width:820px){body{padding-left:220px}.topbar{width:220px}.topbar .road-legend{font-size:8px;gap:4px}.topbar .road-legend i:not(:first-child){margin-left:4px}}
@media(max-width:500px){body{padding-left:110px}.topbar{width:110px;padding:20px 8px}.topbar .road-panel{padding:0 4px 6px}.topbar .road-header{gap:6px}.topbar .road-tabs{gap:8px}.topbar .road-tabs button{font-size:9px}.topbar .road-legend{font-size:7px;gap:2px}.topbar .road-legend i:not(:first-child){margin-left:2px}.controls{grid-template-columns:1fr}.chip-section{grid-column:1;grid-row:1}.bet-actions{grid-column:1;grid-row:2;margin-left:0;text-align:left}.deal-button{grid-column:1;grid-row:3}.hands{grid-template-columns:minmax(0,1fr) 10px minmax(0,1fr)}.cards{gap:2px}.card{width:28px;height:54px}.hand-title span{font-size:15px}.bet-zone>span{font-size:16px}.main-bet>span{font-size:20px}}

@media(min-width:821px){body{padding-left:220px}.topbar{width:220px}}
.topbar .road-panel{max-width:190px}.session-actions #reset{grid-row:3}

.topbar .road-panel{max-width:167px}
