:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f2f6ff;--gold:#ffcd6a;--muted:#9eb4ce;background:#050d19;font-family:Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit;cursor:pointer;touch-action:manipulation;color:inherit;background:#183251;border:1px solid #42658d}button:disabled{cursor:default}button:focus-visible{outline-offset:-3px;outline:3px solid #ffda8d}button,a{-webkit-user-select:none;user-select:none}.game-shell{width:var(--viewport-width,100vw);height:var(--viewport-height,100dvh);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);place-items:center;display:grid}.game-stage{isolation:isolate;background:linear-gradient(150deg,#112c4b,#07182d 60%,#0d233b);grid-template-rows:44px minmax(156px,1.12fr) minmax(184px,1.12fr) 62px 48px minmax(132px,1fr) 54px;grid-template-areas:"header""table""betting""chips""actions""road""info";gap:3px;width:min(100%,500px);height:100%;max-height:1080px;padding:0 4px 4px;display:grid;position:relative;overflow:hidden}.ui-module{min-width:0;min-height:0;position:relative}.header-layer,.lobby-header-layer{grid-area:header;grid-template-columns:44px 1fr 44px;align-items:center;display:grid}.header-layer{grid-template-columns:44px minmax(0,1fr) 96px}.header-tools{grid-template-columns:1fr 1fr;display:grid}.header-tools button{background:0 0;border:0;min-height:44px;padding:0;font-size:13px}.header-button{background:0 0;border:0;min-width:44px;height:44px;padding:0;font-size:26px}.header-button:first-child{font-size:40px;line-height:1}.game-title{justify-content:center;align-items:center;gap:8px;min-width:0;display:flex}.game-title strong{letter-spacing:.05em;white-space:nowrap;font-size:23px}.game-title small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.connection-ready{color:#62d5b1;font-size:8px}.connection-wait{color:#ffcc75;font-size:8px}.table-layer{isolation:isolate;border-radius:0 0 12px 12px;grid-area:table;grid-template-rows:32px minmax(0,1fr) 17px 19px;display:grid;overflow:hidden}.table-art{object-fit:cover;object-position:bottom;z-index:-1;width:100%;height:calc(100% - 32px);position:absolute;inset:32px 0 0}.round-clock{background:linear-gradient(90deg,#063b30,#126342,#063b30);border-block:1px solid #278b6a;justify-content:space-between;align-items:center;padding:0 12px;display:flex}.phase-result{background:linear-gradient(90deg,#2b1326,#621b33,#2b1326);border-color:#894156}.phase-processing,.phase-dealing{background:#2d3651;border-color:#526180}.phase-label{font-size:16px;font-weight:700}.clock-value{color:#d9e5ee;align-items:center;gap:8px;font-size:12px;display:flex}.clock-value strong{color:var(--gold);font-variant-numeric:tabular-nums;font-size:24px;line-height:1}.hands{grid-template-columns:1fr 1fr;gap:12px;min-height:0;padding:8px 8px 1px;display:grid}.hand{grid-template-rows:minmax(0,1fr) 26px;gap:4px;min-width:0;min-height:0;display:grid}.hand+.hand{border-left:1px solid #7eaac14d;padding-left:8px}.hand-cards{justify-content:center;align-items:center;gap:4px;min-height:0;display:flex}.playing-card,.card-placeholder{object-fit:contain;filter:drop-shadow(0 2px 3px #0008);border-radius:4px;width:min(31%,60px);height:100%;max-height:91px;display:block}.playing-card{animation:.22s ease-out both card-arrive}.hand-heading{color:#88cfff;justify-content:center;align-items:center;gap:8px;font-size:19px;font-weight:700;display:flex}.hand-heading small{font-size:11px;font-weight:600}.hand-heading b{text-align:center;background:#09203cb8;border:1px solid #2c719d;border-radius:5px;min-width:44px;padding:1px 8px;font-size:17px}.hand-banker .hand-heading{color:#ff9caa}.hand-banker .hand-heading b{border-color:#a84e68}.hand[data-winner=true] .hand-heading b{box-shadow:0 0 10px}.round-meta{color:#a9bfd4;justify-content:center;gap:12px;font-size:11px;display:flex}.round-notice{text-align:center;color:#e0edfa;white-space:nowrap;text-overflow:ellipsis;background:#071a2ee6;margin:0;padding:0 6px;font-size:12px;overflow:hidden}.betting-layer{grid-area:betting;grid-template-rows:35% minmax(0,1fr);grid-template-columns:1fr .86fr 1fr;gap:3px;padding-bottom:3px;display:grid}.bet-hotspot{background:radial-gradient(at 100% 0,#1763b7,#063777 60%,#062449);border:1px solid #329cff;border-radius:5px;flex-direction:column;align-items:center;gap:4px;min-width:0;min-height:0;padding:7px 3px 5px;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #2c86e366}.bet-banker,.bet-banker-pair{background:radial-gradient(at 0 0,#b32639,#780817 60%,#450a16);border-color:#ef3f53;box-shadow:inset 0 0 0 1px #e6324966}.bet-tie{background:radial-gradient(at top,#099a51,#065632 60%,#063124);border-color:#39d57f;box-shadow:inset 0 0 0 1px #17ba6666}.bet-lucky-six{background:linear-gradient(150deg,#075269,#063c4c);border-color:#28b4cc;box-shadow:inset 0 0 0 1px #23a8c366}.bet-label{white-space:nowrap;z-index:1;justify-content:center;align-items:baseline;gap:6px;line-height:1.2;display:flex}.bet-label b{font-size:clamp(24px,6.4vw,31px)}.bet-label small{font-size:17px}.bet-player-pair .bet-label,.bet-banker-pair .bet-label{align-items:center;gap:6px}.bet-lucky-six .bet-label{flex-direction:column;align-items:center;gap:1px}.bet-player-pair .bet-label b,.bet-banker-pair .bet-label b,.bet-lucky-six .bet-label b{font-size:16px}.bet-player-pair .bet-label small,.bet-banker-pair .bet-label small{font-size:14px}.bet-lucky-six .bet-label small{letter-spacing:-.3px;font-size:10px}.bet-own{color:#cce1f4;z-index:1;white-space:nowrap;max-width:100%;margin-top:auto;padding:2px 4px;font-size:11px}.bet-player-pair .bet-own,.bet-banker-pair .bet-own,.bet-lucky-six .bet-own{padding:0;font-size:10px}.bet-watermark{color:#fff;opacity:.1;pointer-events:none;font-size:61px;line-height:1;position:absolute;bottom:8px;left:9px}.wager-chip{z-index:1;flex:0 36px;place-items:center;width:36px;height:36px;min-height:0;margin-top:auto;display:grid;position:relative}.wager-chip img{object-fit:contain;width:100%;height:100%;position:absolute}.wager-chip b{z-index:1;text-shadow:0 1px 3px #000;font-size:10px}.bet-hotspot[data-own-bet=true] .bet-own{color:#fff;background:#051f3caa;border:1px solid #a9d5ff;border-radius:8px}.bet-hotspot[data-winning=true]{box-shadow:inset 0 0 0 2px #ffdc8b,inset 0 0 18px #ffda7638}.bet-hotspot[data-locked=true][data-own-bet=true] .bet-own{border-style:double}.chip-tray-layer{background:linear-gradient(#122f4d,#081b30);border-block:1px solid #36638a;grid-area:chips;align-items:center;display:grid}.chip-list{grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;gap:3px;padding:3px;display:grid}.chip-hotspot{background:0 0;border:0;border-radius:50%;place-items:center;min-width:0;height:54px;min-height:44px;display:grid;position:relative}.selector-chip-art{object-fit:contain;width:100%;height:100%;position:absolute}.chip-hotspot span{z-index:1;text-shadow:0 1px 3px #000,0 0 5px #000;font-size:15px;font-weight:800;position:relative}.chip-hotspot.is-selected{filter:drop-shadow(0 0 4px #8cddff);transform:translateY(-2px)}.chip-hotspot.is-selected:after{content:"";background:#acddff;width:15px;height:2px;position:absolute;bottom:-2px}.chip-hotspot:disabled{opacity:.66}.action-bar-layer{grid-area:actions;grid-template-columns:1fr 1fr 1.9fr;gap:5px;display:grid}.action-hotspot{background:linear-gradient(#315679,#193755);border:1px solid #547ca1;border-radius:7px;min-width:0;min-height:44px;padding:0 4px;font-size:14px;font-weight:700;box-shadow:inset 0 1px 1px #a1c5e44a}.action-confirm{background:linear-gradient(#1e9c7b,#0b5e50);border-color:#43c4a3;font-size:15px}.action-hotspot:disabled{color:#94a8bd;box-shadow:none;background:linear-gradient(#263f5b,#192c42);border-color:#3b5673}.roadmap-layer{color:#142b46;background:#edf1f6;border-radius:4px;grid-area:road;grid-template-rows:40px minmax(0,1fr);display:grid;overflow:hidden}.road-toolbar{align-items:center;gap:5px;min-width:0;padding:0 4px;display:flex}.road-toolbar button{color:#193751;white-space:nowrap;background:0 0;border:0;min-height:40px;padding:0 2px;font-size:12px}.road-toolbar .history-hotspot{font-size:14px;font-weight:800}.road-counts{font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:8px;font-size:12px;font-weight:700;display:flex}.road-surface{grid-template-rows:1.55fr 1fr;min-height:0;display:grid}.road-grid{grid-template-columns:repeat(var(--road-columns), minmax(0, 1fr));background-image:linear-gradient(90deg,#aeb9c57a 1px,#0000 1px),linear-gradient(#aeb9c57a 1px,#0000 1px);background-size:calc(100% / var(--road-columns)) calc(100% / 6);border-bottom:1px solid #aeb9c5;grid-template-rows:repeat(6,minmax(0,1fr));min-height:0;display:grid}.derived-roads{grid-template-columns:repeat(3,minmax(0,1fr));min-height:0;display:grid}.derived-roads>.road-grid+.road-grid{border-left:1px solid #8495a9}.road-grid{container-type:size}.road-marker{--marker-size:min(12px, calc(85cqw / var(--road-columns)), calc(85cqh / 6));width:var(--marker-size);height:var(--marker-size);border:1.5px solid;border-radius:50%;place-self:center}.road-player,.road-blue{color:#0877df}.road-banker,.road-red{color:#d62646}.road-tie-count{color:#14784c}.road-tie{color:#10894d;z-index:2;text-align:center;border:0;font-size:10px;font-weight:900;line-height:1}.derived-roads .road-marker{--marker-size:min(8px, calc(80cqw / var(--road-columns)), calc(80cqh / 6));border-width:1px}.road-grid-small .road-marker{background:currentColor;border:0}.road-grid-cockroach .road-marker{background:currentColor;border:0;border-radius:0;width:2px;transform:rotate(40deg)}.info-bar-layer{grid-area:info;grid-template-columns:1.5fr 1fr 1fr;align-items:center;padding:3px 8px;display:grid}.info-cell{font-variant-numeric:tabular-nums;gap:2px;min-width:0;padding-left:10px;display:grid}.info-cell:first-child{padding-left:0}.info-cell+.info-cell{border-left:1px solid #385775}.info-cell small{color:#acbfd3;font-size:11px}.info-cell small span{font-size:9px}.info-cell b{text-overflow:ellipsis;white-space:nowrap;font-size:18px;overflow:hidden}.info-cell .info-balance{color:var(--gold);font-size:23px}.profit-positive,.info-positive{color:#89e3b7}.profit-negative,.info-negative{color:#ffb0b5}.game-dialog{color:#eef4ff;overscroll-behavior:contain;background:#0d243d;border:1px solid #497bab;border-radius:12px;width:min(94vw,490px);max-height:88dvh;margin:auto;padding:16px;font-size:15px;line-height:1.65}.game-dialog::backdrop{background:#020813d9}.dialog-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.dialog-heading h2{margin:0;font-size:20px}.dialog-heading button{border-radius:8px;min-width:44px;min-height:44px;font-size:25px}.game-dialog p{color:#cbd8e9}.game-dialog small{color:#a9bbce;font-size:13px}.rules-odds{margin:16px 0}.rules-odds div,.history-list li{border-bottom:1px solid #355170;justify-content:space-between;align-items:center;gap:8px;padding:9px 0;display:flex}.rules-odds dd{color:var(--gold);white-space:nowrap;margin:0}.panel-button{color:#fff;background:#22628d;border-radius:8px;width:100%;min-height:48px;font-weight:700}.compact-dialog{width:min(92vw,360px);max-height:calc(100dvh - 24px);padding:14px;line-height:1.45;overflow:hidden}.game-dialog,.lobby-content{scrollbar-width:none}.game-dialog::-webkit-scrollbar{display:none}.lobby-content::-webkit-scrollbar{display:none}.audio-settings{border:1px solid #497bab;border-radius:8px;gap:12px;margin:14px 0 0;padding:12px;display:grid}.audio-settings legend{padding:0 6px;font-weight:700}.audio-switch{background:0 0;border:0;justify-content:space-between;align-items:center;min-height:48px;padding:0;display:flex}.switch-value{color:#9aafc4;align-items:center;gap:10px;font-size:13px;display:flex}.switch-value i{background:#384b60;border-radius:20px;width:44px;height:26px;display:block;position:relative}.switch-value i:after{content:"";background:#edf4fa;border-radius:50%;width:20px;position:absolute;inset:3px auto 3px 3px}.audio-switch[aria-checked=true] .switch-value{color:#86e4be}.audio-switch[aria-checked=true] i{background:#23845d}.audio-switch[aria-checked=true] i:after{left:21px}.audio-language{border-top:1px solid #355170;gap:10px;padding-top:10px;display:grid}.segment-buttons{gap:6px;display:flex}.segment-buttons button{color:#b8cadd;background:#112d4a;border-radius:7px;flex:1;min-height:44px;padding:0 8px}.segment-buttons button[aria-pressed=true]{color:#fff;background:#21577f;border-color:#82c5f3}.rule-pages{margin-top:14px}.rules-page{min-height:230px;font-size:14px}.rules-page p{margin:12px 0 0}.rules-page .rules-odds{margin:10px 0}.rules-page .rules-odds div{min-height:32px;padding:6px 0}.history-list{margin:16px 0;padding:0;list-style:none}.history-summary{justify-content:space-around;margin:16px 0;display:flex}.game-dialog .roadmap-layer{height:232px}.game-dialog .history-hotspot{display:none}.game-dialog .road-surface{grid-template-rows:1.55fr 1fr;display:grid}.game-dialog .derived-roads{display:grid}.lobby-stage{grid-template-rows:60px 1fr;grid-template-areas:"header""lobby";padding:14px}.game-background{object-fit:cover;opacity:.3;z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lobby-header-layer{border-bottom:1px solid #365a7b;grid-template-columns:36px 1fr 54px}.lobby-header-mark{color:#8bc6f5;font-size:28px}.lobby-header-layer .game-title{justify-content:start;gap:0;display:grid}.lobby-header-layer .game-title strong{font-size:19px}.lobby-header-layer .game-title small{font-size:9px}.lobby-table-count{text-align:right;display:grid}.lobby-table-count small{color:var(--muted);font-size:11px}.lobby-table-count b{color:var(--gold);font-size:22px}.lobby-content{flex-direction:column;grid-area:lobby;gap:16px;min-height:0;padding:12px 0;display:flex;overflow:auto}.lobby-heading p{color:var(--muted);margin:8px 0;font-size:14px}.lobby-heading .lobby-eyebrow{color:#7fc6ff;letter-spacing:.2em;font-size:11px}.lobby-heading h1{margin:0;font-size:28px}.lobby-table-list{gap:12px;display:grid}.lobby-table-row{background:#0c2540ee;border:1px solid #3b638c;border-radius:12px;grid-template-columns:1fr 124px;gap:10px;padding:14px;display:grid}.lobby-table-code{color:#82b9e5;letter-spacing:.1em;font-size:11px}.lobby-table-summary h2{margin:4px 0 8px;font-size:20px}.lobby-table-meta{color:#c6d6e8;gap:4px;font-size:12px;display:grid}.lobby-table-action{border-top:1px solid #365371;grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;padding-top:8px;display:flex}.lobby-phase{color:#e4c189;font-size:14px}.lobby-phase-betting{color:#8cdeb6}.lobby-enter-button{background:#1c679c;border-radius:8px;min-width:118px;min-height:44px;font-weight:700}.lobby-bead-road{grid-template-rows:20px 1fr;gap:4px;height:104px;display:grid}.lobby-bead-title{color:#abc0d5;font-size:12px}.lobby-bead-grid{background:#e8eef5;border:1px solid #93a8bc;display:grid}.lobby-bead-cell{border-bottom:1px solid #bdc9d6;border-right:1px solid #bdc9d6;place-items:center;display:grid}.lobby-bead-marker{color:#fff;text-align:center;border-radius:50%;width:10px;height:10px;font-size:7px;line-height:10px}.lobby-bead-player{background:#2876c9}.lobby-bead-banker{background:#cc3451}.lobby-bead-tie{background:#198954}.lobby-footer{color:var(--muted);text-align:center;margin-top:auto;font-size:12px}.lobby-status-error{color:#ffb6b4}.rotate-notice{display:none}#root>main[role]{text-align:center;color:#d4e8ff;place-content:center;height:100%;padding:24px;font-size:17px;display:grid}@keyframes card-arrive{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (max-height:740px){.game-stage:not(.lobby-stage){grid-template-rows:44px minmax(128px,1fr) minmax(156px,1fr) 52px 44px minmax(108px,.8fr) 48px;gap:2px}.table-layer{grid-template-rows:28px minmax(0,1fr) 14px 17px}.table-art{height:calc(100% - 28px);inset-block-start:28px}.round-clock{padding-inline:8px}.phase-label{font-size:14px}.clock-value strong{font-size:21px}.hands{padding-top:4px}.hand{grid-template-rows:minmax(0,1fr) 22px;gap:2px}.hand-heading{font-size:16px}.hand-heading b{font-size:14px}.betting-layer{grid-template-rows:39% minmax(0,1fr)}.bet-hotspot{gap:2px;padding-top:3px}.bet-label b{font-size:23px}.bet-label small{font-size:15px}.bet-watermark{font-size:45px}.wager-chip{flex-basis:25px;width:25px;height:25px}.wager-chip b{font-size:8px}.chip-hotspot{height:45px}.chip-hotspot span{font-size:13px}.roadmap-layer{grid-template-rows:36px minmax(0,1fr)}.road-toolbar button{min-height:36px}}@media (max-height:620px){.game-stage:not(.lobby-stage){grid-template-rows:44px minmax(80px,1fr) 126px 44px 44px 72px 44px;padding-bottom:2px}.table-layer{grid-template-rows:24px minmax(0,1fr) 16px}.table-art{height:calc(100% - 24px);inset-block-start:24px}.round-meta{display:none}.round-notice{font-size:11px}.hands{padding-block:2px}.hand{grid-template-rows:minmax(0,1fr) 18px}.hand-heading small{display:none}.hand-heading b{padding-block:0}.clock-value{font-size:10px}.betting-layer{grid-template-rows:50px minmax(0,1fr)}.bet-label b{font-size:21px}.bet-label small,.bet-player-pair .bet-label b,.bet-banker-pair .bet-label b,.bet-lucky-six .bet-label b{font-size:14px}.wager-chip{display:none}.bet-own{padding-block:0;font-size:10px}.bet-watermark{font-size:36px}.chip-list{padding:0}.chip-hotspot{height:44px}.road-surface{grid-template-rows:1fr}.derived-roads{display:none}.roadmap-layer{grid-template-rows:32px minmax(0,1fr)}.road-toolbar button{min-height:32px}.info-cell .info-balance{font-size:20px}.info-cell b{font-size:16px}}@media (max-width:360px){.game-title strong{font-size:21px}.game-title{gap:5px}.game-title small{max-width:92px}.bet-label{gap:4px}.bet-label b{font-size:23px}.bet-label small{font-size:14px}.bet-own{font-size:10px}.bet-lucky-six .bet-label small{font-size:9px}.road-counts{gap:4px;font-size:11px}.road-toolbar{gap:3px}.road-toolbar button{font-size:10px}.hand-heading{gap:4px}.hand-heading small{font-size:9px}.info-cell .info-balance{font-size:20px}.info-cell b{font-size:16px}.info-cell{padding-left:6px}}@media (orientation:landscape) and (pointer:coarse) and (hover:none){.rotate-notice{z-index:100;text-align:center;color:#e3eeff;background:#0a1f37;place-content:center;padding:24px;display:grid;position:fixed;inset:0}.rotate-notice strong{font-size:25px}.rotate-notice p{color:#bdcee0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
