/* Blue/gold artwork is separate from the live, server-driven game controls. */
:root{--gold:#ffd984;--cream:#fff3c9;--wine:#21100e;--dark:#080f1e}
.arena{background:#080f1e}
.royal-background{inset:0;background-image:url('/assets/luxury/scenery-v1.webp');background-size:100% 100%;filter:none}
.royal-shade{background:linear-gradient(180deg,#0a060918,transparent 25% 70%,#09080e68)}
.wall-lamp{top:116px;height:108px;width:64px;border-width:3px;line-height:78px;font-size:40px;background:linear-gradient(#ffb95366,#71300bbb);box-shadow:0 0 24px #ffbb4b70,inset 0 0 20px #ffde95}
.wall-lamp::after{content:'房主';display:block;font-size:17px;line-height:18px;letter-spacing:3px;margin-top:-9px}
.room-box{left:22px;top:15px;gap:14px}
.room-metadata{border-radius:12px;min-width:328px;padding:9px 19px;background:linear-gradient(145deg,#150d08ee,#28160de8);border-color:#e3b15e;box-shadow:inset 0 0 18px #ffc35812,0 6px 18px #0007}
.room-brand{color:#ffeab6;letter-spacing:5px;font-size:24px;font-weight:900;margin-bottom:3px;border-bottom:1px solid #e2b36345;padding-bottom:3px}
.room-meta-top{font-size:22px}.room-meta-top b{font-size:25px}.room-meta-bottom{gap:13px;font-size:15px}
.top-back,.menu-buttons button,.circle-tool{background:radial-gradient(ellipse at 35% 15%,#503416,#1b100b 68%);border-color:#e9b965;box-shadow:inset 0 0 14px #ffaa2720,0 3px 12px #0008}
.menu-buttons{gap:14px;top:14px}.menu-buttons button{width:81px;height:81px;font-size:17px}.menu-buttons button span{font-size:32px}
.dealer-art,.arena.fill-viewport .dealer-art,.compact-landscape .dealer-art,.dealer-front-arm{left:50%;top:-.5%;width:auto;height:38%;aspect-ratio:1;transform:translateX(-50%);filter:none}
.dealer-art{background:none;z-index:4;opacity:1}
.dealer-body{position:absolute;inset:0;transform-origin:50% 85%;animation:dealer-breathe 5.4s ease-in-out infinite}
.dealer-pose,.dealer-arm-pose{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;transition:opacity 85ms ease-in-out;user-select:none}
/* The torso sits in the existing chair, behind the matching rear table rail.
   Only the registered reaching arm is composited in front of that rail. */
.dealer-pose{clip-path:inset(0 0 16% 0)}
.dealer-table-edge{position:absolute;inset:0;z-index:5;pointer-events:none;background:url('/assets/luxury/scenery-v1.webp') 0 0/100% 100%;clip-path:polygon(37% 28.5%,39% 29%,40% 30.4%,43% 31.6%,47% 32%,53% 32%,57% 31.6%,60% 30.4%,61% 29%,63% 28.5%,63% 34.2%,37% 34.2%)}
.dealer-front-arm{position:absolute;z-index:6;pointer-events:none}
.dealer-arm-pose{opacity:0;clip-path:polygon(0 58%,34% 58%,34% 75%,30% 84%,30% 100%,0 100%)}
.dealer-art.is-releasing ~ .dealer-front-arm .dealer-arm-pose{opacity:1}
.dealer-blink,.dealer-deal{opacity:0}.dealer-art.is-blinking .dealer-idle{opacity:0}.dealer-art.is-blinking .dealer-blink{opacity:1}.dealer-art.is-releasing .dealer-idle,.dealer-art.is-releasing .dealer-blink{opacity:0}.dealer-art.is-releasing .dealer-deal{opacity:1}
.felt-table,.arena.fill-viewport .felt-table{left:92px;top:28%;height:54%;width:calc(100% - 184px);background:none;border:0;box-shadow:none;border-radius:50%;}
.felt-table::before,.inner-felt,.table-corner{display:none}
.seat-top-left,.arena[data-player-count="2"] .seat-top-left,.arena[data-player-count="4"] .seat-top-left{left:92px;top:-24px;transform:none}
.seat-top-right{right:92px;top:-24px}.seat-middle-left{left:-30px;top:43%}.seat-middle-right{right:-30px;top:43%}
.arena[data-player-count="2"] .dealer-art,.arena[data-player-count="4"] .dealer-art{opacity:1}
.seat-row{gap:12px}.seat-portrait{width:93px;height:93px;border:4px solid #f8d484;box-shadow:0 0 0 3px #6d431d,0 0 18px #ffd16133}
.seat-meta{padding:7px 12px;background:linear-gradient(90deg,#09121ce6,#0f1524c9);border:1px solid #d09c4740;box-shadow:0 4px 15px #0005;min-width:138px}
.seat-name{font-size:22px}.seat-score{color:#ffe69f}.seat-line{margin-top:7px;background:#0a101de0;border:1px solid #d9aa5066;border-radius:20px;padding:4px 16px;min-height:29px;max-width:300px}.seat-state{color:#bfc8d5}.seat-rank{font-size:24px;color:#ffe6a3}
.table-center{top:24%;filter:drop-shadow(0 3px 7px #020613)}
.arena[data-phase="lobby"] .table-center{top:26%}.arena[data-phase="lobby"] #stage-tip{letter-spacing:4px;font-size:14px;color:#dbb674}
#center-title{font-size:52px;margin:7px -150px;color:#ffe8a4;font-family:"Songti SC","SimSun",serif;letter-spacing:4px;text-shadow:0 3px 1px #784115,0 0 24px #ffb33980}
#center-sub{font-size:21px;line-height:1.5;color:#fff0cb}.arena[data-phase="lobby"] #phase-pill{margin-top:15px;background:#101426d9;border-color:#ebbe71;color:#ffdb8e}
.arena:is([data-phase="betting"],[data-phase="reveal"]) .table-center{top:30%}
.round-countdown{position:relative;display:flex;flex-direction:column;gap:0;min-height:196px;font-size:24px;filter:drop-shadow(0 0 16px #ffb93944)}
#countdown-label{position:absolute;top:32px;z-index:2;font-size:22px;pointer-events:none}
.countdown-dial{width:196px;height:196px}.countdown-dial circle{fill:#101324ed;stroke-width:3}.countdown-track{stroke:#f5c57258}#countdown-ring{fill:none;stroke:#ffd276;stroke-width:4}
#countdown-number{padding-top:19px;font-size:58px;text-shadow:0 0 15px #ffc76088}
.round-countdown::before,.round-countdown::after{content:'❖';position:absolute;top:76px;font-size:34px;color:#ffd27c;text-shadow:0 0 12px #ffae43}.round-countdown::before{left:calc(50% - 108px)}.round-countdown::after{right:calc(50% - 108px)}
.round-countdown.urgent #countdown-number{font-size:66px}.round-countdown.urgent::before,.round-countdown.urgent::after{color:#ff7770}
.poker-deck{top:64%;opacity:.9;width:65px;height:88px;font-size:44px;line-height:74px}.center-chips{display:none}
.arena[data-phase="lobby"] .poker-deck,.arena[data-phase="lobby"] .hand-zone,.arena[data-phase="betting"] .hand-zone{display:none}
.me-info{left:124px;bottom:90px;width:345px;height:118px;background:linear-gradient(90deg,#121120f0,#17131bbb 85%,transparent)}
.me-avatar{border:5px solid #ffda8a;box-shadow:0 0 0 4px #784822,0 0 25px #ffc25248}.me-details strong{font-size:26px}.me-details span{background:linear-gradient(#ffe8ad,#d59c41);color:#452909;font-size:14px}.my-gold{font-size:24px}
.hand-zone,.arena.fill-viewport .hand-zone{bottom:54px;left:calc(50% - 330px);width:660px}
.playing-card{width:103px;height:150px;border-color:#f4d89e;box-shadow:0 0 0 2px #7b391a,0 0 16px #ffc76d30,0 8px 12px #0007}.my-hand{min-height:150px;gap:12px}.hand-caption{font-size:21px;min-height:32px;margin-top:10px;text-shadow:0 2px 6px #000}
.card-back,.playing-card.card-back,.seat-small-card:not(.face),.flying-card,.poker-deck{background-color:#a82a2a;background-image:radial-gradient(ellipse at center,transparent 28%,#edc08330 29%,transparent 31%),repeating-conic-gradient(from 45deg,#e8aa532a 0deg 1deg,transparent 1deg 89deg);background-size:100% 100%,14px 14px;border-color:#ffe9b7;color:#ffda87}
.playing-card.card-back:after{inset:6px;border:2px solid #f5bd6c;border-radius:3px;box-shadow:inset 0 0 0 3px #a42826,inset 0 0 0 4px #f8c67766}
.back-mark{filter:drop-shadow(0 2px 4px #59100b)}.seat-small-card{border-width:2px;box-shadow:0 3px 5px #0006}.flying-card{box-shadow:0 0 14px #ffb85588,0 6px 12px #0007}.flying-card::after{content:'';position:absolute;right:100%;top:45%;width:54px;height:2px;background:linear-gradient(90deg,transparent,#ffe4a5);box-shadow:0 0 8px #ffb147}
.game-action,.arena.fill-viewport .game-action{left:calc(50% - 340px);bottom:67px;min-height:124px;background:linear-gradient(90deg,transparent,#0a0c16aa 14% 86%,transparent)}
.game-action .action-button{font-size:29px;min-height:76px;padding:15px 38px;border-radius:22px;border:2px solid #ffebbd;box-shadow:inset 0 3px 3px #fffce1,0 0 0 3px #cc8e3480,0 0 20px #ffb43655,0 5px 0 #7b4817,0 10px 20px #0007}
.game-action .action-button.secondary{background:linear-gradient(#676eff,#3639c9 55%,#1d2382);border-color:#ced6ff;color:#fff5dc;box-shadow:inset 0 2px 5px #dae5ff88,0 0 0 2px #686ad580,0 0 19px #6269e555,0 5px 0 #172054}
.game-action .action-button.ready-on{background:linear-gradient(#25885e,#136747);color:#f1ffec;border-color:#a3e3b2;box-shadow:inset 0 2px 4px #caffdb55,0 0 0 3px #32846155,0 0 20px #40cc8133,0 5px 0 #0c3b2b}
.game-action .action-button:disabled{color:#aea9a0;background:linear-gradient(#5c574c,#343532);border-color:#77746d;box-shadow:inset 0 2px 3px #fff1,0 4px 0 #222420}
.game-action .action-hint{font-size:19px;color:#fff0c3;margin-top:0;background:#090d18b0;border:1px solid #cca05266;border-radius:22px;padding:5px 13px;flex-basis:auto;min-width:330px}
.arena[data-phase="betting"] .game-action{bottom:51px;row-gap:9px}.game-action .quick-bets{gap:14px!important}.quick-bets button{width:65px!important;height:65px;background:radial-gradient(circle,#c22f35 47%,#eee5c5 49% 55%,#9b2028 57%);font-size:20px;border:4px dashed #fff0c9;box-shadow:0 0 0 2px #c8954588,0 5px 10px #0008}.quick-bets button:nth-child(even){background:radial-gradient(circle,#3c55bf 47%,#eee5c5 49% 55%,#26349e 57%)}.quick-bets button:nth-child(3n){background:radial-gradient(circle,#278658 47%,#eee5c5 49% 55%,#1a663d 57%)}
.arena[data-phase="betting"] .action-button{min-height:58px;padding:9px 25px;font-size:24px}.bet-confirm input{height:49px;width:115px;background:#0b1222f0;font-size:25px}.bet-confirm>span{font-size:21px}
.arena[data-phase="dealing"] .game-action,.arena[data-phase="reveal"] .game-action{left:auto;right:93px;bottom:84px;width:342px;min-height:104px;background:none;gap:10px}
.arena:is([data-phase="dealing"],[data-phase="reveal"]) .game-action .action-title{font-size:21px;white-space:normal}.arena:is([data-phase="dealing"],[data-phase="reveal"]) .action-hint{font-size:17px;min-width:0;line-height:1.5;border:0;background:#0a0d1a95;padding:5px 8px;width:100%}
.arena[data-phase="reveal"] .action-button{font-size:22px;min-height:61px;padding:10px 14px;flex:1}
.toolbar-left{left:20px;bottom:18px;display:flex;flex-direction:column;gap:9px;padding:0;border:0;background:none;width:80px}.toolbar-left .toolbar-item{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:15px}.toolbar-left .circle-tool{height:60px;width:60px;font-size:28px}
.toolbar-right{right:24px;bottom:20px;gap:14px}.toolbar-right .circle-tool{width:64px;height:64px}.chat-drawer{left:109px;bottom:80px}.floating-drawer{background:linear-gradient(145deg,#142034fa,#090d18fa);border-color:#e4b35f}.modal-card{background:linear-gradient(145deg,#162238,#090e1b);border-color:#e4b96e}
.result-hud,.arena.fill-viewport .result-hud{left:calc(50% - 246px);top:35%;width:492px;max-width:492px;min-width:0;max-height:310px;padding:15px 19px;background:linear-gradient(155deg,#302009ed,#111326f5);border:2px solid #ffd47b;border-radius:15px;overflow:hidden;box-shadow:0 0 0 4px #88542a66,0 0 32px #ffc45744,0 15px 30px #000b}
.settlement-crown{text-align:center;color:#ffe098;font-size:37px;line-height:34px;text-shadow:0 0 15px #ffae37}
.result-hud h3{text-align:center;font-size:32px;line-height:1.2;margin:4px 0 5px;color:#ffebad;text-shadow:0 2px 0 #854211,0 0 18px #ffb34c80;font-family:"Songti SC","SimSun",serif}
.settlement-sub{text-align:center;font-size:18px;color:#f9d49d;margin-bottom:7px}.result-line{margin:3px 0;padding:4px 0;font-size:18px;gap:9px}.result-name{width:122px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.result-rank{flex:1;color:#ffdc99;font-size:17px}.result-line b{min-width:71px;text-align:right;font-size:23px}.result-next{border:0;margin-top:7px;font-size:15px;color:#eac89b;display:flex;justify-content:space-between}.result-hud[data-tone="lose"] h3{color:#f6dbbc;text-shadow:0 2px 0 #563221}.result-hud .minus{color:#ff9286}.result-hud .plus{color:#9fff9a;text-shadow:0 0 10px #2cf36c44}
.arena[data-phase="result"] .game-action{bottom:6px;min-height:40px;font-size:18px;background:none}.arena[data-phase="result"] .game-action .action-title{font-size:18px;background:#09101cce;border:1px solid #b8915b80;border-radius:20px;padding:6px 20px}
#celebration-layer{position:absolute;inset:0;z-index:15;pointer-events:none;overflow:hidden}.celebration-coin{position:absolute;top:32%;left:var(--x);width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff6bb,#fac857 45%,#b17019 75%);border:3px double #ffe1a2;box-shadow:0 0 12px #ffd57160;opacity:0;animation:coin-spark 1.7s var(--delay) ease-out 2}.celebration-coin::after{content:'♛';color:#8d5716;font-size:12px;display:block;text-align:center;line-height:16px}
.welcome-background{background-image:url('/assets/luxury/scenery-v1.webp');filter:blur(3px) brightness(.75)}.welcome-shade{background:radial-gradient(ellipse at center,#09203d38,#050916bd 85%)}.welcome-card{background:linear-gradient(145deg,#18283fe8,#0b0f1bef);border-color:#f1c779;box-shadow:0 18px 70px #000b,inset 0 0 55px #ffc24d12}.welcome-tagline{color:#ffe5ad}.welcome-card h1{color:#ffe3a1}.welcome-card h1 span{color:#eac27a}.welcome-card input{background:#080e1bdc}.rotate-overlay{background:radial-gradient(circle at center,#203754,#080e1d 78%)}
.compact-landscape .seat-top-left,.compact-landscape .seat-top-right{top:-14px}.compact-landscape .seat-middle-left,.compact-landscape .seat-middle-right{top:43%}.compact-landscape .hand-zone{bottom:46px}.compact-landscape .playing-card{width:96px;height:136px}.compact-landscape .my-hand{min-height:136px}.compact-landscape .hand-caption{font-size:20px;min-height:27px;margin-top:8px}.compact-landscape .me-info{bottom:82px}.compact-landscape .result-hud{top:32%;max-height:296px;padding:11px 17px}.compact-landscape .result-hud h3{font-size:29px}.compact-landscape .result-line{font-size:17px;margin:2px 0;padding:3px 0}.compact-landscape .result-line b{font-size:21px}.compact-landscape .game-action:has(.quick-bets){bottom:20px;min-height:158px}.compact-landscape .game-action .action-button{font-size:26px}.compact-landscape .quick-bets button{height:59px}.compact-landscape .game-action .action-hint{font-size:17px}.compact-landscape .countdown-dial{width:178px;height:178px}.compact-landscape .round-countdown{min-height:178px}.compact-landscape #countdown-label{top:28px;font-size:21px}.compact-landscape #countdown-number{font-size:52px}.compact-landscape .round-countdown::before,.compact-landscape .round-countdown::after{top:66px}.compact-landscape .round-countdown::before{left:calc(50% - 98px)}.compact-landscape .round-countdown::after{right:calc(50% - 98px)}.compact-landscape .round-countdown.urgent #countdown-number{font-size:60px}
@keyframes dealer-breathe{0%,100%{transform:translateY(0) rotate(-.18deg)}50%{transform:translateY(2px) rotate(.18deg) scale(1.004)}}
@keyframes coin-spark{0%{opacity:0;transform:translate(0,0) rotateY(0) scale(.4)}15%{opacity:.9}100%{opacity:0;transform:translate(var(--drift),270px) rotateY(540deg) rotate(85deg) scale(.9)}}
@media(prefers-reduced-motion:reduce){.dealer-body,.celebration-coin{animation:none}.dealer-pose{transition:none}.flying-card::after{display:none}}
