/* Canonical layout. Menu artwork contains no live text or controls. */
*{box-sizing:border-box}:root{color-scheme:dark;--gold:#d8bc7b;--text:#f3ecda;--muted:#b7c8bc;--border:#b99a5d55;font-family:Arial,Helvetica,sans-serif;background:#0f0b05;color:var(--text)}body{margin:0;min-height:100svh;background:#0f0b05;display:flex;justify-content:center;align-items:center}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer;color:inherit}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #f5dfa4;outline-offset:4px}button:not(:disabled):active{translate:0 1px}a{color:var(--gold)}h1,h2,h3,p{overflow-wrap:anywhere}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;color:#ead39a;font-weight:500}p{line-height:1.6}.muted{color:var(--muted);margin:0}img{max-width:100%}[hidden]{display:none!important}.sr-only{position:absolute;top:0;left:0;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;margin:0;white-space:nowrap}.stage{position:relative;width:min(100vw,calc(100svh * 16 / 9),1600px);aspect-ratio:16/9;isolation:isolate;container-type:inline-size;background:#2c2822;overflow:clip;box-shadow:0 16px 80px #0008}.screen-art,#surface{position:absolute;inset:0;width:100%;height:100%}.screen-art{object-fit:fill;pointer-events:none}.stage.menu-mode{width:min(1240px,100%);min-height:100svh;height:auto;aspect-ratio:auto;overflow:visible;background:linear-gradient(#120e0863,#120e08e8),url('/assets/lounge-clean.webp') center top/cover fixed}.menu-mode #surface{position:relative;inset:auto;height:auto}.menu-shell{padding:24px clamp(20px,4vw,56px) 18px;min-height:100svh;display:flex;flex-direction:column}.shell-header{display:grid;grid-template-columns:48px 1fr auto;gap:18px;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--border)}.header-spacer{width:48px}.brand-block{display:flex;align-items:center;gap:28px;min-width:0}.brand{font:clamp(20px,2.4vw,28px) Georgia,serif;letter-spacing:.09em;color:#e5ca8b;white-space:nowrap}.wallet{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:#efe6cf;white-space:nowrap}.header-tools{display:flex;gap:10px;align-items:center}.menu-main{padding:28px 0;flex:1;min-width:0}.page-heading{margin-bottom:24px}.page-heading h1{font-size:clamp(26px,3vw,36px);line-height:1.15;margin:0 0 12px}.page-heading p{max-width:760px;font-size:15px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.08em;color:#cbb881;line-height:1.5}.primary,.secondary,.gold-button,.danger,.switch-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 22px;gap:8px;border:1px solid #c7aa6a;border-radius:12px;font-size:15px;line-height:1.25;font-weight:700;text-align:center;box-shadow:inset 0 1px 1px #fffb,0 3px 8px #0005;background:linear-gradient(155deg,#6c6862,#45413b 55%,#302c26);text-decoration:none;max-width:100%}.secondary{background:linear-gradient(145deg,#37332d,#1c1812);color:#e5d9bb;border-color:#947d4e}.gold-button{background:linear-gradient(135deg,#efd9a6,#d6b56f 55%,#a48345);color:#18271b}.danger{background:linear-gradient(150deg,#8b3442,#4a1723)}.text-button{border:0;background:transparent;color:#dbc58f;font-size:14px;min-height:44px;padding:10px;text-decoration:underline;text-underline-offset:4px}.round-button,.language-button,.game-language{display:inline-grid;place-items:center;min-height:44px;min-width:44px;padding:8px 12px;border:1px solid #b99d63;border-radius:24px;background:#24201ae8;color:#ebd69d;font-size:14px;font-weight:600}.round-button{width:46px;height:46px;padding:0;font-size:24px}.button-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:22px}.button-column{display:grid;gap:8px}.bottom-actions{justify-content:center}.bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;border-top:1px solid var(--border);padding-top:16px}.nav-button{min-height:48px;background:transparent;border:1px solid transparent;border-radius:10px;font-size:14px;color:#c0cbbf}.nav-button[aria-current=page]{border-color:#b89a5c77;color:#f0dcaa;background:#332f2980}.menu-panel{background:linear-gradient(140deg,#332f29dc,#1a1610ed);border:1px solid var(--border);border-radius:18px;padding:26px;box-shadow:0 10px 30px #0003;min-width:0}.menu-panel h2{font-size:24px;margin:0 0 16px;line-height:1.25}.menu-panel>p{font-size:15px}.menu-panel>.primary,.menu-panel>.secondary{margin-top:16px}.room-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.room-tile{background:#1f1b15ed;border:1px solid #ac9056b0;border-radius:18px;overflow:hidden;box-shadow:0 12px 30px #0004;min-width:0}.room-picture{aspect-ratio:2.08;background-image:url('/design/screens/03-table-selection.webp');background-size:335% auto;background-repeat:no-repeat;background-position:7% 34%;border-bottom:1px solid var(--border)}.room-1{background-position:51% 34%}.room-2{background-position:95% 34%}.room-body{padding:22px;display:flex;flex-direction:column;gap:12px}.room-body h2{font-size:24px;line-height:1.15;margin:0}.room-body p{font-size:13px}.room-seats{font-size:12px;color:#aebfb1}.room-body button{margin-top:6px}.account-strip{display:flex;align-items:center;gap:14px;margin:-6px 0 26px;min-width:0}.account-strip>strong{font-size:16px;overflow-wrap:anywhere;min-width:0}.account-strip>.primary{margin-left:auto}.avatar{border:2px solid #c7af74;border-radius:50%;background:#29251f url('/design/screens/09-friends.webp') 16.5% 29.2%/1300% auto no-repeat;box-shadow:0 4px 15px #0005;flex-shrink:0}.avatar.photo{background-size:cover;background-position:center}.small-portrait{position:relative;width:44px;height:44px}.profile-portrait{position:relative;width:140px;height:140px;margin:0 auto 18px}.welcome-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:50px;align-items:center;min-height:520px;padding:40px 0}.welcome-copy h1{font-size:clamp(36px,4.8vw,62px);margin:18px 0 24px;max-width:600px;line-height:1.12}.welcome-copy p{font-size:17px;max-width:540px}.welcome-cards{display:flex;justify-content:center;align-items:center;padding:50px 20px}.welcome-cards .playing-card:first-child{rotate:-12deg;z-index:1}.welcome-cards .playing-card:last-child{rotate:11deg;margin-left:-20px;translate:0 -15px}.shop-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}.shop-tile{padding:24px 18px;background:linear-gradient(#35312bd9,#1d1913f5);border:1px solid #b5995e99;border-radius:18px;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0;gap:12px}.shop-tile h2{font-size:30px;margin:0;white-space:nowrap}.shop-tile .gold-button{width:100%;margin-top:10px}.shop-stack{position:relative;height:110px;width:85px;margin:12px 0 0}.shop-stack .chip{position:absolute;left:10px;bottom:calc(var(--stack) * 9px);width:64px;height:64px;min-height:0;min-width:0;border-width:6px;font-size:20px}.gift-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.gift-slot{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 12px;border:1px solid var(--border);border-radius:14px;background:#211d17df}.gift-slot.selected{border-color:#dfc989;background:linear-gradient(#4f4b45,#35312b)}.gift-slot .chip{width:50px;height:50px;min-width:0;min-height:0;border-width:5px;font-size:18px}.gift-slot strong{font-size:18px}.gift-reward{text-align:center;margin-top:35px}.gift-reward h2{font-size:38px;margin:0 0 20px}.gift-reward p{margin-top:18px;font-size:14px}.profile-grid{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,2fr);gap:24px}.profile-grid>.menu-panel:first-child{text-align:center}.profile-name{font-size:30px!important;overflow-wrap:anywhere}.profile-grid .button-column{margin-top:24px}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:24px}.stats-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{display:flex;flex-direction:column;gap:12px;min-width:0}.metric-label{font-size:12px;line-height:1.5;color:#b9cbbb}.metric strong{font:32px Georgia,serif;color:#eed79e;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stats-grid.four .metric{padding:20px;border-bottom:1px solid var(--border);background:#2c282277;border-radius:12px}progress{accent-color:#d7bf7e;width:100%;height:9px;border:0}.badges-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:24px}.badge-preview{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:18px 6px;border-bottom:1px solid var(--border);color:#bdc6bb;font-size:13px}.badge-preview strong{font-weight:500}.badge-preview small{font-size:11px;color:#c2af7f}.badge-icon{width:52px;height:52px;display:grid;place-items:center;border:1px solid #b6a16c;border-radius:15px;font:30px Georgia;color:#d0be8c;background:linear-gradient(145deg,#524e48,#27231d)}.locked .badge-icon,.badge-preview:not(.earned) .badge-icon{filter:grayscale(1);opacity:.6}.earned .badge-icon{background:linear-gradient(135deg,#947b38,#38342e);color:#f1d68b;box-shadow:0 0 20px #d7b96022}.badge-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:24px 0}.badge-tile{border:1px solid var(--border);border-radius:16px;padding:24px;background:#201c16ed;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;min-width:0}.badge-tile.earned{border-color:#d0b475aa;background:linear-gradient(#433f39,#221e18)}.badge-tile h2{margin:0;font-size:21px}.badge-tile p{font-size:14px;min-height:44px}.badge-count{font-size:12px;color:#cfbb85}.settings-panel{width:min(720px,100%);margin:auto}.settings-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(140px,1.3fr) 50px;gap:18px;align-items:center;min-height:76px;padding:16px 0;border-bottom:1px solid #b7a06b30;font-size:16px}.settings-row input[type=range]{width:100%;height:40px;accent-color:#d2b773;min-width:0}.settings-row output{font-size:14px;font-variant-numeric:tabular-nums;color:#d1c39d;text-align:right}.settings-row>.switch-button,.settings-row>.secondary{grid-column:2/4;justify-self:end;min-width:100px}.switch-button{background:linear-gradient(#57534d,#2f2b25);min-width:90px;padding:10px 18px}.switch-button[aria-pressed=false]{background:#2f2b25;color:#c0c8bf}.settings-links{justify-content:center}.guide-link{display:block;text-align:center;font-size:14px;margin:22px auto 0}.friends-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}.friends-grid .menu-panel:last-child{display:flex;flex-direction:column}.friends-grid .menu-panel:last-child button{width:100%}.friend-row{display:flex;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.friend-row>strong{flex:1;overflow-wrap:anywhere}.friend-row>.muted{font-size:13px}.history-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto 12px;gap:20px;align-items:center;min-height:78px;width:100%;margin-top:12px;padding:18px 22px;border:1px solid var(--border);border-radius:14px;background:#231f19ee;text-align:left}.history-caption{display:flex;flex-direction:column;gap:8px;min-width:0}.history-caption strong{font:18px Georgia;color:#e1d0a3;overflow-wrap:anywhere}.history-caption small{font-size:12px;color:#adc1b1}.history-wager{font-size:14px;color:#bacbbc}.history-net{white-space:nowrap;font-size:16px}.positive .history-net{color:#a0dfb5}.negative .history-net{color:#e3b49e}.tutorial-layout{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center}.tutorial-layout .menu-panel:first-child{text-align:center;background:linear-gradient(#3e3a34ed,#27231de8)}.demo-hand{display:flex;justify-content:center;gap:12px;padding:12px 0}.demo-rule{font:14px Georgia;color:#cfb77e;margin:16px 0}.tutorial-layout h2{font-size:28px;line-height:1.3}.tutorial-layout .eyebrow{display:block;margin-bottom:18px}.reconnect-panel{width:min(600px,100%);margin:50px auto}.reconnect-panel p{margin-bottom:16px}.reconnect-panel .button-row{justify-content:center}
/* Cards and live table: a single coordinate system with reserved hand/result/control zones. */
.playing-card{--card-width:6.7cqw;--card-height:9.7cqw;position:relative;width:var(--card-width);height:var(--card-height);flex-shrink:0;border-radius:calc(var(--card-width) * .075);background:radial-gradient(ellipse at 30% 0,#fffdf1,#f1e7d0 72%,#ded1b8);border:1px solid #e2d5ba;color:#13201a;box-shadow:0 2px 0 #b8ad95,0 4px 0 #cfc3ab,0 8px 14px #0006,inset 0 0 10px #fff8;font-family:Georgia,serif;transform:rotate(calc((var(--i) - .5) * 2deg))}.playing-card.red{color:#ad2434}.playing-card+.playing-card{margin-left:-1.4cqw}.card-corner{position:absolute;top:calc(var(--card-width) * .05);left:calc(var(--card-width) * .06);font-size:calc(var(--card-width) * .23);font-weight:bold;line-height:.94;white-space:pre-line;text-align:center;z-index:1}.card-corner.reverse{top:auto;left:auto;bottom:calc(var(--card-width) * .05);right:calc(var(--card-width) * .06);transform:rotate(180deg)}.card-center{position:absolute;inset:calc(var(--card-width) * .255) calc(var(--card-width) * .18);font-size:calc(var(--card-width) * .225)}.card-center.ace{display:grid;place-items:center;font-size:calc(var(--card-width) * .56)}.pip{position:absolute;line-height:1}.court-portrait{background-image:url('/assets/court-atlas.webp');background-size:300% 200%;background-repeat:no-repeat;border:1px solid #b69b60;border-radius:2px}.card-back{padding:calc(var(--card-width) * .075);background:#eee3cd}.back-pattern{height:100%;border:2px solid #bb9d5a;border-radius:3px;background:repeating-linear-gradient(45deg,transparent 0 4px,#d5b66a44 4px 5px),repeating-linear-gradient(-45deg,transparent 0 4px,#d5b66a44 4px 5px),linear-gradient(#37332d,#16120c);display:grid;place-items:center;color:#d3b773}.back-pattern b{font-size:calc(var(--card-width) * .5);background:#221e18;border-radius:50%;padding:3px}.menu-mode .playing-card{--card-width:76px;--card-height:110px}.menu-mode .playing-card+.playing-card{margin-left:0}.welcome-cards .playing-card{--card-width:128px;--card-height:186px}.history-detail .playing-card{--card-width:52px;--card-height:76px;transform:none}.history-detail .playing-card+.playing-card{margin-left:-6px}.history-detail{border-top:1px solid var(--border);padding:16px 0}.history-detail h3{font-size:18px;margin:0 0 12px}.compact-cards{display:flex;overflow:auto;gap:8px;padding:4px 3px 10px}.history-detail p{margin:10px 0 0}.game-shade{position:absolute;inset:0;background:linear-gradient(#0003,transparent 40%,transparent 72%,#0007);pointer-events:none}.topbar{position:absolute;left:2%;right:2%;top:2%;display:flex;gap:12px;align-items:center;z-index:5}.topbar:before{content:'';position:absolute;inset:-20px -3% -14px;background:linear-gradient(90deg,#17130df2 0 34%,transparent 38% 62%,#17130df2 67%);z-index:-1;pointer-events:none}.topbar .brand{font-size:clamp(17px,2.5cqw,30px)}.icon-button{display:grid;place-items:center;min-height:40px;min-width:40px;width:3.5cqw;height:3.5cqw;padding:0;border:1px solid #bba163;border-radius:50%;background:#29251fef;color:#e8d097;font-size:clamp(18px,2cqw,26px);box-shadow:0 3px 10px #0006}.topbar .balance{margin-left:auto;display:flex;gap:10px;align-items:center;background:#1a1610e8;border:1px solid #aa8c50;border-radius:99px;padding:6px 10px 6px 18px;font-size:clamp(14px,1.65cqw,21px);font-weight:700;font-variant-numeric:tabular-nums}.topbar .balance small{font-size:10px;letter-spacing:.07em;color:#c7b982}.game-language{min-width:40px;min-height:40px;border-radius:99px;font-size:12px}.live{position:absolute;display:flex;align-items:center;justify-content:center;text-align:center;font-size:var(--size,1.2cqw);line-height:1.2;pointer-events:none;overflow:hidden}.gold{font-family:Georgia,serif;color:#e5cd95;text-shadow:0 1px 4px #000}.hand{position:absolute;display:flex;justify-content:center;align-items:center;gap:.4cqw}.dealer-hand{left:33%;top:45.5%;width:34%;height:16%}.dealer-hand .playing-card{--card-width:6cqw;--card-height:8.7cqw}.dealer-title{position:absolute;left:38%;top:43%;width:24%;text-align:center;color:#e2cca0;font-size:clamp(10px,.9cqw,13px);letter-spacing:.12em}.my-hands{position:absolute;left:26%;right:26%;top:69%;height:16%;display:flex;gap:2cqw;justify-content:center}.hand-group{position:relative;display:flex;justify-content:center;align-items:center;min-width:11cqw;gap:.3cqw;padding:.4cqw;border:1px solid transparent;border-radius:10px}.hand-group.active{border-color:#d9c47b66;box-shadow:0 0 18px #e1d08618}.my-hands .playing-card{--card-width:5.9cqw;--card-height:8.5cqw}.hand-group:has(.playing-card:nth-child(5)) .playing-card{--card-width:4.6cqw;--card-height:6.7cqw}.hand-group:has(.playing-card:nth-child(8)) .playing-card{--card-width:3.2cqw;--card-height:4.7cqw}.hand-group:has(.playing-card:nth-child(12)) .playing-card{--card-width:2.5cqw;--card-height:3.7cqw}.dealer-hand:has(.playing-card:nth-child(6)) .playing-card{--card-width:4.5cqw;--card-height:6.6cqw}.dealer-hand:has(.playing-card:nth-child(10)) .playing-card{--card-width:3.2cqw;--card-height:4.7cqw}.dealer-hand:has(.playing-card:nth-child(14)) .playing-card{--card-width:2.5cqw;--card-height:3.7cqw}.total-pill{position:absolute;bottom:-1.65cqw;left:50%;transform:translateX(-50%);font-size:clamp(10px,1.12cqw,15px);white-space:nowrap;background:#211d17eb;border:1px solid #ae965a;border-radius:99px;padding:.25cqw .8cqw;color:#f1e2bb;line-height:1.2}.dealer-hand .total-pill{left:calc(100% + 4px);top:50%;bottom:auto;transform:translateY(-50%)}.table-status{position:absolute;top:63%;left:24%;right:24%;font-size:clamp(11px,1.15cqw,16px);line-height:1.35;text-align:center;color:#ddcfab;text-shadow:0 2px 5px #000}.turn-time{font-variant-numeric:tabular-nums;color:#f3d18b}.turn-time.urgent{color:#ffc0a0}.felt-rule{position:absolute;left:2%;top:80%;width:22%;text-align:center;color:#d2ba7f9e;font:clamp(8px,.72cqw,11px) Georgia;letter-spacing:.09em}.felt-rule small{display:block;font-size:.7em;margin-top:5px}.seat{position:absolute;width:16%;height:19%;display:flex;flex-direction:column;align-items:center;gap:.35cqw}.seat.s1{left:3%;top:48%}.seat.s2{left:6%;top:68%}.seat.s3{right:3%;top:48%}.seat.s4{right:6%;top:68%}.seat .avatar{width:4.3cqw;height:4.3cqw}.seat-name{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:clamp(10px,1cqw,14px);color:#e6d4ac;padding:2px 7px;border-bottom:1px solid #b79a564d}.seat-status,.mini-cards{font-size:clamp(9px,.85cqw,12px);color:#bfcbb6;text-align:center;line-height:1.3}.mini-cards{max-width:100%;overflow-wrap:anywhere}.seat.turn .avatar{box-shadow:0 0 15px #e2c46b88;border-color:#ffe2a1}.empty-seat{display:grid;place-items:center;border:1px solid #a3a37555;border-radius:50%;width:4cqw;height:4cqw;color:#a4b3a15c;font-size:2cqw}.practice-tag{position:absolute;left:2%;bottom:2%;max-width:24%;font-size:clamp(8px,.75cqw,11px);line-height:1.4;white-space:pre-line;color:#c4b88e}.chip{display:inline-grid;place-items:center;width:3.7cqw;height:3.7cqw;min-width:34px;min-height:34px;border-radius:50%;border:.32cqw dashed #e5d5b8;background:radial-gradient(ellipse at 35% 25%,#be4c4b,#891e2b 60%,#4c0c17);box-shadow:0 3px 0 #4b1216,0 6px 0 #852a33,0 9px 7px #0008,inset 0 0 0 2px #b87858;color:#fff2d8;font-size:clamp(9px,.85cqw,13px);font-weight:700}.chip.green{background:radial-gradient(ellipse at 35% 25%,#85817b,#44403a 60%,#231f19)}.chip.black{background:radial-gradient(ellipse at 35% 25%,#625e58,#27231d 60%,#100c06)}button.chip{padding:0}.chip.selected{outline:2px solid #f1d596;outline-offset:4px;translate:0 -4px}.bet-zone{position:absolute;left:35%;right:35%;top:73%;text-align:center}.bet-label{font-size:clamp(10px,1cqw,14px);color:#dfceaa;margin:10px 0 0}.bet-controls{position:absolute;left:8%;right:8%;bottom:3%;display:flex;justify-content:center;gap:1.1cqw;align-items:center;padding:.5cqw;flex-wrap:nowrap}.bet-controls>div{display:flex;gap:.8cqw;align-items:center}.bet-controls .primary{font-size:clamp(11px,1.15cqw,16px);padding:10px 18px;min-height:44px;white-space:nowrap}.bet-adjust{border-left:1px solid #a88f5455;padding-left:1cqw}.bet-adjust .secondary{min-height:40px;padding:8px 12px;font-size:clamp(11px,1cqw,15px)}.bet-adjust .icon-button{font-size:22px}.actions{position:absolute;left:5%;right:5%;bottom:2.5%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.actions button{min-height:48px;height:4.8cqw;padding:8px;font-size:clamp(13px,1.6cqw,22px)}.round-result{position:absolute;top:61.5%;left:29%;right:29%;padding:6px 12px;border-top:1px solid #d1b875aa;border-bottom:1px solid #d1b87555;background:linear-gradient(90deg,transparent,#24201af2 16%,#24201af2 84%,transparent);text-align:center;z-index:3;animation:none}.round-result h2{font-size:clamp(14px,1.6cqw,22px);letter-spacing:.05em;line-height:1.15;margin:0}.round-result p{font-size:clamp(11px,1.05cqw,15px);line-height:1.2;margin:3px 0 0;color:#e7dfc5}.round-result.result-loss h2{color:#dfb79e}.result-actions{position:absolute;left:23%;right:23%;bottom:3%;display:flex;justify-content:center;gap:12px}.result-actions button{white-space:nowrap;font-size:clamp(11px,1.1cqw,15px);min-height:44px;padding:8px 16px}.wager-stack{position:absolute;left:24%;top:74%;width:4cqw;height:4cqw;pointer-events:none}.wager-stack .chip{position:absolute;left:0;top:calc(var(--stack) * -.26cqw);width:3.1cqw;height:3.1cqw;min-width:0;min-height:0;rotate:-12deg;font-size:1cqw}.wager-label{position:absolute;top:3.2cqw;left:0;width:3.2cqw;text-align:center;font-size:clamp(9px,.95cqw,13px);color:#e6d29f}
dialog{width:min(590px,calc(100vw - 32px));max-height:calc(100svh - 32px);overflow:auto;border:1px solid #bba064;border-radius:18px;padding:0;background:linear-gradient(140deg,#34302a,#18140e);color:var(--text);box-shadow:0 25px 90px #000b;overscroll-behavior:contain}dialog::backdrop{background:#0e0a04bd;backdrop-filter:blur(6px)}.dialog-inner{padding:30px}.dialog-inner h2{font-size:28px;line-height:1.2;margin:0 40px 24px 0}.dialog-inner h3{font-size:19px}.dialog-inner p{font-size:15px;color:#c0d0c4;line-height:1.6;margin:14px 0}.dialog-close{position:absolute;top:12px;right:12px;border:1px solid #ac935a;background:#24201a;color:#e0c88f;border-radius:50%;width:36px;height:36px;font-size:24px}.dialog-inner input:not([type=file]){width:100%;min-height:48px;padding:12px;margin:8px 0;border:1px solid #98834f;border-radius:8px;background:#19150f;color:#fff;font-size:17px}.dialog-inner button{margin:8px 6px 0 0}.dialog-inner code{display:block;overflow-wrap:anywhere;user-select:all;background:#130f09;padding:14px;border:1px solid var(--border);border-radius:8px;font-size:14px}.result-detail{padding:14px 0;border-bottom:1px solid var(--border)}.result-detail h3{margin:0}.photo-option{position:relative!important;display:inline-block;width:64px;height:64px;padding:0!important;margin:8px!important;border:0;border-radius:50%;background:transparent}.photo-option .avatar{position:absolute!important;inset:0;width:100%!important;height:100%!important}.photo-option:focus-visible{outline-offset:5px}#toast{position:fixed;inset:var(--toast-top, calc(env(safe-area-inset-top) + 12px)) 16px auto;text-align:center;pointer-events:none;z-index:50}#toast span{display:inline-block;max-width:min(600px,100%);padding:12px 18px;border:1px solid #b99c5a;border-radius:12px;background:#1f1b15f2;color:#f2e6c7;box-shadow:0 5px 25px #0008;font-size:14px;line-height:1.4}#connection{position:fixed;left:50%;top:12px;translate:-50% 0;z-index:60;max-width:calc(100vw - 32px);border:1px solid #c9a466;border-radius:10px;background:#663d20f0;padding:10px 18px;font-size:14px;text-align:center}#loading{position:fixed;right:16px;bottom:16px;width:22px;height:22px;border:2px solid #6e6848;border-top-color:#ead092;border-radius:50%;animation:spin .7s linear infinite;z-index:55}.portrait-note{display:none}
@keyframes pop{from{opacity:0;scale:.97}to{opacity:1;scale:1}}@keyframes spin{to{rotate:360deg}}
@media(max-width:900px){.room-grid{gap:14px}.room-body{padding:18px}.room-body h2{font-size:21px}.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-grid{grid-template-columns:220px minmax(0,1fr)}.stats-grid{gap:12px}.metric strong{font-size:27px}.settings-row{gap:12px}.badge-grid{gap:14px}.welcome-layout{gap:20px;min-height:440px}.welcome-cards .playing-card{--card-width:105px;--card-height:153px}}
@media(max-width:700px){.menu-shell{padding:16px 20px}.shell-header{gap:12px;padding-bottom:18px}.brand-block{flex-direction:column;align-items:flex-start;gap:6px}.brand{font-size:21px}.wallet{font-size:13px}.header-tools{gap:6px}.header-tools .round-button{width:40px;min-width:40px;height:40px;min-height:40px;font-size:21px}.language-button{font-size:12px;min-width:64px;padding:8px}.room-grid{grid-template-columns:1fr}.room-picture{aspect-ratio:2.4}.room-body{display:grid;grid-template-columns:1fr auto;gap:12px 16px}.room-body h2,.room-body p,.room-seats{grid-column:1}.room-body>button{grid-column:2;grid-row:1/4;min-width:95px;align-self:center;margin:0}.room-body h2{font-size:24px}.welcome-layout{grid-template-columns:1fr;min-height:0;padding:30px 0;gap:10px}.welcome-copy h1{font-size:42px;max-width:480px}.welcome-copy p{font-size:16px}.welcome-cards{grid-row:1;padding:25px 10px 35px}.welcome-cards .playing-card{--card-width:96px;--card-height:140px}.profile-grid,.friends-grid,.tutorial-layout{grid-template-columns:1fr}.profile-grid .menu-panel:first-child{display:flex;flex-direction:column;align-items:center}.profile-portrait{width:112px;height:112px}.profile-grid .button-column{width:100%;max-width:310px;margin-top:18px}.stats-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gift-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.gift-slot{padding:16px 8px}.settings-panel{padding:20px}.settings-row{grid-template-columns:minmax(100px,.8fr) minmax(80px,1.2fr) 40px;gap:12px;font-size:15px}.settings-links{gap:4px}.history-row{grid-template-columns:1fr auto 12px;padding:16px;gap:12px}.history-wager{display:none}.history-caption strong{font-size:17px}.history-net{font-size:14px}.account-strip{flex-wrap:wrap}.account-strip .primary{font-size:14px}.bottom-nav{gap:4px}.nav-button{font-size:13px}.menu-main{padding:24px 0}.menu-panel{padding:22px}.tutorial-layout h2{font-size:25px}.tutorial-layout .demo-hand{padding:10px 0}.page-heading h1{font-size:30px}.button-row{gap:10px}.bottom-actions>button{flex:1 1 145px}}
@media(max-width:420px){.menu-shell{padding:14px 16px}.shell-header{grid-template-columns:40px 1fr auto;gap:8px}.round-button{width:40px;height:40px;min-width:40px;min-height:40px}.header-spacer{width:40px}.brand{font-size:18px;letter-spacing:.04em}.header-tools{gap:0}.language-button{min-width:62px;font-size:11px}.menu-main{padding-top:22px}.welcome-copy h1{font-size:36px}.shop-grid{gap:12px}.shop-tile{padding:20px 12px}.shop-tile h2{font-size:25px}.shop-stack{scale:.85;margin-top:0;height:100px}.gift-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gift-reward h2{font-size:32px}.settings-row{grid-template-columns:1fr auto;gap:12px}.settings-row input[type=range]{grid-column:1;grid-row:2}.settings-row output{grid-column:2;grid-row:2}.settings-row>.switch-button,.settings-row>.secondary{grid-column:2;grid-row:1}.settings-row>span{font-size:15px}.badge-grid{grid-template-columns:1fr}.stats-grid{gap:10px}.metric strong{font-size:26px}.metric-label{font-size:11px}.stats-grid.four .metric{padding:16px}.room-body{grid-template-columns:1fr;gap:10px}.room-body>button{grid-column:1;grid-row:auto;width:100%}.account-strip .primary{width:100%;margin-left:0}.dialog-inner{padding:22px}.dialog-inner h2{font-size:25px}.dialog-inner button{font-size:14px}.history-caption small{font-size:11px}.history-net{font-size:13px}}
@media(max-height:500px) and (min-aspect-ratio:1/1){body{align-items:flex-start}.topbar{gap:7px}.topbar .brand{font-size:19px}.topbar .balance{padding:4px 6px 4px 12px;gap:6px;font-size:14px}.topbar .balance small{display:none}.icon-button,.game-language{min-width:34px;min-height:34px;width:34px;height:34px}.game-language{font-size:11px}.actions{gap:10px;left:4%;right:4%}.actions button{height:46px;min-height:46px;font-size:13px}.my-hands{top:68.5%;height:14.5%}.my-hands .playing-card{--card-width:5.7cqw;--card-height:8cqw}.total-pill{bottom:-15px;font-size:10px;padding:3px 7px}.round-result{top:61%;padding:5px 8px}.round-result h2{font-size:15px}.round-result p{font-size:11px;margin-top:2px}.result-actions{left:22%;right:22%;gap:8px}.result-actions button{padding:8px 12px;min-height:42px;font-size:11px}.bet-controls{left:6%;right:6%;gap:8px;bottom:3%;padding:0}.bet-controls .chip{min-width:34px;min-height:34px}.bet-controls .primary{font-size:11px;min-height:42px;padding:8px 12px}.bet-adjust{gap:5px!important;padding-left:7px}.bet-adjust .secondary{min-height:34px;padding:7px 10px;font-size:12px}.table-status{font-size:11px}.menu-shell{min-height:100svh}.welcome-layout{min-height:0;padding:22px 0}.menu-main{padding-top:22px}.welcome-cards .playing-card{--card-width:90px;--card-height:131px}.welcome-copy h1{font-size:36px}}
@media(max-aspect-ratio:1/1){body:has(.stage:not(.menu-mode)){display:block}.stage:not(.menu-mode){width:100%;height:max(760px,100svh);aspect-ratio:auto;background:radial-gradient(ellipse at center,#45413b,#26221c)}.stage:not(.menu-mode) .screen-art{object-fit:contain;object-position:center top;height:auto;aspect-ratio:16/9}.topbar{top:12px;left:12px;right:12px;display:grid;grid-template-columns:36px 1fr 36px 38px;gap:8px}.topbar .brand{font-size:19px;grid-column:2}.topbar .balance{grid-column:1/5;grid-row:2;margin:0;justify-content:center;padding:6px 10px;font-size:16px;border:0;background:transparent}.topbar>.icon-button:not(:first-child){grid-column:3;grid-row:1}.topbar .game-language{grid-column:4;grid-row:1}.topbar:before{background:#19150fd9}.topbar .balance .icon-button{width:30px;height:30px;min-width:30px;min-height:30px;font-size:20px}.topbar .balance small{font-size:10px}.icon-button,.game-language{width:36px;height:36px;min-width:36px;min-height:36px}.stage:not(.menu-mode)>.live{font-size:12px}.dealer-title{top:30%;font-size:12px}.dealer-hand{top:33%;left:20%;width:60%;height:12%}.dealer-hand .playing-card{--card-width:14cqw;--card-height:20.3cqw}.dealer-hand .total-pill{left:50%;top:calc(100% + 4px);bottom:auto;transform:translateX(-50%)}.table-status{top:51%;left:12%;right:12%;font-size:13px}.my-hands{top:57%;left:8%;right:8%;height:15%;gap:4cqw}.my-hands .playing-card{--card-width:14cqw;--card-height:20.3cqw}.hand-group{padding:5px;min-width:0}.playing-card+.playing-card{margin-left:-3cqw}.hand-group:has(.playing-card:nth-child(5)) .playing-card{--card-width:10cqw;--card-height:14.5cqw}.my-hands:has(.hand-group:nth-child(2)) .playing-card{--card-width:10cqw;--card-height:14.5cqw}.hand-group:has(.playing-card:nth-child(8)) .playing-card{--card-width:7cqw;--card-height:10.2cqw}.total-pill{font-size:11px;bottom:-17px;padding:3px 7px}.dealer-hand:has(.playing-card:nth-child(6)) .playing-card{--card-width:10cqw;--card-height:14.5cqw}.dealer-hand:has(.playing-card:nth-child(10)) .playing-card{--card-width:7cqw;--card-height:10.2cqw}.seat{width:25%;height:8%;gap:4px}.seat.s1{left:4%;top:22%}.seat.s3{right:4%;top:22%}.seat.s2{left:4%;top:44%}.seat.s4{right:4%;top:44%}.seat:has(.empty-seat){display:none}.seat .avatar{width:36px;height:36px}.seat-name{font-size:11px;max-width:100%}.seat-status,.mini-cards{font-size:10px}.felt-rule{top:77%;left:8%;width:84%;font-size:10px}.felt-rule small{font-size:8px}.actions{left:16px;right:16px;bottom:20px;grid-template-columns:1fr 1fr;gap:10px}.actions button{height:48px;min-height:48px;font-size:15px}.round-result{left:12%;right:12%;top:50%;padding:8px}.round-result h2{font-size:19px}.round-result p{font-size:13px}.result-actions{left:16px;right:16px;bottom:22px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.result-actions button{font-size:13px;min-height:48px;padding:8px}.result-actions button:first-child{grid-column:1/3}.bet-controls{left:16px;right:16px;bottom:24px;flex-wrap:wrap;gap:18px}.bet-controls>.primary{flex-basis:100%;font-size:15px;height:48px}.bet-controls .chip{width:43px;height:43px;min-width:43px;min-height:43px;font-size:11px;border-width:4px}.bet-controls>div{gap:10px}.bet-adjust{padding-left:10px}.bet-adjust .secondary{font-size:14px;min-height:40px}.bet-zone{left:30%;right:30%;top:61%}.bet-zone .chip{width:46px;height:46px;font-size:12px;border-width:4px}.bet-label{font-size:13px}.wager-stack{left:8%;top:67%;width:30px;height:34px}.wager-stack .chip{width:26px;height:26px;min-width:26px;min-height:26px;border-width:3px;font-size:11px}.wager-label{top:31px;width:30px;font-size:11px}.practice-tag{bottom:140px;left:5%;max-width:90%;font-size:9px;line-height:1.3;text-align:center;right:5%}.portrait-note{display:none}.live{font-size:max(11px,var(--size,12px))}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation:none!important;transition:none!important}

@media(max-aspect-ratio:1/1){.topbar>.game-invite{grid-column:1;grid-row:2}.topbar:has(.game-invite) .balance{grid-column:2/5}}

/* Keep table information clear of chip and action rows. */
.table-limits{position:absolute;top:72%;left:28%;right:28%;text-align:center;font-size:clamp(11px,1.1cqw,16px);color:#e0d5b5;line-height:1.4}
progress{appearance:none;border-radius:8px;overflow:hidden;background:#3c3832}progress::-webkit-progress-bar{background:#3c3832;border-radius:8px}progress::-webkit-progress-value{background:linear-gradient(90deg,#99793e,#e2ca8b);border-radius:8px}progress::-moz-progress-bar{background:#d5b775}
@media(max-aspect-ratio:1/1){.felt-rule{top:26%;font-size:10px}.practice-tag{top:78%;bottom:auto;font-size:9px}.stage:has(.bet-controls) .practice-tag{top:65%}.table-limits{top:71%;left:10%;right:10%;font-size:11px}.stage:has(.bet-controls) .felt-rule{top:26%}}
@media(max-aspect-ratio:1/1){.my-hands:has(.hand-group:nth-child(2)) .hand-group{flex:1;max-width:calc(50% - 2cqw)}.my-hands:has(.hand-group:nth-child(2)) .total-pill{width:100%;white-space:normal;font-size:10px;line-height:1.3;bottom:-20px}}
@media(min-aspect-ratio:1/1) and (max-height:500px){.dealer-title{top:40.5%;font-size:11px}.dealer-hand{top:43%;height:14%}.dealer-hand .playing-card{--card-width:5.25cqw;--card-height:7.6cqw}.my-hands{top:69%;height:12%}.my-hands .playing-card{--card-width:4.8cqw;--card-height:7cqw}.my-hands .total-pill{bottom:-13px;font-size:10px;padding:2px 5px}.round-result{top:58.5%;padding:4px}.round-result h2{font-size:14px;line-height:16px;margin:0}.round-result p{font-size:11px;line-height:14px;margin:2px 0 0}}
@media(max-width:500px){.room-body{grid-template-columns:1fr;gap:10px}.room-body>button{grid-column:1;grid-row:auto;width:100%}} @media(max-aspect-ratio:1/1){.stage:not(.menu-mode) .screen-art{height:24svh;aspect-ratio:auto;object-fit:cover;object-position:center 40%}}

/* Presentation effects live outside the rerendered surface and never intercept input. */
.table-effects{position:absolute;inset:0;z-index:9;pointer-events:none;overflow:hidden;contain:strict}

.table-effects .flying-chip{position:absolute;width:clamp(22px,3cqw,40px);height:clamp(22px,3cqw,40px);min-width:0;min-height:0;border-width:3px;font-size:12px;will-change:transform,opacity}
.celebration-ring{position:absolute;width:150px;height:46px;border:1px solid #e3c577;border-radius:50%;box-shadow:0 0 20px #ebcc7438,inset 0 0 14px #ebcc7420;will-change:transform,opacity}
.celebration-spark{position:absolute;width:4px;height:9px;border-radius:50%;background:#f8e8a9;box-shadow:0 0 7px #e4bf70;will-change:transform,opacity}
.star-spark{width:10px;height:10px;clip-path:polygon(50% 0,61% 36%,100% 50%,61% 63%,50% 100%,37% 63%,0 50%,37% 36%);background:#ffefb1}
.card-light{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(110deg,transparent 25%,#fff9 48%,transparent 70%);pointer-events:none;opacity:0}
.playing-card:has(.card-light){overflow:hidden}
.round-result.result-win{border-color:#e4c67e;color:#f5dc9e}
.round-result.result-win h2{text-shadow:0 0 12px #e4c97855}
.round-result.natural-result h2{color:#ffe8a2;letter-spacing:.09em;text-shadow:0 0 16px #f4d97d99}
.table-status.your-turn:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:8px;background:#ead28c;box-shadow:0 0 8px #d9b864;animation:turn-breath 2.8s ease-in-out infinite}
.seat.turn .avatar{animation:seat-breath 3s ease-in-out infinite}
button:not(:disabled){transition:filter .18s ease,box-shadow .18s ease,translate .12s ease,scale .12s ease}
button:not(:disabled):active{scale:.98;translate:0 2px}
#toast span{animation:toast-in .2s ease-out}
#toast.achievement-toast { inset:var(--toast-top, 82px) var(--toast-right, 16px) auto auto; max-width:min(360px, calc(100vw - 32px)); text-align:right; }
#toast.achievement-toast span { text-align:left; padding:.55em .85em; }
@media(hover:hover){button:not(:disabled):hover{filter:brightness(1.09)}.room-tile{transition:border-color .2s,box-shadow .2s}.room-tile:hover{border-color:#d6b978;box-shadow:0 12px 30px #0006,0 0 0 1px #b89a5d44}}
@media(max-aspect-ratio:1/1){.celebration-ring{width:120px;height:40px}}
@keyframes turn-breath{0%,100%{opacity:.55;scale:.85}50%{opacity:1;scale:1.1}}
@keyframes seat-breath{0%,100%{outline:1px solid #cdb36a33;outline-offset:2px}50%{outline:1px solid #e4cd8e99;outline-offset:4px}}
@keyframes toast-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}

@media(max-aspect-ratio:1/1){.room-name{top:116px!important;left:12px!important;width:calc(100% - 24px)!important;height:24px!important;justify-content:flex-start;white-space:nowrap;text-align:left;font-size:11px;overflow:hidden;text-overflow:ellipsis}}

/* Real rigged dealer: non-interactive canvas below the existing accessible table UI. */
.live-dealer-scene{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}.live-dealer-scene[hidden]{display:none}.live-dealer-scene canvas{display:block;width:100%;height:100%}.has-live-dealer #surface{z-index:1}.has-live-dealer .screen-art{visibility:hidden}.dealer-pending-card{opacity:var(--dealer-arrival,0)!important}.has-live-dealer .game-shade{background:linear-gradient(#0002,transparent 44%,transparent 76%,#0006)}
@media(max-aspect-ratio:1/1){.has-live-dealer .dealer-title{top:36%}.has-live-dealer .dealer-hand{top:38%}.has-live-dealer .table-status{top:55%}.has-live-dealer .my-hands{top:64%}.has-live-dealer .round-result{top:54%}}

.has-live-dealer .dealer-hand{top:54%;height:12%}.has-live-dealer .dealer-hand .playing-card{--card-width:5cqw;--card-height:7.25cqw}.has-live-dealer .dealer-title{top:51%;font-size:11px}.has-live-dealer .my-hands{top:75%;height:13%}.has-live-dealer .table-status{top:68%}.has-live-dealer .round-result{top:64%;padding:5px}.has-live-dealer .round-result h2{font-size:clamp(16px,1.7cqw,25px);margin:0}.has-live-dealer .round-result p{font-size:clamp(11px,1cqw,14px);margin:3px 0}
@media(max-aspect-ratio:1/1){.has-live-dealer .dealer-title{top:47%}.has-live-dealer .dealer-hand{top:50%;height:11%}.has-live-dealer .dealer-hand .playing-card{--card-width:13cqw;--card-height:18.85cqw}.has-live-dealer .table-status{top:64%}.has-live-dealer .my-hands{top:69%;height:13%}.has-live-dealer .round-result{top:62%;padding:6px}.has-live-dealer .round-result h2{font-size:18px}}

.has-live-dealer .round-result{top:67.5%}@media(max-aspect-ratio:1/1){.has-live-dealer .my-hands{top:72%;height:11%}.has-live-dealer .round-result{top:64.5%;padding:4px}.has-live-dealer .round-result h2{font-size:16px}.has-live-dealer .round-result p{font-size:11px}}

@media(max-aspect-ratio:1/1){.has-live-dealer .felt-rule{width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.has-live-dealer .my-hands{top:70%;height:10%}.has-live-dealer .my-hands .playing-card{--card-width:12.5cqw;--card-height:18.1cqw}}

@media(max-aspect-ratio:1/1){.has-live-dealer .practice-tag{top:142px!important;bottom:auto;left:12px;right:auto;width:100px;max-width:100px;text-align:left;font-size:8px;line-height:1.2}.has-live-dealer .room-name{width:128px!important}}

/* Leave an explicit gap between hand totals, result feedback and action buttons. */
.has-live-dealer .my-hands{top:73.5%;height:10%}.has-live-dealer .my-hands .playing-card{--card-width:5.2cqw;--card-height:7.54cqw}.has-live-dealer .dealer-hand .playing-card{--card-width:4.7cqw;--card-height:6.815cqw}.has-live-dealer .round-result{top:66.5%;padding:2px}.has-live-dealer .round-result h2{font-size:clamp(16px,1.4cqw,20px);line-height:1.05}.has-live-dealer .round-result p{font-size:11px;line-height:1.15;margin:2px 0}
@media(max-aspect-ratio:1/1){.has-live-dealer .my-hands{top:70%;height:10%}.has-live-dealer .my-hands .playing-card{--card-width:12.5cqw;--card-height:18.1cqw}.has-live-dealer .dealer-hand .playing-card{--card-width:13cqw;--card-height:18.85cqw}.has-live-dealer .round-result{top:64.5%;padding:4px}}
@media(min-aspect-ratio:1/1) and (max-height:500px){.has-live-dealer .my-hands{top:74.5%;height:10%}.has-live-dealer .my-hands .playing-card{--card-width:4.2cqw;--card-height:6.1cqw}}

@media(min-aspect-ratio:1/1){.has-live-dealer .round-result{padding:0}.has-live-dealer .round-result p{margin:1px 0}}

@media(min-aspect-ratio:1/1) and (max-height:500px){.has-live-dealer .dealer-hand{top:52%}.has-live-dealer .dealer-title{top:49%}.has-live-dealer .dealer-hand .playing-card{--card-width:4.2cqw;--card-height:6.1cqw}.has-live-dealer .my-hands{top:72%;height:10%}.has-live-dealer .my-hands .total-pill{bottom:-10px;font-size:9px}.has-live-dealer .round-result{top:64.8%;display:flex;align-items:center;justify-content:center;gap:10px;padding:2px}.has-live-dealer .round-result h2{font-size:14px;line-height:1}.has-live-dealer .round-result p{font-size:11px;line-height:1;margin:0}.has-live-dealer .result-actions button,.has-live-dealer .actions button{min-height:48px}}

/* Six themed lounges and player-to-player social controls. */
.themed-room-picture{position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 0%,color-mix(in srgb,var(--room-accent) 30%,transparent),transparent 65%),linear-gradient(135deg,#10151d,#05090c);height:190px;isolation:isolate}.themed-room-picture:before,.themed-room-picture:after{content:'';position:absolute;top:14%;height:52%;width:3px;background:var(--room-accent);box-shadow:0 0 14px var(--room-accent);opacity:.5}.themed-room-picture:before{left:18%}.themed-room-picture:after{right:18%}.room-gem{position:absolute;left:0;right:0;top:13%;text-align:center;font:36px Georgia;color:var(--room-accent);text-shadow:0 0 24px var(--room-accent)}.mini-room-table{position:absolute;left:12%;right:12%;height:54%;bottom:-9%;border:5px solid var(--room-accent);border-radius:50%;background:radial-gradient(ellipse,var(--room-felt),color-mix(in srgb,var(--room-felt) 45%,black));box-shadow:0 9px 0 #211b16,0 20px 30px #0009;transform:perspective(500px) rotateX(38deg)}.mini-room-chips{position:absolute;bottom:11%;left:40%;color:var(--room-accent);font-size:20px;letter-spacing:-5px;text-shadow:0 3px 0 #000}.room-body>.muted{min-height:0}.social-gift-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.social-gift{min-height:96px;padding:12px 8px;border:1px solid #b89b5f77;border-radius:12px;background:linear-gradient(#312d27,#1c1812);font-size:13px;line-height:1.6;overflow-wrap:anywhere;white-space:normal}.social-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.social-quick-grid button{font-size:13px;min-height:48px;padding:10px}.social-emoji-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.emoji-button{font-size:27px;min-height:52px;border-radius:12px;background:#302c26;border:1px solid #b89b5f55}.social-inbox-list{max-height:55svh;overflow:auto}.social-message-row{padding:14px 0;border-bottom:1px solid var(--border)}.social-message-row>strong{font-size:13px;color:var(--gold)}.social-message-row p{font-size:14px;margin:8px 0}.gift-collection{margin-top:24px;padding-top:18px;border-top:1px solid var(--border)}.gift-collection-item{display:inline-flex;gap:8px;padding:10px;border:1px solid var(--border);border-radius:10px;margin:4px;font-size:13px}.game-social-inbox{position:absolute;right:2%;top:15%;min-width:48px;min-height:48px;width:48px;height:48px;z-index:5}.social-count{position:absolute;right:-4px;top:-5px;min-width:20px;height:20px;padding:2px 4px;border-radius:20px;background:#b68c40;color:#071b12;font:12px Arial}.social-avatar{cursor:pointer;min-width:48px;min-height:48px}.social-avatar:focus-visible{outline:2px solid #f5dfa4;outline-offset:3px}.friend-row>button{min-height:48px;font-size:13px}.friend-row{margin-top:6px}
@media(max-width:420px){.social-gift-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.social-quick-grid{grid-template-columns:1fr}.friend-row>button{flex-basis:100%}.themed-room-picture{height:164px}}
@media(max-aspect-ratio:1/1){.game-social-inbox{right:12px;top:116px}.seat:has(.social-avatar){height:auto}.seat .social-avatar{width:48px;height:48px}}

.dialog-close{width:48px;height:48px;min-width:48px;min-height:48px}.dialog-inner>.dialog-close{margin:0}.dialog-inner h2{margin-right:60px}

/* Transparent 3D-rendered hospitality assets, with fixed cells to prevent cropping. */
.gift-art{display:inline-block;position:relative;width:112px;aspect-ratio:1;flex:none;overflow:hidden;vertical-align:middle;font-size:44px;line-height:1}
.gift-art img{position:absolute;max-width:none;object-fit:fill;pointer-events:none}
.social-gift-grid .social-gift{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 4px 12px;min-width:0;margin:0;background:radial-gradient(ellipse at 50% 20%,#47433d,#1f1b15 80%);border:1px solid #a78a4c66;border-radius:14px;white-space:normal}
.social-gift strong{font-size:14px;line-height:1.25}.social-gift small{font-size:13px;color:#e9cf8b}.social-gift:disabled{opacity:.45}
.dialog-inner>.gift-art{display:block;width:180px;margin:0 auto 12px}
.social-message-row>.gift-art{float:right;width:72px;margin-left:10px}.social-message-row{display:flow-root}
.gift-collection-item{display:inline-flex;align-items:center;gap:4px}.gift-collection-item .gift-art{width:70px}
@media(max-width:430px){.social-gift .gift-art{width:100px}.social-gift strong{font-size:13px}.social-gift-grid{gap:8px}.gift-collection-item{max-width:100%;white-space:normal}}

.social-emoji-grid .emoji-button{display:grid;place-items:center;min-width:48px;min-height:68px;padding:2px;background:radial-gradient(ellipse at top,#48443e,#24201a);border:1px solid #b79b5d88;border-radius:14px}.social-emoji-grid .gift-art{width:64px}.social-emoji-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:430px){.social-emoji-grid .gift-art{width:52px}}

.room-picture.rendered-room-picture{position:relative;overflow:hidden;isolation:isolate;background:#1a1610;aspect-ratio:3/2;height:auto;min-height:0}.rendered-room-picture img{position:absolute;width:200%;height:300%;max-width:none;object-fit:fill;display:block}.room-picture.rendered-room-picture::before,.room-picture.rendered-room-picture::after{display:none}

.room-picture.rendered-room-picture{aspect-ratio:1}

.has-live-dealer .felt-rule{display:none}

/* Explicit recipient actions remain next to each occupied player's portrait. */
.seat-profile{display:flex;align-items:center;justify-content:center;gap:6px}.seat-social-actions{display:flex;gap:4px}.seat-social-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:48px;min-height:48px;width:48px;padding:3px 1px;border:1px solid #b69b5d99;border-radius:10px;background:linear-gradient(#3a3630,#1c1812);box-shadow:0 2px 5px #0005;color:#ecd7a0}.seat-social-button>span{font-size:18px;line-height:1}.seat-social-button>small{font-size:9px;line-height:1.05;text-align:center}.seat-profile .social-avatar{flex:none}.seat{z-index:3}
@media(max-aspect-ratio:1/1){.seat-profile{flex-direction:column;gap:3px}.seat-social-actions{gap:3px}.seat{width:28%;gap:2px}.seat.s1,.seat.s2{left:2%}.seat.s3,.seat.s4{right:2%}}

/* Other players' hands live on the felt, independently of their profile tools. */
.opponent-hands{position:absolute;display:flex;justify-content:center;align-items:center;gap:8px;width:18%;height:12%;pointer-events:none;z-index:2}.opponent-s1{left:17%;top:59%}.opponent-s3{right:17%;top:59%}.opponent-s2{left:8%;top:79%}.opponent-s4{right:8%;top:79%}.opponent-hand-group{position:relative;display:flex;justify-content:center;align-items:center;min-width:0;padding:2px 2px 14px;border:1px solid #bfa45d35;border-radius:9px}.opponent-hand-group .playing-card{--card-width:3.8cqw;--card-height:5.5cqw}.opponent-hand-group .playing-card+.playing-card{margin-left:-2cqw}.opponent-hands .total-pill{bottom:-6px;font-size:clamp(9px,.9cqw,12px);white-space:nowrap;padding:3px 6px}.opponent-split .playing-card{--card-width:3cqw;--card-height:4.35cqw}.opponent-split .playing-card+.playing-card{margin-left:-1.7cqw}.opponent-split{width:23%}.opponent-split.opponent-s2{left:3%}.opponent-split.opponent-s4{right:3%}
@media(max-aspect-ratio:1/1){.opponent-hands{width:27%;height:12%}.opponent-s1{left:2%;top:39%}.opponent-s3{right:2%;top:39%}.opponent-s2{left:2%;top:62%}.opponent-s4{right:2%;top:62%}.opponent-hand-group .playing-card{--card-width:8cqw;--card-height:11.6cqw}.opponent-hand-group .playing-card+.playing-card{margin-left:-4.5cqw}.opponent-split .playing-card{--card-width:6cqw;--card-height:8.7cqw}.opponent-split .playing-card+.playing-card{margin-left:-3.7cqw}.opponent-split.opponent-s2{left:0}.opponent-split.opponent-s4{right:0}.opponent-hands .total-pill{font-size:9px;padding:2px 4px}}

@media(min-aspect-ratio:1/1){.opponent-s2{left:19%;top:75%}.opponent-s4{right:19%;top:75%}.opponent-split.opponent-s2{left:15%}.opponent-split.opponent-s4{right:15%}}

/* Align each player's portrait with the centre of their playing cards. */
@media(min-aspect-ratio:1/1){.seat.s1,.seat.s3{top:calc(65% - 31px)}.seat.s2,.seat.s4{top:calc(81% - 31px)}}

.gift-visibility{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.gift-visibility button{flex:1;min-width:120px}.gift-visibility button[aria-pressed=true]{border-color:#f7de98;background:linear-gradient(#59554f,#35312b);box-shadow:inset 0 0 0 1px #e4c47a}
.seat-profile{position:relative}.profile-gift-badge{position:absolute;bottom:calc(100% + 5px);left:0;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:1px 5px;width:154px;min-height:42px;padding:3px 6px;background:#27231dee;border:1px solid #a48a4d99;border-radius:12px;box-shadow:0 2px 8px #0004;pointer-events:none}.profile-gift-badge .gift-art{width:40px;grid-row:1/3}.gift-sender{font-size:10px;line-height:1.25;overflow-wrap:anywhere;color:#f1dcaa;text-align:left}.gift-private{font-size:9px;color:#c6ccbd;text-align:left}
@media(max-aspect-ratio:1/1){.profile-gift-badge{width:100px;left:50%;transform:translateX(-50%);grid-template-columns:30px minmax(0,1fr);padding:3px;gap:2px}.profile-gift-badge .gift-art{width:30px}.gift-sender{font-size:9px}.gift-private{font-size:8px}}

/* Fixed physical seats keep deal order identical for every observer. */
.seat.s5{left:42%;top:calc(85% - 24px)}.seat.s5 .seat-name,.seat.s5 .seat-status{display:none}.opponent-s5{left:41%;top:68%}.my-hands.own-side-hand{width:18%;right:auto;height:12%}.own-side-hand .playing-card{--card-width:4cqw;--card-height:5.8cqw}.own-side-hand .playing-card+.playing-card{margin-left:-2cqw}.own-side-hand .hand-group{min-width:0;max-width:100%;padding:2px 2px 14px}.my-hands.own-s1{left:17%;top:59%}.my-hands.own-s3{left:65%;top:59%}.my-hands.own-s2{left:19%;top:75%}.my-hands.own-s4{left:63%;top:75%}.stage:has(.own-side-hand) .wager-stack{display:none}
@media(max-aspect-ratio:1/1){.seat.s5{left:36%;top:68%}.seat.s5 .seat-profile{flex-direction:row;gap:3px}.seat.s5 .seat-social-actions{flex-direction:column}.opponent-s5{left:36.5%;top:55%}.my-hands.own-side-hand{width:27%;height:12%}.my-hands.own-s1{left:2%;top:39%}.my-hands.own-s3{left:71%;top:39%}.my-hands.own-s2{left:2%;top:62%}.my-hands.own-s4{left:71%;top:62%}.own-side-hand .playing-card{--card-width:8cqw;--card-height:11.6cqw}.own-side-hand .playing-card+.playing-card{margin-left:-4.5cqw}}

/* A distinct high-roller salon, beyond the six gem lounges. */
.vip-room-tile{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);border:2px solid #d8b363;background:radial-gradient(ellipse at top,#293044,#0a101d 75%);box-shadow:0 10px 30px #0007,inset 0 0 0 4px #c7a25118}.room-picture.vip-room-picture{aspect-ratio:3/2;height:100%;border-right:1px solid #c9a862}.vip-room-picture>img{width:100%;height:100%;left:0!important;top:0!important;object-fit:cover}.vip-room-tile .room-body{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:clamp(18px,3vw,32px)}.vip-room-tile h2{font-size:clamp(24px,3vw,36px);color:#ffe7a9;margin:6px 0}.vip-crown-label{align-self:flex-start;font-size:13px;letter-spacing:.14em;color:#ffe1a0;border:1px solid #c9a257;border-radius:99px;padding:8px 14px;background:linear-gradient(#514022,#201e1a)}.vip-room-tile .gold-button{margin-top:10px}.premium-table{box-shadow:0 0 0 2px #d4ad57,0 15px 80px #0009}.premium-table .topbar .brand{color:#ffe7a4;text-shadow:0 0 18px #b3863d88}.premium-table-seal{position:absolute;left:3%;top:21%;display:flex;flex-direction:column;gap:5px;border:1px solid #bda06088;border-radius:12px;padding:12px 16px;background:linear-gradient(135deg,#25251dee,#101723ee);color:#ffe3a1;font:clamp(15px,1.5cqw,23px) Georgia,serif;letter-spacing:.1em;z-index:2}.premium-table-seal small{font:11px Arial;letter-spacing:0;color:#d7cba6}.premium-table .playing-card{box-shadow:0 2px 0 #baa36a,0 4px 0 #b5a17a,0 8px 18px #0007,inset 0 0 10px #fff8}.premium-table .total-pill{border-color:#e9c872;background:#111b2ef2}
@media(max-width:600px){.vip-room-tile{grid-template-columns:1fr}.room-picture.vip-room-picture{height:auto;border-right:0;border-bottom:1px solid #c9a862}.premium-table-seal{top:16%;left:14px;padding:8px 10px}.premium-table-seal small{font-size:10px}}

/* Centre-seat portrait belongs beside its hand, never beneath the action row. */
@media(min-aspect-ratio:1/1){.opponent-s5{top:66%}.seat.s5{left:59%;top:calc(72% - 31px)}.seat.s5 .seat-name{display:block;position:absolute;bottom:calc(100% + 2px);left:0;right:0;border:0}.seat.s5 .seat-status{display:none}}

@media(min-aspect-ratio:1/1){.has-live-dealer:has(.own-side-hand) .round-result{top:43%;left:35%;right:35%}}

/* Approved VIP room plate remains visible under the transparent live dealer. */
.stage.premium-table{aspect-ratio:3/2;width:min(100vw,calc(100svh * 3 / 2),1600px)}.premium-table.has-live-dealer .screen-art{visibility:visible;z-index:0}.premium-table .live-dealer-scene{z-index:1}.premium-table #surface{z-index:2}.premium-table .game-shade{background:linear-gradient(#0003,transparent 25%,transparent 80%,#0005)}
.premium-table .dealer-hand,.premium-table.has-live-dealer .dealer-hand{left:37%;width:26%;top:39%;height:10%}.premium-table .dealer-title{display:none}.premium-table .dealer-hand .playing-card{--card-width:4.3cqw;--card-height:6.24cqw}.premium-table .my-hands:not(.own-side-hand){left:34%;right:34%;top:52%;height:14%}.premium-table .my-hands:not(.own-side-hand) .playing-card{--card-width:5.4cqw;--card-height:7.83cqw}
.premium-table .opponent-s1,.premium-table .my-hands.own-s1{left:11%;top:45%}.premium-table .opponent-s3{right:11%;top:45%}.premium-table .my-hands.own-s3{left:71%;top:45%}.premium-table .opponent-s2,.premium-table .my-hands.own-s2{left:25%;top:51%}.premium-table .opponent-s4{right:25%;top:51%}.premium-table .my-hands.own-s4{left:57%;top:51%}.premium-table .opponent-s5{left:41%;top:55%}
.premium-table .seat{width:10%;min-width:102px}.premium-table .seat-profile{gap:4px}.premium-table .seat-social-actions{flex-direction:column}.premium-table .seat.s1{left:4%;top:calc(51% - 57px)}.premium-table .seat.s3{right:4%;top:calc(51% - 57px)}.premium-table .seat.s2{left:19%;top:calc(57% - 57px)}.premium-table .seat.s4{right:19%;top:calc(57% - 57px)}.premium-table .seat.s5{left:45%;top:70%}.premium-table .seat.s5 .seat-name{display:block;position:static}
.premium-table .table-status,.premium-table.has-live-dealer .table-status{top:69%}.premium-table .round-result,.premium-table.has-live-dealer .round-result{top:74%;left:32%;right:32%}.premium-table .bet-zone{top:57%}.premium-table .wager-stack{left:48%;top:64%}.premium-table .premium-table-seal{top:13%;font-size:clamp(13px,1.2cqw,18px);padding:8px 12px}.premium-table .practice-tag{bottom:11%}
@media(max-aspect-ratio:1/1){.stage.premium-table{width:100vw;height:100svh;aspect-ratio:auto}.premium-table .screen-art{object-fit:cover;object-position:center top}.premium-table .seat{width:28%;min-width:0}.premium-table .seat-social-actions{flex-direction:row}.premium-table .seat.s1{left:2%;top:22%}.premium-table .seat.s3{right:2%;top:22%}.premium-table .seat.s2{left:2%;top:44%}.premium-table .seat.s4{right:2%;top:44%}.premium-table .opponent-s1{left:2%;top:39%}.premium-table .opponent-s3{right:2%;top:39%}.premium-table .opponent-s2{left:2%;top:62%}.premium-table .opponent-s4{right:2%;top:62%}.premium-table .my-hands:not(.own-side-hand){left:26%;right:26%;top:69%;height:13%}.premium-table .my-hands:not(.own-side-hand) .playing-card{--card-width:12cqw;--card-height:17.4cqw}.premium-table .dealer-hand,.premium-table.has-live-dealer .dealer-hand{top:45%;height:12%;left:30%;width:40%}.premium-table .dealer-hand .playing-card{--card-width:11cqw;--card-height:15.95cqw}.premium-table .round-result,.premium-table.has-live-dealer .round-result{top:60%;left:24%;right:24%}.premium-table .table-status,.premium-table.has-live-dealer .table-status{top:62%}.premium-table .premium-table-seal{top:16%;left:14px}.premium-table .wager-stack{left:8%;top:69%}}

.premium-table .wager-stack{left:56%;top:63%}
@media(max-aspect-ratio:1/1){.premium-table .wager-stack{left:8%;top:69%}}

.admin-badge{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:5px 9px;border:1px solid #e6c47c;border-radius:99px;color:#ffe5a5;background:#2e291a;font-size:10px;letter-spacing:.06em;font-weight:700;white-space:nowrap}.topbar .admin-badge{font-size:9px;padding:4px 6px}.brand-block{flex-wrap:wrap;row-gap:8px}
@media(max-width:430px){.topbar .admin-badge{position:absolute;left:54px;top:calc(100% + 6px);font-size:9px}}

/* Five physical betting stations, with independent player chip racks. */
.player-chip-bank{position:absolute;transform:translate(-50%,-50%);width:104px;text-align:center;pointer-events:none;z-index:4;filter:drop-shadow(0 3px 3px #0008)}.rack-lanes{height:27px;border:2px solid #b39350;border-radius:7px;background:linear-gradient(#3a281e,#0d1215);display:flex;justify-content:center;gap:5px;padding:3px 7px;box-shadow:inset 0 2px 4px #000a,0 2px 0 #3b2c16}.rack-lane{position:relative;width:23px;height:18px;border-radius:5px;background:#050b0a;box-shadow:inset 0 0 3px #fff2}.rack-chip{position:absolute!important;left:0!important;top:calc(6px - var(--rack-level)*3px)!important;width:23px!important;height:13px!important;min-width:0!important;min-height:0!important;border-width:2px!important;font-size:8px!important;box-shadow:0 2px 0 #050b09!important;transform:none!important}.rack-owner{display:block;margin-top:3px;color:#e7d7b3;font-size:10px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rack-balance{display:block;font-size:10px;font-variant-numeric:tabular-nums;color:#f4df9a;white-space:nowrap}.player-betting-box{position:absolute;transform:translate(-50%,-50%) perspective(450px) rotateX(18deg);width:8%;height:6%;border:1px solid #d1b772b0;border-radius:8px;box-shadow:inset 0 0 0 3px #cbac5b10;pointer-events:none;z-index:3}.player-betting-box:after{content:'';position:absolute;inset:17% 30%;border:1px solid #d1b77266;border-radius:50%;pointer-events:none}.premium-table .player-betting-box{border-color:transparent;box-shadow:none}.premium-table .player-betting-box:after{display:none}.station-stake{position:absolute;left:50%;top:50%;width:32px;height:29px;transform:translate(-50%,-50%);z-index:2}.station-chip{position:absolute!important;left:0!important;top:calc(7px - var(--rack-level)*4px)!important;width:32px!important;height:28px!important;min-width:0!important;min-height:0!important;font-size:8px!important;border-width:3px!important;transform:none!important}.dealer-chip-bank-anchor{position:absolute;transform:translate(-50%,-50%);width:13%;height:5%;pointer-events:none}.table-printing{position:absolute;transform:translateX(-50%);width:35%;text-align:center;color:#e6ce92;font:bold clamp(11px,1.3cqw,18px) Georgia,serif;letter-spacing:.04em;text-shadow:0 1px 3px #000;pointer-events:none;z-index:1}.table-printing small{display:block;margin-top:4px;font:clamp(8px,.65cqw,11px) Arial;letter-spacing:.02em}.flying-chip{font-size:9px!important;min-width:0!important;min-height:0!important}.premium-table .seat{width:16%;min-width:102px}.premium-table .seat-social-actions{flex-direction:row}.stage:not(.menu-mode):not(.premium-table){aspect-ratio:3/2;width:min(100vw,calc(100svh * 3 / 2),1600px)}.stage:not(.menu-mode):not(.premium-table) .table-status{top:58%}.stage:not(.menu-mode):not(.premium-table) .round-result{top:58%;left:34%;right:34%}.stage:not(.menu-mode):not(.premium-table) .dealer-hand{top:39%;height:11%}.table-limits{top:13%!important;bottom:auto!important;left:auto!important;right:3%!important;width:auto!important;font-size:11px!important}.seat.s5 .seat-name{display:block;position:static}.seat{width:16%}
@media(max-aspect-ratio:1/1){.stage:not(.menu-mode):not(.premium-table){aspect-ratio:auto;width:100vw;height:100svh}.player-chip-bank{width:72px}.rack-lanes{gap:2px;padding:3px 4px}.rack-lane{width:18px}.rack-chip{width:18px!important;height:11px!important}.rack-owner,.rack-balance{font-size:8px}.player-betting-box{width:15%;height:5%}.table-printing{width:34%;font-size:10px}.table-printing small{font-size:7px}.seat,.premium-table .seat{width:28%}.seat-profile{flex-direction:row}.seat-social-actions,.premium-table .seat-social-actions{flex-direction:column}.seat .seat-social-button{width:48px;min-width:48px}.table-limits{top:14%!important;font-size:9px!important}.station-chip{width:26px!important;height:23px!important}.stage:not(.menu-mode):not(.premium-table) .dealer-hand{top:43%;height:12%}.stage:not(.menu-mode):not(.premium-table) .table-status{top:57%}}

/* Chip pockets are inset into the padded rail, not floating above a chair. */
.player-chip-bank{width:104px;filter:none}.rack-lanes{height:25px;border:2px solid #a68a56;border-top-color:#f1d59a;border-bottom-color:#5f421e;border-radius:8px;background:linear-gradient(#020403,#1b1711 65%,#040806);box-shadow:inset 0 4px 7px #000,inset 0 -1px 1px #b7a47c55,0 1px 0 #e4c27566;transform-origin:50% 50%}.rack-lane{background:#020403;box-shadow:inset 0 2px 5px #000}.player-chip-bank[data-seat='0'] .rack-lanes{transform:rotate(-25deg)}.player-chip-bank[data-seat='4'] .rack-lanes{transform:rotate(25deg)}.player-chip-bank[data-seat='1'] .rack-lanes{transform:rotate(-12deg)}.player-chip-bank[data-seat='3'] .rack-lanes{transform:rotate(12deg)}.rack-owner{margin-top:6px;text-shadow:0 1px 3px #000}.seat .seat-name,.seat .seat-status{display:none!important}.dealer-title{display:none!important}.premium-table .my-hands:not(.own-side-hand) .playing-card{--card-width:4.4cqw;--card-height:6.38cqw}.premium-table .table-status,.premium-table.has-live-dealer .table-status{top:80%}.premium-table .round-result,.premium-table.has-live-dealer .round-result{top:81%;left:34%;right:34%}
@media(max-aspect-ratio:1/1){.player-chip-bank{width:72px}.player-chip-bank .rack-lanes{transform:none}.premium-table .my-hands:not(.own-side-hand) .playing-card{--card-width:11cqw;--card-height:15.95cqw}.premium-table .table-status,.premium-table.has-live-dealer .table-status{top:57%}.premium-table .round-result,.premium-table.has-live-dealer .round-result{top:60%}}

/* Native curved joinery supplies the pocket; only real-valued chips are overlaid. */
.player-chip-bank{transform:translate(-50%,-12.5px);z-index:4}.rack-lanes,.rack-lane{background:none!important;border:0!important;box-shadow:none!important}.rack-lanes{padding:2px 4px;gap:2px;position:relative;height:25px;display:grid;grid-template-columns:repeat(var(--lane-count,3),minmax(0,1fr))}.rack-lane{width:100%;height:18px}.rack-chip{left:50%!important;margin-left:-10px;width:20px!important;height:15px!important;top:calc(5px - var(--rack-level)*2.5px)!important;font-size:6px!important;border-width:2px!important}.rack-count{position:absolute;left:50%;top:13px;transform:translateX(-50%);font-size:7px;font-weight:bold;color:#fff5d9;text-shadow:0 1px 2px #000;white-space:nowrap}.rack-owner{margin-top:9px}.rack-balance{font-size:9px}.rack-more{position:absolute;right:-3px;top:6px;color:#ffe1a0;font-size:8px}.rack-details-button{position:absolute;inset:-12px -3px auto;min-height:48px;height:48px;width:calc(100% + 6px);border:0;background:transparent;pointer-events:auto;cursor:pointer;border-radius:16px}.denomination-chip{background:radial-gradient(circle at 33% 22%,#fff7,var(--chip-color) 42%,#0005 100%),var(--chip-color)!important;color:var(--chip-ink)!important;border-color:var(--chip-edge)!important;border-style:dashed!important;font-family:Arial,sans-serif;font-weight:800;box-shadow:0 2px 0 #15110b,0 3px 4px #0008,inset 0 0 0 2px #ffffff50!important}.denomination-chip.pattern-1{border-style:dotted!important}.denomination-chip.pattern-2{border-style:double!important}.station-stake{display:flex;gap:3px;justify-content:center;width:auto;min-width:30px}.stake-pile{position:relative;width:30px;height:28px}.stake-count,.flying-chip-count{position:absolute;top:100%;left:50%;transform:translateX(-50%);font-size:8px;color:#ffe4a4;white-space:nowrap}.chip-legend{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.chip-legend-row{display:grid;grid-template-columns:40px 1fr;align-items:center;gap:4px 10px;padding:10px;border:1px solid #ae975c55;border-radius:10px;background:#1b1711}.chip-legend-row .denomination-chip{grid-row:1/3;width:40px;height:40px;min-width:0;min-height:0;font-size:10px}.chip-legend-row strong{font-size:13px}.chip-legend-row>span:last-child{font-size:11px;color:#c9c0a7}.player-chip-bank[data-seat='0'] .rack-lanes{transform:rotate(88deg)}.player-chip-bank[data-seat='4'] .rack-lanes{transform:rotate(-88deg)}.player-chip-bank[data-seat='1'] .rack-lanes{transform:rotate(-34deg)}.player-chip-bank[data-seat='3'] .rack-lanes{transform:rotate(34deg)}.premium-table .player-chip-bank[data-seat='0'] .rack-lanes{transform:rotate(-43deg)}.premium-table .player-chip-bank[data-seat='4'] .rack-lanes{transform:rotate(43deg)}.premium-table .player-chip-bank[data-seat='1'] .rack-lanes{transform:rotate(-12deg)}.premium-table .player-chip-bank[data-seat='3'] .rack-lanes{transform:rotate(12deg)}.premium-table .player-chip-bank:is([data-seat='0'],[data-seat='4']){width:80px}.premium-table .player-chip-bank:is([data-seat='1'],[data-seat='2'],[data-seat='3']){width:116px}.stage:not(.menu-mode):not(.premium-table) .my-hands:not(.own-side-hand) .playing-card{--card-width:4cqw;--card-height:5.8cqw}
@media(max-aspect-ratio:1/1){.rack-lanes{transform:none!important}.premium-table .player-chip-bank{width:72px!important}.rack-chip{width:16px!important;margin-left:-8px;font-size:5px!important}.chip-legend{grid-template-columns:1fr}.rack-owner,.rack-balance{font-size:8px}.stage:not(.menu-mode):not(.premium-table) .my-hands:not(.own-side-hand) .playing-card{--card-width:11cqw;--card-height:15.95cqw}}

@media(min-aspect-ratio:1/1){.premium-table .table-printing{width:29%;font-size:clamp(10px,1.1cqw,15px)}.premium-table .table-printing small{font-size:clamp(7px,.6cqw,10px)}}

@media(min-aspect-ratio:1/1){.stage:not(.menu-mode):not(.premium-table) .table-status,.stage:not(.menu-mode):not(.premium-table) .round-result{top:84%}.stage:not(.menu-mode):not(.premium-table) .round-result{left:34%;right:34%}}

/* Chair portraits and a separate control rail keep the table clear. */
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode){width:min(100vw,calc((100svh - 80px) * 3 / 2),1600px)!important;aspect-ratio:3/2;margin-bottom:80px;overflow:visible}.stage:not(.menu-mode) :is(.bet-controls,.actions,.result-actions){top:calc(100% + 16px)!important;bottom:auto!important;min-height:48px;z-index:6}.stage:not(.menu-mode) .seat{height:52px;pointer-events:none;z-index:5}.stage:not(.menu-mode) .seat-profile{position:relative;display:block;width:100%;height:48px}.stage:not(.menu-mode) .seat-profile>.avatar{position:absolute;left:50%;top:0;transform:translateX(-50%);width:48px;height:48px;pointer-events:auto}.stage:not(.menu-mode) .seat-social-actions{position:absolute;left:calc(50% + 30px);top:0;display:flex;flex-direction:row;pointer-events:auto}.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='1']) .seat-social-actions{left:auto;right:calc(50% + 30px)}.stage:not(.menu-mode) .profile-gift-badge{position:absolute;left:calc(50% - 48px);top:30px;pointer-events:auto}.stage:not(.menu-mode) .table-status{top:83%!important}.stage:not(.menu-mode) .round-result{top:83%!important}}

@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='4']) .seat-social-actions{left:50%;right:auto;top:54px;transform:translateX(-50%)}}

/* Enlarge only table portraits by 50%, preserving their chair centres. */
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat-profile>.avatar{width:72px;height:72px;top:-12px}.stage:not(.menu-mode) .seat-social-actions{left:calc(50% + 42px)}.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='1']) .seat-social-actions{right:calc(50% + 42px)}.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='4']) .seat-social-actions{left:50%;right:auto;top:66px}.stage:not(.menu-mode) .profile-gift-badge{left:calc(50% - 60px);top:42px}}

/* Portrait top edge follows the chair crest; social controls always sit below. */
.seat .seat-profile{flex-direction:column}.seat .seat-profile .seat-social-actions{flex-direction:row}
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat-profile>.avatar{top:0}.stage:not(.menu-mode) .seat .seat-profile .seat-social-actions{left:50%;right:auto;top:78px;transform:translateX(-50%);flex-direction:row}.stage:not(.menu-mode) .profile-gift-badge{top:44px}.stage:not(.menu-mode):not(.premium-table){width:min(100vw,calc((100svh - 140px) * 3 / 2),1600px)!important;margin-bottom:140px}.stage:not(.menu-mode):not(.premium-table) :is(.bet-controls,.actions,.result-actions){top:calc(100% + 72px)!important}}

@media(min-aspect-ratio:1/1){.stage.premium-table .table-status,.stage.premium-table .round-result{top:93%!important}}

/* Centre each player's actual card fan on its betting box. */
.opponent-hand-group{padding:2px}.stage:not(.menu-mode) :is(.my-hands,.opponent-hands) .total-pill{top:auto;bottom:calc(100% + 3px)}.station-stake{left:calc(100% + 12px);top:50%}

.player-level,.menu-level{display:inline-block;border:1px solid #c7a45d;border-radius:12px;background:linear-gradient(#3b3220,#1d1913);color:#f4d896;padding:3px 7px;font-size:11px;font-weight:700;white-space:nowrap}.seat .player-level{font-size:9px;max-width:128px;position:relative}.level-guide{margin-top:22px}.level-guide summary{cursor:pointer;padding:12px 0;color:#ead39a}.level-guide-row{display:flex;font-size:13px;border-bottom:1px solid #b99a5d33;padding:5px 0}.account-strip{flex-wrap:wrap}
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat .player-level{position:absolute;left:50%;top:56px;transform:translateX(-50%);z-index:3}}

@media(min-aspect-ratio:1/1){.premium-table .dealer-chip-bank-anchor{width:28%;height:7%}}

/* Names belong to the profile/social block, not the chip rack. */
.seat-username{color:#f4e5be;font-size:12px;font-weight:600;line-height:16px;text-align:center;text-shadow:0 1px 3px #000;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:4px}.rack-balance{margin-top:8px}
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat .seat-username{position:absolute;left:50%;top:130px;transform:translateX(-50%);width:140px;margin:0}.stage:not(.menu-mode) .own-profile .seat-username{top:78px}}

.room-picture.salon-room-picture{width:100%;height:auto;aspect-ratio:16/10!important}.salon-room-picture img{position:absolute;width:100%!important;height:100%!important;left:0!important;top:0!important;object-fit:cover;object-position:center}

.premium-table .table-printing,.premium-table .topbar .brand,.premium-table .premium-table-seal{color:var(--salon-accent,#e4bd56)}.premium-table .premium-table-seal{max-width:30%;letter-spacing:.03em}

/* Product identity stays compact in the table header. */
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.08;letter-spacing:.025em}.brand>span{font-size:clamp(15px,1.9cqw,25px);white-space:nowrap}.brand>small{font:9px Arial,sans-serif;letter-spacing:.2em;color:#cdbb92}.studio-signature{text-align:center;color:#c3b187;font-size:11px;letter-spacing:.15em;padding:20px 0 6px}.menu-mode .brand>span{font-size:clamp(17px,2vw,25px)}
@media(max-width:430px){.brand>span,.menu-mode .brand>span{font-size:14px}.brand>small{font-size:8px;letter-spacing:.12em}}

@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='4']){width:10%;min-width:0;margin-left:3%}.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='4']) .seat-username{width:100px}}

.topbar:before{left:-2%;right:-2%}

.mission-preview{display:flex;align-items:center;gap:18px;padding:20px 24px;margin-bottom:24px;border:1px solid #c4a35d99;border-radius:16px;background:linear-gradient(115deg,#433f39,#201c16);box-shadow:inset 0 1px #f5e2b522}.mission-preview-icon{font-size:38px;color:#edd28d}.mission-preview-copy{flex:1}.mission-preview h2{font-size:22px;margin:0 0 7px}.mission-preview p{font-size:13px}.mission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin:26px 0}.mission-card{display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;padding:30px 22px;border:1px solid #a68b4f88;border-radius:20px;background:linear-gradient(145deg,#39352f,#1a1610);min-width:0}.mission-card h2{font-size:24px;min-height:56px;margin:0;display:flex;align-items:center}.mission-icon{display:grid;place-items:center;width:68px;height:68px;border:2px solid #d3b66e;border-radius:50%;font:38px Georgia;color:#ead396;background:radial-gradient(at 30% 20%,#83703d,#29251f 70%);box-shadow:0 5px 14px #0006,inset 0 1px 2px #fff7}.mission-reward{font:26px Georgia;color:#f3d995}.mission-count{font-variant-numeric:tabular-nums;color:#d9cdad}.mission-card button{width:100%;margin-top:auto}.mission-card.complete{border-color:#e8cd80;box-shadow:0 0 22px #cfad4020}.mission-card.claimed{border-color:#699f7d}.mission-card.claimed .mission-icon{color:#9ad4af}.mission-card progress{height:12px}
@media(max-width:700px){.mission-grid{grid-template-columns:1fr}.mission-preview{flex-wrap:wrap;padding:18px}.mission-preview .gold-button{width:100%}.mission-card h2{min-height:0}.mission-preview-copy{min-width:180px}}

/* Gift attribution occupies its own side lane, clear of level badges and controls. */
.stage:not(.menu-mode) .seat .profile-gift-badge{bottom:auto;transform:none;width:112px;height:40px;min-height:40px;padding:3px;grid-template-columns:32px minmax(0,1fr);gap:1px 4px}.stage:not(.menu-mode) .seat .profile-gift-badge .gift-art{width:32px;grid-row:1/3}.stage:not(.menu-mode) .seat .gift-sender{font-size:9px;line-height:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stage:not(.menu-mode) .seat .gift-private{font-size:8px;line-height:9px}
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat .profile-gift-badge{left:calc(50% + 70px);right:auto;top:56px}.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='1']) .profile-gift-badge{left:auto;right:calc(50% + 70px)}}
@media(max-aspect-ratio:1/1){.stage:not(.menu-mode) .seat .profile-gift-badge{position:relative;left:auto;right:auto;top:auto;margin-top:6px}}

@media(min-aspect-ratio:1/1){.stage:not(.menu-mode) .seat .profile-gift-badge{width:100px;left:calc(50% + 84px);top:6px}.stage:not(.menu-mode) .seat:is([data-seat='0'],[data-seat='1']) .profile-gift-badge{left:auto;right:calc(50% + 84px)}}

@media(min-aspect-ratio:1/1){.premium-table .practice-tag{bottom:8%}}

/* Balance baselines follow the same tangent as their curved Chipzo recess. */
.premium-table .player-chip-bank{--rack-angle:0deg}.premium-table .player-chip-bank[data-seat='0']{--rack-angle:-43deg}.premium-table .player-chip-bank[data-seat='1']{--rack-angle:-12deg}.premium-table .player-chip-bank[data-seat='3']{--rack-angle:12deg}.premium-table .player-chip-bank[data-seat='4']{--rack-angle:43deg}
@media(min-aspect-ratio:1/1){.premium-table .player-chip-bank:is([data-seat]) .rack-lanes{transform:rotate(var(--rack-angle))}.premium-table .player-chip-bank .rack-balance{position:absolute;left:50%;top:26px;width:max-content;margin:0;transform:translateX(-50%) rotate(var(--rack-angle));transform-origin:50% -13.5px;line-height:12px;text-shadow:0 1px 3px #000,0 0 4px #000}}

/* Optional side wager, separate from the main card/bet box. */
.insurance-stake{position:absolute;transform:translate(-50%,-50%);z-index:12;pointer-events:none;display:grid;place-items:center}.insurance-stake .chip{width:24px;height:24px}.insurance-stake small{display:block;max-width:90px;padding:2px 4px;border:1px solid #bc9851;border-radius:5px;background:#231f19e8;color:#f9e7af;font-size:9px;text-align:center}.insurance-actions{flex-wrap:wrap}.insurance-actions p{flex:1 0 100%;margin:0 0 5px;font-size:clamp(12px,1.3vw,15px);color:#f4e2b0;text-align:center}.insurance-actions button{min-height:44px}

.insurance-actions{display:flex!important;justify-content:center;align-items:center;gap:8px}.insurance-actions>p{width:100%}.insurance-actions>button{flex:1;min-width:0}.insurance-stake .denomination-chip{min-width:24px;min-height:24px;width:24px;height:24px;font-size:8px;border-width:2px}

.insurance-actions button{min-height:48px}.insurance-actions p{line-height:1.4}
@media(min-aspect-ratio:1/1){.stage:not(.menu-mode):has(.insurance-actions){width:min(100vw,calc((100svh - 136px) * 3 / 2),1600px)!important;margin-bottom:136px}.stage:not(.menu-mode) .insurance-actions{left:4%;right:4%;gap:8px}.insurance-actions p{font-size:12px}}

.weekly-preview{display:flex;align-items:center;gap:18px;padding:20px 24px;margin-bottom:22px;border:1px solid #b79b55;border-radius:16px;background:radial-gradient(ellipse at 10% 0,#b9913c33,transparent 65%),linear-gradient(130deg,#34302a,#1f1b15);box-shadow:0 8px 28px #0004}.weekly-emblem{font-size:40px;color:#efd18d;text-shadow:0 2px 6px #0009}.weekly-preview-copy{flex:1}.weekly-preview h2{margin:0 0 6px;font-size:22px}.weekly-preview p{margin:0}.weekly-room-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.weekly-room-tabs button{min-height:48px;padding:10px 16px}.weekly-periods{margin:0 0 20px}.weekly-board{padding:24px}.weekly-board h2{margin:0}.weekly-dates{font-size:13px;color:#bdc9bd}.weekly-list{list-style:none;padding:0;margin:12px 0 0}.weekly-row{display:grid;grid-template-columns:42px minmax(140px,1fr) repeat(3,minmax(100px,.65fr));align-items:center;gap:14px;border-top:1px solid #d5b56b26;padding:16px 8px}.weekly-row.is-you{background:#d7b66312;border-radius:10px;box-shadow:inset 3px 0 #d5b56b}.weekly-row .metric{background:none;padding:0;min-width:0}.weekly-row .metric strong{font-size:19px;overflow-wrap:anywhere}.weekly-row .metric-label{font-size:11px}.weekly-identity{min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.weekly-identity strong{overflow-wrap:anywhere;max-width:180px}.weekly-identity small{color:#f1d58e}.weekly-identity .small-portrait{width:40px;height:40px;flex-shrink:0}.weekly-place{font-size:22px;text-align:center;color:#d9c995}.weekly-medal{width:36px;height:36px;flex-shrink:0;display:inline-grid;place-items:center;border-radius:50%;font:bold 18px Georgia,serif;box-shadow:inset 0 0 0 3px #fff3,0 3px 0 #0007,0 4px 10px #0005;border:1px solid #fff8;color:#392916;background:linear-gradient(130deg,#ffeac0,#e7b84e 45%,#a26b20 70%,#f4d67d)}.medal-2{background:linear-gradient(130deg,#f0f9fc,#a8b6c7 45%,#6c7c90 70%,#e0e9f3);color:#233243}.medal-3{background:linear-gradient(130deg,#f5d1a4,#bb7e44 45%,#80502e 70%,#ddb07b);color:#3f2414}.weekly-trophies{border-top:1px solid #c2a35d44;margin-top:20px;padding-top:20px}.weekly-trophies h2{font-size:21px}.medal-counts{display:flex;gap:18px;margin:16px 0}.medal-count{display:flex;align-items:center;gap:8px}.medal-record{display:flex;align-items:center;gap:12px;margin:12px 0;font-size:13px}.medal-record span:last-child{overflow-wrap:anywhere}.weekly-divider{padding-top:16px;color:#dac187}.weekly-trophies>button{min-height:48px;max-width:100%}
@media(max-width:700px){.weekly-preview{flex-wrap:wrap;padding:18px;gap:12px}.weekly-preview>button{width:100%}.weekly-preview h2{font-size:20px}.weekly-room-tabs{display:grid;grid-template-columns:1fr 1fr}.weekly-room-tabs button{font-size:13px;overflow-wrap:anywhere}.weekly-board{padding:16px}.weekly-row{grid-template-columns:36px minmax(0,1fr);gap:10px;padding:16px 6px}.weekly-row .metric{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:10px}.weekly-row .metric strong{font-size:18px}.weekly-row .metric-label{font-size:12px}.weekly-identity strong{max-width:130px}.weekly-periods{gap:8px}.weekly-periods button{flex:1;min-height:48px;padding:10px;font-size:13px}.weekly-trophies{min-width:0}.medal-counts{gap:12px}.weekly-preview p{font-size:14px}}

.invite-link{display:block;white-space:normal;overflow-wrap:anywhere;user-select:all;padding:16px;border:1px solid #b99b5655;border-radius:10px;background:#1b1711;color:#f4df9f;font:14px/1.5 monospace;margin:16px 0}.invitation-preview{max-width:720px;margin-inline:auto}.invitation-preview>button,.menu-panel:has(.invite-link)>button{margin:6px 8px 0 0;min-height:48px}.waiting-table-name{overflow-wrap:anywhere;color:#e7d099}.waiting-seats{display:grid;gap:10px}.waiting-seat{display:grid;grid-template-columns:70px 42px minmax(0,1fr) auto;align-items:center;gap:14px;min-height:76px;padding:12px;border:1px dashed #c2aa633a;border-radius:12px;background:#1b171166}.waiting-seat.occupied{border-style:solid}.waiting-seat-number{font-size:12px;color:#bea977}.waiting-seat .small-portrait{width:40px;height:40px}.waiting-player-name{overflow-wrap:anywhere;min-width:0}.waiting-seat p{grid-column:2/-1;font-size:14px;margin:0}.ready-tag{font-size:12px;color:#c6c8bd;background:#39352f;padding:8px 12px;border-radius:99px}.ready-tag.ready{color:#b0edc1;background:#4f4b45}.waiting-summary{color:#e7d099;font-size:17px}.waiting-bets{margin-bottom:16px}.waiting-bets button{min-height:48px}.menu-panel:has(.waiting-bets)>button{min-height:48px;margin:6px 8px 6px 0}
@media(max-width:600px){.waiting-seat{grid-template-columns:40px minmax(0,1fr);gap:8px}.waiting-seat-number{grid-column:1/-1}.waiting-seat .ready-tag{grid-column:2;width:fit-content;max-width:100%;overflow-wrap:anywhere}.waiting-seat p{grid-column:1/-1}.waiting-bets{display:grid;grid-template-columns:1fr 1fr}.waiting-bets button{padding:10px;font-size:14px}.invitation-preview>button,.menu-panel:has(.invite-link)>button,.menu-panel:has(.waiting-bets)>button{width:100%;margin:6px 0}.invite-link{font-size:12px}}

.stage[data-screen="waiting"] .menu-panel{margin-bottom:20px}.stage[data-screen="waiting"] .waiting-table-name{margin-top:0;margin-bottom:24px}

.test-access-panel{max-width:600px;margin:24px auto}.test-access-form{display:grid;gap:16px}.test-access-form input{width:100%;min-height:48px;padding:14px;border:1px solid #a4894f;border-radius:10px;background:#19150f;color:#f7e5b9;font-size:17px}.test-access-form button{min-height:48px}
/* Phone: landscape only, with an undistorted table and a separate action rail. */
.rotate-screen{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:24px max(24px,env(safe-area-inset-right)) 24px max(24px,env(safe-area-inset-left));background:radial-gradient(ellipse at 50% 20%,#45413b,#14100a 72%);color:#f4e8cc;text-align:center}.rotate-panel{max-width:420px}.rotate-symbol{font-size:76px;color:#e4c271;text-shadow:0 4px 20px #d1ad4828}.rotate-screen h1{font-size:30px;margin:20px 0 12px}.rotate-screen p{font-size:16px;line-height:1.6;color:#c7d7cb}.rotate-screen button{min-height:48px;padding:14px 22px;margin:12px 0}.rotate-screen .studio-signature{display:block;margin-top:24px}.landscape-required{overflow:hidden!important;height:100dvh}.landscape-required #stage{visibility:hidden}.landscape-fullscreen{display:none}
.phone-landscape{--phone-rail:156px}.phone-landscape .landscape-fullscreen{display:grid;place-items:center;font-size:24px}.phone-landscape .menu-shell{padding:12px max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left))}.phone-landscape .shell-header{padding-bottom:10px;gap:10px}.phone-landscape .menu-main{padding-top:16px}.phone-landscape .page-heading h1{font-size:28px;margin:0 0 8px}.phone-landscape .page-heading{margin-bottom:16px}.phone-landscape .room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.phone-landscape .room-body h2{font-size:20px}.phone-landscape .round-button{width:48px;height:48px;min-width:48px;min-height:48px}.phone-landscape .language-button{min-height:48px}.phone-landscape dialog{max-height:calc(100dvh - 16px);margin:auto}.phone-landscape .dialog-inner{padding:20px}.phone-landscape .dialog-close{width:48px;height:48px}.phone-landscape .welcome-layout{gap:24px;padding:16px 0;min-height:0}.phone-landscape .welcome-copy h1{font-size:30px}.phone-landscape .welcome-cards .playing-card{--card-width:70px;--card-height:102px}

/* Phone game fills the viewport width; actions remain in the bottom strip. */

.email-auth-form{display:grid;gap:14px}.email-auth-field{display:grid;gap:6px;font-size:14px;color:#dbcfad}.email-auth-form input{width:100%;min-height:48px}.email-auth-form>button{min-height:48px;margin:6px 0!important}.account-email{overflow-wrap:anywhere;font-weight:bold}.account-owner{font-size:20px;color:#efd69d}
/* Phone landscape: one viewport, stable chrome, independently scrolling content. */
.phone-landscape:has(.menu-mode){display:block;height:100dvh;min-height:0;overflow:hidden}
.phone-landscape .stage.menu-mode{width:100%;max-width:none;height:100dvh;min-height:0;overflow:hidden;background-attachment:scroll}
.phone-landscape .menu-mode #surface{height:100%}
.phone-landscape .menu-shell{height:100%;min-height:0;padding:calc(6px + env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(4px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));gap:0}
.phone-landscape .shell-header{flex:none;grid-template-columns:48px minmax(0,1fr) auto;gap:10px;padding-bottom:6px;min-height:54px}
.phone-landscape .brand-block{flex-direction:row;align-items:center;gap:16px}.phone-landscape .header-tools{gap:6px}
.phone-landscape .menu-main{min-height:0;overflow-y:auto;overflow-x:clip;overscroll-behavior:contain;scrollbar-gutter:stable;padding:12px 4px 16px 0;scroll-padding-block:12px}
.phone-landscape .page-heading{margin-bottom:12px}.phone-landscape .page-heading h1{font-size:24px;margin:0 0 6px}.phone-landscape .page-heading p{font-size:14px;line-height:1.4}
.phone-landscape .bottom-nav{flex:none;gap:4px;padding-top:4px;background:#1a1610e8}.phone-landscape .studio-signature{flex:none;margin:3px 0 0;font-size:9px;line-height:12px;letter-spacing:.14em}
.phone-landscape :is(.text-button,.guide-link){min-height:48px;display:inline-flex;align-items:center;justify-content:center}.phone-landscape .guide-link{display:flex;margin:10px auto 0}
.phone-landscape .menu-panel{padding:16px;border-radius:14px}.phone-landscape .menu-panel h2{font-size:21px;margin-bottom:12px}
.phone-landscape .button-row{gap:8px;margin-top:12px}.phone-landscape .button-row>button{padding:10px 14px}
.phone-landscape .account-strip{gap:10px;margin:0 0 12px;flex-wrap:nowrap}.phone-landscape .account-strip>strong{font-size:14px}.phone-landscape .account-strip .primary{min-width:126px}
.phone-landscape .stage[data-screen=lobby] .menu-main{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px}
.phone-landscape .stage[data-screen=lobby] .menu-main>*{grid-column:1/-1;margin-block:0}
.phone-landscape .stage[data-screen=lobby] :is(.mission-preview,.weekly-preview){grid-column:auto;display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;padding:12px;align-content:start}
.phone-landscape :is(.mission-preview-copy,.weekly-preview-copy){min-width:0}.phone-landscape :is(.mission-preview,.weekly-preview) h2{font-size:19px;margin:0 0 4px}.phone-landscape :is(.mission-preview,.weekly-preview) p{font-size:12px;line-height:1.4}
.phone-landscape :is(.mission-preview,.weekly-preview)>button{grid-column:1/-1;width:100%;margin:2px 0 0}.phone-landscape :is(.mission-preview-icon,.weekly-emblem){font-size:30px}
.phone-landscape .room-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.phone-landscape .room-body,.phone-landscape .vip-room-tile .room-body{display:flex;flex-direction:column;gap:6px;padding:12px}.phone-landscape .room-body h2,.phone-landscape .vip-room-tile h2{font-size:20px;margin:0}.phone-landscape .room-body p{font-size:12px;line-height:1.4}.phone-landscape .room-body>button{width:100%;min-width:0;margin-top:auto}
.phone-landscape .room-picture.rendered-room-picture{aspect-ratio:3/2;height:auto}.phone-landscape .vip-room-tile{grid-column:auto;display:flex;flex-direction:column}.phone-landscape .vip-room-picture{border-right:0;border-bottom:1px solid var(--border)}.phone-landscape .vip-crown-label{font-size:10px;padding:4px 8px}
.phone-landscape .shop-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.phone-landscape .shop-tile{padding:12px 10px;gap:8px}.phone-landscape .shop-stack{height:74px;margin-top:0;scale:.8;transform-origin:center bottom}.phone-landscape .shop-tile h2{font-size:24px}.phone-landscape .shop-tile .gold-button{padding:8px}
.phone-landscape .gift-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.phone-landscape .gift-slot{padding:10px 6px;gap:8px}.phone-landscape .gift-slot strong{font-size:16px}.phone-landscape .gift-reward{margin-top:14px}.phone-landscape .gift-reward h2{font-size:27px;margin-bottom:10px}.phone-landscape .gift-reward p{margin-top:10px}
.phone-landscape .profile-grid{grid-template-columns:210px minmax(0,1fr);gap:14px}.phone-landscape .profile-portrait{width:88px;height:88px;margin-bottom:10px}.phone-landscape .profile-name{font-size:24px!important}.phone-landscape .profile-grid .button-column{margin-top:12px}.phone-landscape .profile-grid .button-column button{width:100%;padding:8px;font-size:13px}
.phone-landscape .stats-grid{gap:12px;margin-bottom:14px}.phone-landscape .metric{gap:6px}.phone-landscape .metric strong{font-size:24px}.phone-landscape .stats-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.phone-landscape .stats-grid.four .metric{padding:12px}
.phone-landscape .badge-grid,.phone-landscape .mission-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0}.phone-landscape .badge-tile,.phone-landscape .mission-card{padding:16px 12px;gap:12px}.phone-landscape .badge-tile h2,.phone-landscape .mission-card h2{font-size:20px;min-height:48px}.phone-landscape .mission-icon{width:48px;height:48px;font-size:28px}.phone-landscape .mission-reward{font-size:23px}.phone-landscape .badges-preview{gap:8px;margin-top:12px}.phone-landscape .badge-preview{padding:12px 4px;font-size:12px}
.phone-landscape .settings-panel{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.phone-landscape .settings-row{grid-template-columns:minmax(90px,.8fr) minmax(72px,1fr) 38px;min-height:60px;padding:6px 0;gap:8px;font-size:14px}.phone-landscape .settings-panel>.muted,.phone-landscape .settings-links{grid-column:1/-1}.phone-landscape .settings-panel>.muted{padding-top:10px;font-size:12px}
.phone-landscape .friends-grid,.phone-landscape .tutorial-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.phone-landscape .friend-row{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px}.phone-landscape .friend-row>button{font-size:12px;padding:8px}.phone-landscape .friend-row>button:first-of-type{grid-column:1/-1}.phone-landscape .friend-row>button:last-of-type{grid-column:1/-1}
.phone-landscape .tutorial-layout .playing-card{--card-width:55px;--card-height:80px}.phone-landscape .demo-hand{padding:6px 0}.phone-landscape .demo-rule{margin:8px 0;font-size:12px}.phone-landscape .tutorial-layout h2{font-size:23px}
.phone-landscape .welcome-layout{grid-template-columns:minmax(0,1.65fr) minmax(120px,.65fr);gap:20px;padding:8px 0}.phone-landscape .welcome-copy h1{font-size:30px;margin:8px 0 12px}.phone-landscape .welcome-copy p{font-size:14px;line-height:1.5}.phone-landscape .welcome-cards{grid-row:auto;padding:12px}.phone-landscape .welcome-cards .playing-card{--card-width:68px;--card-height:99px}
.phone-landscape dialog{width:min(740px,calc(100dvw - 24px - env(safe-area-inset-left) - env(safe-area-inset-right)));max-height:calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:hidden}
.phone-landscape .dialog-inner{max-height:inherit;overflow-y:auto;overscroll-behavior:contain;padding:16px;scroll-padding-block:60px 16px}.phone-landscape .dialog-inner h2{font-size:24px;margin-bottom:14px}.phone-landscape .dialog-inner p{font-size:14px;margin:10px 0}
.phone-landscape .dialog-close{position:sticky;top:0;float:right;z-index:10;margin:0 0 6px 10px!important;background:#24201a;box-shadow:0 3px 8px #0008}
.phone-landscape .email-auth-form{gap:8px}.phone-landscape .email-auth-field{font-size:14px;gap:2px}.phone-landscape .email-auth-form input{font-size:16px;margin:2px 0 6px}
.phone-landscape .social-gift-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.phone-landscape .social-gift .gift-art{width:84px}.phone-landscape .social-gift strong{font-size:13px}.phone-landscape .social-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.phone-landscape .reconnect-panel{margin:0 auto}.phone-landscape .waiting-seat{min-width:0}.phone-landscape .invite-link{overflow-wrap:anywhere}
@media(max-width:740px){.phone-landscape .room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.phone-landscape .brand-block{gap:4px;flex-direction:column;align-items:flex-start}.phone-landscape .menu-mode .brand>span{font-size:16px}.phone-landscape .menu-mode .brand>small{font-size:8px}.phone-landscape .wallet{font-size:12px}.phone-landscape .settings-panel{gap:0 14px}.phone-landscape .profile-grid{grid-template-columns:190px minmax(0,1fr)}.phone-landscape .weekly-row{grid-template-columns:36px minmax(0,1fr) repeat(3,minmax(0,.7fr));gap:8px}.phone-landscape .weekly-row .metric{grid-column:auto;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.phone-landscape .weekly-identity{gap:6px}.phone-landscape .weekly-row .metric strong{font-size:16px}.phone-landscape .weekly-row .metric-label{font-size:10px}}
.phone-landscape .studio-signature{padding:0}
.phone-landscape .stage[data-screen=lobby] .menu-main{gap:8px}
.phone-landscape .settings-row input[type=range]{height:48px;min-height:48px}
/* Keep card faces, totals and physical Chipzo pockets in separate phone lanes. */
.insurance-help{display:none}
.phone-landscape .stage[data-screen=reconnect] #connection{top:calc(62px + env(safe-area-inset-top));pointer-events:none}
.phone-landscape .stage[data-screen=reconnect] .menu-main{padding-top:62px}
.gift-sender-short{display:none}
.phone-landscape .level-guide summary{min-height:48px;display:flex;align-items:center}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* Desktop uses its full browser window; native fullscreen remains an explicit action. */
body:not(.phone-landscape):not(.landscape-required):has(.stage.premium-table){display:block;overflow:hidden;min-height:100dvh;background:#18140e}
body:not(.phone-landscape):not(.landscape-required) .stage.premium-table,body:not(.phone-landscape):not(.landscape-required) .stage.premium-table:has(.insurance-actions){width:100vw!important;max-width:none;height:calc(100dvh - 80px)!important;aspect-ratio:auto!important;margin:0!important;box-shadow:none}
body:not(.phone-landscape) .landscape-fullscreen{display:grid}
body:not(.phone-landscape) .stage.premium-table :is(.actions,.bet-controls,.result-actions){left:8%!important;right:8%!important;top:calc(100% + 26px)!important;bottom:auto!important;min-height:48px}
body:not(.phone-landscape) .stage.premium-table .table-status{top:calc(100% + 3px)!important;left:20%!important;right:20%!important}
body:not(.phone-landscape) .stage.premium-table .round-result{top:calc(100% + 2px)!important;left:25%!important;right:25%!important;height:24px;padding:0;border:0;background:none;display:flex;align-items:center;justify-content:center;gap:16px}
body:not(.phone-landscape) .stage.premium-table .round-result h2{font-size:20px;margin:0}body:not(.phone-landscape) .stage.premium-table .round-result p{margin:0;font-size:16px}
body:not(.phone-landscape) .stage.premium-table{container-type:size}
body:not(.phone-landscape) .stage.premium-table :is(.actions,.result-actions,.bet-controls)>button,body:not(.phone-landscape) .stage.premium-table .bet-adjust>button{height:48px!important;min-height:48px;max-height:48px;font-size:16px}
body:not(.phone-landscape) .stage.premium-table .bet-controls .chip{width:48px;height:48px;min-width:48px;min-height:48px;font-size:12px}
body:not(.phone-landscape) .stage.premium-table .my-hands .playing-card{--card-width:clamp(48px,8cqh,86px);--card-height:clamp(70px,11.6cqh,125px)}
body:not(.phone-landscape) .stage.premium-table .opponent-hand-group .playing-card{--card-width:clamp(42px,6cqh,64px);--card-height:clamp(61px,8.7cqh,93px)}
body:not(.phone-landscape) .stage.premium-table .dealer-hand .playing-card{--card-width:clamp(48px,8cqh,84px);--card-height:clamp(70px,11.6cqh,122px)}
body:not(.phone-landscape) .stage.premium-table .my-hands:has(.hand-group:nth-child(2)) .hand-group{min-width:100px}
body:not(.phone-landscape) .stage.premium-table .my-hands:has(.hand-group:nth-child(2)) .playing-card{--card-width:clamp(40px,6.8cqh,64px);--card-height:clamp(58px,9.86cqh,93px)}
/* One shared desktop composition, fitted to the phone safe area. */
.phone-player-button,.phone-card-zoom,.phone-table-menu,.phone-table-title{display:none}
.phone-landscape:has(.stage.premium-table){display:block;height:var(--app-height,100dvh);min-height:0;overflow:hidden;padding:0 env(safe-area-inset-right) 0 env(safe-area-inset-left);background:#18140e}
.phone-landscape .stage.premium-table,.phone-landscape .stage.premium-table:has(.insurance-actions){width:100%!important;max-width:none;height:calc(var(--app-height,100dvh) - 80px - env(safe-area-inset-bottom))!important;min-height:0;aspect-ratio:auto!important;margin:0!important;overflow:visible;box-shadow:none;container-type:size}
.phone-landscape .stage.premium-table .topbar{left:8px;right:8px;top:2px;gap:6px}.phone-landscape .stage.premium-table .topbar:before{inset:-4px -8px -8px}.phone-landscape .stage.premium-table .topbar .brand>span{font-size:14px}.phone-landscape .stage.premium-table .topbar .brand>small{font-size:7px}.phone-landscape .stage.premium-table .topbar .balance{padding:4px 6px;font-size:14px;gap:4px}.phone-landscape .stage.premium-table .topbar .balance small,.phone-landscape .stage.premium-table .admin-badge{display:none}
.phone-landscape .stage.premium-table :is(.icon-button,.game-language){width:48px;height:48px;min-width:48px;min-height:48px;font-size:20px}.phone-landscape .stage.premium-table .game-social-inbox{top:58px;right:8px}
.phone-landscape .stage.premium-table .premium-table-seal{top:54px;left:8px;padding:4px 8px;font-size:12px}.phone-landscape .stage.premium-table .premium-table-seal small{font-size:9px}.phone-landscape .stage.premium-table .practice-tag{display:none}
.phone-landscape .stage.premium-table :is(.hand-group,.opponent-hand-group){min-width:0;padding:0;box-shadow:none}
.phone-landscape .stage.premium-table .my-hands{gap:6px}.phone-landscape .stage.premium-table .my-hands .hand-group{min-width:72px}
.phone-landscape .stage.premium-table .playing-card{--card-width:34px;--card-height:49px;transform:none!important}.phone-landscape .stage.premium-table .playing-card+.playing-card{margin-left:-12px}
.phone-landscape .stage.premium-table .my-hands .playing-card{--card-width:38px;--card-height:55px}.phone-landscape .stage.premium-table .my-hands:has(.hand-group:nth-child(2)) .playing-card{--card-width:34px;--card-height:49px}
.phone-landscape .stage.premium-table .dealer-hand .playing-card{--card-width:32px;--card-height:46px}
.phone-landscape .stage.premium-table .total-pill{font-size:10px;padding:2px 5px}.phone-landscape .stage.premium-table .my-hands:has(.hand-group:nth-child(2)) .total-pill{max-width:92px;white-space:nowrap;font-size:10px}
.phone-landscape .stage.premium-table .seat[data-seat]{left:clamp(52px,var(--profile-x),calc(100% - 52px))!important;right:auto!important;top:min(var(--profile-y),calc(100% - 92px))!important;width:164px!important;min-width:0!important;height:150px;transform:translateX(-50%) scale(.6)!important;transform-origin:50% 0;margin:0!important}
.phone-landscape .stage.premium-table .seat.own-profile{top:min(var(--profile-y),calc(100% - 58px))!important}
.phone-landscape .stage.premium-table .seat>.seat-status{display:none}.phone-landscape .stage.premium-table .seat:has(.empty-seat){display:none}
.phone-landscape .stage.premium-table .seat .phone-player-button{display:block;position:absolute;left:50%;top:0;transform:translateX(-50%);width:110px;height:150px;min-height:80px;background:transparent;border:0;padding:0;z-index:9;cursor:pointer}
.phone-landscape .stage.premium-table .seat.own-profile .phone-player-button{height:96px}.phone-landscape .stage.premium-table .phone-player-button>*{display:none!important}
.phone-landscape .stage.premium-table .seat .seat-social-actions{pointer-events:none}.phone-landscape .stage.premium-table .seat .social-avatar{pointer-events:none}
.phone-landscape .stage.premium-table .player-chip-bank{transform:translate(-50%,-50%) scale(.6);transform-origin:50% 50%}.phone-landscape .stage.premium-table .player-chip-bank .rack-balance{font-size:16px;line-height:18px;top:28px}.phone-landscape .stage.premium-table .player-chip-bank .rack-details-button{height:80px}
.phone-landscape .stage.premium-table :is(.actions,.bet-controls,.result-actions){top:calc(100% + 26px)!important;bottom:auto!important;left:8px!important;right:8px!important;min-height:48px;width:auto;transform:none!important;gap:8px;z-index:8}
.phone-landscape .stage.premium-table .actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.phone-landscape .stage.premium-table :is(.actions,.result-actions,.bet-controls)>button,.phone-landscape .stage.premium-table .bet-adjust>button{height:48px;min-height:48px;max-height:48px;font-size:14px;padding:8px}
.phone-landscape .stage.premium-table .bet-controls{display:flex;align-items:center;justify-content:center;padding:0;gap:8px}.phone-landscape .stage.premium-table .bet-controls>div:first-child{display:flex;gap:6px}.phone-landscape .stage.premium-table .bet-controls .chip{width:48px;height:48px;min-width:48px;min-height:48px;font-size:12px}.phone-landscape .stage.premium-table .bet-adjust{display:flex;gap:4px;padding:0}.phone-landscape .stage.premium-table .bet-controls>button{min-width:160px}
.phone-landscape .stage.premium-table .table-status{top:calc(100% + 3px)!important;left:8px!important;right:8px!important;font-size:12px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:none}
.phone-landscape .stage.premium-table .round-result{top:calc(100% + 2px)!important;left:8px!important;right:8px!important;padding:0;height:22px;background:none;border:0;box-shadow:none;display:flex;align-items:center;justify-content:center;gap:14px}.phone-landscape .stage.premium-table .round-result h2{font-size:17px}.phone-landscape .stage.premium-table .round-result p{font-size:14px;margin:0}
.phone-landscape .stage.premium-table .insurance-actions{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr)) 48px}.phone-landscape .stage.premium-table .insurance-actions>p{display:none}.phone-landscape .stage.premium-table .insurance-help{display:inline-flex;min-width:48px;width:48px}
.phone-landscape .stage.premium-table .phone-card-zoom{display:block;position:absolute;inset:0;width:100%;height:100%;min-height:48px;background:none;border:0;border-radius:8px;z-index:6;padding:0}
.phone-hand-inspection{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;padding:12px}.phone-hand-inspection .playing-card{--card-width:90px!important;--card-height:131px!important;transform:none}.phone-hand-inspection .playing-card+.playing-card{margin-left:0}
.phone-landscape:has(.menu-mode),.phone-landscape .stage.menu-mode{height:var(--app-height,100dvh)}.phone-landscape dialog{max-height:calc(var(--app-height,100dvh) - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
/* The curved felt legend is centred on the oval, clear of the left glass dish. */
.stage.premium-table .table-printing{width:40%;height:auto;aspect-ratio:5/1;transform:translateX(-50%);text-shadow:none;letter-spacing:0}
.table-printing svg{display:block;width:100%;height:100%;overflow:visible}.table-printing text{fill:var(--salon-accent,#d8bc7b);paint-order:stroke;stroke:#173328;stroke-width:.6;letter-spacing:2px}.table-printing .felt-main{font:bold 28px Georgia,serif}.table-printing .felt-secondary{font:12px Arial,sans-serif;letter-spacing:1px}
.stage.premium-table .dealer-hand{top:34%!important}
.stage:not(.menu-mode) .seat .profile-gift-badge{left:calc(50% - 52px)!important;right:auto!important;top:20px!important;bottom:auto!important;transform:none!important;width:32px;height:32px;min-height:32px;display:block;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;z-index:8;pointer-events:auto}
.stage:not(.menu-mode) .seat .profile-gift-badge .gift-art{width:32px;height:32px}.stage:not(.menu-mode) .seat .profile-gift-badge :is(.gift-sender,.gift-sender-short,.gift-private){display:none}
.stage:not(.menu-mode) .seat .profile-gift-badge .gift-art{scale:2.5}
.stage.premium-table .player-chip-bank .rack-balance{font-size:12px;line-height:14px;font-weight:600;letter-spacing:0;top:28px;text-shadow:0 1px 3px #000,0 0 4px #000}
.phone-landscape .stage.premium-table .table-printing{width:30%}
.phone-landscape .stage.premium-table .dealer-hand{top:31%!important}
/* Reserve the full footprint, including Chipzo shadows, inside the action strip. */
body:not(.phone-landscape) .stage.premium-table :is(.actions,.bet-controls,.result-actions),.phone-landscape .stage.premium-table :is(.actions,.bet-controls,.result-actions){top:calc(100% + 22px)!important;height:48px;min-height:48px;max-height:48px;padding:0!important;margin:0!important}
.stage.premium-table .bet-controls .bet-adjust{padding:0!important;margin:0!important;min-height:48px;height:48px;align-items:center}
.stage.premium-table .bet-controls .bet-adjust>button{min-width:48px;min-height:48px}
.stage.premium-table .table-printing,.phone-landscape .stage.premium-table .table-printing{width:52%;height:20.8%;aspect-ratio:auto}
.table-printing .felt-main{font:bold 14px Georgia,serif;letter-spacing:1px}
.table-printing .felt-secondary{font:8px Arial,sans-serif;letter-spacing:.4px}
.phone-landscape .stage.premium-table .seat[data-seat]{left:var(--profile-x)!important;top:var(--profile-y)!important;transform:translateX(-50%) scale(var(--profile-scale,.6))!important}
.phone-landscape .stage.premium-table .seat.own-profile{top:var(--profile-y)!important}
.phone-landscape .stage.premium-table .seat .phone-player-button{min-width:calc(48px / var(--profile-scale,.6));min-height:calc(48px / var(--profile-scale,.6))}
.phone-landscape .stage.premium-table .player-chip-bank{transform:translate(-50%,-50%) scale(var(--profile-scale,.6))}
.phone-landscape .stage.premium-table .player-chip-bank .rack-balance{font-size:calc(10px / var(--profile-scale,.6))!important;line-height:calc(12px / var(--profile-scale,.6))}
/* Every menu uses the same viewport shell, with scrolling confined to its content. */
body:has(.stage.menu-mode) {
  display: block;
  height: var(--app-height, 100dvh);
  min-height: 0;
  overflow: hidden;
}
.stage.menu-mode {
  width: 100%;
  max-width: none;
  height: var(--app-height, 100dvh);
  min-height: 0;
  overflow: hidden;
  background-attachment: scroll;
}
.menu-mode #surface,
.menu-mode .menu-shell {
  height: 100%;
  min-height: 0;
}
.menu-shell > :is(.shell-header, .bottom-nav, .studio-signature) {
  flex: none;
}
.menu-shell > .menu-main {
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

.stage.premium-table .player-chip-bank { width: 96px; }
.premium-table .rack-lanes {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 0;
}
.premium-table .rack-lane { flex: 0 1 24px; min-width: 0; height: 18px; }
.premium-table .rack-roll {
  position: absolute;
  left: 50%;
  top: 2px;
  width: calc(8px + var(--roll-depth) * 2.9px);
  height: 14px;
  transform: translateX(-50%);
  border-radius: 5px / 7px;
  background:
    repeating-linear-gradient(90deg, #0007 0 1px, transparent 1px 2.9px),
    linear-gradient(#0006, #fff7 23%, transparent 40%, transparent 62%, #0009 94%),
    linear-gradient(transparent 21%, #f4dfbb 22% 32%, transparent 33% 72%, #d6c6a6 73% 80%, transparent 81%),
    var(--roll-color);
  box-shadow: 0 1px 2px #000c;
}
.premium-table .rack-lane .rack-chip {
  left: 0 !important;
  top: 0 !important;
  width: 8px !important;
  height: 14px !important;
  margin: 0;
  border-width: 1px !important;
  box-shadow: inset 0 0 0 1px #fff4 !important;
  font-size: 0 !important;
}
.premium-table .rack-count { top: 15px; }
.premium-table .dealer-chip-bank-anchor { width: 17.5%; height: 4.4%; }
.premium-table .dealer-chip-bank-anchor .rack-lanes { height: 100%; }
.premium-table .dealer-chip-bank-anchor .rack-lane { position: absolute; top: 50%; width: 16px; transform: translate(-50%, -50%); }
.premium-table.has-live-dealer .dealer-chip-bank-anchor .rack-lanes { visibility: hidden; }

:where(.chip-with-art) { position: relative; }
.chip.chip-with-art {
  border: 0 !important;
  box-shadow: 0 2px 0 color-mix(in srgb, var(--chip-color), #140b03 55%), 0 4px 5px #0008 !important;
}
.chip-face {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background-repeat: no-repeat;
  pointer-events: none;
}
.chip-custom-amount {
  position: absolute;
  inset: 34% 17% 33%;
  display: grid;
  place-items: center;
  border-radius: 4px;
  background: color-mix(in srgb, var(--chip-color), #080706 64%);
  color: #ffe0a0;
  font: 700 12px/1 Georgia, serif;
}
.shop-stack .chip-with-art {
  transform: perspective(160px) rotateX(28deg) rotateZ(-8deg);
  box-shadow: 0 7px 0 #211208, 0 9px 7px #000a !important;
}
.shop-stack .chip-with-art::before {
  content: '';
  position: absolute;
  inset: 50% 0 -6px;
  border-radius: 0 0 50% 50% / 0 0 82% 82%;
  background:
    linear-gradient(#0000 60%, #180e0b99),
    repeating-linear-gradient(90deg, #160c0455 0 1px, #0000 1px 3px),
    repeating-linear-gradient(90deg, var(--chip-color) 0 12px, #ead7af 12px 18px);
}
.dialog-inner > .shop-stack { margin: 0 auto 12px; }
.premium-table .rack-roll .chip-with-art { box-shadow: inset 0 0 0 1px #fff4 !important; }

.player-rack-unit { display: contents; }
.stage.has-uniform-racks .player-chip-bank { width: min(88px, 8cqw); }
.phone-landscape .stage.has-uniform-racks .player-chip-bank { width: 88px; }
.has-uniform-racks .player-rack-unit {
  display: block;
  position: relative;
  height: 25px;
  transform: rotate(var(--rack-angle));
}
.stage.has-uniform-racks .player-chip-bank .rack-lanes { transform: none; }
.has-uniform-racks .player-rack-unit .rack-lanes::before {
  content: '';
  position: absolute;
  inset: 2px 0;
  border: 1px solid var(--salon-accent);
  border-top-color: color-mix(in srgb, var(--salon-accent), #fff 32%);
  border-bottom-color: color-mix(in srgb, var(--salon-accent), #180a02 34%);
  border-radius: 9px;
  background: linear-gradient(#090603 12%, #20170f 64%, color-mix(in srgb, var(--salon-accent) 26%, #24180d));
  box-shadow: inset 0 4px 5px #000, inset 0 -1px 2px #0008, 0 1px 1px #000a;
}
.stage.has-uniform-racks .player-rack-unit .rack-balance {
  left: 50%;
  top: calc(100% + 2px);
  margin: 0;
  transform: translateX(-50%);
}
.has-uniform-racks .player-rack-unit .rack-more { right: 2px; top: 4px; }


/* Royal VIP coordinates follow the table plate, including in short landscape. */
.stage.premium-table:is([data-salon='vip'],.salon-template) {
  --vip-gold: #e0be75;
  --vip-metal: #ac8546;
  --vip-avatar: clamp(32px, 5.1cqh, 54px);
  --vip-seat-height: calc(var(--vip-avatar) + 76px);
}
body:has(.stage.premium-table:is([data-salon='vip'],.salon-template)) { background: #100d0a !important; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .screen-art { filter: saturate(.87) hue-rotate(5deg); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .topbar::before {
  background: linear-gradient(90deg, #100d0be0, #0e0c0a36 44%, #100d0b54 68%, #100d0bd9);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.topbar .balance,.topbar .icon-button,.game-language,.vip-table-shortcuts .icon-button,.bet-adjust button) {
  color: var(--vip-gold);
  border-color: var(--vip-metal);
  background: linear-gradient(#211a13, #0d0b08);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.bet-controls,.actions,.result-actions) > .primary {
  color: #221506;
  border-color: #f4d99b;
  background: linear-gradient(#f0d69b,#c0964d);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .bet-adjust > .icon-button:disabled { opacity: .34; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .premium-table-seal {
  background: #100d09e8;
  border-color: var(--vip-metal);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-table-shortcuts {
  position: absolute;
  z-index: 6;
  right: max(16px, 1.25cqw);
  top: max(70px, 14cqh);
  display: grid;
  gap: clamp(5px, 1.2cqh, 12px);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-table-shortcuts .icon-button {
  display: grid;
  place-items: center;
  position: relative;
  inset: auto;
  border-radius: 50%;
  width: clamp(48px, 4.8cqh, 58px);
  height: clamp(48px, 4.8cqh, 58px);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-table-shortcuts .phone-table-menu { display: grid; }
.vip-table-shortcuts .game-social-inbox::before {
  content: '';
  width: 44%;
  aspect-ratio: 1;
  background: currentColor;
  mask: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-8l-6 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z' fill='none' stroke='white' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M7 10h2m2 0h2m2 0h2' stroke='white' stroke-width='2'/%3E%3C/svg%3E");
}
.stage.premium-table:is([data-salon='vip'],.salon-template) #surface::before {
  content: '';
  position: absolute;
  pointer-events: none;
  left: 44%;
  top: 35%;
  width: 12%;
  height: 4%;
  background: radial-gradient(ellipse, #0803028c, transparent 72%);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand {
  left: 35%;
  width: 30%;
  top: 41.6% !important;
  height: 4.9%;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
  --card-width: min(3.6cqw, 5.1cqh);
  --card-height: calc(var(--card-width) * 1.45);
  transform: perspective(13cqh) rotateX(57deg) rotateZ(calc((var(--i) - .5) * 2deg)) !important;
  box-shadow: 0 .3cqh .6cqh #0009;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card + .playing-card { margin-left: -.45cqw; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand:has(.playing-card:nth-child(6)) .playing-card { --card-width: min(3cqw,4.7cqh); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { left: 100%; right: auto; top: 50%; bottom: auto; transform: translateY(-50%); }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand { top: 41.35% !important; }
body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card { --card-width: min(3.1cqw, 5.1cqh); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo {
  position: absolute;
  pointer-events: none;
  left: 50%;
  top: 46.45%;
  transform: translateX(-50%) scaleY(.72);
  color: #d8b575;
  opacity: .81;
  text-shadow: 0 1px #412915;
  font: 700 clamp(8px, 1.55cqh, 17px)/.95 Georgia, serif;
  letter-spacing: .13em;
  text-align: center;
  white-space: nowrap;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .felt-main { font-size: 16px; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .felt-secondary { font-size: 10px; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .table-printing { margin-top: .55cqh; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .felt-main { font-size: 13px; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .premium-table-seal { top: 70px; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .player-chip-bank {
  width: 8.4cqw;
  min-width: 0;
  transform: translate(-50%,-50%);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .player-rack-unit { height: clamp(13px, 2.65cqh, 28px); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-player-rack { height: 100%; overflow: hidden; border-radius: 999px; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-player-rack::before { inset: 0; border-radius: 999px; }
.vip-chip-fill {
  position: absolute;
  inset: 12% auto 12% 50%;
  width: var(--vip-rack-fill);
  max-width: 96%;
  transform: translateX(-50%);
  display: flex;
  border-radius: 999px;
  overflow: hidden;
}
.vip-chip-edges {
  display: block;
  min-width: 0;
  flex-basis: 0;
  background:
    linear-gradient(180deg, #110904c9, #fff4 25%, transparent 52%, #150803bb 93%),
    repeating-linear-gradient(90deg, #1a1008b0 0 9%, transparent 9% 92%, #fff3 92% 100%) 0 0 / clamp(3px,.42cqw,8px) 100%,
    linear-gradient(180deg, var(--chip-color) 0 24%, #e8d4ac 24% 33%, var(--chip-color) 33% 68%, #e8d4ac 68% 77%, var(--chip-color) 77%);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .player-rack-unit .rack-balance {
  top: calc(100% + .45cqh);
  font-size: clamp(8px, 1.25cqh, 13px) !important;
  line-height: 1.1;
  color: #ffe3a3;
  padding: .13em .26em;
  border-radius: .3em;
  background: #100b078c;
}
.stage.premium-table:is([data-salon='vip'],.salon-template).has-uniform-racks .player-betting-box {
  width: 10.4%;
  height: 6.5%;
  transform: translate(-50%,-50%) rotate(var(--box-angle));
}
.stage.premium-table:is([data-salon='vip'],.salon-template).has-uniform-racks .player-betting-box::after {
  display: block;
  inset: 0;
  border: 0;
  border-radius: 0;
  background: center / 100% 100% no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 52' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='gold' x2='0' y2='1'%3E%3Cstop stop-color='%23fff0b9'/%3E%3Cstop offset='1' stop-color='%23aa6e31'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M12 2H88Q92 2 93 6L98 45Q99 50 94 50H6Q1 50 2 45L7 6Q8 2 12 2Z' fill='none' stroke='%23613413' stroke-width='3'/%3E%3Cpath d='M12 2H88Q92 2 93 6L98 45Q99 50 94 50H6Q1 50 2 45L7 6Q8 2 12 2Z' fill='none' stroke='url(%23gold)' stroke-width='1.2'/%3E%3C/svg%3E");
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .station-stake {
  left: 50%;
  top: 50%;
  width: max-content;
  max-width: 78%;
  height: 54%;
  min-width: 0;
  align-items: center;
  gap: 0;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .stake-pile {
  width: min(2.3cqw,4.7cqh);
  height: 100%;
  flex: 0 1 auto;
  min-width: 0;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .stake-pile + .stake-pile { margin-left: -.38cqw; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .station-chip {
  width: 100% !important;
  height: 100% !important;
  top: calc(var(--rack-level) * -.22cqh) !important;
  left: calc(var(--rack-level) * .12cqw) !important;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .stake-count { font-size: clamp(6px,.9cqh,10px); top: 82%; z-index: 1; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card {
  --card-width: clamp(24px, 5.4cqh, 68px);
  --card-height: calc(var(--card-width) * 1.45);
}
.avatar.photo:has(img) { background-image: none; overflow: hidden; }
.avatar.photo > img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 38%; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat[data-seat] {
  width: 11cqw !important;
  min-width: 0 !important;
  height: var(--vip-seat-height);
  left: var(--profile-x) !important;
  top: min(var(--profile-y),calc(100% - var(--vip-seat-height) - 1.2cqh)) !important;
  transform: translateX(-50%) !important;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat .seat-profile { height: 100%; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat[data-seat] .seat-profile > .avatar {
  width: var(--vip-avatar);
  height: var(--vip-avatar);
  top: 0;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat .player-level { top: var(--vip-avatar); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat .seat-profile .seat-social-actions { top: calc(var(--vip-avatar) + 16px); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat .seat-social-button { width: 48px; min-height: 36px; height: 36px; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat .seat-username {
  left: 50%;
  top: auto;
  bottom: 0;
  transform: translateX(-50%);
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) { --vip-seat-height: calc(var(--vip-avatar) + 17px); }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .seat .seat-social-actions,
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .seat .player-level { display: none; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .seat .phone-player-button {
  width: 100%;
  height: 100%;
  min-width: 48px;
  min-height: 48px;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-status {
  left: 50% !important;
  right: auto !important;
  top: calc(100% + 2px) !important;
  transform: translateX(-50%);
  width: max-content;
  max-width: 64%;
  padding: 1px 1em;
  line-height: 17px;
  border: 1px solid #a5824c67;
  border-radius: 999px;
  background: #20170ee0;
  color: #ffe8b6;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .practice-tag {
  display: block;
  top: calc(100% + 32px) !important;
  left: max(8px, 1.4cqw);
  max-width: 20%;
  font-size: clamp(8px, .65cqw, 12px);
  line-height: 1.18;
  color: #e6d4b1;
}
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .practice-tag { top: calc(100% + 2px) !important; max-width: 23%; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-bet-chip {
  --vip-chip-color: #231b20;
  border: 2px solid #d6ac63;
  background: radial-gradient(circle at 36% 21%, #fff3, #0000 40%, #120902a8 94%), var(--vip-chip-color);
  box-shadow: inset 0 0 0 2px #301d16,inset 0 0 0 3px #c99f58,0 3px 0 #38220f,0 5px 7px #0009;
  color: #f7d894;
  align-content: center;
  gap: 0;
  line-height: 1;
  font-family: Georgia, serif;
}
.vip-bet-chip > span { font-size: .9em; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-bet-chip.selected { outline: 2px solid #ffdda0; outline-offset: 3px; filter: drop-shadow(0 0 5px #e5b35b90); }

/* Royal VIP: ring, hand and result share the seat's measured centre. */
.stage.premium-table:is([data-salon='vip'],.salon-template) {
  --vip-avatar: clamp(43px, 6.9cqh, 73px);
  --vip-wager-width: min(2.1cqw, 4.2cqh);
  --vip-wager-height: calc(var(--vip-wager-width) * .67);
}
.stage.premium-table:is([data-salon='vip'],.salon-template).has-uniform-racks .player-betting-box {
  width: calc(var(--vip-wager-width) * 1.8);
  height: calc(var(--vip-wager-height) * 1.8);
}
.stage.premium-table:is([data-salon='vip'],.salon-template).has-uniform-racks .player-betting-box::after {
  background: none;
  border: clamp(1px,.15cqh,2px) solid #cfa760;
  border-radius: 50%;
  box-shadow: inset 0 0 .25cqh #0007, 0 .15cqh .3cqh #0009;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-bet-turn::after {
  border-color: #ffe4a0 !important;
  box-shadow: 0 0 1cqh #dcb56190, inset 0 0 .75cqh #dcb56166 !important;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .station-stake { height: var(--vip-wager-height); max-width: 82%; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .stake-pile { width: var(--vip-wager-width); }
.stage.premium-table:is([data-salon='vip'],.salon-template) .stake-pile + .stake-pile { margin-left: -.7cqw; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card {
  --card-width: min(3.6cqw, 5.1cqh, calc(var(--vip-card-lane,11cqw) / var(--phone-card-count,2)));
  transform: perspective(13cqh) rotateX(57deg) rotateZ(calc((var(--i) - 1) * 6deg)) !important;
  box-shadow: 0 .35cqh .55cqh #000a;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card + .playing-card { margin-left: -.85cqw; }
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.hand-group,.opponent-hand-group) {
  min-width: 0 !important;
  background: transparent;
  border-color: transparent;
  box-shadow: none;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands:has(.hand-group:nth-child(2)),.opponent-split) { --vip-card-lane: 5.5cqw; }
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .total-pill { display: none; }
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.vip-seat-total,.dealer-hand .total-pill) {
  position: absolute;
  z-index: 4;
  white-space: nowrap;
  width: max-content;
  max-width: none;
  padding: .23em .54em;
  font: 700 clamp(8px,1.25cqh,13px)/1.1 Arial,sans-serif;
  color: #f2dfb4;
  background: #15110df2;
  border: 1px solid #b08b4c;
  border-radius: .55em;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total { transform: translateX(-50%); text-align: center; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total {
  font-size: 8px;
  padding-inline: .36em;
  margin-top: -.5cqh;
}
.phone-landscape .vip-seat-total[data-seat='0'] { margin-left: -.8cqw; }
.phone-landscape .vip-seat-total[data-seat='4'] { margin-left: .8cqw; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  left: 82%;
  top: 50%;
  transform: translateY(-50%);
}
.stage.premium-table:is([data-salon='vip'],.salon-template) :is(.vip-seat-total,.dealer-hand .total-pill).is-bust {
  color: #edaba3;
  border-color: #995751;
}
.vip-seat-result { margin-left: .6em; color: #cbc2b5; }
.vip-seat-result[data-tone='lose'],.vip-seat-result[data-tone='bust'] { color: #e6a198; }
.vip-seat-result[data-tone='win'] { color: #e9bb68; }
.vip-seat-result[data-tone='blackjack'] { color: #ffe49d; text-shadow: 0 0 .55em #d4a84e; }
.vip-seat-total[hidden] { display: none !important; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result {
  top: calc(100% + 2px) !important;
  min-height: 19px;
  height: 19px;
  gap: .7em;
  font: 700 clamp(12px,1.5cqh,16px)/1.1 Arial,sans-serif;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result :is(h2,p) { font: inherit; letter-spacing: .02em; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .round-result.result-loss p { color: #e4a39b; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .round-result.result-win p { color: #f2cf7b; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .result-actions .secondary,
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat-social-button {
  background: linear-gradient(#201b15,#0d0b09);
  color: #efd29b;
  border-color: #a88852;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .topbar :is(.icon-button,.game-language) { border-width: 1px; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat[data-seat] {
  top: min(var(--profile-y),calc(100% - var(--vip-seat-height) - 16px - var(--vip-avatar-rise,0px))) !important;
}
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat:is([data-seat='0'],[data-seat='4']) { --vip-avatar-rise: 1.8cqh; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .seat:is([data-seat='1'],[data-seat='3']) { --vip-avatar-rise: .9cqh; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .seat[data-seat] { width: 14cqw !important; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-table-shortcuts { gap: 5px; }
.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-table-shortcuts .icon-button {
  width: 44px; min-width: 44px; height: 44px; min-height: 44px;
}

.stage.premium-table:is([data-salon='vip'],.salon-template) .screen-art { filter: none; }
.stage.premium-table:is([data-salon='vip'],.salon-template) .vip-gold-grade {
  filter: saturate(.79) hue-rotate(12deg) brightness(1.045);
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1536 1024' preserveAspectRatio='none'%3E%3Cfilter id='fade'%3E%3CfeGaussianBlur stdDeviation='6'/%3E%3C/filter%3E%3Cg fill='white' filter='url(%23fade)'%3E%3Cpath d='M79 505Q82 413 225 365H1311Q1455 407 1458 505Q1450 606 1360 660L1353 823Q1290 955 769 971Q242 955 184 823L175 660Q85 606 79 505Z'/%3E%3Cpath d='M567 0H966V365H567ZM980 15H1225V204H980ZM1264 0H1385V372H1264Z'/%3E%3C/g%3E%3C/svg%3E");
  mask-size: 100% 100%;
  mask-repeat: no-repeat;
}
.vip-gold-grade[hidden] { display: none; }

/* Explicit buy-in controls, independent of table scaling. */
.buyin-choices{display:flex;flex-wrap:wrap;gap:.5rem}.buyin-choices button{flex:1;min-width:5rem}#dialog-body input[type=range]{width:100%;accent-color:#e8c66e}#dialog-body input[type=number]{width:100%;box-sizing:border-box} .topbar .balance small{font-size:clamp(9px,.7vw,14px)}
body .readable-chip{background:radial-gradient(ellipse at 35% 20%,#ffffff33,transparent 65%),var(--chip-color);border:2px solid #d8b65e;border-radius:50%;color:#fffbea;box-shadow:inset 0 0 0 1px #fff7,0 2px 0 #735424;display:grid;place-items:center;position:relative}
.chip-readable-value{font:900 .95em/1 Arial,sans-serif;color:#fffbea!important;text-shadow:1px 1px 1px #17110b,-1px -1px 1px #17110b;z-index:2}
.vip-stake-sum{position:absolute;left:105%;top:50%;transform:translateY(-50%);font:700 clamp(8px,1cqh,12px) Arial;color:#f6d98e}
.stage:is([data-salon='vip'],.salon-template) .station-chip .chip-readable-value{font-size:.9em}
body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands,.dealer-hand) .playing-card{--card-width:min(4.86cqw,6.89cqh,calc(var(--vip-card-lane,13cqw) / var(--phone-card-count,2)));--card-height:calc(var(--card-width)*1.45);background:#fffbed;transform:perspective(18cqh) rotateX(45deg) rotateZ(calc((var(--i) - .5)*3deg))!important}
body .playing-card .card-corner{font-family:Arial,sans-serif;font-size:calc(var(--card-height)*.3);line-height:.85;font-weight:900;top:5%;left:6%;letter-spacing:-.06em}
body .playing-card .card-corner.reverse{top:auto;left:auto;right:6%;bottom:5%}
body .playing-card.red{color:#e00022}body .playing-card.black{color:#000}
.jumbo-symbol{font-size:calc(var(--card-height)*.45)!important;display:grid;place-items:center}
@media(max-width:1000px){
 body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands,.dealer-hand) .playing-card{--card-width:min(4.5cqw,6.375cqh,calc(var(--vip-card-lane,13cqw) / var(--phone-card-count,2)))}
}
/* Separate table zones: cards, stakes, totals, portraits. */
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo{top:43.7%;font-size:clamp(12px,2.5cqh,27px);transform:translateX(-50%) scaleY(.72);opacity:.72;letter-spacing:.08em}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand{top:40%!important;height:3%;left:38%;width:24%}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card{transform:perspective(18cqh) rotateX(64deg)!important;transform-origin:center top}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill{left:50%;top:100%;transform:translateX(-50%);font-size:clamp(8px,1.05cqh,12px);padding:.12em .4em}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result{top:calc(100% + 4px)!important;height:24px;font:700 20px/1 Arial,sans-serif;z-index:12}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result.result-loss p{color:#e4a39b!important}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result.result-win p{color:#f2cf7b!important}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result :is(h2,p){margin:0}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-status{top:calc(100% + 8px)!important;bottom:auto;max-width:60%;min-height:18px;line-height:18px}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .bet-controls,body .stage.premium-table:is([data-salon='vip'],.salon-template) .result-actions{bottom:auto!important;top:calc(100% + 30px)!important}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance{display:grid;grid-template-columns:1fr auto;gap:.15em .6em}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance>span{grid-column:1;grid-row:1}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance>small{display:block!important;grid-column:1;grid-row:2;text-align:left;font-size:clamp(8px,1cqh,13px)}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance>button{grid-column:2;grid-row:1/3}
@media(max-width:1000px){
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo{font-size:clamp(9px,2.5cqh,17px)}
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .round-result{font-size:20px;max-width:96%}
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-status{font-size:10px;max-width:68%}
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance{padding:.2em .45em}
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total{font-size:8px;white-space:nowrap;margin-left:0}
}
@media(max-width:1000px){body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total{font-size:8px;line-height:1.05;padding:0 3px;height:auto;min-height:0} .vip-seat-result{margin-left:.3em}}
/* Perspective must not magnify the near edge over the dealer tray. */
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand{top:41.5%!important;align-items:flex-start;}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card{transform:perspective(150cqh) rotateX(-65deg)!important;transform-origin:center top}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill{top:4.2cqh}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo{top:47%;font-size:clamp(12px,3.1cqh,32px);line-height:1;transform:translateX(-50%) scaleY(.72)}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-printing{margin-top:2cqh}
body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card{transform:perspective(150cqh) rotateX(-45deg) rotateZ(calc((var(--i) - .5)*3deg))!important}
@media(max-width:1000px){
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo{top:45%;font-size:12px}
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-printing{margin-top:.55cqh}
 body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill{top:4.4cqh;font-size:8px;line-height:1;padding:0 3px}
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-printing{margin-top:0}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo{top:46.5%;font-size:clamp(10px,2.2cqh,24px)}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill{font-size:clamp(8px,1cqh,11px);padding:0 3px;line-height:1}
@media(max-width:1000px){body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo{top:45%;font-size:10px}body .stage.premium-table:is([data-salon='vip'],.salon-template) .table-printing{margin-top:.55cqh}}
@media(min-width:1001px){body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card{transform:perspective(150cqh) rotateX(-55deg) rotateZ(calc((var(--i) - .5)*3deg))!important}}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .station-chip.readable-chip{font-size:calc(var(--vip-wager-width)*.4)}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-bet-chip strong{font-family:Arial,sans-serif;font-weight:900;font-size:1em;color:#fffbea;text-shadow:1px 1px 1px #17110b,-1px -1px 1px #17110b}
@media(max-width:1000px){
 body .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card{transform:perspective(150cqh) rotateX(-55deg) rotateZ(calc((var(--i) - .5)*3deg))!important}
}
@media(max-width:1000px){body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total{font:700 8px/1.05 Arial,sans-serif!important;padding:0 3px!important}}
@media(max-width:700px){body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template){--vip-avatar:40px;--vip-seat-height:55px}body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .seat-name{font-size:10px;line-height:12px}}
/* Royal VIP, round four. Keep the dialog surface independent of the backdrop. */
#dialog[data-kind='low-balance'][open] {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  background: linear-gradient(140deg,#342c21,#1c1710);
  color: #fff3d1;
}
#dialog[data-kind='low-balance']::backdrop { background: #090704c4; }
#dialog[data-kind='low-balance'] p { color: #ffe3a4; font-weight: 700; }
#dialog[data-kind='buy-in'] .buyin-limits { display: flex; flex-wrap: wrap; gap: 4px 16px; }
#dialog[data-kind='buy-in'] .buyin-limits p { margin: 0; }
#dialog[data-kind='buy-in'] .buyin-choices {
  display: grid;
  grid-template-columns: repeat(5,minmax(0,1fr));
  gap: clamp(3px,1vw,8px);
}
#dialog[data-kind='buy-in'] .buyin-choices button {
  min-width: 0;
  margin: 0;
  padding-inline: 3px;
  white-space: nowrap;
  font-size: clamp(10px,1.65vw,14px);
}
#dialog[data-kind='buy-in'] .buyin-amount { font-variant-numeric: tabular-nums; }
#dialog[data-kind='buy-in'] .buyin-actions { display: flex; gap: 6px; }
#dialog[data-kind='buy-in'] .buyin-actions button { margin-right: 0; }
@media (max-height: 450px) {
  #dialog[data-kind='buy-in'] .dialog-inner { padding: 16px; }
  #dialog[data-kind='buy-in'] h2 { margin-bottom: 10px; font-size: clamp(18px,3.2vw,25px); }
  #dialog[data-kind='buy-in'] p { margin-block: 5px; }
  #dialog[data-kind='buy-in'] input:not([type=file]) { margin-block: 4px; }
}

.playing-card:not(.card-back) {
  background: #fff9e8;
  border: 1px solid #b9b6aa;
  border-radius: 7%;
  box-shadow: 0 .16em .36em #0005;
}
body .playing-card .card-corner { font-size: calc(var(--card-height) * .25); line-height: .88; }
.card-corner b,.card-corner span { display: block; }
.card-corner span { font-size: .73em; line-height: .94; }
.card-center.jumbo-symbol { inset: 24% 26%; }
.card-center.has-table-asset { color: transparent; }
.vector-card-art,.card-back-art,.table-asset,.rack-chip-art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}
.card-back-art { object-fit: fill; border-radius: inherit; }
.playing-card.card-back .back-pattern {
  background: radial-gradient(ellipse,#1a2741,#050a15);
  border-color: #cba452;
}
.playing-card.card-back .back-pattern b { background: transparent; font-size: calc(var(--card-width) * .4); }
.playing-card.card-back.has-table-asset .back-pattern { visibility: hidden; }
body .stage .chip.has-table-asset { background: transparent !important; border-color: transparent !important; box-shadow: none !important; }
.chip.has-table-asset > :is(.chip-readable-value,strong,span:not(.stake-count)) { visibility: hidden; }
.chip.has-table-asset .table-asset { object-fit: fill; }
.vip-chip-edges.has-table-asset .rack-chip-art { object-fit: fill; }

body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo {
  top: 40.8%;
  transform: translateX(-50%) scaleY(.69);
  transform-origin: center top;
  font-size: clamp(20px,4.4cqh,48px);
  opacity: .93;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand {
  top: 38.9% !important;
  left: 61.5%;
  width: 15%;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  right: auto;
  top: 5.1cqh;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
  --card-width: min(3.3cqw,5.5cqh,calc(14cqw / var(--dealer-card-count,2)));
  transform: perspective(150cqh) rotateX(-58deg) !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total { z-index: 4; }
.vip-mobile-seal { display: none; }
@media (max-width:1000px) {
}
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar::before {
    background: linear-gradient(90deg,#110d0bea 32%,transparent 43% 57%,#110d0bea 68%);
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .brand > span { font-size: 12px; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance { font-size: 11px; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar :is(.icon-button,.game-language) {
    width: 38px; min-width: 38px; height: 38px; min-height: 38px;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .premium-table-seal { display: none; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-mobile-seal {
    position: absolute; top: 51px; left: 8px; z-index: 4; display: grid; place-items: center;
    width: 42px; height: 42px; padding: 0; border: 1px solid #bda060;
    border-radius: 50%; background: #201a12; color: #ffe3a1; font-size: 22px;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card {
    --card-width: min(5.3cqw,7.1cqh,calc(var(--vip-card-lane,13cqw) / var(--phone-card-count,2)));
    transform: perspective(150cqh) rotateX(-49deg) rotateZ(calc((var(--i) - .5)*3deg)) !important;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) {
    --vip-wager-width: min(4cqw,6cqh);
  }
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  left: calc(50% + 3.5cqw);
  top: 4.55cqh;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box {
  margin-top: clamp(4px,1.25cqh,12px);
}
@media (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) {
    --vip-wager-width: min(2.55cqw,5cqh);
    --vip-wager-height: calc(var(--vip-wager-width) * .53);
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo {
    top: 40.65%;
    transform: translateX(-50%) scale(.74,.61);
    font-size: max(20px,4.4cqh);
    line-height: .9;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card {
    transform: perspective(150cqh) rotateX(-55deg) rotateZ(calc((var(--i) - .5)*3deg)) !important;
  }
}
@media (max-width:1000px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box { margin-top: 11px; }
}
@media (min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) { --vip-wager-height: calc(var(--vip-wager-width) * .49); }
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box { margin-top: 21px; }
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  left: calc(50% + 1.7cqw);
  top: 4.3cqh;
}
@media (min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { top: 41.15%; }
}
@media (min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { transform: translateX(-50%) scaleY(.62); }
}

/* Royal VIP round 5: one diameter for both table chip presentations. */
body .stage.premium-table:is([data-salon='vip'],.salon-template) {
  --vip-chip-diameter: min(2.4cqw,4.85cqh);
  --vip-wager-width: var(--vip-chip-diameter);
  --vip-wager-height: calc(var(--vip-chip-diameter) * .59);
  --vip-ring-size: 1.43;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box {
  width: calc(var(--vip-wager-width) * var(--vip-ring-size));
  height: calc(var(--vip-wager-height) * var(--vip-ring-size));
}
body .stage.premium-table:is([data-salon='vip'],.salon-template).has-uniform-racks .player-betting-box {
  width: calc(var(--vip-wager-width) * var(--vip-ring-size));
  height: calc(var(--vip-wager-height) * var(--vip-ring-size));
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .stake-pile {
  width: var(--vip-chip-diameter);
  flex: 0 0 var(--vip-chip-diameter);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .station-stake {
  max-width: none;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .station-chip {
  width: var(--vip-chip-diameter) !important;
  height: var(--vip-wager-height) !important;
  font-size: max(9px,calc(var(--vip-chip-diameter) * .30)) !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .chip-readable-value {
  color: var(--chip-ink,#fffbea) !important;
  white-space: nowrap;
  max-width: 92%;
  letter-spacing: -.04em;
  text-shadow: none;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .readable-chip {
  background-color: var(--chip-color);
  border-color: var(--chip-trim,#d8b65e);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-bet-chip.readable-chip {
  background: radial-gradient(ellipse at 35% 20%,#ffffff33,transparent 65%),var(--chip-color);
}
body .stage .chip.has-table-asset {
  background: transparent !important;
  border-color: transparent !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand {
  top: 41.3% !important;
  left: 38%;
  width: 24%;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
  transform: perspective(150cqh) rotateX(-64deg) !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  left: 50%;
  top: 4cqh;
  z-index: 5;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { top: 46%; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules {
  top: 50.4% !important;
  width: min(49%,900px);
  height: auto;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  color: #e7cd89;
  line-height: 1;
  white-space: nowrap;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-main { font: 700 clamp(11px,1.42cqw,26px)/1 Georgia,serif; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-secondary { font: 700 clamp(9px,.86cqw,16px)/1 Arial,sans-serif; }
@media (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) {
    --vip-chip-diameter: min(2.62cqw,5.7cqh);
    --vip-wager-width: var(--vip-chip-diameter);
    --vip-wager-height: calc(var(--vip-chip-diameter) * .66);
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { top: 47.4%; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules {
    top: 52.5% !important;
    width: 54%;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
    transform: perspective(150cqh) rotateX(-67deg) !important;
  }
}
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { font-size: 18px; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total,
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
    font-size: 9px !important;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .brand > small,
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .topbar .balance > small,
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .practice-tag {
    font-size: 9px;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) :is(.my-hands,.opponent-hands) .playing-card {
    --card-width: min(5.7cqw,7.6cqh,calc(var(--vip-card-lane,13cqw) / var(--phone-card-count,2)));
  }
}

/* Separate the dealer, felt printing and the five player hands. */
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand { top: 40.75% !important; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { top: 3.8cqh; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { top: 45.4%; font-size: clamp(20px,3.95cqh,43px); }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules {
  top: 48.75% !important;
  width: 46%;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  justify-items: center;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .chip-readable-value {
  max-width: none;
  transform: scaleX(.86);
  text-align: center;
}
@media (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand { top: 40% !important; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { top: 3.2cqh; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo {
    top: 46.2%;
    font-size: clamp(15px,4.3cqh,21px);
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules { top: 49.6% !important; width: 53%; gap: 5px; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box:is([data-seat="1"],[data-seat="2"],[data-seat="3"]) {
    margin-top: 5.8cqh;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .chip-readable-value { transform: scaleX(.72); }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .stake-count { font-size: 9px; }
}
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-main { font-size: 10px; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-secondary { font-size: 9px; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .playing-card .card-corner span { font-size: max(9px,.73em); }
}

/* Keep the stroke on the outer bounds used to calculate the chip-to-ring ratio. */
body .stage.premium-table:is([data-salon='vip'],.salon-template).has-uniform-racks .player-betting-box::after { inset: 0; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules :is(.felt-main,.felt-secondary) { letter-spacing: .045em; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { top: 3.6cqh; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { top: 45.8%; }
@media (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { top: 3.2cqh; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { top: 46.85%; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules { top: 50.55% !important; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box:is([data-seat="1"],[data-seat="2"],[data-seat="3"]) {
    margin-top: 7.15cqh;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total { font-size: 9px !important; }
}
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
    --card-width: min(3.1cqw,6.2cqh,calc(17cqw / var(--dealer-card-count,2)));
    transform: perspective(150cqh) rotateX(-70deg) !important;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { top: 3.35cqh; }
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-secondary {
  font-family: Arial, sans-serif;
}
@media (min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box:is([data-seat="1"],[data-seat="3"]) { margin-top: 2.7cqh; }
}
@media (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box:is([data-seat="1"],[data-seat="3"]) { margin-top: 8.4cqh; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-total { line-height: 1 !important; }
}
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules { top: 50.35% !important; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-secondary { letter-spacing: 0; }
}

/* Keep compact result badges clear of the felt copy and their wager rings. */
@media (min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box:is([data-seat="1"],[data-seat="3"]) { margin-top: 3.25cqh; }
}
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules { width: 43%; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-level-rules .felt-secondary { transform: scaleX(.83); }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box[data-seat="1"] { margin-top: 9cqh; }
}
@media (min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .player-betting-box:is([data-seat="1"],[data-seat="3"]) { margin-top: 3.6cqh; }
}
@media (max-width:700px) {
}

body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .playing-card.card-back .back-pattern b { font-size: max(9px,calc(var(--card-width) * .4)); }

/* Royal VIP: the approved photo projects onto fixed, mirrored felt stations. */
.vip-room-projection { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.vip-room-projection img { position:absolute; top:0; max-width:none; }
.vip-baked-rack-anchor { opacity:0; pointer-events:none; }
.vip-room-projection[hidden] { display:none; }
.photo-dealer {
 position:absolute; z-index:1; pointer-events:none; aspect-ratio:4/5;
 transform:translate(-50%,-100%);
}
.photo-dealer[hidden] { display:none; }
.photo-dealer::before {
 content:''; position:absolute; inset:auto 0 0; height:10%;
 background:radial-gradient(ellipse at 50% 100%,#080603b5,transparent 70%);
}
.photo-dealer-figure { position:absolute; inset:0; transform-origin:50% 100%; }
.photo-dealer-figure img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; }
.photo-dealer-figure img:not([src]),.photo-dealer:not([data-blink]) .photo-dealer-closed,
.photo-dealer[data-blink] .photo-dealer-open { visibility:hidden; }
.photo-dealer-animated .photo-dealer-figure { animation:dealer-breath 4s ease-in-out infinite; }
@keyframes dealer-breath { 0%,100% { transform:scale(1); } 50% { transform:scale(1.008); } }
@media(prefers-reduced-motion:reduce){ .photo-dealer-animated .photo-dealer-figure { animation:none; } }
.live-chip-rack {
 z-index:2; display:flex; align-items:stretch; gap:1%;
 padding:calc(var(--roll-diameter)*.065); border:1px solid #e8bf74; border-radius:3%/15%;
 background:linear-gradient(160deg,#f0cc82,#9c6b32 21%,#4b2e14 42%,#9d682e 86%,#e4b870);
 box-shadow:inset 0 1px 2px #fff8,inset 0 -2px 3px #160e09,0 2px 5px #0008;
}
.dealer-roll {
 position:relative; flex:1 1 0; min-width:0; overflow:hidden; border-radius:10%/11%;
 background:#171009; box-shadow:inset 0 1px 4px #000;
 border-inline:1px solid #b28746;
}
.dealer-roll-body {
 position:absolute; top:5%; bottom:21%; left:50%; width:min(var(--roll-diameter), 96%); translate:-50% 0;
 clip-path:polygon(13% 0,87% 0,95% 12%,100% 95%,84% 100%,16% 100%,0 95%,5% 12%);
 background:
  linear-gradient(90deg,#0009,transparent 28%,#fff4 47%,transparent 68%,#0009),
  repeating-linear-gradient(180deg,transparent 0 13%,#130d09d9 14% 16%),
  linear-gradient(90deg,var(--roll-color) 15%,var(--roll-insert) 15% 24%,var(--roll-color) 24% 71%,var(--roll-insert) 71% 80%,var(--roll-color) 80%);
}
.dealer-roll-face {
 position:absolute; left:50%; bottom:1%; width:var(--roll-diameter); aspect-ratio:1;
 max-width:none; transform:translateX(-50%) scale(var(--roll-face-scale),.76); transform-origin:50% 100%;
 filter:drop-shadow(0 1px 1px #0009);
}
.stage:is([data-salon='vip'],.salon-template) .vip-felt-band {
  position:absolute; inset:0; width:100%; height:100%; z-index:1; pointer-events:none;
}
.vip-felt-outline { fill:#100e0e; stroke:#c6a357; stroke-width:1.25; }
.vip-rule { fill:#edce82; font-family:Arial,sans-serif; font-weight:700; }
.vip-rule-main { font-family:Georgia,serif; }

.stage:is([data-salon='vip'],.salon-template) .vip-seat-zone {
  position:absolute; z-index:3; display:grid; grid-template-rows:var(--player-card-h) var(--seat-label-h) 1fr;
  gap:1px; min-width:0; min-height:0; overflow:clip; isolation:isolate;
  --player-card-h:9cqh; --seat-label-h:17px;
  --zone-wager:2.93cqw; --zone-step:1.1px; --zone-chip-gap:2px;
}
.stage.vip-debug-zones:is([data-salon='vip'],.salon-template) .vip-seat-zone { outline:1px solid #ff554c; outline-offset:-1px; }
.vip-zone-cards,.vip-zone-total,.vip-zone-station { position:relative; min-width:0; min-height:0; }
.vip-zone-cards { display:flex; align-items:stretch; }
.vip-zone-total { display:flex; justify-content:center; align-items:center; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-cards :is(.my-hands,.opponent-hands) {
  position:absolute; inset:0 !important; width:100% !important; height:100% !important;
  display:flex; align-items:center; justify-content:center; gap:3%; padding:0; margin:0; transform:none !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-cards :is(.hand-group,.opponent-hand-group) {
  position:relative; display:flex; flex:0 1 auto; justify-content:center; align-items:center; gap:var(--zone-chip-gap);
  height:100%; min-height:0; min-width:0 !important; max-width:none; padding:0; margin:0; border:0; box-shadow:none;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-cards .playing-card {
  --card-height:var(--player-card-h);
  --card-width:min(calc(var(--card-height)*.64),calc((var(--zone-span) - 3cqw) / var(--zone-card-count,2)));
  margin:0 !important; transform:none !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-cards :has(> :nth-child(2 of :is(.hand-group,.opponent-hand-group))) .playing-card {
  --card-width:min(calc(var(--card-height)*.64),calc((var(--zone-span) - 3cqw) / 2 / var(--zone-card-count,2)));
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-total .vip-seat-total {
  position:relative; inset:auto !important; margin:0 !important; transform:none;
  display:block; min-width:0; max-width:100%; overflow:hidden; text-overflow:ellipsis;
  font-size:clamp(9px,1.2cqh,13px); line-height:1; padding:.1em .38em;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-zone-total .vip-seat-total[hidden] { display:none; }

.vip-zone-station {
  display:grid; align-content:end; align-items:end; column-gap:var(--zone-chip-gap);
  grid-template-columns:calc(var(--zone-wager)*var(--wager-faces,1) + var(--zone-chip-gap)*(var(--wager-faces,1) - 1) + 4px) minmax(0,1fr);
  grid-template-rows:calc(var(--zone-wager)*.61 + 3px) min-content;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .player-betting-box {
  position:relative; grid-column:1; grid-row:1; justify-self:stretch;
  inset:auto !important; margin:0 !important; transform:none !important;
  width:100%; height:100%; border-radius:50%;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .player-betting-box::after { inset:0; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .station-stake {
  position:absolute; display:flex; justify-content:center; align-items:center;
  top:50%; left:50%; transform:translate(-50%,-50%); width:max-content; max-width:none; height:auto; gap:var(--zone-chip-gap);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .station-chip {
  position:relative !important; inset:auto !important; width:var(--zone-wager) !important;
  height:calc(var(--zone-wager)*.56) !important; border-width:0 !important;
  flex:none; --vip-face-diameter:var(--zone-wager);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-wager-stack {
  display:grid; grid-template-columns:var(--zone-wager); padding-top:3px; padding-right:3px;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-wager-stack .station-chip {
  grid-area:1/1; transform:translate(calc(var(--wager-level)*.8px),calc(var(--wager-level)*-1.4px)) !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-stake-sum {
  position:relative; grid-column:1; grid-row:2; justify-self:center; inset:auto;
  transform:none; margin:0; font:700 max(9px,.95cqh)/1 Arial,sans-serif; white-space:nowrap; color:#ffe1a2;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .rack-balance {
  grid-column:2; grid-row:2; justify-self:center; align-self:end;
  position:relative; inset:auto; transform:none !important; max-width:100%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:#f4d487; background:#100d0ba0; border-radius:.25em;
  font:700 max(9px,1.05cqh)/1 Arial,sans-serif !important; padding:.12em .22em;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-three-faces .rack-balance { grid-column:1/-1; }
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .insurance-stake {
  inset:auto !important; bottom:0 !important; left:0 !important; width:35%;
  transform:none !important; text-align:center; font-size:max(9px,.95cqh); z-index:1;
}
.vip-seat-zone .insurance-stake .chip { display:none; }
.vip-seat-zone .insurance-stake small { font-size:inherit; white-space:nowrap; }

body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-value-chip {
  display:grid; place-items:center; padding:0; border-radius:50%; isolation:isolate;
  background:none; box-shadow:0 1px 0 #6e4b26, 0 2px 3px #0008;
}
.vip-chip-rim,.vip-chip-inlay {
  position:absolute; inset:0; border-radius:50%; pointer-events:none;
}
.vip-chip-rim { background-repeat:no-repeat; background-color:var(--vip-clay); box-shadow:inset 0 0 0 1px #d7ad69; }
.vip-chip-rim img { width:100%; height:100%; object-fit:fill; scale:1.07; }
.vip-value-chip[data-chip-value='500000'] .vip-chip-rim { filter:hue-rotate(100deg); }
.vip-value-chip[data-chip-value='25000'] .vip-chip-rim { filter:hue-rotate(18deg); }
.vip-chip-inlay {
  inset:11% 10%; background:radial-gradient(ellipse at 35% 18%,#fff4 0%,#0004 95%),var(--vip-clay);
  box-shadow:0 0 0 1px #f4deacb0;
}
.vip-chip-value {
  position:absolute; left:50%; top:50%; color:var(--chip-ink,#fff1d0);
  font:900 calc(var(--vip-face-diameter)*.50)/1 Arial,sans-serif;
  letter-spacing:-.055em; white-space:nowrap; transform:translate(-50%,-50%) scaleX(.75); text-shadow:0 1px 1px #0005;
}

body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand {
  top:35% !important; left:36%; width:28%; height:8.65%; gap:.28cqw; align-items:center;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
  --card-height:8cqh;
  --card-width:min(calc(var(--card-height)*.68),calc(24cqw / var(--dealer-card-count,2)));
  margin:0 !important; transform:none !important;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  left:50%; top:100%; transform:translateX(-50%); padding:0 .44em;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo {
  top:45.2%; font-size:min(1.52cqw,2.7cqh); transform:translateX(-50%) scaleY(.78);
}

@media(max-width:1000px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone {
    --player-card-h:44px; --seat-label-h:10px; --zone-wager:30px;
    --zone-step:.8px; --zone-chip-gap:1px;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-total .vip-seat-total {
    font:700 9px/1 Arial,sans-serif !important; padding:0 1px !important; border:0; letter-spacing:-.035em;
  }
  .vip-zone-total .vip-seat-result { margin-left:0; }
  .vip-zone-total .vip-seat-result::before { content:' · '; color:#e7d3a9; }
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .rack-balance { padding:0; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand { top:41.5% !important; height:1.85%; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
    --card-height:calc(var(--card-width)*1.45);
    --card-width:min(2.7cqw,5.25cqh,calc(21cqw / var(--dealer-card-count,2)));
    transform:scaleY(.23) !important;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
    top:100%; font:700 9px/1 Arial,sans-serif !important; padding:0 2px;
  }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo {
    top:47.05%; font-size:max(9px,min(1.4cqw,3.05cqh)); transform:translateX(-50%) scale(.75,.51);
  }
}
@media(min-width:701px) and (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-felt-logo { display:none; }
}
@media(max-width:700px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone { --player-card-h:34px; --zone-wager:24px; }
}
/* Reserve a small gap above the betting ring without reducing the face size. */
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .player-betting-box {
  height:calc(100% - 1px);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .player-betting-box::after {
  display:block; border:1px solid #a17c3f; border-radius:50%;
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-cards .playing-card { overflow:hidden; }
@media(max-width:1000px) {
  .stage:is([data-salon='vip'],.salon-template) .vip-zone-station { grid-template-rows:calc(var(--zone-wager)*.53 + 1px) min-content; }
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .player-betting-box { height:100%; }
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .station-chip { height:calc(var(--zone-wager)*.48) !important; }
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-wager-stack { padding-top:1.2px; padding-right:2px; }
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-wager-stack .station-chip {
    transform:translate(calc(var(--wager-level)*.65px),calc(var(--wager-level)*-.55px)) !important;
  }
}
.vip-room-projection { width:100%; height:100%; }
@media(max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill { border:0; }
}
@media(min-width:701px) and (max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand { height:4.9%; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card {
    --card-height:4.75cqh; --card-width:calc(var(--card-height)*.68); transform:none !important;
  }
}
@media(max-width:700px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand { height:2.5%; }
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card { transform:scaleY(.32) !important; }
}

/* Fixed caption track keeps a large stack or a long balance from stealing card space. */
.stage:is([data-salon='vip'],.salon-template) .vip-zone-station {
  --bank-caption-h:13px; --bet-ring-h:calc(var(--zone-wager)*.59 + 2px);
  grid-template-rows:minmax(0,1fr) var(--bank-caption-h);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .player-betting-box {
  height:min(100%,var(--bet-ring-h));
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .rack-balance { padding-block:0; }
@media(max-width:1000px) {
  .stage:is([data-salon='vip'],.salon-template) .vip-zone-station {
    --bank-caption-h:9px; --bet-ring-h:calc(var(--zone-wager)*.53 + 1px);
  }
}

.vip-wager-stack .station-chip:not(:last-child) .vip-chip-value { visibility:hidden; }

/* Card artwork already contains its own print and border. */
body .playing-card.premium-card,
body .playing-card.premium-card.card-back {
  padding:0 !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  overflow:visible;
}
.premium-card-art {
  display:block; position:absolute; inset:0; width:100%; height:100%;
  object-fit:fill; border-radius:inherit; pointer-events:none;
  filter:drop-shadow(0 1px 0 #bba787) drop-shadow(0 1px 0 #837358) drop-shadow(0 3px 3px #0007);
}
.playing-card.premium-card::after {
  content:''; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:linear-gradient(142deg,#fff3,transparent 37%,transparent 71%,#fff1);
}
body .stage.premium-table:is([data-salon='vip'],.salon-template) .vip-seat-zone .vip-zone-cards .playing-card.premium-card {
  --card-height:calc(var(--player-card-h) / .92);
  transform:rotateX(23deg) !important; transform-origin:center;
}
@media(min-width:1001px) {
  body .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card.premium-card {
    --card-height:calc(8cqh / .92);
    transform:rotateX(23deg) !important; transform-origin:center;
  }
}
@media(max-width:1000px) {
  body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card.premium-card { transform-origin:center; }
}

/* Royal VIP's calibrated layout slots are positioned by the JSON template. */
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) {
 height:calc(100dvh - var(--vip-bottom)) !important;
}
.stage.vip-template .vip-felt-logo[hidden] { display:none; }
body .stage.vip-template .vip-felt-logo {
 font-family:Georgia,serif; line-height:1.1; letter-spacing:.11em; transform:translateX(-50%);
}
.stage.vip-template .vip-template-hand { position:absolute; transform:translate(-50%,-50%); z-index:3; }
.stage.vip-template .vip-template-hand .playing-card { rotate:var(--vip-card-tilt); }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-hand :is(.my-hands,.opponent-hands) {
 position:absolute; inset:0 !important; width:100% !important; height:100% !important;
 display:flex; align-items:center; justify-content:center; margin:0; gap:3%; transform:none !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-hand :is(.hand-group,.opponent-hand-group) {
 position:relative; display:flex; justify-content:center; align-items:center;
 width:100%; height:100%; gap:0; padding:0; border:0; min-width:0 !important; margin:0;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.dealer-hand,.vip-template-hand) .playing-card.premium-card {
 --card-height:var(--vip-template-card-h);
 --card-width:calc(var(--card-height) * .70);
 flex:none; transform:none !important; margin:0 !important;
}
.vip-template :is(.dealer-hand,.vip-template-hand,.mobile-own-hand) .premium-card-art { object-fit:contain; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-hand .playing-card.premium-card + .playing-card {
 margin-left:calc(var(--card-width) * (var(--vip-fan-step) - 1)) !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-split :is(.hand-group,.opponent-hand-group) {
 position:absolute; top:50%; transform:translate(-50%,-50%);
}
.stage.vip-template .vip-template-split .playing-card { rotate:none; }
.vip-template-split .vip-split-active .playing-card { filter:drop-shadow(0 0 .35em #ffc94f); }
.vip-template-split .vip-split-active { z-index:2; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-total.vip-split-total {
 left:50% !important; top:100% !important; transform:translate(-50%,-50%);
 box-sizing:border-box; max-width:var(--vip-split-label-width);
 font-size:max(9px,var(--vip-pill)) !important;
 white-space:nowrap; padding:.1em .30em !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-split-overlap .vip-split-total {
 transform:translate(-50%,0);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-split-total[data-split-compact='true'] {
 padding:.1em .08em !important; letter-spacing:-.025em;
}
.vip-template-total.vip-split-total .vip-seat-result { white-space:pre; }
.vip-template-total.vip-split-total .vip-seat-result::before { content:none; }
.vip-split-active .vip-split-total { border-color:#ffd36d; box-shadow:0 0 .6em #f1b7338c; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .dealer-hand {
 transform:translate(-50%,-50%); z-index:3;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-dealer-fan .playing-card.premium-card + .playing-card {
 margin-left:calc(var(--card-width) * -.52) !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-dealer-fan { gap:0; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
 left:50%; top:calc(100% + 4px); transform:translateX(-50%);
 font-size:var(--vip-pill) !important; line-height:1.05; padding:.19em .45em !important;
}
@media(max-width:1000px){
 body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .dealer-hand .total-pill {
  padding:0 .35em !important; letter-spacing:-.02em;
 }
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-total {
 transform:translate(-50%,-50%); margin:0 !important;
 font-size:var(--vip-pill) !important; line-height:1.05; padding:.19em .45em !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-total.is-natural {
 color:#ffe099;
}
.vip-template-total .vip-seat-result { margin-left:0; }
.vip-template-total .vip-seat-result::before { content:' · '; color:#f1dfba; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-bet {
 position:absolute; transform:translate(-50%,-50%) !important; margin:0 !important;
 border:1.5px solid #debc64; border-radius:50%;
 background:radial-gradient(closest-side,#0002,#d6b57708);
 box-shadow:inset 0 3px 6px #000a,0 1px 0 #ffe8a83f;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-bet::after {
 display:block; inset:6%; border:1px solid #d4af3770; border-radius:50%; background:none;
}
.vip-template-wager { width:100%; height:100%; pointer-events:none; }
.vip-bet-image {
 position:absolute; left:50%; top:50%; width:var(--vip-bet-face); height:calc(var(--vip-bet-face)*.8);
 transform:translate(calc(-50% + var(--vip-wager-x,0px) + var(--stack-offset)*var(--vip-bet-face)*.11),calc(-50% - var(--stack-offset)*var(--vip-bet-face)*.11));
 filter:drop-shadow(0 .7px 0 #4c3523) drop-shadow(0 .75px 0 #24180e) drop-shadow(0 1.5px 1.5px #000b);
}
.mobile-hand-table:has(.mobile-own-hand[data-own='true']) .vip-template-bet[data-visual-seat='2'] .vip-template-wager[data-hand-bet] {
 --vip-wager-x:0px !important;
}
.mobile-hand-table:has(.mobile-own-hand[data-own='true']) .vip-template-bet[data-visual-seat='2'] .vip-template-wager[data-hand-bet] ~ .vip-template-wager[data-hand-bet] .vip-bet-image {
 translate:0 calc(var(--vip-bet-face)*-.14);
}
.vip-template-profile { position:absolute; transform:translate(-50%,-50%); z-index:4; }
.vip-template-avatar {
 position:relative; display:grid; place-items:center; min-width:0; min-height:0; padding:2px;
 border:1px solid #d3ac52; border-radius:50%; background:linear-gradient(#f6e3a1,#8b601e);
 box-shadow:0 3px 8px #0009; color:#f1e6cc;
}
.vip-template-avatar .avatar { width:100%; height:100%; min-width:0; border:0; margin:0; }
.vip-template-name {
 color:#f1e6cc; background:linear-gradient(#2a2015,#0b0806);
 border:1px solid #ac8a42; border-radius:.5em; font:800 var(--vip-pill)/1.08 Arial,sans-serif;
 padding:.18em .48em; white-space:nowrap; text-align:center;
}
.vip-template-name { position:absolute; left:50%; top:calc(100% + 2px); transform:translateX(-50%); max-width:10em; overflow:hidden; text-overflow:ellipsis; }
.vip-profile-name { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.vip-profile-balance { display:block; color:#e2c15a; }
.vip-mobile-player-label {
 position:relative; display:flex; align-items:center; gap:.25em; width:max-content; min-width:0; min-height:0;
 padding:.18em .35em; border:1px solid #ac8a42; border-radius:.5em;
 background:linear-gradient(#2a2015,#0b0806); color:#f1e6cc; font:800 var(--vip-pill)/1.1 Arial,sans-serif; white-space:nowrap;
}
.vip-mobile-player-label > * { flex:none; }
.vip-mobile-player-label .vip-profile-name { overflow:visible; text-overflow:clip; }
.vip-template-avatar .test-guest-portrait { display:grid; place-items:center; background:radial-gradient(circle at 32% 25%,color-mix(in srgb,var(--test-portrait-color),white 18%),var(--test-portrait-color) 65%,#181417); font:800 clamp(14px,1.55cqw,28px)/1 Arial,sans-serif; color:#fff2d4; }
.vip-template-player-menu { color:#f1e6cc; border:1px solid #a98b47; border-radius:12px; padding:10px; background:#21170f; }
.vip-template-player-menu:popover-open { display:flex; gap:8px; }
.vip-debug-zones.vip-template :is(.vip-template-hand,.vip-template-bet,.vip-template-profile,.vip-template-total) { outline:1px solid #ff554c; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar {
 top:0; left:0; right:0; height:var(--vip-top); padding:0 .8cqw; background:linear-gradient(#0b0806f5,#171109df); border-bottom:1px solid #5a4520;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar .balance {
 padding-block:2px;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar :is(.icon-button,.game-language) {
 min-height:0; min-width:0;
 max-height:calc(var(--vip-top) - 5px); max-width:calc(var(--vip-top) - 5px);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar .game-language {
 display:grid; place-items:center; padding:0; font-size:clamp(10px,1.1cqw,14px); line-height:1;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar .balance > button {
 max-height:calc(var(--vip-top) - 8px); max-width:calc(var(--vip-top) - 8px);
}
@media(min-width:1001px) and (max-height:700px) {
 body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar .balance {
  font-size:min(1.45cqw,calc(var(--vip-top)*.33)); line-height:1.05; row-gap:1px;
 }
}
body .stage.vip-template .topbar::before { display:none; }
body:not(.phone-landscape) .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .practice-tag {
 top:calc(100% + clamp(2px,var(--vip-bottom) - 2.7em,32px)) !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.bet-controls,.result-actions,.actions) {
 top:calc(100% + var(--vip-bottom)*.42) !important; height:calc(var(--vip-bottom)*.58);
 min-height:0; padding:0; align-items:center;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.bet-controls,.result-actions,.actions) button {
 max-height:calc(var(--vip-bottom)*.58); min-height:min(36px,calc(var(--vip-bottom)*.58));
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.table-status,.round-result) {
 top:calc(100% + 1px) !important; height:calc(var(--vip-bottom)*.38); min-height:0; line-height:1.1;
}
.stage.vip-template { --vip-split-result-height:clamp(27px,calc(var(--vip-bottom)*.48),37px); }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .round-result.has-split-detail {
 flex-direction:column; justify-content:center; gap:1px;
 height:var(--vip-split-result-height); font-size:clamp(13px,calc(var(--vip-bottom)*.25),20px);
}
.vip-template .split-result-headline { display:flex; justify-content:center; align-items:baseline; gap:.55em; }
.vip-template .split-result-detail { font-size:clamp(9px,calc(var(--vip-bottom)*.15),12px); color:#e6d4b1; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .result-actions.after-split-detail {
 top:calc(100% + var(--vip-split-result-height) + 2px) !important;
 height:calc(var(--vip-bottom) - var(--vip-split-result-height) - 2px);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .result-actions.after-split-detail button {
 min-height:0; max-height:100%; padding-block:1px;
}
@media(max-width:1000px) {
 body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar .balance {
  padding-block:1px; font-size:clamp(10px,1.45cqw,13px); line-height:1.05; row-gap:1px;
 }
 body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .bet-controls .chip {
  width:calc(var(--vip-bottom)*.54); height:calc(var(--vip-bottom)*.54); min-width:0; min-height:0;
 }
 body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar :is(.icon-button,.game-language) {
  width:min(40px,calc(var(--vip-top) - 6px)); height:min(40px,calc(var(--vip-top) - 6px)); min-width:0; min-height:0;
 }
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-wager {
 position:absolute; inset:0; width:100%; height:100%; max-width:none; transform:none;
}
.vip-template-player-menu { display:none; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-menu-button {
 display:grid; place-items:center; flex:none;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .bet-controls .vip-bet-chip {
 --vip-chip-square:calc(var(--vip-bottom)*.54);
 position:relative; flex:0 0 var(--vip-chip-square); overflow:hidden;
 width:var(--vip-chip-square); height:var(--vip-chip-square); aspect-ratio:1;
 min-width:var(--vip-chip-square); min-height:var(--vip-chip-square);
 max-width:var(--vip-chip-square); max-height:var(--vip-chip-square);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-bet-chip > img {
 position:absolute; inset:0; width:100%; height:100%; object-fit:contain;
}
.vip-template .topbar .vip-chat-button {
 position:relative !important; inset:auto !important; transform:none !important; flex:none; margin:0;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .topbar .vip-test-toggle { flex:none; width:auto; min-width:0; padding-inline:.7em; white-space:nowrap; font-size:clamp(9px,1cqw,14px); }
.vip-test-toggle .vip-test-compact { display:none; }
.vip-test-badge {
 position:absolute; right:0; top:0; z-index:1; border-radius:.35em; padding:.1em .3em;
 background:#17110c; border:1px solid #c79e50; color:#f3d080; font:bold .55em Arial,sans-serif; transform:translate(18%,-35%);
}
.vip-mobile-player-label .vip-test-badge { position:static; transform:none; font-size:.7em; padding:0 .18em; }
.vip-mobile-player-label.has-test-badge .vip-test-badge {
 position:absolute; top:-6px; right:4px; padding:0 3px; font-size:11px; line-height:1;
}
.vip-template-player-menu:popover-open { position:fixed; inset:auto; margin:0; z-index:20; }
.vip-template-player-menu .secondary { white-space:nowrap; }
.vip-gift-slot {
 position:absolute; transform:translate(-50%,-50%); z-index:5; isolation:isolate;
}
.vip-gift-tile,.vip-gift-tile .gift-art { width:100%; height:100%; }
.vip-gift-tile {
 position:absolute; inset:0; filter:drop-shadow(0 2px 2px #0009);
}
.vip-gift-flight { position:absolute; z-index:15; pointer-events:none; }
@media(max-width:1000px){
 .vip-test-toggle .vip-test-label { display:none; }
 .vip-test-toggle .vip-test-compact { display:inline; }
 .vip-template .topbar .vip-test-toggle { width:auto; }
}

body .stage.salon-template .practice-tag { max-width:24%; }
body .stage.salon-template .vip-felt-logo { position:absolute; text-align:center; opacity:.65; z-index:1; }
.salon-template .vip-template-name { max-width:10em; }
.shop-stack .has-table-asset > img { width:100%; height:100%; object-fit:contain; }

.gift-slot { min-width:0; }
.gift-slot .gift-day-chip { position:relative; display:block; overflow:hidden; flex:none; }
.gift-slot .gift-day-chip .table-asset { width:100%; height:100%; object-fit:contain; }
@media(max-width:1000px){.phone-landscape .shop-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.gift-grid{gap:5px}.gift-slot .gift-day-chip{width:26px;height:26px;}}


body.phone-landscape .stage.premium-table.salon-template .practice-tag { top:calc(100% + 1px) !important; line-height:1; font-size:8px; padding:0; }
body.phone-landscape .stage.salon-template .brand > small { display:none; }
body.phone-landscape .stage.salon-template .phone-table-title { display:block; max-width:21cqw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:700 9px/1.15 Arial,sans-serif; color:#dac49c; }
@media (max-width:700px) and (orientation:landscape) {
 .phone-landscape .stage[data-screen='gift'] .gift-grid { grid-template-columns:repeat(6,minmax(0,1fr)); }
}
.phone-landscape .stage[data-screen='gift'] .page-heading { margin-bottom:6px; }
.phone-landscape .stage[data-screen='gift'] .gift-slot { padding:6px 4px; gap:4px; }
.phone-landscape .stage[data-screen='gift'] .gift-grid + p { margin:6px 0; font-size:12px; }
.phone-landscape .stage[data-screen='gift'] .gift-reward { display:grid; grid-template-columns:max-content max-content; justify-content:center; align-items:center; gap:4px 12px; margin:8px 0 0; }
.phone-landscape .stage[data-screen='gift'] .gift-reward h2 { margin:0; font-size:23px; }
.phone-landscape .stage[data-screen='gift'] .gift-reward p { grid-column:1/-1; margin:0; font-size:11px; }

@media(max-width:1000px){
 .featured-rooms .vip-room-tile { grid-column:auto; display:flex; flex-direction:column; }
 .featured-rooms .vip-room-picture { height:auto; border-right:0; border-bottom:1px solid var(--border); }
}
.room-grid { align-items:start; }
.room-tile .room-body > button { align-self:end; margin-top:6px; width:100%; }
.room-tile .vip-locked-button { background:#171411; color:#eed39a; border:1px solid #b79652; }
.room-tile .vip-locked-button:hover { background:#2a2118; }
body:has(#dialog[open]) #surface,
body:has(#dialog[open]) #surface :not(#dialog,#dialog *) { pointer-events:none!important; }
#dialog[open] { pointer-events:auto; }
@media(max-width:740px){
 .phone-landscape .featured-rooms { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
 .phone-landscape .featured-rooms .room-body { padding:8px; gap:4px; }
 .phone-landscape .featured-rooms .room-body h2 { font-size:16px; }
 .phone-landscape .featured-rooms .vip-crown-label { font-size:9px; padding:3px 6px; }
}
.profile-name,.player-name,.vip-profile-name,.seat-username,.account-strip > strong {
  font-family:Arial,sans-serif;
  font-variant-numeric:lining-nums tabular-nums;
}
.friend-form { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.friend-form input { flex:1 1 12em; min-width:0; }
.friend-form button { min-height:44px; }
body.phone-landscape .stage.premium-table[data-screen='game'] .premium-table-seal {
  display:flex;
  top:calc(var(--vip-top,52px) + 7px);
  left:8px;
  padding:4px 7px;
  gap:2px;
  z-index:4;
  max-width:32%;
  font-size:11px;
}
body.phone-landscape .stage.premium-table .premium-table-seal small { font-size:8px; }
body.phone-landscape .stage.salon-template .phone-table-title { display:none; }
body.phone-landscape .stage.salon-template .brand > small { display:block; }
@media (max-width:700px) {
  body.phone-landscape .stage.premium-table[data-salon='vip'] .premium-table-seal { left:56px; }
  body.phone-landscape .stage.premium-table[data-salon='vip'] .vip-mobile-seal { top:calc(var(--vip-top,44px) + 7px); }
}

.room-picture.rendered-room-picture:not(.art-loaded) {
  background:radial-gradient(ellipse at 50% 58%,#3a3328 2%,#1e1914 43%,#100e0c 82%);
}
.room-picture.rendered-room-picture img { opacity:0; }
.room-picture.rendered-room-picture.art-loaded img { opacity:1; }
body:not(.phone-landscape) .stage.premium-table.vip-template .premium-table-seal {
  top:calc(var(--vip-top) + 12px);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .table-status {
  height:auto;min-height:0;padding:.2em .65em;line-height:1.15;
}

body.phone-portrait .profile-grid { grid-template-columns:minmax(0,1fr); }
body.phone-portrait .metrics,body.phone-portrait .stats-grid { min-width:0; }
body.phone-portrait .stage.menu-mode .menu-main { min-width:0; overflow-x:hidden; }
body.phone-portrait .stage.menu-mode .menu-shell { gap:0; }
body.phone-portrait .menu-mode .shell-header {
 grid-template-columns:36px minmax(0,1fr) auto; column-gap:8px;
}
body.phone-portrait .menu-mode .brand-block {
 display:flex; flex-flow:column nowrap; align-items:flex-start; gap:4px; min-width:0;
}
body.phone-portrait .menu-mode .brand > span {
 font-size:clamp(12px,3.65vw,16px); letter-spacing:.02em; white-space:nowrap; line-height:1.15;
}
body.phone-portrait .menu-mode .brand > small { display:none; }
body.phone-portrait .menu-mode .wallet { font-size:12px; white-space:nowrap; }
body.phone-portrait .menu-mode .shell-header .round-button { width:36px; height:36px; min-width:36px; min-height:36px; }
body.phone-portrait .menu-mode .header-tools { gap:4px; }
body.phone-portrait .menu-mode .header-tools .language-button { min-width:54px; min-height:36px; padding:4px 6px; }
body.phone-portrait .weekly-dates { overflow-wrap:anywhere; }
.stage,.menu-shell { font-variant-numeric:lining-nums tabular-nums; }
.menu-mode :is(.metric strong,.shop-tile h2,.history-wager,.history-net,.gift-reward h2,.wallet,.weekly-dates) {
 font-variant-numeric:lining-nums tabular-nums;
}
.menu-mode .metric strong { font-family:Arial,sans-serif; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .hand-actions {
 display:flex; justify-content:center; gap:clamp(3px,.6cqw,12px); left:0!important; right:0!important; width:auto;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .hand-actions button {
 flex:none; width:clamp(64px,10.9cqw,144px); min-width:0; padding-inline:3px; white-space:nowrap;
}
@media(max-height:430px) and (orientation:landscape) {
 .phone-landscape .menu-mode .menu-shell { padding-block:env(safe-area-inset-top) env(safe-area-inset-bottom); }
 .phone-landscape .menu-mode :is(.shell-header,.bottom-nav) { height:44px; min-height:44px; padding-block:0; align-items:center; }
 .phone-landscape .menu-mode .shell-header { grid-template-columns:44px minmax(0,1fr) auto; }
 .phone-landscape .menu-mode .shell-header :is(button,.header-spacer),.phone-landscape .menu-mode .bottom-nav button {
  min-height:0; height:42px;
 }
 .phone-landscape .menu-mode .shell-header .round-button { min-width:42px; width:42px; }
 .phone-landscape .menu-mode .studio-signature { display:none; }
 .phone-landscape .stage[data-screen=lobby] .menu-main { display:flex; flex-direction:column; align-items:stretch; padding-top:8px; }
 .phone-landscape .stage[data-screen=lobby] .menu-main > * { flex:none; }
 .phone-landscape .stage[data-screen=lobby] .featured-rooms {
  display:flex; align-items:stretch; gap:10px; overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x mandatory; padding:0 0 6px; min-width:0;
 }
 .phone-landscape .featured-rooms .room-tile {
  display:block; flex:0 0 clamp(196px,25.5vw,232px); scroll-snap-align:start;
 }
 .phone-landscape .featured-rooms .room-body { padding:8px; gap:4px; }
 .phone-landscape .featured-rooms .room-body h2 { font-size:16px; }
 .phone-landscape .featured-rooms .room-body>button { min-height:36px; }
}

/* The destination remains measurable while the next card waits in the shoe. */
.playing-card.sequence-waiting { visibility: hidden; }
.playing-card.total-pending-card:not(.sequence-waiting) { z-index: 8; }
.vip-template .sequence-active-seat .playing-card:not(.sequence-waiting) {
  filter: drop-shadow(0 0 4px #e8bf65a8);
}

.vip-felt-salon { position:absolute; z-index:1; transform:translateX(-50%); color:#d9b967; opacity:.55; font-family:Georgia,serif; font-weight:bold; letter-spacing:.24em; line-height:1; white-space:nowrap; pointer-events:none; }
.vip-rule-secondary { opacity:.76; letter-spacing:.10em; }

/* Quick stakes must have a delivered face and expose only the approved presets. */
.stage.premium-table .bet-controls button.chip:not(:has(> img.table-asset)) {
 display:none !important;
}
body.phone-landscape .stage.premium-table {
 --phone-bet-inset:max(6px, env(safe-area-inset-bottom));
}
body.phone-landscape .stage.premium-table :is(.practice-tag,.topbar .brand > small) {
 display:none !important;
}
body.phone-landscape .stage.premium-table:is([data-salon='vip'],.salon-template) :is(
 .vip-template-total,.vip-mobile-player-label,.vip-profile-name,.vip-profile-balance,
 .dealer-hand .total-pill,.topbar .balance,.topbar .balance > small,.premium-table-seal,.premium-table-seal small
) {
 font-size:11px !important;
}
body.phone-landscape .stage.premium-table :is(.bet-controls,.actions,.result-actions) {
 padding-bottom:var(--phone-bet-inset) !important;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .bet-controls {
 top:auto !important;
 bottom:calc(0px - var(--vip-bottom)) !important;
 height:calc(40px + var(--phone-bet-inset));
 min-height:0;
 max-height:none;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .bet-controls .vip-bet-chip {
 --vip-chip-square:max(40px, calc(var(--vip-bottom)*.54));
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .bet-controls > button {
 height:40px;
 min-height:40px;
 max-height:40px;
}
body.phone-landscape .stage.premium-table .bet-controls .bet-adjust {
 height:40px;
 min-height:40px;
}
body.phone-landscape .stage.premium-table .bet-controls .bet-adjust > button {
 min-width:40px;
 min-height:40px;
 max-height:40px;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template):has(.bet-controls) .table-status {
 top:calc(100% + var(--vip-bottom) - 40px - var(--phone-bet-inset) - 17px) !important;
 left:auto !important;
 right:10px !important;
 transform:none !important;
 width:34%;
 height:16px;
 text-align:right;
 font-size:11px;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.actions,.result-actions) button {
 min-height:0;
 max-height:100%;
}

/* Lobby shortcuts and room cards. */
.account-strip > .gold-button { margin-inline-start:auto; }
.room-grid { grid-auto-rows:auto; align-items:stretch; }
.room-tile:not(.vip-room-tile) { display:flex; flex-direction:column; }
.room-tile .room-body { display:flex; flex:1; flex-direction:column; justify-content:flex-start; row-gap:4px; }
.room-tile .room-body > button { flex:none; margin-top:0; }
.lobby-shortcuts { display:grid; gap:6px; margin-top:16px; }
.lobby-shortcuts > :is(.mission-preview,.weekly-preview) {
 display:block; margin:0; padding:0; border:0; background:none; min-width:0;
}
.lobby-shortcuts > :is(.mission-preview,.weekly-preview) > .secondary {
 display:flex; justify-content:space-between; align-items:center; width:100%; margin:0;
 min-height:40px; padding:5px 12px; white-space:nowrap; box-shadow:none;
}
.lobby-shortcut-arrow { font-size:17px; line-height:1; }

.stage[data-screen='store'] .shop-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.shop-package-art {
 display:flex; align-items:center; justify-content:center; gap:6px; width:100%; min-height:80px;
}
.shop-package-art img { width:min(84px,46%); max-height:84px; object-fit:contain; }
.shop-coming-soon { color:#c6b38c; line-height:1; }
.stage[data-screen='store'] .shop-tile .gold-button:disabled {
 background:#30271b; color:#dcc79b; border-color:#a58750; opacity:.65; cursor:default;
}
@media(max-width:700px){
 .stage[data-screen='store'] .shop-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
 .stage[data-screen='store'] .page-heading { margin-bottom:14px; }
 .stage[data-screen='store'] .shop-tile { padding:8px; gap:4px; }
 .stage[data-screen='store'] .shop-package-art { min-height:52px; }
 .stage[data-screen='store'] .shop-package-art img { width:min(52px,44%); max-height:52px; }
 .stage[data-screen='store'] .shop-tile h2 { font-size:21px; line-height:1.1; }
 .stage[data-screen='store'] .shop-tile .eyebrow { font-size:10px; }
 .stage[data-screen='store'] .shop-tile .gold-button { min-height:34px; padding:4px 8px; margin-top:3px; }
 .stage[data-screen='store'] .shop-coming-soon { font-size:11px; }
}
body.phone-landscape .stage[data-screen='store'] .shop-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media(max-height:430px) and (orientation:landscape){
 .phone-landscape .stage[data-screen='lobby'] .page-heading { display:none; }
 .phone-landscape .stage[data-screen='lobby'] .menu-main { gap:6px; }
 .phone-landscape .stage[data-screen='lobby'] .account-strip { min-height:34px; margin:0; }
 .phone-landscape .stage[data-screen='lobby'] .account-strip .small-portrait { width:32px; height:32px; }
 .phone-landscape .stage[data-screen='lobby'] .account-strip > .gold-button { min-height:34px; padding:4px 12px; }
 .phone-landscape .featured-rooms .room-tile { display:flex; flex-direction:column; flex-basis:clamp(174px,22vw,185px); }
 .phone-landscape .featured-rooms .room-picture.salon-room-picture { aspect-ratio:1.75!important; max-height:clamp(70px,22svh,105px); }
 .phone-landscape .room-grid .room-body { padding:5px 7px; gap:3px; }
 .phone-landscape .room-grid .room-body p { font-size:11px; line-height:1.2; margin:0; }
 .phone-landscape .room-grid :is(.vip-crown-label,.room-description) { display:none; }
 .phone-landscape .room-grid .room-body > button { min-height:32px; padding:4px 8px; }
}

body.phone-portrait .stage[data-screen='lobby'] .account-strip {
 display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:2px 8px;
}
body.phone-portrait .stage[data-screen='lobby'] .account-strip .small-portrait { grid-row:1/3; }
body.phone-portrait .stage[data-screen='lobby'] .account-strip .menu-level { grid-column:2; justify-self:start; }
body.phone-portrait .stage[data-screen='lobby'] .account-strip > .gold-button {
 grid-column:3; grid-row:1/3; min-height:40px; padding:5px 10px; white-space:nowrap;
}
body.phone-portrait .stage[data-screen='lobby'] .room-grid .room-body { padding:12px; gap:5px; }

#friend-name { height:44px; min-height:44px; }
.friends-empty { display:flex; align-items:center; gap:10px; padding-block:10px; }
.friends-empty-icon { color:var(--gold); font-size:23px; line-height:1; }
.settings-track { display:block; margin-top:4px; color:var(--muted); font-size:12px; line-height:1.35; }
.settings-vibration { display:none; }
@media (any-pointer:coarse) { .settings-vibration { display:grid; } }
.settings-panel > .text-button { justify-self:start; }
.settings-links { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.settings-links > button { min-width:0; padding-inline:8px; font-size:13px; }
#dialog-body.table-menu-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
#dialog-body.table-menu-actions > button { margin:0; min-width:0; padding-inline:8px; }

.gift-description { margin-bottom:16px; }
.gift-slot .gift-day-chip { width:44px; height:44px; object-fit:contain; }
.weekly-rules { padding:0 12px; border:1px solid var(--border); border-radius:10px; background:#221c13; }
.weekly-rules summary { min-height:44px; padding-block:12px; cursor:pointer; color:var(--gold); }
.weekly-rules p { margin-bottom:10px; }
.weekly-end { margin:8px 0; color:var(--muted); font-size:13px; }
.weekly-room-tabs { margin-block:8px; }
.weekly-periods { margin-bottom:12px; }

@media (max-width:700px), (max-height:430px) and (orientation:landscape) {
 .gift-slot .gift-day-chip { width:32px; height:32px; }
}
@media (max-width:500px), (max-height:500px) {
 .stage[data-screen='lobby'] .shell-header .brand > small { display:none; }
}
@media (max-width:700px) {
 .settings-links { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .stage[data-screen='gift'] .gift-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .stage[data-screen='gift'] .gift-slot { gap:6px; padding:8px 4px; }
 .stage[data-screen='gift'] .gift-slot:last-child { grid-column:1/-1; flex-direction:row; justify-content:center; gap:12px; }
 .stage[data-screen='gift'] .gift-reward { margin-top:16px; }
 .stage[data-screen='gift'] .gift-reward h2 { margin-bottom:10px; }
 .stage[data-screen='gift'] .gift-reward p { margin-top:8px; }
 .stage[data-screen='weekly'] .weekly-room-tabs { grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; }
 .stage[data-screen='weekly'] .weekly-room-tabs button { min-height:44px; padding:4px; font-size:12px; }
 .stage[data-screen='weekly'] .weekly-row { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
 .stage[data-screen='weekly'] .weekly-row > :is(.weekly-medal,.weekly-place) { grid-column:1; grid-row:1; justify-self:start; }
 .stage[data-screen='weekly'] .weekly-identity { grid-column:1/-1; grid-row:1; padding-left:44px; }
 .stage[data-screen='weekly'] .weekly-row .metric { grid-column:auto; flex-direction:column; justify-content:start; gap:4px; text-align:center; }
}

/* Keep the hand controls and their caption inside the reserved table footer. */
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) {
 --table-control-safe:env(safe-area-inset-bottom,0px);
 --table-action-height:40px;
 --table-result-caption:30px;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template):has(.insurance-actions,.hand-actions,.result-actions) {
 --vip-bottom:calc(76px + var(--table-control-safe)) !important;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) {
 --table-control-safe:max(6px,env(safe-area-inset-bottom,0px));
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.hand-actions,.result-actions,.insurance-actions),
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .result-actions.after-split-detail {
 top:auto !important; bottom:calc(var(--table-control-safe) - var(--vip-bottom)) !important;
 height:var(--table-action-height); min-height:0; max-height:none;
 padding:0 max(6px,env(safe-area-inset-right,0px)) 0 max(6px,env(safe-area-inset-left,0px)) !important;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.hand-actions,.result-actions,.insurance-actions) > button,
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .result-actions.after-split-detail > button {
 height:var(--table-action-height) !important; min-height:var(--table-action-height); max-height:none;
 line-height:1.15; padding:4px 6px; white-space:nowrap; min-width:0;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .insurance-actions {
 display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)); grid-template-rows:20px var(--table-action-height);
 height:calc(24px + var(--table-action-height)); gap:4px 8px; align-items:stretch;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .insurance-actions > p {
 display:block; grid-column:1/-1; margin:0; align-self:center; white-space:nowrap;
}
.insurance-short-copy { display:none; }
.table-action-short { display:none; }
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template):has(.insurance-actions) .table-status { display:none; }
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .insurance-actions {
 grid-template-columns:repeat(3,minmax(0,1fr)) 40px;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .insurance-help { width:40px; min-width:40px; }
body.phone-landscape .insurance-full-copy { display:none; }
body.phone-landscape .insurance-short-copy { display:inline; }
body.phone-landscape .table-action-full { display:none; }
body.phone-landscape .table-action-short { display:inline; }
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.hand-actions,.result-actions,.insurance-actions) > button {
 font-size:clamp(11px,1.8vw,14px);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .round-result.has-split-detail {
 top:calc(100% + 4px) !important; height:var(--table-result-caption); font-size:clamp(13px,2.15vw,19px);
}
.vip-template .split-result-headline > :is(h2,p),
.vip-template .split-result-detail { line-height:1; margin:0; }
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .round-result.has-split-detail {
 top:calc(100% + 5px) !important; height:26px; font-size:13px;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-template-total.vip-split-total {
 max-width:none; transform:translate(calc(-50% + var(--split-label-shift,0px)),-50%);
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-split-overlap .vip-split-total {
 transform:translate(calc(-50% + var(--split-label-shift,0px)),0);
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-split-total {
 translate:0 10px;
}
body .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .vip-split-active .vip-split-total {
 outline:1px solid #ffd36d; outline-offset:1px;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) .dealer-hand { translate:0 -8px; }
body.phone-landscape .stage.premium-table.vip-template .vip-template-bet { translate:0 var(--table-wager-offset,0px); }
body.phone-landscape .stage.premium-table.vip-template:has(.vip-template-profile[data-own='true'][data-visual-seat='2']) .insurance-actions > p {
 text-align:right;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template):has(.vip-template-profile[data-own='true'][data-visual-seat='2'],.table-take-seat[data-visual-seat='2'])
 :is(.round-result,.table-status) {
 left:auto !important; right:8px !important; width:40%; transform:none !important;
}
body.phone-landscape .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template):has(.hand-actions):has(.vip-template-profile[data-own='true'][data-visual-seat='2'])
 .table-status { top:calc(100% + 5px) !important; }
.stage.premium-table:has(.insurance-actions) .practice-tag { display:none!important; }
.table-take-seat {
 position:absolute; transform:translate(-50%,-50%); z-index:6;
 min-width:60px; min-height:40px; padding:4px 10px; white-space:nowrap;
}
body.phone-landscape .table-take-seat { min-height:36px; font-size:12px; }
.waiting-seat .table-take-seat { position:static; transform:none; justify-self:end; }
body.phone-landscape .stage.premium-table #surface > .topbar { z-index:20; }

/* The five mobile hands sit directly on the felt. */
body .stage.premium-table.mobile-hand-table {
 --table-control-safe:max(6px,env(safe-area-inset-bottom,0px));
 touch-action:manipulation;
}
.mobile-hand-table .table-take-seat.mobile-empty-seat {
 width:28px; height:28px; min-width:28px; min-height:28px; padding:0;
 border-radius:50%; border:1px dashed #dbbd7780; background:#221b1266; box-shadow:none;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template) .topbar :is(.vip-test-compact,.game-language),
.mobile-hand-table .mobile-hand-identity small { font-size:11px; }
.mobile-own-hand {
 position:absolute; z-index:6; left:50%;
 transform:translateX(-50%);
}
body .stage.premium-table.mobile-hand-table .mobile-own-hand .my-hands {
 position:static; inset:auto !important; width:auto !important; height:auto !important;
 transform:none !important; display:flex; align-items:start; justify-content:center; gap:10px; margin:0;
}
body .stage.premium-table.mobile-hand-table .mobile-own-hand .hand-group {
 position:relative; display:grid; grid-template-columns:1fr; justify-items:center;
 gap:3px; min-width:0 !important; max-width:none; height:auto; margin:0; padding:0;
 border:0; background:none; box-shadow:none; transform:none;
}
.mobile-own-hand .mobile-own-cards {
 display:flex; align-items:center; justify-content:center;
}
.mobile-own-hand .mobile-hand-inactive { --hand-display-height:calc(var(--own-card-height) * .85); opacity:.68; }
.mobile-own-hand .mobile-hand-active .mobile-own-cards { filter:drop-shadow(0 0 4px #f6bd50a6); }
body .stage.premium-table.mobile-hand-table .mobile-own-hand .playing-card.premium-card {
 --card-height:var(--hand-display-height,var(--own-card-height)) !important;
 --card-width:calc(var(--card-height)*.70) !important;
 flex:none; transform:none !important; rotate:none; margin:0 !important;
}
body .stage.premium-table.mobile-hand-table .mobile-own-hand .playing-card.premium-card + .playing-card {
 margin-left:calc(var(--card-width) * -.68) !important;
}
body .stage.premium-table.mobile-hand-table .mobile-own-hand .mobile-own-total {
 position:absolute; inset:auto auto 4px calc(100% + 5px) !important; transform:none; translate:none;
 margin:0; padding:1px 4px !important; font:700 12px/1.15 Arial,sans-serif !important;
 color:#f5e1a9; white-space:nowrap; max-width:none;
}
body .stage.premium-table.mobile-hand-table .mobile-own-split .hand-group:first-child .mobile-own-total {
 inset:auto calc(100% + 5px) 4px auto !important;
}
.mobile-own-total .vip-seat-result::before { content:' · '; }
body .stage.premium-table.vip-template.mobile-hand-table {
 --mobile-dealer-top:calc(var(--vip-top) + 9.5px);
 --mobile-dealer-height:clamp(90px,calc(90px + (100svh - 375px) * .3774),110px);
 --mobile-dealer-edge:calc(var(--mobile-felt-edge) + clamp(18px,calc(18px + (100svh - 375px) * .1),23px));
 --mobile-dealer-rack-width:calc(var(--mobile-dealer-height) * var(--mobile-dealer-shoulder) * 1.3);
}
.mobile-hand-table .vip-room-projection { height:calc(100% + var(--vip-bottom)); }
.phone-table-footer-mode :is(.vip-felt-band,.vip-felt-logo,.vip-felt-salon) { display:none !important; }
.stage > .phone-felt-print { display:none; }
.stage.phone-table-footer-mode[data-screen='game'] > .phone-felt-print {
 display:block; opacity:1; transition:opacity 300ms ease;
 position:absolute; width:300px; height:31px; overflow:visible; pointer-events:none;
 transform:translateX(-50%); z-index:1; color:#dec17d;
}
.stage.phone-table-footer-mode:has(.dealer-hand .playing-card) > .phone-felt-print {
 opacity:.2;
}
.phone-felt-print text { text-anchor:middle; fill:currentColor; font:700 9px Georgia,serif; }
.phone-felt-print .phone-felt-gold-line { stroke:currentColor; stroke-width:.55; fill:none; }
.felt-corner-print {
 position:absolute; z-index:1; overflow:visible; pointer-events:none; color:#dec17d; opacity:1;
}
.felt-corner-print text { fill:currentColor; font-family:Georgia,serif; font-weight:700; letter-spacing:.03em; }
.felt-corner-crown { fill:currentColor; }
.vip-felt-band .vip-rule-secondary { opacity:1; }
@media(min-width:1001px) and (max-height:800px) {
 body:not(.phone-landscape) .stage.premium-table.vip-template:is([data-salon='vip'],.salon-template) :is(.table-status,.round-result) {
  left:auto !important; right:3% !important; transform:none;
 }
}
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode .vip-template-bet { translate:none; }
body .stage.phone-table-footer-mode .photo-dealer {
 left:var(--phone-fitted-dealer-x) !important;
 top:var(--phone-fitted-dealer-y) !important;
 width:calc(var(--phone-fitted-dealer-art-height) * .8) !important;
 height:var(--phone-fitted-dealer-height) !important;
}
body .stage.phone-table-footer-mode .photo-dealer-figure { height:var(--phone-fitted-dealer-art-height); }
body.phone-landscape .stage.phone-table-footer-mode #surface > .topbar {
 background:linear-gradient(180deg,#0c0907a8,transparent) !important;
}
body.phone-landscape .stage.phone-table-footer-mode #surface > .topbar::before { background:none !important; }
@media(max-width:700px) {
 body.phone-landscape .stage.phone-table-footer-mode .topbar .balance {
  position:absolute; top:calc(100% + 2px); right:0; margin:0;
 }
 body.phone-landscape .stage.phone-table-footer-mode .topbar .balance + button { margin-left:auto; }
}
body .stage.phone-table-footer-mode .live-chip-rack { min-width:0; max-width:none; }
body .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) .vip-template-hand .playing-card.premium-card {
 --card-height:var(--phone-fitted-rival-height);
}
body .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template)
 :is(.vip-template-hand,.mobile-own-hand) .playing-card.premium-card + .playing-card {
 margin-left:calc(var(--card-width) * (var(--phone-fan-step,.32) - 1)) !important;
}
body .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) .vip-template-hand .mobile-hand-inactive .playing-card.premium-card {
 --card-height:calc(var(--phone-fitted-rival-height) * .85);
}
body .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) .mobile-opponent-split .opponent-hand-group {
 height:var(--phone-fitted-rival-height);
}
body .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) .mobile-opponent-split .opponent-hand-group.mobile-hand-inactive {
 height:calc(var(--phone-fitted-rival-height) * .85);
}
body.phone-landscape .stage.premium-table.mobile-hand-table .premium-table-seal { display:none !important; }
body.phone-landscape .stage.premium-table.mobile-hand-table .phone-table-title {
 display:block; font:700 10px/1 Arial,sans-serif; color:#ead39a; white-space:nowrap;
}
/* Measured shoulder widths divided by the source cutout height (1600 px). */
.mobile-hand-table[data-salon='emerald'] { --mobile-dealer-shoulder:.465625; }
.mobile-hand-table[data-salon='ruby'] { --mobile-dealer-shoulder:.539375; }
.mobile-hand-table[data-salon='onyx'] { --mobile-dealer-shoulder:.4875; }
.mobile-hand-table[data-salon='sapphire'] { --mobile-dealer-shoulder:.518125; }
.mobile-hand-table[data-salon='amethyst'] { --mobile-dealer-shoulder:.540625; }
.mobile-hand-table[data-salon='amber'] { --mobile-dealer-shoulder:.583125; }
.mobile-hand-table[data-salon='vip'] { --mobile-dealer-shoulder:.475; }
.mobile-hand-table .photo-dealer {
 height:calc(var(--mobile-dealer-edge) - var(--mobile-dealer-top)) !important;
 width:calc(var(--mobile-dealer-height) * .8) !important;
 top:var(--mobile-dealer-edge) !important;
 overflow:hidden;
}
.mobile-hand-table .photo-dealer-figure { bottom:auto; height:var(--mobile-dealer-height); }
.mobile-hand-table .live-chip-rack {
 min-width:var(--mobile-dealer-rack-width);
 max-width:var(--mobile-dealer-rack-width);
}
.mobile-hand-table .live-chip-rack .dealer-roll { --roll-face-scale:.61; }
body .stage.premium-table.vip-template.mobile-hand-table .dealer-hand {
 translate:none !important; align-items:flex-start; gap:0;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template) .dealer-hand .playing-card.premium-card + .playing-card {
 margin-left:calc(var(--card-width) * -.68) !important;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template) .mobile-opponent-split .opponent-hands {
 align-items:start; gap:5px;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template) .mobile-opponent-split .opponent-hand-group {
 width:max-content; height:var(--vip-template-card-h); flex:none;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template) .mobile-opponent-split .vip-split-total {
 top:calc(100% + 10px) !important; translate:none;
}
.mobile-hand-table .mobile-opponent-split:is([data-visual-seat='0'],[data-visual-seat='4']) {
 translate:0 -15px;
}
body .stage.premium-table.mobile-hand-table .phone-card-zoom {
 display:block; position:absolute; inset:0; width:100%; min-height:0; height:100%;
 background:none; border:0; padding:0; z-index:6; pointer-events:auto !important;
}
.mobile-hand-preview {
 position:fixed; z-index:30; inset:0; margin:auto; width:max-content; height:max-content;
 max-width:88vw; padding:12px; gap:6px; border:1px solid #d8b577; border-radius:14px;
 background:#21190f; box-shadow:0 12px 36px #000c; cursor:pointer;
}
.mobile-hand-preview .playing-card {
 --card-height:114px !important; --card-width:79.8px !important;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template):has(.mobile-own-hand)
 .table-status {
 top:auto !important; bottom:calc(var(--table-control-safe) + 48px - var(--vip-bottom)) !important;
 left:auto !important; right:8px !important; width:clamp(148px,22vw,176px) !important; height:max-content !important;
 transform:none !important; text-align:center; white-space:normal;
 font-size:11px; line-height:1.15; overflow:visible; text-overflow:clip;
}
body .stage.premium-table.vip-template.mobile-hand-table:is([data-salon='vip'],.salon-template):has(.hand-actions)
 .table-status { bottom:calc(var(--table-control-safe) + 8px - var(--vip-bottom)) !important; }
.mobile-hand-table .round-result { display:none !important; }
.mobile-hand-table .vip-compact-profile { translate:var(--seat-label-inset,0px) 0; }
.mobile-hand-identity {
 display:flex; justify-content:center; gap:6px; margin-top:3px; min-width:0; text-align:center;
 font:700 12px/1.15 Arial,sans-serif; color:#f1ddb1; white-space:nowrap;
}
.mobile-hand-identity b,.mobile-net-win { color:#f3cf73; }
.mobile-net-loss { color:#efa49f; }
.mobile-own-waiting .mobile-hand-identity { margin-top:0; }
.stage.phone-table-footer-mode {
 --mobile-safe-bottom:env(safe-area-inset-bottom,0px);
 --mobile-footer-top:calc(var(--mobile-visible-height) - 46px - var(--mobile-safe-bottom));
}
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) {
 height:calc(var(--mobile-visible-height) - var(--vip-bottom)) !important;
}
body.phone-landscape:has(.stage.premium-table.phone-table-footer-mode) {
 --mobile-safe-left:env(safe-area-inset-left,0px);
 --mobile-safe-right:env(safe-area-inset-right,0px);
 overflow:hidden; padding-left:var(--mobile-safe-left); padding-right:var(--mobile-safe-right);
}
.phone-table-footer-mode .mobile-table-avatar {
 flex:none; display:grid; place-items:center; width:28px; height:28px;
 overflow:hidden; border:1px solid #d1ae61; border-radius:50%;
 font:700 11px/1 Arial,sans-serif;
}
.phone-table-footer-mode .mobile-table-avatar img { width:100%; height:100%; object-fit:cover; }
.mobile-table-avatar-initials { background:linear-gradient(145deg,#f4d99a,#a67e35); color:#201609; }
.phone-table-footer-mode .mobile-own-profile-button {
 grid-row:1/3; align-self:center; display:grid; place-items:center;
 width:30px; height:30px; min-width:30px; min-height:30px;
 border:0; padding:0; background:none;
}
.phone-table-footer-mode .mobile-own-profile-button .mobile-table-avatar { width:30px; height:30px; }
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) .phone-fitted-status {
 right:auto !important; transform:none !important; width:max-content; max-width:46%; text-align:left;
}
.phone-table-footer-mode .mobile-table-footer {
 position:absolute; z-index:8; top:var(--mobile-footer-top); inset-inline:0;
 display:grid; grid-template-columns:clamp(128px,21%,168px) minmax(0,1fr) auto; align-items:center; gap:6px;
 height:calc(46px + var(--mobile-safe-bottom)); padding:0 8px var(--mobile-safe-bottom);
 background:#130e09f2; border-top:1px solid #a67e355e;
}
.phone-table-footer-mode .mobile-table-footer .mobile-hand-identity {
 display:grid; grid-template-columns:30px minmax(0,1fr) auto; justify-content:start; align-items:center;
 column-gap:5px; row-gap:2px; margin:0; text-align:left; font-size:11px;
}
.phone-table-footer-mode .mobile-opponent-split:is([data-visual-seat='0'],[data-visual-seat='4']) { translate:0 -4px; }
body .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template) .mobile-opponent-split .vip-split-total {
 top:auto !important; bottom:-4px !important; transform:translateX(-50%);
}
.phone-table-footer-mode .mobile-hand-identity strong {
 grid-area:1/2; overflow:hidden; text-overflow:ellipsis;
}
.phone-table-footer-mode .mobile-hand-identity:not(:has(small)) strong { grid-column:2/-1; }
.phone-table-footer-mode .mobile-hand-identity b { grid-area:2/2/3/-1; }
.phone-table-footer-mode .mobile-hand-identity small { grid-area:1/3; }
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template)
 .mobile-table-footer :is(.bet-controls,.hand-actions,.result-actions,.insurance-actions) {
 position:relative; inset:auto !important; width:100%; min-width:0;
 height:40px; padding:0 !important; max-height:none;
}
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template)
 .mobile-table-footer .bet-controls .vip-bet-chip { --vip-chip-square:40px; }
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template)
 .mobile-table-footer .insurance-actions { grid-template-rows:40px; }
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template)
 .mobile-table-footer .insurance-actions > p {
 position:absolute; bottom:calc(100% + 4px); right:max(155px,19vw); margin:0; translate:none;
}
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template):has(.mobile-own-hand)
 .table-status {
 bottom:auto !important; top:calc(var(--mobile-footer-top) - 32px) !important;
 right:max(160px,20vw) !important;
}
body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template):has(.mobile-own-hand)
 .mobile-table-footer .table-status {
 position:static; inset:auto !important; grid-column:3; width:clamp(92px,16vw,146px) !important;
 max-width:100%; white-space:normal; height:auto !important; text-align:center;
}
body .stage.premium-table.phone-table-footer-mode .mobile-own-hand:not(.mobile-own-split) .mobile-own-total {
 position:absolute; inset:auto auto -4px 50% !important; transform:translateX(-50%); translate:none;
}
body .stage.premium-table.vip-template.mobile-hand-table:has(.mobile-own-hand) .insurance-actions > p {
 justify-self:end; width:min(22vw,176px); margin-right:8px; white-space:normal; line-height:1.05;
}
@media(max-width:700px) and (max-height:500px) {
 body .stage.premium-table.mobile-hand-table:not(.phone-table-footer-mode) .mobile-own-split .mobile-own-total {
  bottom:15px !important;
 }
 .phone-table-footer-mode .mobile-table-footer:has(.bet-controls) {
  grid-template-columns:116px minmax(0,1fr) auto;
 }
 body.phone-landscape .stage.premium-table.vip-template.phone-table-footer-mode:is([data-salon='vip'],.salon-template)
  .mobile-table-footer .bet-controls > .primary {
  width:112px; min-width:0; padding-inline:7px;
 }
 body .stage.premium-table.vip-template.mobile-hand-table:has(.mobile-own-hand) .insurance-actions > p {
  width:min(18vw,120px); translate:-117px 0;
 }
}
body .stage.premium-table.phone-table-footer-mode .mobile-own-split .hand-group .mobile-own-total,
body .stage.premium-table.phone-table-footer-mode .mobile-own-split .hand-group:first-child .mobile-own-total {
 position:absolute; inset:auto auto -4px 50% !important; transform:translateX(-50%);
}

.seat-picker {
 display:grid; gap:6px; margin-block:12px; padding:10px;
 border:1px solid var(--border); border-radius:14px;
 background:radial-gradient(ellipse at top,#3b3023,#191510 76%); text-align:center;
}
#dialog .seat-picker-heading { margin:0; color:var(--gold); font-weight:700; }
.seat-picker-dealer { color:#c4b493; font-size:11px; letter-spacing:.12em; }
.seat-picker-row { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:5px; }
#dialog .seat-picker-row > button { width:100%; min-height:44px; padding:4px; margin:0; }
.seat-picker-row > button[aria-pressed='true'] {
 color:#231a0d; background:linear-gradient(145deg,#f3dfad,#c49c52);
 border-color:#f6dda0;
}
#dialog .seat-picker-status { margin:0; min-height:1.4em; font-size:12px; }
.buyin-amount-controls { display:contents; }
@media (max-height:430px) and (orientation:landscape) {
 #dialog[data-kind='buy-in']:has(.seat-picker) .dialog-inner { padding:12px; }
 #dialog[data-kind='buy-in']:has(.seat-picker) h2 { margin:0 0 4px; }
 #dialog[data-kind='buy-in']:has(.seat-picker) #dialog-body > p { margin:2px 0; }
 #dialog[data-kind='buy-in'] .seat-picker {
  grid-template-columns:1fr auto 1fr; align-items:center; margin-block:5px; padding:6px; gap:4px;
 }
 #dialog[data-kind='buy-in'] .seat-picker-row { grid-column:1/-1; grid-row:2; }
 #dialog[data-kind='buy-in'] .seat-picker-status { grid-column:3; grid-row:1; }
 #dialog[data-kind='buy-in']:has(.seat-picker) .buyin-amount-controls {
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,150px); align-items:center; gap:12px;
 }
 #dialog[data-kind='buy-in']:has(.seat-picker) .buyin-amount-controls > input { margin:2px 0; min-height:32px; }
 #dialog[data-kind='buy-in']:has(.seat-picker) .buyin-choices button { min-height:32px; padding:4px; margin-top:3px; }
 #dialog[data-kind='buy-in']:has(.seat-picker) .buyin-actions button { min-height:40px; padding:4px 12px; margin-top:4px; }
}

.blackjack-rule-list { margin:0; padding-inline-start:1.3em; line-height:1.5; }
.blackjack-rule-list li + li { margin-top:.5em; }
#dialog .result-detail .compact-cards .playing-card {
 --card-height:clamp(38px,7vh,58px); --card-width:calc(var(--card-height) * .7);
}
#dialog .compact-cards .premium-card-art { object-fit:contain; }
body .stage.premium-table.vip-template .topbar .balance > small { font-size:clamp(11px,1cqh,14px); }



@media (max-aspect-ratio:1/1) {
 body:not(.landscape-required) .stage.premium-table#stage {
  height:100dvh !important; min-height:0; overflow:hidden;
 }
 body:not(.landscape-required) #stage.premium-table #surface > .topbar {
  display:flex; flex-wrap:nowrap; align-items:center;
  height:clamp(46px,7vw,64px); inset:0 0 auto; padding-inline:10px; gap:clamp(4px,1vw,10px);
 }
 body:not(.landscape-required) #stage.premium-table .topbar > :is(button,.balance) { flex:none; }
 body:not(.landscape-required) #stage.premium-table .topbar > .balance { margin-inline-start:auto; }
 body:not(.landscape-required) #stage.premium-table .topbar > button {
  width:clamp(27px,5vw,40px); height:34px; min-width:0; min-height:0;
 }
 body:not(.landscape-required) #stage.premium-table .topbar > .vip-test-toggle { width:auto; }
 body:not(.landscape-required) #stage.premium-table .topbar .vip-test-label { display:none; }
 body:not(.landscape-required) #stage.premium-table .topbar .vip-test-compact { display:inline; }
 body:not(.landscape-required) #stage.premium-table .topbar > .brand { min-width:0; flex:0 1 auto; }
 body:not(.landscape-required) #stage.premium-table .topbar .brand > span:first-child {
  font-size:clamp(10px,2vw,20px); overflow:hidden; text-overflow:ellipsis;
 }
 body:not(.landscape-required) #stage.premium-table #surface > :is(.actions,.bet-controls,.result-actions) {
  top:auto !important; bottom:12px !important; left:8px !important; right:8px !important;
  display:flex; height:48px; min-height:48px; justify-content:center; gap:6px;
 }
 body:not(.landscape-required) #stage.premium-table #surface > .bet-controls .vip-bet-chip { --vip-chip-square:40px; }
 body:not(.landscape-required) #stage.premium-table #surface > :is(.round-result,.table-status) {
  top:auto !important; bottom:64px !important; height:auto; min-height:24px;
 }
 body:not(.landscape-required) #stage.premium-table .premium-table-seal {
  top:calc(clamp(46px,7vw,64px) + 8px);
 }
}
body.phone-landscape #stage.phone-table-footer-mode #surface > .topbar .brand {
 align-self:start; padding-top:calc(env(safe-area-inset-top,0px) + 2px); line-height:1;
}
@media (max-width:700px) and (max-height:500px) {
 .phone-table-footer-mode .mobile-table-footer:has(.bet-controls) {
  grid-template-columns:max-content minmax(0,1fr);
  column-gap:8px;
 }
}


.salon-quick { width:min(100%,360px); }
.salon-table-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-block:16px; }
.salon-table-card { display:grid; gap:8px; min-width:0; margin:0; padding:12px; }
.salon-table-card :is(h2,p,button) { margin:0; }
.salon-seat-dots { display:flex; gap:6px; }
.salon-seat-dots :is(.avatar,.salon-empty-seat) { display:block; width:28px; height:28px; min-width:0; margin:0; border-radius:50%; }
.salon-empty-seat { border:1px solid #c8ab6060; background:#c8ab6015; }
@media(min-width:1400px) { .salon-table-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media(max-width:950px) { .salon-table-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }

.private-table-form { display:grid; gap:10px; }
.private-table-form select { min-height:44px; padding:6px; }
.private-invite-friends label { display:flex; gap:8px; align-items:center; }
.host-badge { color:var(--gold); }
