:root{color-scheme:light;--ink:#e7eeeb;--panel:#f3f6f3;--panel2:#d7e3dd;--mint:#24745b;--mint2:#24745b;--coral:#a83f52;--paper:#243b34;--muted:#52685f;--line:#b2c5bc;--gold:#795800;--shadow:0 16px 40px #243b3422}
:root{--metric-rating:#24745b;--metric-xp:var(--gold);--metric-credit:var(--gold)}


*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%;font-family:"Trebuchet MS",system-ui,sans-serif;background:#e7eeeb;color:var(--paper)}button,input{font:inherit}button{color:inherit}
body{background:radial-gradient(circle at 80% 10%,#e7eeeb 0,transparent 35%),radial-gradient(circle at 25% 90%,#e7eeeb 0,transparent 40%),var(--ink)}
.shell{display:block;min-height:100vh}.side{display:none}
.brand{font-size:23px;font-weight:900;letter-spacing:.3px;display:flex;align-items:center;gap:10px;margin:0 8px 24px}.brand-mark{width:34px;height:34px;border-radius:11px 11px 15px 15px;background:var(--mint);display:grid;place-items:center;color:#243b34;transform:rotate(-4deg);box-shadow:inset 0 -5px #243b34}.brand-mark:after{content:'●';font-size:14px;background:white;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;color:#243b34}
.nav-title{color:#52685f;font-size:12px;margin:20px 10px 8px;text-transform:uppercase;letter-spacing:1.2px}.nav-btn{width:100%;border:0;background:transparent;padding:11px 12px;border-radius:9px;text-align:left;color:#52685f;display:flex;gap:11px;align-items:center;cursor:pointer;font-weight:700}.nav-btn:hover,.nav-btn.active{background:#d7e3dd;color:#52685f}.nav-btn .hash{color:#52685f;font-size:21px}.side-foot{position:absolute;bottom:20px;left:14px;right:14px;border-top:1px solid #b2c5bc;padding-top:18px}.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--mint);margin-right:8px;box-shadow:0 0 10px var(--mint)}
.main{min-width:0}.top{height:68px;border-bottom:1px solid #b2c5bc;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(10px,3vw,30px);background:#e7eeebd9;position:sticky;top:0;z-index:3;backdrop-filter:blur(9px)}.top h1{min-width:0;overflow:hidden;margin:0;font-size:20px;text-overflow:ellipsis;white-space:nowrap}.top-title{display:flex;align-items:center;gap:7px;line-height:1}.top-title-logo{display:block;width:1.4em;height:1.4em;object-fit:contain;flex:0 0 auto}.controls{display:flex;flex:0 0 auto;gap:6px}.header-icon-btn{width:34px;height:34px;padding:0;border:1px solid var(--line);border-radius:9px;background:#f3f6f3;color:#52685f;display:grid;place-items:center;cursor:pointer}.header-icon-btn:hover{background:#d7e3dd}.ui-icon{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.desktop-reaction-btn{display:none}.reaction-menu{position:fixed;z-index:1010;width:244px;max-height:216px;padding:10px;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;border:1px solid #51677a;border-radius:19px;background:#203247f2;box-shadow:0 16px 34px #07101c80;transform-origin:var(--reaction-origin-x,50%) var(--reaction-origin-y,50%);will-change:transform,opacity;backface-visibility:hidden;animation:reaction-menu-pop .18s cubic-bezier(.2,.75,.25,1) both}.reaction-menu[hidden]{display:none}.reaction-menu button{display:grid;place-items:center;min-width:0;aspect-ratio:1;border:0;border-radius:12px;background:transparent;cursor:pointer}.reaction-menu button:hover,.reaction-menu button:focus-visible{outline:0;background:#d7e3dd17}.reaction-menu button:active{transform:scale(.86)}.reaction-menu button:disabled{opacity:.4;cursor:default}.reaction-menu img{display:block;width:43px;height:43px}.room-reaction-layer{position:fixed;inset:0;z-index:1005;overflow:hidden;pointer-events:none}.room-reaction{position:absolute;left:var(--reaction-x);top:var(--reaction-y);width:56px;height:56px;contain:layout paint;will-change:transform,opacity;backface-visibility:hidden;filter:drop-shadow(0 5px 4px #07101c55);animation:room-reaction-drop 2.45s linear both}.room-reaction-icon{display:block;width:56px;height:56px}@keyframes reaction-menu-pop{from{opacity:0;transform:translate3d(0,-4px,0) scale(.9)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}@keyframes room-reaction-drop{0%{opacity:0;transform:translate3d(-50%,-10px,0) scale(.84);animation-timing-function:cubic-bezier(.2,.75,.25,1)}16%{opacity:1;transform:translate3d(-50%,1px,0) scale(1.04);animation-timing-function:cubic-bezier(.25,.1,.25,1)}30%{opacity:1;transform:translate3d(-50%,8px,0) scale(1)}72%{opacity:1;transform:translate3d(-50%,29px,0) scale(1);animation-timing-function:cubic-bezier(.4,0,1,1)}100%{opacity:0;transform:translate3d(-50%,52px,0) scale(.94)}}@media(pointer:fine){.desktop-reaction-btn{display:grid}}
.header-control-icon{width:18px;height:18px}.desktop-reaction-btn{align-items:center;justify-items:center;line-height:0}.reaction-trigger-eye{fill:currentColor;stroke:none}
.country-flag{display:inline-block!important;grid-area:auto!important;flex:0 0 18px!important;width:18px!important;min-width:18px!important;height:18px!important;object-fit:contain;vertical-align:baseline}.player-name-with-flag{display:inline-flex!important;align-items:center;min-width:0;gap:4px}.player-name-with-flag>.player-name-text{grid-area:auto!important;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-name-with-flag>.country-flag,.scorebar .country-flag{flex-basis:1em!important;width:1em!important;min-width:1em!important;height:1em!important;transform:none}.host-user-actions{align-items:center}.history-name-row>.country-flag{flex-basis:24px!important;width:24px!important;min-width:24px!important;height:24px!important;transform:none}
.content{max-width:1180px;margin:auto;padding:34px}.hero{margin-bottom:28px}.eyebrow{color:var(--mint2);font-weight:900;text-transform:uppercase;letter-spacing:2px;font-size:12px}.hero h2{font-size:36px;line-height:1.05;margin:8px 0 5px;font-weight:900}.hero p{color:#52685f;margin:0;max-width:620px}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.game-card{background:linear-gradient(145deg,#d7e3dd,#d7e3dd);border:1px solid #b2c5bc;border-radius:22px;padding:13px 13px 20px;box-shadow:var(--shadow);cursor:pointer;transition:.22s transform,.22s border-color;text-align:left}.game-card:hover{transform:translateY(-6px) rotate(-.4deg);border-color:#b2c5bc}.thumb{height:210px;border-radius:15px;background:#d8faf3;overflow:hidden;display:grid;place-items:center;position:relative}.game-card h3{font-size:24px;margin:16px 8px 2px;font-weight:900;text-transform:uppercase;letter-spacing:-.5px}.game-card p{margin:0 8px;color:#52685f;font-size:14px}.mini-grid{display:grid;grid-template-columns:repeat(8,1fr);width:180px;height:180px;box-shadow:0 8px 20px #27475f44}.mini-grid i{background:#dff9f4}.mini-grid i:nth-child(16n+2),.mini-grid i:nth-child(16n+4),.mini-grid i:nth-child(16n+6),.mini-grid i:nth-child(16n+8),.mini-grid i:nth-child(16n+9),.mini-grid i:nth-child(16n+11),.mini-grid i:nth-child(16n+13),.mini-grid i:nth-child(16n+15){background:#4bc5aa}.mini-grid b{position:absolute;width:20px;height:20px;border-radius:50%;background:#26384c;box-shadow:inset 0 -3px #152437}.mini-grid b.light{background:#fff;box-shadow:inset 0 -3px #c9d7d5}.ship-thumb{background:linear-gradient(#d8faf3,#bceee6);width:100%;height:100%;position:relative}.sea-dots{position:absolute;inset:16px;background-image:radial-gradient(#4ec9b1 3px,transparent 4px);background-size:25px 25px}.ship-shape{position:absolute;background:#7b2bb9;border-radius:9px;height:19px;box-shadow:inset 0 -4px #5e1e91}.ship-shape:before,.ship-shape:after{content:'';position:absolute;width:19px;height:19px;border-radius:50%;background:inherit}.ship-shape:before{left:-5px}.ship-shape:after{right:-5px}.ship-a{width:90px;left:48px;top:60px}.ship-b{width:65px;right:30px;top:124px;background:#f14c69}.ship-c{width:48px;left:35px;bottom:25px;background:#354ba7}
.modal-wrap{display:grid;place-items:center;min-height:calc(100vh - 68px);padding:28px}.panel{width:min(560px,100%);background:#f3f6f3;border:1px solid #b2c5bc;border-radius:25px;padding:28px;box-shadow:var(--shadow)}.panel h2{margin:0 0 4px;font-size:28px}.panel .sub{color:#52685f;margin:0 0 22px}.label{display:block;color:#52685f;font-size:13px;font-weight:800;margin:14px 0 7px}.input{width:100%;border:1px solid #b2c5bc;background:#d7e3dd;color:white;border-radius:12px;padding:13px 14px;outline:none}.input:focus{border-color:var(--mint)}.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#d7e3dd;padding:5px;border-radius:13px}.seg button{border:0;background:transparent;padding:11px;border-radius:9px;cursor:pointer;font-weight:800}.seg button.active{background:var(--panel2);box-shadow:0 2px 10px #0003}.primary,.secondary,.danger{border:0;border-radius:13px;padding:13px 18px;font-weight:900;cursor:pointer}.primary,.danger{color:#ffffff;box-shadow:inset 0 -4px var(--button-edge);text-shadow:none}.primary{--button-edge:#2fa78d;background:var(--mint)}.primary:hover,.danger:hover{filter:brightness(1.08)}.primary:disabled,.danger:disabled{opacity:.45;cursor:not-allowed}.secondary{background:#d7e3dd;border:1px solid #b2c5bc}.danger{--button-edge:#c43d63;background:var(--coral)}.actions{display:flex;gap:10px;margin-top:20px}.actions>*{flex:1}.or{display:flex;align-items:center;gap:12px;color:#52685f;margin:22px 0}.or:before,.or:after{content:'';height:1px;background:#d7e3dd;flex:1}.error{background:#6d2940;color:#ffdce4;padding:10px 12px;border-radius:10px;margin:12px 0}.room-code{font-size:34px;letter-spacing:7px;font-weight:900;color:var(--mint2);background:#d7e3dd;border-radius:14px;padding:13px;text-align:center;margin:12px 0}
.game-page{padding:18px 22px 34px;max-width:1280px;margin:auto}.scorebar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:#1c2c3e;border:1px solid #34495d;border-radius:15px;padding:10px 16px;margin-bottom:16px}.player{display:flex;align-items:center;gap:10px;font-weight:800}.player.right{justify-content:flex-end}.avatar{width:35px;height:35px;border-radius:50%;background:var(--paper);border:4px solid #d8e9e5}.player.right .avatar{background:var(--coral);border-color:#f68ca0}.turn-badge{font-size:13px;background:#24384d;color:#a9bac8;padding:7px 11px;border-radius:20px}.turn-badge.live{background:var(--mint);color:#102338}.room-pill{font-size:12px;color:#91a4b5;text-align:center}.room-pill strong{color:white;letter-spacing:2px}.game-tools{display:flex;justify-content:space-between;gap:10px;margin-bottom:14px}.game-tools .hint{color:#a5b4c1}.boards{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}.board-card{background:#24364a;border:1px solid #3b5268;border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}.board-title{padding:13px 16px;text-align:center;font-weight:900;background:#2d4258}.grid{display:grid;aspect-ratio:1;background:#122737;padding:10px;gap:2px}.grid.g10{grid-template-columns:repeat(10,1fr)}.grid.g8{grid-template-columns:repeat(8,1fr)}.cell{border:0;min-width:0;position:relative;display:grid;place-items:center;cursor:pointer;background:#173346;color:white}.sea .cell{background:#102b39}.sea .cell:after{content:'';width:7px;height:7px;border-radius:50%;background:#285e63}.sea.enemy .cell:hover{background:#174758}.sea.enemy .cell:hover:after{background:var(--mint)}.cell.ship{background:#243e59}.cell.ship:before{content:'';position:absolute;inset:20%;border-radius:8px;background:#4931a5;box-shadow:inset 0 -4px #34227e}.cell.hit:before{content:'✹';position:absolute;z-index:2;color:#ffcf55;font-size:24px;text-shadow:0 2px #a94836}.cell.miss:before{content:'○';position:absolute;z-index:2;color:#b8edf0;font-size:25px}.cell.sunk{background:#4b2334}.cell:disabled{cursor:default}.fleet{display:flex;gap:9px;justify-content:center;padding:11px;background:#1c2d3f}.fleet-chip{height:13px;border-radius:7px;background:#6941bd;opacity:.85}.fleet-chip.sunk{background:#7c4051;opacity:.5;text-decoration:line-through}.setup-actions{display:flex;gap:10px;padding:13px}.setup-actions button{flex:1}
.checker-wrap{width:min(76vh,720px);margin:auto}
.checkerboard{padding:0;gap:0;border:8px solid #26394e;box-shadow:var(--shadow);grid-template-columns:repeat(var(--size),1fr)}
.checkerboard .cell{aspect-ratio:1;background:#b9c3c9}
.checkerboard .cell.dark{background:#586a7d}
.checkerboard .cell.dark:hover{filter:brightness(1.1)}
.checkerboard .cell.selected{box-shadow:inset 0 0 0 5px var(--gold)}
.checkerboard .cell.legal:after{content:'';width:28%;height:28%;border-radius:50%;background:var(--mint);box-shadow:0 0 0 5px #4bc5aa33}
.piece{width:75%;height:75%;border-radius:50%;background:#eef7f4;border:3px solid #d6e5e2;box-shadow:inset 0 -7px #cad9d7,0 3px 4px #16233266;display:grid;place-items:center;color:#142334;font-size:22px;font-weight:900;position:relative;z-index:1}
.piece.p1{background:var(--coral);border-color:#f28ba0;box-shadow:inset 0 -7px #ca405c,0 3px 4px #16233266}
.piece.king:after{content:'♛';font-size:60%;color:#f6c453;text-shadow:0 1px #8c6320}
.result{position:fixed;inset:0;background:#d7e3ddbb;display:grid;place-items:center;z-index:8;padding:20px}
.result .panel{text-align:center}
.result .big{font-size:54px;margin:0}
.result h2{font-size:34px}
.toast{position:fixed;right:20px;bottom:20px;background:#d94c68;color:#52685f;border-radius:12px;padding:12px 16px;box-shadow:var(--shadow);z-index:10}
@media(max-width:850px){.shell{display:block}.side{display:none}.top{padding:0 14px}
.content{padding:24px 16px}.cards{grid-template-columns:1fr}.thumb{height:180px}.hero h2{font-size:30px}.boards{grid-template-columns:1fr}.game-page{padding:12px 8px}.scorebar{padding:8px}.player span.name{max-width:90px;overflow:hidden;text-overflow:ellipsis}.checker-wrap{width:100%}.game-tools{align-items:center}.game-tools .hint{font-size:12px}.board-title{padding:10px}.cell.hit:before{font-size:18px}.grid{padding:5px;gap:1px}}
.host-power-btn.host-primary{color:#ff7286;border-color:#8c4655;background:#4c2934}.host-power-btn.host-primary:hover{background:#60313f}.host-power-btn.host-idle{color:#52685f;border-color:#b2c5bc;background:#d7e3dd}.host-power-btn.host-idle:hover{background:#d7e3dd}.host-power-btn.host-offline{color:#52685f;border-color:#b2c5bc;background:#f3f6f3}.host-power-btn.host-offline:hover{background:#d7e3dd}.music-btn,.music-btn.on,.music-btn.off{color:#52685f}.music-off-slash{fill:none!important;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;paint-order:stroke;filter:none}.optional{font-size:11px;color:var(--mint2);font-weight:700;margin-left:4px}.seg.three{grid-template-columns:repeat(3,1fr)}.time-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.time-grid .label{margin-top:14px}select.input{color-scheme:light;cursor:pointer}.input option{background:#d7e3dd;color:#52685f}.player>span{display:flex;flex-direction:column}.player-time{font-size:13px;color:var(--mint2);font-weight:900;line-height:1}.turn-clock{font-size:11px;text-align:center;color:#f7ca67;font-weight:900;margin-top:3px}
.shutdown-page{min-height:100vh;display:grid;place-items:center;padding:24px;text-align:center}.shutdown-page .panel{width:min(520px,100%)}.shutdown-page h1{margin:0 0 8px}
.terminate-actions{margin-top:18px}
.enter-room{width:100%;margin-top:18px}.lobby-entry-actions{display:grid;gap:9px;margin-top:18px}.lobby-entry-actions>button{width:100%;min-width:0}.lobby-path-divider{display:flex;align-items:center;gap:12px;color:#52685f;font-size:12px;font-weight:800}.lobby-path-divider::before,.lobby-path-divider::after{content:'';height:1px;flex:1;background:#d7e3dd}.matchmaking-default-note{margin:0;color:#52685f;font-size:12px;line-height:1.35;text-align:center}.home-game-divider{grid-column:1/-1;margin:1px 0}.matchmaking-progress:not(.matching)::before{display:none}.room-progress-control.matchmaking-progress>span{color:#ffffff!important;text-shadow:none}.matchmaking-progress.matching{background:var(--mint);box-shadow:inset 0 -4px #174d33}.matchmaking-progress.matching::before{display:block;inset:0 auto 4px 0;width:38%;transform:none;background:#d7e3dd;box-shadow:none;animation:matchmaking-progress-sweep 1.35s linear infinite}@keyframes matchmaking-progress-sweep{from{translate:-110% 0}to{translate:365% 0}}.gift-settings{display:grid;grid-template-columns:1.35fr repeat(3,.65fr);gap:10px;align-items:end;margin-top:12px;padding:12px;border-radius:14px;background:var(--panel2)}.gift-settings .label{margin:0 0 3px}.gift-settings small{display:block;color:var(--muted);line-height:1.25}.gift-settings label>span{display:block;color:var(--muted);font-size:11px;font-weight:800;margin-bottom:5px}.gift-settings .input{padding:9px}.round-pill{font-size:10px;color:#91a4b5;text-align:center;margin-top:3px}
.weapons{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:11px;background:#1c2d3f}.weapon{position:relative;border:2px solid transparent;background:#f7f9fa;color:#233448;border-radius:10px;min-height:66px;padding:6px 4px 7px;cursor:pointer;transition:.18s transform,.18s border-color,.18s filter}.weapon:hover{transform:translateY(-3px);filter:brightness(1.03)}.weapon.active{border-color:var(--coral);border-style:dashed;box-shadow:0 0 0 3px #f05d7833}.weapon:disabled{opacity:.4;cursor:not-allowed;transform:none}.weapon>span{display:block}.weapon-icon{width:34px;height:34px;margin:0 auto 2px}.weapon-icon img{display:block;width:100%;height:100%;object-fit:contain}.weapon small{display:block;font-size:9px;font-weight:900;line-height:10px}.weapon b{position:absolute;right:-4px;top:-5px;min-width:20px;height:20px;border-radius:10px;padding:2px 5px;background:var(--mint);color:#102338;font-size:11px}
.move-ghost{border-radius:50%;box-shadow:none!important}.capture-burst{position:absolute;left:50%;top:50%;width:12px;height:12px;border-radius:50%;background:var(--gold);z-index:4;animation:capturePop .65s ease-out forwards}@keyframes capturePop{0%{transform:translate(-50%,-50%) scale(.2);opacity:1;box-shadow:0 0 0 0 #f6c453}70%{opacity:1;box-shadow:0 0 0 26px #f6c45300}100%{transform:translate(-50%,-50%) scale(2.5);opacity:0}}
.sea{container-type:inline-size}.sea .gift-mark{position:absolute;left:50%;top:50%;z-index:8;transform:translate(-50%,-50%);color:#ff1028;font-family:Arial Black,Arial,sans-serif;font-size:clamp(16px,calc(88cqi / var(--size)),64px);font-style:normal;font-weight:1000;line-height:1;text-shadow:none}
.move-ghost.piece{border:3px solid #19594f;background:#eef8f5;box-shadow:none}.move-ghost.piece.p1{background:#19594f;border-color:#123f39}.move-ghost.piece.king:after{content:'';width:48%;height:40%;background:#19594f;clip-path:polygon(0 18%,18% 38%,32% 0,50% 35%,68% 0,82% 38%,100% 18%,86% 100%,14% 100%)}.move-ghost.piece.p1.king:after{background:#eef8f5}
.logo-board{display:grid;width:min(92%,320px);aspect-ratio:1;overflow:hidden;border-radius:4px;background:#bff0e8}.battle-logo{grid-template-columns:repeat(10,1fr);padding:8px;gap:1px}.battle-logo i{position:relative;display:grid;place-items:center;background:radial-gradient(circle,#48c4b0 0 2px,transparent 3px)}.battle-logo i.blue:after,.battle-logo i.purple:after,.battle-logo i.red:after,.battle-logo i.green:after{content:'';width:80%;aspect-ratio:1;border-radius:50%;background:#36a2e3;box-shadow:inset 0 -3px #237db5}.battle-logo i.purple:after{background:#8b36b4;box-shadow:inset 0 -3px #642782}.battle-logo i.red:after{background:#ef4d65;box-shadow:inset 0 -3px #c7354a}.battle-logo i.green:after{background:#328e80;box-shadow:inset 0 -3px #23675e}.battle-logo b{font-size:30px;color:#ef304f;line-height:1}.checker-logo{grid-template-columns:repeat(8,1fr);padding:0}.checker-logo i{display:grid;place-items:center;background:#d8f5ee}.checker-logo i:nth-child(16n+2),.checker-logo i:nth-child(16n+4),.checker-logo i:nth-child(16n+6),.checker-logo i:nth-child(16n+8),.checker-logo i:nth-child(16n+9),.checker-logo i:nth-child(16n+11),.checker-logo i:nth-child(16n+13),.checker-logo i:nth-child(16n+15){background:#4ebc9e}.checker-logo b{width:68%;aspect-ratio:1;border-radius:50%;background:#19594f;border:2px solid #123f39}.checker-logo b.light{background:#eef8f5}
.explosion,.water-burst{position:absolute;left:50%;top:50%;z-index:8;pointer-events:none}.explosion{width:16px;height:16px;border-radius:50%;background:#fff5a8;box-shadow:0 0 0 8px #ffb22e,0 0 0 17px #f05d78aa;animation:explode .72s cubic-bezier(.12,.75,.2,1) both}.explosion:before,.explosion:after{content:'';position:absolute;left:50%;top:50%;width:48px;height:7px;border-radius:50%;background:linear-gradient(90deg,transparent,#ffcb4c,transparent);transform:translate(-50%,-50%) rotate(45deg)}.explosion:after{transform:translate(-50%,-50%) rotate(-45deg)}@keyframes explode{0%{transform:translate(-50%,-50%) scale(.05);opacity:0}25%{opacity:1}100%{transform:translate(-50%,-50%) scale(1.5) rotate(30deg);opacity:0}}
.water-burst{width:10px;height:10px;border:3px solid #c7f8ff;border-radius:50%;animation:splash .72s ease-out both}.water-burst:before,.water-burst:after{content:'';position:absolute;width:5px;height:9px;border-radius:60% 60% 50% 50%;background:#7ee7f2;left:-10px;top:-8px;transform:rotate(-35deg)}.water-burst:after{left:12px;transform:rotate(35deg)}@keyframes splash{0%{transform:translate(-50%,-50%) scale(.1);opacity:0}30%{opacity:1}100%{transform:translate(-50%,-50%) scale(2);opacity:0}}
@media(max-width:850px){.time-grid{grid-template-columns:1fr}.gift-settings{grid-template-columns:repeat(3,1fr)}.gift-settings>div{grid-column:1/-1}.weapons{gap:4px;padding:7px}.weapon{min-height:58px}.weapon small{display:none}.weapon>span{font-size:22px}.scorebar{grid-template-columns:1fr auto 1fr}.player-time{font-size:11px}.game-tools{justify-content:center;text-align:center}.thumb{height:auto;aspect-ratio:1.45}.logo-board{width:min(86%,300px)}}
@media(max-width:430px){.top{height:58px}.top h1{font-size:17px}.modal-wrap{padding:14px;min-height:calc(100vh - 58px)}.panel{padding:20px 16px;border-radius:18px}.scorebar{gap:4px;padding:7px 5px}.avatar{width:28px;height:28px;border-width:3px}.player{gap:5px;font-size:12px}.player span.name{max-width:68px}.turn-badge{font-size:11px;padding:6px 8px}.game-page{padding:8px 4px 24px}.boards{gap:12px}.grid{padding:3px}.checkerboard{padding:0}.weapons{position:sticky;bottom:0;z-index:6}.game-card h3{font-size:21px}}

/* Screenshot-matched game surfaces. These colors stay fixed in both themes. */
.game-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:980px}.game-tab{min-height:80px;border:1px solid #b2c5bc;border-radius:14px;background:#d7e3dd;color:#52685f;padding:12px 16px;text-align:left;cursor:pointer;font-size:20px;font-weight:900;transition:transform .18s,border-color .18s}.game-tab.has-art{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:12px;overflow:hidden;background:#d7e3dd}.game-tab.has-art:before{content:'';position:absolute;z-index:-1;top:0;right:0;height:100%;width:auto;aspect-ratio:var(--game-entry-art-ratio,4/1);background-image:var(--game-entry-art);background-position:right center;background-size:cover;background-repeat:no-repeat;-webkit-mask-image:linear-gradient(to right,transparent,#000 35%);mask-image:linear-gradient(to right,transparent,#000 35%)}.game-tab.has-art span{position:relative;z-index:1;grid-column:1;min-width:0;line-height:1.12;text-shadow:0 2px 9px #243b34dd}.game-tab:hover{transform:translateY(-3px);border-color:#b2c5bc}.game-tab span{display:block}
.map-size{display:block;margin-top:10px}.player-line{display:flex;align-items:center;gap:9px}.player.right .player-line{flex-direction:row-reverse}.score{min-width:30px;height:30px;padding:4px 7px;border-radius:15px;background:#12bfa0;color:#fff;text-align:center;font-size:15px;line-height:22px;box-shadow:inset 0 -2px #087d6c}.pawn-loss{color:#9ddfd3;font-size:15px;font-weight:900;white-space:nowrap}.result-panel{width:min(620px,100%);text-align:center}.result-panel h2{font-size:clamp(42px,8vw,76px);line-height:1;margin:8px 0 24px}.final-score{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;padding:18px;border-radius:14px;background:var(--panel2);margin-bottom:20px}.final-score span{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:8px;font-weight:800}.final-score span:last-child{justify-content:flex-start}.final-score strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.final-score b{display:inline-grid;flex:0 0 auto;place-items:center;min-width:34px;height:34px;border-radius:17px;background:#12bfa0;color:#fff}.final-score i{color:var(--muted)}.result-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.solitaire-result-panel{width:min(540px,100%)}.solitaire-result-summary{display:grid;justify-items:center;gap:10px;padding:20px;margin-bottom:20px;border-radius:16px;background:var(--panel2)}.solitaire-result-suits{display:flex;justify-content:center;gap:clamp(12px,5vw,26px);font-size:clamp(30px,8vw,48px);line-height:1}.solitaire-result-suits i{color:var(--paper);font-style:normal;text-shadow:none}.solitaire-result-suits i:nth-child(2),.solitaire-result-suits i:nth-child(3){color:var(--coral)}.solitaire-result-summary p{margin:0;color:var(--muted);font-weight:800}.solitaire-result-summary strong{display:grid;justify-items:center;color:var(--mint);font-size:38px;line-height:1}.solitaire-result-summary strong small{margin-top:5px;color:var(--muted);font-size:10px;letter-spacing:2px}
.xp-result{display:grid;gap:7px;margin:0 0 18px;padding:12px 14px;border:1px solid #b2c5bc;border-radius:13px;background:#d7e3dd;text-align:left}.xp-result-top,.xp-result-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}.xp-result-top strong,.xp-result-top .xp-level-badge{color:var(--gold);font-size:22px;font-weight:950;line-height:1}.xp-result.animate .xp-result-top strong{animation:xpGainPop .65s .5s cubic-bezier(.2,1.45,.4,1) both}.xp-result-track{position:relative;display:block;overflow:hidden;height:8px;border-radius:999px;background:#c6d5c3}.xp-result-track b{display:block;width:var(--xp-to);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--mint),var(--gold));box-shadow:0 0 10px #243b3488}.xp-result.animate .xp-result-track b{width:var(--xp-from);animation:xpProgressFill 1.2s .5s cubic-bezier(.16,1,.3,1) forwards}.xp-result.animate:not(.level-up) .xp-result-track::before{content:'';position:absolute;z-index:2;top:0;bottom:0;left:clamp(0px,calc(var(--xp-to) - 13px),calc(100% - 26px));width:26px;border-radius:999px;background:radial-gradient(circle at center,#fff7c8 0 10%,#c69500cc 28%,#24745b55 58%,transparent 76%);opacity:0;filter:blur(.2px);animation:xpGainBeacon 1.2s .5s cubic-bezier(.16,1,.3,1) both}.xp-result.animate:not(.level-up) .xp-result-track::after{content:'';position:absolute;z-index:1;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px #c6950000,0 0 0 #c6950000;animation:xpTrackPulse 1.2s .5s ease-out both}.xp-result-foot{color:#52685f;font-size:12px;font-weight:850}.xp-progress-count{margin-left:auto}.xp-rating{display:flex;align-items:center;justify-content:flex-start;gap:5px;min-width:0;font-size:inherit;font-style:normal;font-weight:900;white-space:nowrap}.xp-rating b{color:inherit}.xp-rating em{color:var(--mint2);font-style:normal}.xp-result.level-up{border-color:#9a7945;box-shadow:inset 0 0 24px #c6950012}.xp-result.animate.level-up .xp-result-track b{animation:xpProgressLevelUp 2.4s .5s linear forwards}.xp-result.animate.level-up .xp-level-badge{transform-origin:center;animation:xpLevelCelebrate 1.1s 1.844s ease-in-out both}@keyframes xpProgressFill{to{width:var(--xp-to)}}@keyframes xpGainBeacon{0%{opacity:0;transform:scaleX(.35)}18%{opacity:1;transform:scaleX(.72)}62%{opacity:.95;transform:scaleX(1.18)}100%{opacity:0;transform:scaleX(1.45)}}@keyframes xpTrackPulse{0%,100%{box-shadow:inset 0 0 0 1px #f6c45300,0 0 0 #f6c45300}24%{box-shadow:inset 0 0 0 1px #f6c45377,0 0 8px #f6c45366}70%{box-shadow:inset 0 0 0 1px #50d4ba44,0 0 5px #50d4ba44}}@keyframes xpProgressLevelUp{0%{width:var(--xp-from);animation-timing-function:cubic-bezier(.16,1,.3,1)}38%{width:100%}56%{width:100%}56.1%{width:0;animation-timing-function:cubic-bezier(.16,1,.3,1)}100%{width:var(--xp-to)}}@keyframes xpLevelCelebrate{0%,100%{transform:none}18%{transform:translateY(-5px) scale(1.08) rotate(-2deg)}32%{transform:translateY(-5px) scale(1.1) rotate(2deg)}46%{transform:translateY(-5px) scale(1.1) rotate(-2deg)}60%{transform:translateY(-5px) scale(1.08) rotate(1deg)}78%{transform:translateY(-2px) scale(1.03)}}@keyframes xpGainPop{0%{opacity:0;transform:translateY(8px) scale(.78)}100%{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.xp-result.animate .xp-result-top strong,.xp-result.animate .xp-result-track b,.xp-result.animate.level-up .xp-level-badge{animation:none}.xp-result.animate .xp-result-track b{width:var(--xp-to)}.xp-result.animate .xp-result-track::before,.xp-result.animate .xp-result-track::after{display:none;animation:none}}
.xp-result.animate.timeline-driven:not(.animation-complete) .xp-result-track b{animation:xpBarBreathe 1.2s .5s ease-in-out infinite}.xp-result.animate.timeline-driven.animation-complete .xp-result-track b{animation:none}.xp-rating{color:var(--metric-rating)}
.xp-result-track::before,.xp-result-track::after{content:none!important}
.xp-result{position:relative}
.xp-result.level-up{border-color:#b2c5bc;box-shadow:none}
.xp-result.level-up.level-crossed{border-color:#d4a83f;box-shadow:inset 0 0 22px #c6950012}
.xp-gold-chase{position:absolute;z-index:2;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);overflow:visible;opacity:0;pointer-events:none}.xp-gold-chase rect{x:1px;y:1px;width:calc(100% - 2px);height:calc(100% - 2px);rx:14px;ry:14px;fill:none;stroke:#c69500;stroke-width:2.5;stroke-linecap:round;stroke-dashoffset:0;filter:drop-shadow(0 0 2px #c6950099)}.xp-result.level-up.level-crossed .xp-gold-chase{opacity:1}.xp-result.level-up.level-crossed .xp-gold-chase rect{animation:xpGoldChase 8s linear infinite}
@keyframes xpGoldChase{to{stroke-dashoffset:-100}}
.xp-result-track,.xp-result-track b{overflow:visible}
.xp-result-track b{position:relative;top:0;height:100%;box-shadow:none}
.xp-result.animate .xp-result-track b::after{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 50% 100%,#f4fff5c7 0 26%,transparent 62%) 0 0/32px 11px repeat-x,radial-gradient(ellipse at 50% 0,#ffe49aa6 0 24%,transparent 60%) 16px 0/39px 10px repeat-x;opacity:0;pointer-events:none;transition:opacity .28s ease-in-out}
.xp-result.animate.timeline-driven .xp-result-track b::after{animation:xpCurrentFlow .82s linear infinite}.xp-result.animate.timeline-driven.animation-running:not(.animation-complete) .xp-result-track b::after{opacity:.9}.xp-result.animate.timeline-driven.animation-complete .xp-result-track b::after{opacity:0}
@keyframes xpBarBreathe{0%,100%{top:0;height:100%;box-shadow:0 0 0 #2ad2b500}50%{top:-10%;height:120%;box-shadow:0 0 6px #2ad2b566}}
@keyframes xpCurrentFlow{0%{background-position:-32px 0,-23px 0}100%{background-position:0 0,9px 0}}
@media(prefers-reduced-motion:reduce){.xp-result.animate .xp-result-track b::after{display:none!important;animation:none!important}.xp-result.level-up.level-crossed .xp-gold-chase rect{animation:none}}
.sea{grid-template-columns:repeat(var(--size),1fr);background:#091925;padding:0;gap:0;border:6px solid #203246}.sea .cell{aspect-ratio:1;background:#091925}.sea .cell:after{width:20%;height:auto;aspect-ratio:1;background:#155057}.sea.enemy .cell:hover{background:#102c38}.sea.enemy .cell:hover:after{background:#23baa9}.sea .cell.gift:after{display:none}.cell.ship{background:#091925}.cell.ship:before{content:'';inset:7%;border-radius:34%;background:#f13f45;box-shadow:none;display:grid;place-items:center;color:transparent;font-size:0;line-height:1}.cell.hit:before{content:'✹';color:#ffca3a;background:none}.cell.miss:before{content:'○';color:#a5b2ba;background:none}.board-card{background:#17293a;border-color:#2b4052}.board-title{background:#1b2e40}.fleet,.weapons{background:#132536}
.checker-wrap{width:min(calc(100vh - 160px),826px,100%);margin:auto;padding:clamp(4px,1vw,8px);border:1px solid #4b6275;border-radius:9px;background:linear-gradient(145deg,#344b60,#1d3042);box-shadow:0 13px 30px #07111d80,inset 0 1px #f3f6f316}
.checkerboard{padding:0;gap:0;overflow:hidden;border:1px solid #172838;border-radius:3px;grid-template-columns:repeat(var(--size),1fr);background:#d0d2cf;box-shadow:inset 0 0 0 1px #ffffff12}
.checkerboard .cell{aspect-ratio:1;padding:0;background-color:#afb8b6;background-image:radial-gradient(circle at 23% 31%,#ffffff0d 0 .6px,transparent 1.1px),radial-gradient(circle at 72% 68%,#26394906 0 .5px,transparent 1px);background-size:19px 23px,29px 31px}
.checkerboard .cell.dark{background-color:#586c7b;background-image:radial-gradient(circle at 23% 31%,#ffffff08 0 .6px,transparent 1.1px),radial-gradient(circle at 72% 68%,#07131d09 0 .5px,transparent 1px);background-size:19px 23px,29px 31px}
.checkerboard .cell.dark:hover{filter:none}
.checkerboard .cell.selected{box-shadow:none}
.checkerboard .cell.selected:before{content:'';position:absolute;left:50%;top:50%;display:block;width:90%;height:auto;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:#795b60;box-shadow:0 0 0 2px #e1b0a333;z-index:0}
.checkerboard .cell.move-origin,.checkerboard .cell.move-target{background:#795b60!important}
.checkerboard .cell.move-origin:before,.checkerboard .cell.move-target:before{display:none}
.checkerboard .cell.legal:after{width:34%;height:auto;aspect-ratio:1;background:#344657;box-shadow:none}
.checkerboard .cell small{position:absolute;z-index:4;color:#536875;font-size:clamp(7px,1.2vw,10px);font-weight:900;line-height:1;pointer-events:none}
.checkerboard .cell.dark small{color:#d2dde0}
.checkerboard .cell .file{right:3px;bottom:2px}
.checkerboard .cell .rank{left:3px;top:2px}
.checkerboard .piece{width:84%;height:auto;aspect-ratio:1;flex:0 0 auto;border:4px solid #344653;border-radius:50%;background:#f3f1eb;box-shadow:inset 0 0 0 1px #7e827814,0 2px 3px #07111d45;transform:none}
.checkerboard .piece.p1{background:#df5e73;border-color:#36333a;box-shadow:inset 0 0 0 1px #562d361c,0 2px 3px #07111d45}
.checkerboard .piece.king:after{content:'';width:54%;height:46%;background:#344653;clip-path:polygon(0 18%,18% 38%,32% 0,50% 35%,68% 0,82% 38%,100% 18%,86% 100%,14% 100%);filter:none;text-shadow:none}
.checkerboard .piece.p1.king:after{background:#fffaf2}
.checkerboard .cell.moving-cell{z-index:40;overflow:visible}
.checkerboard .moving-piece{z-index:50;will-change:transform}
.move-ghost.piece{border:4px solid #344653;background:#f3f1eb}
.move-ghost.piece.p1{background:#df5e73;border-color:#36333a}
.move-ghost.piece.king:after{background:#344653}
.move-ghost.piece.p1.king:after{background:#fffaf2}

.moving-piece{z-index:20;will-change:transform}
@media(max-width:850px){.game-tabs{grid-template-columns:1fr}.checker-wrap{width:min(100%,calc(100vh - 138px))}.sea{border-width:4px}}
@media(max-width:430px){.game-tab{min-height:72px;font-size:16px;padding:10px 16px}.checker-wrap{width:100%}.checkerboard .piece{border-width:3px}.result-actions{grid-template-columns:1fr}.final-score{gap:7px;font-size:12px}}
.sea .cell.sunk{background:#091925}.sea .cell.sunk:after{display:none}.sea .cell.sunk:before{content:'';position:absolute;inset:7%;display:grid;place-items:center;border-radius:34%;background:#f13f45;color:transparent;font-size:0;line-height:1;z-index:6;text-shadow:none;box-shadow:none}
.sea .cell.ship:before{content:'';color:transparent}.sea .cell.ship-0:before{background:#ba3035}.sea .cell.ship-1:before{background:#74288e}.sea .cell.ship-2:before{background:#1082bb}.sea .cell.ship-3:before{background:#39499c}.sea .cell.ship-4:before{background:#087e75}.sea .cell.ship.sunk:before{content:'';background:#f13f45;color:transparent}

/* Shared strategy-game surfaces */
.strategy-wrap{width:min(calc(100vh - 165px),820px,100%);margin:auto;display:grid;gap:8px}.strategy-actions{display:flex;align-items:center;justify-content:center;gap:10px}.strategy-actions .game-note{flex:1}.game-note{text-align:center;color:#aab8c5;font-size:13px;font-weight:800}.coach-description{display:flex;align-items:center;justify-content:center;width:100%;height:34px;min-height:34px;margin:0;padding:0 4px;overflow:hidden;color:#7f96a6;font-size:11px;line-height:1.35;text-align:center}.coach-description strong{flex:0 0 auto;color:#9bafbc;font-weight:800}.coach-description.backup strong{color:#d8ad4a}.coach-description span{display:-webkit-box;min-width:0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.coach-description.thinking{font-style:italic}.coach-placeholder{visibility:hidden}
.side-label{display:block;color:#52685f;font-size:9px;letter-spacing:.8px;text-transform:uppercase}.avatar.go-side.side-0,.avatar.chess-side.side-1{background:#101d2b;border-color:#526475}.avatar.go-side.side-1,.avatar.chess-side.side-0{background:#edf8f5;border-color:#aab8c5}
.go-board{--line:#526475;position:relative;display:grid;grid-template-columns:repeat(var(--size),1fr);width:100%;aspect-ratio:1;padding:3.6%;background-color:#9ca7b1;background-image:linear-gradient(var(--line) 2px,transparent 2px),linear-gradient(90deg,var(--line) 2px,transparent 2px);background-size:calc(92.8% / (var(--size) - 1)) calc(92.8% / (var(--size) - 1));background-position:3.6% 3.6%;border:7px solid #263949;box-shadow:var(--shadow)}.go-point{position:relative;border:0;background:transparent;padding:0;overflow:visible;cursor:pointer}.go-point:disabled{cursor:default}.go-point:empty:not(:disabled):after{content:'';position:absolute;left:50%;top:50%;width:22%;aspect-ratio:1;border-radius:50%;background:#ef6077;transform:translate(-50%,-50%)}.go-point.last .piece:after{content:'';width:22%;aspect-ratio:1;border-radius:50%;background:#ef6077}.go-point .piece,.cc-hole .piece{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:84%;aspect-ratio:1;border-radius:50%;border:3px solid #263949;background:#edf8f5;z-index:2}.go-point .piece.p0,.cc-hole .piece.p0{background:#172532;border-color:#07131e}.go-point .piece.p1,.cc-hole .piece.p1{background:#edf8f5;border-color:#526475}
.cc-board{position:relative;width:100%;aspect-ratio:1.22;background:#101d2b;border:6px solid #263949;border-radius:18px;box-shadow:var(--shadow)}.cc-hole{position:absolute;left:calc(5% + var(--x) * 3.75%);top:calc(5% + var(--y) * 5.625%);width:5.2%;aspect-ratio:1;border-radius:50%;border:0;background:#526475;transform:translate(-50%,-50%);padding:0;cursor:pointer}.cc-hole:disabled{cursor:default}.cc-hole.selected{box-shadow:0 0 0 5px #795b60}.cc-hole .piece{width:145%;border-width:2px}.cc-hole .piece.p0{background:#edf8f5;border-color:#526475}
.chess-board{display:grid;grid-template-columns:repeat(8,1fr);width:100%;aspect-ratio:1;overflow:hidden;background:#d0d2cf;border:clamp(4px,.8vw,7px) solid #263b4e;border-radius:8px;box-shadow:0 13px 30px #07111d80,inset 0 0 0 1px #ffffff18}
.chess-cell{position:relative;display:grid;place-items:center;border:0;padding:0;background-color:#afb8b6;background-image:radial-gradient(circle at 23% 31%,#ffffff0d 0 .6px,transparent 1.1px),radial-gradient(circle at 72% 68%,#26394906 0 .5px,transparent 1px);background-size:19px 23px,29px 31px;aspect-ratio:1;cursor:pointer}
.chess-cell.dark{background-color:#586c7b;background-image:radial-gradient(circle at 23% 31%,#f3f6f308 0 .6px,transparent 1.1px),radial-gradient(circle at 72% 68%,#07131d09 0 .5px,transparent 1px);background-size:19px 23px,29px 31px}
.chess-cell.move-source,.chess-cell.selected{background:#795b60}
.chess-cell.move-target{background:#776b70}
.chess-cell.legal:after{content:'';position:absolute;width:24%;aspect-ratio:1;border-radius:50%;background:#12bfa0;z-index:3}
.chess-cell.legal:has(.chess-piece):after{width:78%;background:transparent;border:5px solid #12bfa0}
.chess-piece{position:relative;z-index:2;font-family:'Segoe UI Symbol','Noto Sans Symbols 2',serif;font-style:normal;font-size:clamp(30px,8vw,82px);line-height:1;color:#f3f1eb;text-shadow:-1px -1px 0 #1a252c,1px -1px 0 #1a252c,-1px 1px 0 #1a252c,1px 1px 0 #1a252c;filter:drop-shadow(0 1px 1px #07111d45)}
.chess-piece.p1{color:#15212a;text-shadow:-1px -1px 0 #e7e8e2,1px -1px 0 #e7e8e2,-1px 1px 0 #e7e8e2,1px 1px 0 #e7e8e2;filter:drop-shadow(0 1px 1px #ffffff14)}
.chess-cell small{position:absolute;z-index:4;color:#536875;font-size:11px;font-weight:900;line-height:1;text-shadow:0 1px #f3f6f320}
.chess-cell.dark small{color:#d2dde0;text-shadow:0 1px #07111d45}
.chess-cell .file{right:4px;bottom:2px}
.chess-cell .rank{left:4px;top:2px}
@media(max-width:850px){.strategy-wrap{width:100%}.go-board{border-width:4px}.cc-board{border-width:4px}.chess-piece{font-size:clamp(28px,11vw,72px)}}

/* Geometry corrections for the new strategy boards. */
.go-board{grid-template-rows:repeat(var(--size),1fr);padding:0;background:#9ca7b1;background-image:none}.go-point{isolation:isolate}.go-point:before,.go-point:after,.go-point:empty:not(:disabled):after{content:'';position:absolute;display:block;background:#526475;z-index:0;transform:none;border:0;border-radius:0;box-shadow:none}.go-point:before{left:0;right:0;top:calc(50% - 1px);height:2px}.go-point:after,.go-point:empty:not(:disabled):after{top:0;bottom:0;left:calc(50% - 1px);width:2px;height:auto}.go-point.edge-l:before{left:50%}.go-point.edge-r:before{right:50%}.go-point.edge-t:after{top:50%}.go-point.edge-b:after{bottom:50%}.go-point .piece,.cc-hole .piece{width:76%;height:auto;aspect-ratio:1;border-radius:50%;border:4px solid #263949;box-shadow:none;z-index:2}.go-point.last .piece:after{content:'';display:block;width:20%;height:auto;aspect-ratio:1;border-radius:50%;background:#ef6077}
.chinese-wrap{width:min(1100px,100%);max-width:none}.cc-scroll{width:100%;overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:5px}.cc-board{min-width:800px;aspect-ratio:1.72}.cc-hole{top:calc(6% + var(--y) * 5.5%);width:4.2%;height:auto;aspect-ratio:1}.cc-hole .piece{width:76%;height:auto;border-width:3px;background:radial-gradient(circle at 36% 27%,#fff 0 8%,transparent 9%),linear-gradient(145deg,#f8fffd 8%,#d5e4e2 72%,#b9ccca);box-shadow:inset 0 0 0 2px #ffffff58,inset 0 -4px #aebfbd,0 4px 6px #07111d70}.cc-hole .piece.p0{background:radial-gradient(circle at 36% 27%,#fff 0 8%,transparent 9%),linear-gradient(145deg,#f8fffd 8%,#d5e4e2 72%,#b9ccca);border-color:#263949}.cc-hole .piece.p1{background:radial-gradient(circle at 36% 27%,#ffb2bf 0 8%,transparent 9%),linear-gradient(145deg,#f76c84 8%,#de4c67 72%,#b92f4b);border-color:#262b38;box-shadow:inset 0 0 0 2px #ff9aae55,inset 0 -4px #a72d45,0 4px 6px #07111d70}
@media(max-width:850px){.cc-board{min-width:800px}.cc-scroll{margin-inline:-4px;width:calc(100% + 8px)}}

/* Viewer-relative scores and final board refinements. */
.scorebar .avatar.side-0{background:#edf8f5;border-color:#aab8c5}.scorebar .avatar.side-1{background:#ef6077;border-color:#f68ca0}.scorebar .avatar.go-side.side-0,.scorebar .avatar.chess-side.side-1{background:#101d2b;border-color:#526475}.scorebar .avatar.go-side.side-1,.scorebar .avatar.chess-side.side-0{background:#edf8f5;border-color:#aab8c5}.go-count{color:#9ddfd3;font-size:15px;font-weight:900;white-space:nowrap}
.go-board{grid-auto-flow:row;contain:layout paint;min-width:0}.go-point{min-width:0;min-height:0;aspect-ratio:1}
.chinese-wrap{width:min(calc(100vh - 165px),820px,100%)}.cc-board{min-width:0;width:100%;aspect-ratio:1.12}.cc-hole{top:calc(5% + var(--y) * 5.625%)}
.chess-cell.legal:after,.chess-cell.legal:has(.chess-piece):after{width:28%;height:auto;aspect-ratio:1;border:0;border-radius:50%;background:#344657;box-shadow:none}.resign-row{margin:14px auto 0}.resign-row .danger{min-width:150px}
@media(max-width:850px){.chinese-wrap{width:100%}.cc-board{min-width:0}.cc-scroll{margin:0;width:100%;overflow:visible}}

/* Full Go grid lines and increased Chinese Checkers row spacing. */
.go-point:before,.go-point:after,.go-point:empty:not(:disabled):after{display:none!important}.go-lines{position:absolute;inset:0;display:block;pointer-events:none;z-index:0}.go-line{position:absolute;display:block;background:#526475;pointer-events:none}.go-line.horizontal{height:2px;transform:translateY(-1px)}.go-line.vertical{width:2px;transform:translateX(-1px)}.go-point{z-index:1;background:transparent}.go-point .piece{z-index:2}
.cc-board{aspect-ratio:.86}

/* Requested LAN-room, touch, timing, and game feedback refinements. */
html,body{max-width:100%;overflow-x:hidden;overscroll-behavior:none}button,[role="button"]{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.main,.game-page,.strategy-wrap,.checker-wrap{min-width:0}.invite-banner{display:grid;gap:10px;margin:0 0 22px;padding:16px 18px;border:1px solid #40cdb4;border-radius:16px;background:#173a42;box-shadow:0 0 0 4px #40cdb418}.invite-banner strong{font-size:18px}.invite-banner span{color:#b8d5d1}.invite-banner div{display:flex;gap:8px;flex-wrap:wrap}.invite-banner button{padding:10px 14px}
.app-dialog{position:fixed;inset:var(--dialog-viewport-top,0px) 0 auto;box-sizing:border-box;height:var(--dialog-viewport-height,100vh);z-index:20;display:flex;align-items:flex-start;justify-content:center;overflow-x:hidden;overflow-y:auto;padding:18px;background:#d7e3ddcc;backdrop-filter:blur(5px);overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.app-dialog>.panel{flex:0 0 auto;margin:auto;text-align:center}.promotion-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0}.promotion-options button{border:1px solid #b2c5bc;border-radius:12px;background:#d7e3dd;padding:15px;font-weight:900;cursor:pointer}.dialog-cancel{width:100%}
.disconnect-wait-dialog{z-index:1090}.disconnect-wait-dialog .panel{width:min(430px,100%)}.disconnect-countdown{display:grid;place-items:center;width:76px;height:76px;margin:18px auto 12px;border:2px solid var(--coral);border-radius:50%;color:var(--coral);font-size:2rem;line-height:1;box-shadow:0 0 24px #ff6f7d33}
.turn-badge{display:grid;min-height:32px;place-items:center;text-align:center;line-height:1;border:2px solid transparent}.turn-badge.live{animation:turnBreath 2s ease-in-out infinite}.turn-badge.live.timer-warning{background:var(--coral);color:#fff;animation:turnWarningBreath 1s ease-in-out infinite}@keyframes turnBreath{0%,100%{border-color:#ffffff33;box-shadow:0 0 0 0 #fff0}50%{border-color:#fff;box-shadow:0 0 15px 4px #ffffff88}}@keyframes turnWarningBreath{0%,100%{border-color:#f05d7855;box-shadow:0 0 0 0 #f05d7800}50%{border-color:var(--coral);box-shadow:0 0 16px 4px #f05d7888}}
.player-line{flex-wrap:wrap}.player-time{display:inline-grid;place-items:center;min-width:44px;height:30px;padding:4px 8px;border-radius:15px;background:#263c50;color:#f5cf72;font-size:14px;line-height:21px}.player.right>span{align-items:flex-end}.battle-turn{width:max-content;max-width:100%;margin:0 auto 12px;padding:7px 18px;border:2px solid #50657a;border-radius:18px;color:#9eb0bf;font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.8px}.battle-turn.active{border-color:#fff;color:#fff;animation:turnBreath 2s ease-in-out infinite}.board-card.active-turn{border-color:#fff;box-shadow:0 0 18px #f3f6f344}
.sea .cell.ship:before,.sea .cell.ship.sunk:before{background:var(--ship-color,#526475)!important}.fleet-chip{background:var(--ship-color,#526475)}.fleet-chip.sunk{background:var(--ship-color,#526475);filter:grayscale(.65);opacity:.4}.hit-mark{position:absolute;left:50%;top:50%;z-index:9;display:grid;place-items:center;transform:translate(-50%,-50%);color:#ffd24b;font-size:clamp(19px,4vw,34px);font-style:normal;line-height:1;text-shadow:0 1px 2px #8e321e,0 0 8px #ff823a}.sea .cell.hit:after{display:none}
.desktop-battle-boards{grid-template-columns:repeat(2,minmax(0,520px));justify-content:center}.desktop-battle-boards :is(.enemy-board,.own-board) .sea{width:min(84%,430px,calc(100vh - 260px));width:min(84%,430px,calc(100svh - 260px));margin-inline:auto}.own-board .fleet{padding-block:8px}.battle-boards{align-items:start}
.cc-hole.legal{background:#344657;box-shadow:0 0 0 5px #34465744}
.moving-piece{will-change:translate;backface-visibility:hidden;transform-style:flat}.cc-hole .piece{width:88%}.cc-hole.moving-cell{z-index:50}.cc-hole .moving-piece{z-index:51;transform:translate(-50%,-50%)}
@media(max-width:850px){.own-board .sea{width:min(76%,390px)}
.own-board .fleet{transform:scale(.88)}
.player-line{gap:5px}
.player-time{min-width:42px;height:29px;font-size:13px}
.hit-mark{font-size:clamp(22px,6vw,36px)}
.explosion{width:20px;height:20px;box-shadow:0 0 0 10px #ffb22e,0 0 0 21px #f05d78aa}
.checkerboard .piece{width:84%}
.checkerboard .cell.legal:after{width:36%}
}

@media(max-width:430px){.top .controls{gap:5px}
.scorebar .player-line{max-width:112px}
.pawn-loss,.go-count{font-size:12px}
.own-board .sea{width:min(72%,320px)}
.game-tools{margin-bottom:8px}
.battle-turn{margin-bottom:8px}
.checkerboard .piece{width:84%;border-width:3px}
.checkerboard .cell.selected:before{width:92%}
.checkerboard .cell.legal:after{width:38%}
}

/* Single Battleship turn surface on phones and corrected overlay order. */
.mobile-battle-stage,.mobile-battle-board{display:none}.result{z-index:1000}.result .panel{position:relative;z-index:1;isolation:isolate}.app-dialog{z-index:1100}.cc-hole.legal{background:#12bfa0;box-shadow:0 0 0 5px #12bfa044}
@keyframes battleBoardFade{0%{opacity:0}100%{opacity:1}}
@media(max-width:850px){.desktop-battle-boards{display:none}.mobile-battle-stage{position:relative;display:block;width:min(100%,680px,calc(100vh - 180px));width:min(100%,680px,calc(100svh - 180px));margin-inline:auto}.mobile-battle-anchor{visibility:hidden;pointer-events:none}.mobile-battle-anchor .sea{width:100%;margin:0}.mobile-battle-board{position:absolute;inset:0 auto auto 0;display:block;width:100%;margin:0}.mobile-battle-board.fleet-swap{animation:battleBoardFade .42s ease both}.mobile-battle-board .sea{width:100%;margin:0}.mobile-battle-board .weapons{position:sticky;bottom:0;z-index:6}}

/* Post-game room readiness. */
.primary.rematch-invited{animation:rematchInvite 2.2s ease-in-out infinite}
@keyframes rematchInvite{0%,100%{box-shadow:inset 0 -4px #2fa78d,0 0 0 1px #f3f6f333,0 0 0 #fff0}50%{box-shadow:inset 0 -4px #2fa78d,0 0 0 2px #fff,0 0 16px 3px #f3f6f377}}


/* Chess check and end-state callouts. */
.game-note.check-alert{flex:0 1 auto;padding:8px 20px;border:2px solid #f6c453;border-radius:15px;background:#6b5221;color:#fff3c9;font-size:19px;font-weight:1000;letter-spacing:1px;text-transform:uppercase;box-shadow:0 0 16px #f6c45366;animation:checkPulse 1.8s ease-in-out infinite}
.game-note.checkmate{padding:9px 20px;border-color:#fff;background:#d94c68;color:#fff;font-size:20px;box-shadow:0 0 18px #ef607788;animation:checkmatePulse 1.4s ease-in-out infinite}
@keyframes checkPulse{0%,100%{box-shadow:0 0 8px #f6c45344}50%{box-shadow:0 0 20px #f6c45399}}
@keyframes checkmatePulse{0%,100%{transform:scale(1);box-shadow:0 0 10px #ef607755}50%{transform:scale(1.04);box-shadow:0 0 24px #ef6077aa}}

/* Pixel-centred Battleship miss marker; hide the underlying grid dot. */
.sea .cell.miss:after{display:none}
.sea .cell.miss:before{content:'';position:absolute;left:50%;top:50%;width:38%;height:auto;aspect-ratio:1;border:2px solid #a5b2ba;border-radius:50%;background:transparent;transform:translate(-50%,-50%);z-index:4;box-sizing:border-box;text-shadow:none}

/* Stable mobile sizing, compact lobbies, and touch-safe board interaction. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}.scorebar{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.scorebar .player,.scorebar .player>span,.scorebar .player-line{min-width:0}.scorebar .player-line{flex-wrap:nowrap}.scorebar .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chess-wrap{width:min(820px,100%,calc(100vh - 165px));width:min(820px,100%,calc(100svh - 165px))}.chess-board{contain:layout paint;touch-action:manipulation}.sea,.sea *,.checkerboard,.checkerboard *,.chess-board,.chess-board *,.go-board,.go-board *,.reversi-board,.reversi-board *,.cc-board,.cc-board *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.result-panel h2{font-size:clamp(36px,10vw,76px)}
.dice-showdown{gap:14px}.dice-showdown .dice-reveal{padding:18px}.showdown-hand{display:grid!important;grid-template-columns:95px minmax(0,1fr);align-items:center;gap:10px!important;margin-top:14px!important}.showdown-hand>b{width:auto!important}.showdown-hand>div{display:flex;gap:8px;flex-wrap:wrap}.dice-showdown .reveal-die{width:48px;border-radius:10px}.summary-number{display:inline-block;min-width:1.45em;padding:1px 6px;border-radius:7px;font-style:normal;font-size:1.12em;font-weight:1000;text-align:center}.summary-number.summary-win{background:#1d5c4e;color:#7ff0d3}.summary-number.summary-loss{background:#612f3d;color:#ff9bad}

/* Dice games */
.dice-page{max-width:900px}.dice-table{width:min(720px,100%);margin:auto;padding:22px;border:1px solid #355b5d;border-radius:22px;background:linear-gradient(145deg,#152d35,#132536);box-shadow:var(--shadow);display:grid;gap:18px}.dice-round{text-align:center;color:var(--mint2);font-size:13px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.opponent-cup,.current-bid,.turn-total{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-radius:15px;background:#1c3941}.opponent-cup b,.turn-total strong{display:grid;place-items:center;min-width:42px;height:42px;border-radius:50%;background:var(--mint);color:#102d32;font-size:20px}.current-bid strong{font-size:22px;color:#b9f3e8}.own-hand>span,.dice-bid-controls span{display:block;margin-bottom:7px;color:#b9c6d0;font-size:13px;font-weight:900}.own-hand>div{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.die-face,.reveal-die,.pig-die{position:relative;display:block;width:68px;aspect-ratio:1;border:2px solid #6ee0c8;border-radius:15px;background:#173c3d;font-style:normal;box-shadow:0 8px 18px #07121966,inset 0 0 18px #49c5aa12}.pip{position:absolute!important;width:12%!important;aspect-ratio:1;border-radius:50%;background:#b7f5e9}.pip.tl{left:20%;top:20%}.pip.tr{right:20%;top:20%}.pip.ml{left:20%;top:44%}.pip.mc{left:44%;top:44%}.pip.mr{right:20%;top:44%}.pip.bl{left:20%;bottom:20%}.pip.br{right:20%;bottom:20%}.dice-rolling{filter:brightness(1.22);transform:scale(1.035);box-shadow:0 0 25px #49c5aa66}.dice-bid-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dice-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dice-reveal{padding:14px;border:1px solid #416669;border-radius:14px;background:#10282e}.dice-reveal>span{display:block;color:#79dbc8;font-size:12px;font-weight:900;letter-spacing:.8px;text-transform:uppercase}.dice-reveal>strong{display:block;margin:3px 0;color:#fff;font-size:18px}.dice-reveal>p{margin:0 0 10px;color:#aec4c5;font-size:13px}.dice-reveal>div{display:flex;align-items:center;gap:6px;margin-top:6px}.dice-reveal>div>b{width:28px}.reveal-die{width:32px;border-width:1px;border-radius:7px;box-shadow:none}.pig-scores{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pig-scores>div{display:flex;align-items:center;justify-content:space-between;padding:15px;border:2px solid transparent;border-radius:15px;background:#1c3941}.pig-scores>div.active{border-color:var(--mint)}.pig-scores b{font-size:30px}.pig-die{margin:auto;width:min(180px,46vw);border-radius:28px}.pig-die.empty{display:grid;place-items:center;color:#73b8ad;font-size:72px}.pig-outcome{display:grid;gap:2px;padding:12px 15px;border-left:4px solid var(--mint);border-radius:10px;background:#19363e}.pig-outcome strong{color:#dffbf5}.pig-outcome span{color:#adc6c7;font-size:13px}.pig-outcome.bust{border-color:var(--coral);background:#432c38}.pig-outcome.bust strong{color:#ffbac5}.dice-help{margin:0;color:#a9c3c3;text-align:center;line-height:1.45}
.dice-setup .opponent-cup b{width:auto;min-width:82px;padding:0 14px;border-radius:22px;font-size:14px}.dice-setup .dice-actions button{min-height:52px}.dice-setup .own-hand{padding:10px 0}
.dice-options{grid-template-columns:1fr}

@media(max-width:430px){
  .modal-wrap{display:block;min-height:calc(100vh - 58px);min-height:calc(100svh - 58px);padding:10px 10px max(12px,env(safe-area-inset-bottom))}.lobby-panel{margin:0 auto;padding:14px 13px;border-radius:17px}.lobby-panel h2{font-size:24px;line-height:1.05}.lobby-panel .sub{margin:2px 0 8px;font-size:13px}.lobby-panel .label{margin:7px 0 4px}.lobby-panel .seg{padding:3px}.lobby-panel .seg button{padding:8px 5px}.lobby-panel .input{padding:9px 10px;border-radius:10px}.lobby-panel .gift-settings{margin-top:7px;padding:8px;gap:6px}.lobby-panel .gift-settings .input{padding:7px}.lobby-panel .map-size{margin-top:6px}.lobby-panel .time-grid{grid-template-columns:1fr 1fr;gap:7px}.lobby-panel .enter-room,.lobby-panel .lobby-entry-actions{margin-top:10px}.lobby-panel .enter-room,.lobby-panel .lobby-entry-actions button{padding:12px}.lobby-panel .eyebrow{font-size:10px}.scorebar{margin-bottom:10px;gap:4px;padding:7px}.scorebar .avatar{display:none}.scorebar .player-line{gap:3px}.scorebar .name{min-width:44px;max-width:min(22vw,72px)}.scorebar .score{min-width:28px;width:28px;height:28px;padding:3px;font-size:14px;line-height:22px}.scorebar .player-time{min-width:36px;height:27px;padding:3px 5px;font-size:11px}.scorebar .pawn-loss,.scorebar .go-count{font-size:10px}.scorebar .turn-badge{max-width:94px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chess-wrap{width:min(100%,calc(100vh - 136px));width:min(100%,calc(100svh - 136px))}.dice-table{padding:13px;gap:11px;border-radius:17px}.die-face{width:52px;border-radius:11px}.current-bid strong{font-size:18px}.dice-actions{grid-template-columns:1fr}.pig-die{width:min(135px,40vw)}
}

/* Preserve the established label colors; shadow only labels that are already white. */
:root{--solid-button-text-shadow:0 1px 1px #07151a80}
.danger,.danger>span{ text-shadow:none }
.secondary,.secondary>span{ text-shadow:none }
.room-progress-control>span{ text-shadow:var(--solid-button-text-shadow)!important }
.primary,.primary>span,.selection-options button.active{ text-shadow:none }
.room-progress-control.matchmaking-progress>span{ text-shadow:none!important }

/* Title-bar controls share one compact frame; text controls keep content-driven width. */
.top .header-icon-btn{height:34px}
.top .header-icon-btn:not(.header-account){width:34px}
.top .header-account{width:auto}
@media(max-width:850px){.top .header-icon-btn{height:36px}.top .header-icon-btn:not(.header-account){width:36px}.top .header-account{width:auto}}
@media(max-width:360px){.top .header-icon-btn{height:32px}.top .header-icon-btn:not(.header-account){width:32px}.top .header-account{width:auto}}

@media(max-width:430px) and (max-height:680px){.lobby-panel{padding-block:10px}.lobby-panel .sub{display:none}.lobby-panel .label{margin-top:5px}.lobby-panel .seg button{padding-block:6px}.lobby-panel .input{padding-block:7px}.lobby-panel .gift-settings{padding-block:6px}.lobby-panel .enter-room{margin-top:7px;padding-block:10px}}

/* In-game option menus and platform-neutral sharing controls. */
.game-select{width:100%}.game-select-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;padding:12px 14px;border:1px solid #b2c5bc;border-radius:12px;background:#d7e3dd;color:#52685f;font-family:"Trebuchet MS",system-ui,sans-serif;font-weight:800;letter-spacing:0;text-align:left;cursor:pointer}.game-select-trigger:focus-visible{outline:0;border-color:var(--mint);box-shadow:0 0 0 3px #243b342b}.game-select-trigger i{width:9px;height:9px;margin:0 3px 5px 12px;border-right:2px solid #b2c5bc;border-bottom:2px solid #b2c5bc;transform:rotate(45deg)}.game-select.disabled{opacity:.55}.gift-settings .game-select-trigger{min-height:42px;padding:8px 10px}.selection-panel{width:min(520px,calc(100vw - 28px));font-family:"Trebuchet MS",system-ui,sans-serif}.selection-panel h2{margin-bottom:4px}.selection-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:16px 0}.selection-options button{min-height:48px;padding:11px;border:1px solid #b2c5bc;border-radius:12px;background:#d7e3dd;color:#52685f;font-family:"Trebuchet MS",system-ui,sans-serif;font-weight:800;letter-spacing:0}.selection-options button.active,.selection-options button:focus-visible{outline:0;border-color:var(--mint);background:var(--mint);color:#f3f6f3;font-weight:900}.selection-panel .dialog-cancel{width:100%}.home-title-row{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:none;gap:18px}.home-title-row h2{margin-right:auto}.home-share-actions{display:flex;gap:8px}.home-share-actions .header-icon-btn{padding:0;white-space:nowrap}.share-panel{text-align:center}.share-qr{display:block;width:min(280px,72vw);aspect-ratio:1;margin:8px auto 14px;border-radius:16px;background:#edf5f2;padding:10px}.share-url{overflow-wrap:anywhere;padding:10px;border-radius:10px;background:#d7e3dd;color:#24745b;font-size:12px}
select,select option{color:#52685f;font-family:"Trebuchet MS",system-ui,sans-serif;font-weight:800;letter-spacing:0}
@media(max-width:430px){.game-select-trigger{min-height:38px;padding:8px 10px;border-radius:10px}.selection-options{grid-template-columns:repeat(2,minmax(0,1fr))}.home-title-row{align-items:center;gap:10px}.home-share-actions{align-items:center;gap:5px}}

/* Final mobile scrolling, safe-area, Gomoku, and dice reveal refinements. */
.top{height:calc(68px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}.content,.game-page{padding-bottom:max(34px,calc(env(safe-area-inset-bottom) + 22px))}.game-tabs,.game-tab{touch-action:pan-y manipulation}.invite-banner{scroll-margin-top:calc(76px + env(safe-area-inset-top))}
.gomoku-wrap{width:min(820px,100%,calc(100vh - 165px));width:min(820px,100%,calc(100svh - 165px))}.go-board,.reversi-board{--paper-green:#345347;--paper-green-light:#426357;--paper-green-dark:#29443a;--paper-line:#172b24;--piece-dark:#171a19;--piece-ivory:#e8e1cf;background-color:var(--paper-green);background-image:radial-gradient(circle at 18% 22%,#ffffff10 0 .7px,transparent 1.1px),radial-gradient(circle at 76% 68%,#00000014 0 .8px,transparent 1.2px),linear-gradient(145deg,var(--paper-green-light),var(--paper-green) 48%,var(--paper-green-dark));background-size:13px 11px,17px 19px,100% 100%;border-color:#203b32;box-shadow:inset 0 1px 0 #ffffff18,inset 0 -2px 5px #08130f44,0 12px 24px #02091166}.go-line{background:var(--paper-line)}.go-point .piece,.reversi-disc{border:2px solid #59675f;background:radial-gradient(circle at 31% 25%,#383d3a 0,#242825 34%,var(--piece-dark) 72%);box-shadow:inset 1px 1px 1px #ffffff18,inset -4px -5px 7px #05080788,0 3px 5px #02070699,0 0 0 1px #0a120f}.go-point .piece.p1,.reversi-disc.p1{border-color:#c8c0ad;background:radial-gradient(circle at 31% 24%,#fffaf0 0,#f0e9d8 38%,var(--piece-ivory) 72%);box-shadow:inset 1px 1px 1px #ffffffcc,inset -4px -5px 7px #b5ad9b66,0 3px 5px #02070688}.gomoku-board{border-color:#203b32}.gomoku-point .piece{width:78%}.gomoku-point.last .piece:after{background:var(--coral);width:24%}.scorebar .avatar.gomoku-side.side-0{background:#171a19;border-color:#59675f}.scorebar .avatar.gomoku-side.side-1{background:#e8e1cf;border-color:#c8c0ad}
.reversi-wrap{width:min(820px,100%,calc(100vh - 165px));width:min(820px,100%,calc(100svh - 165px))}.reversi-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));width:100%;aspect-ratio:1;overflow:hidden;border-width:7px;border-style:solid;border-radius:10px;contain:layout paint}.reversi-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;padding:0;border:0;border-right:1px solid var(--paper-line);border-bottom:1px solid var(--paper-line);border-radius:0;background:transparent;cursor:pointer;perspective:240px}.reversi-cell:nth-child(8n){border-right:0}.reversi-cell:nth-last-child(-n+8){border-bottom:0}.reversi-cell:disabled{cursor:default;opacity:1}.reversi-disc{position:relative;display:block;width:78%;aspect-ratio:1;border:0;border-radius:50%;box-shadow:inset 1px 1px 1px #f3f6f318,inset -4px -5px 7px #05080788,0 3px 5px #02070699;transform-style:preserve-3d;will-change:transform}.reversi-disc.p1{border:0;box-shadow:inset 1px 1px 1px #f3f6f3cc,inset -4px -5px 7px #b5ad9b66,0 3px 5px #02070688}.reversi-cell.legal:empty:after{content:'';width:17%;aspect-ratio:1;border-radius:50%;background:#91c1b1;box-shadow:0 0 0 3px #91c1b124}.reversi-cell.coach-target:empty:after{content:'';width:24%;aspect-ratio:1;border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px #f6c45333}.reversi-cell.last .reversi-disc:after{content:'';display:block;position:absolute;left:50%;top:50%;width:16%;aspect-ratio:1;border-radius:50%;background:var(--coral);transform:translate(-50%,-50%)}
.go-capture-ghost{position:fixed;z-index:50;display:block;border:2px solid #59675f;border-radius:50%;background:radial-gradient(circle at 31% 25%,#383d3a 0,#242825 34%,var(--piece-dark,#171a19) 72%);box-shadow:inset 1px 1px 1px #f3f6f318,inset -4px -5px 7px #05080788,0 3px 5px #02070699;pointer-events:none}.go-capture-ghost.p1{border-color:#c8c0ad;background:radial-gradient(circle at 31% 24%,#fffaf0 0,#f0e9d8 38%,var(--piece-ivory,#e8e1cf) 72%);box-shadow:inset 1px 1px 1px #f3f6f3cc,inset -4px -5px 7px #b5ad9b66,0 3px 5px #02070688}
.summary-face{font-style:normal;font-weight:900;color:#edf5f2}.dice-showdown .showdown-hand{padding:12px 10px;border-radius:12px;background:#17343a}.dice-showdown .showdown-mine{margin-top:20px!important;margin-left:18px}.dice-showdown .showdown-opponent{margin-right:18px}.dice-showdown .showdown-hand+ .showdown-hand{border-top:1px solid #416669}
@media(max-width:850px){.gomoku-wrap,.reversi-wrap{width:100%}.reversi-board{border-width:4px}}
@media(max-width:430px){.top{height:calc(58px + env(safe-area-inset-top))}
.content{padding-top:18px}.game-tabs{padding-bottom:max(26px,env(safe-area-inset-bottom))}.dice-showdown .showdown-mine{margin-left:10px!important}.dice-showdown .showdown-opponent{margin-right:10px}}

@media(max-width:850px){.scorebar .score{min-width:27px;width:27px;height:27px;padding:2px;border-radius:14px;font-size:13px;line-height:22px}}

/* Keep chess geometry independent from Unicode glyph metrics and move animations. */
.chess-wrap{width:min(820px,calc(100vw - 8px),calc(100vh - 165px));width:min(820px,calc(100vw - 8px),calc(100svh - 165px));max-width:100%;min-width:0;contain:inline-size layout}
.chess-board{grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));width:100%;max-width:100%;min-width:0;overflow:clip;contain:layout paint;container-type:inline-size}
.chess-cell{width:100%;height:100%;min-width:0;min-height:0}
.chess-piece{display:grid;place-items:center;min-width:0;max-width:100%;font-size:clamp(26px,10.5cqi,78px);line-height:1;white-space:nowrap}
@media(max-width:430px){.chess-wrap{width:min(calc(100vw - 8px),calc(100vh - 136px));width:min(calc(100vw - 8px),calc(100svh - 136px))}}

/* Prevent accidental long-press text selection on game surfaces and controls. */
html,body,#app,#app *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea{-webkit-user-select:text;user-select:text}

/* Compact game-control alignment refinements. */
.pip{width:14%!important}
.pip.tl{left:19%;top:19%}.pip.tr{right:19%;top:19%}.pip.ml{left:19%;top:43%}.pip.mc{left:43%;top:43%}.pip.mr{right:19%;top:43%}.pip.bl{left:19%;bottom:19%}.pip.br{right:19%;bottom:19%}
.dice-showdown .showdown-hand{margin:14px 0 0!important}
.dice-showdown .showdown-mine,.dice-showdown .showdown-opponent{margin-left:0!important;margin-right:0!important}
.checkerboard.international-board .cell.legal:after{width:34%}
@media(max-width:850px){.checkerboard.international-board .cell.legal:after{width:36%}}
@media(max-width:430px){.checkerboard.international-board .cell.legal:after{width:38%}}

/* Host-local accounts and match history. */
.header-account{width:auto;min-width:60px;padding:0 10px;font-size:13px;font-weight:900;line-height:1;white-space:nowrap}
.header-account.login{color:#24745b;border-color:#b2c5bc;background:#d7e3dd}.header-account.login:hover{background:#d7e3dd}
.header-icon-btn.header-account.account-level{min-width:60px;font-size:15px;line-height:1;color:var(--level-color);border-color:var(--level-border);background:linear-gradient(145deg,var(--level-surface),#f3f6f3);box-shadow:inset 0 1px #243b3412}.header-icon-btn.header-account.account-level:hover{background:linear-gradient(145deg,var(--level-hover),#d7e3dd)}
.account-panel{width:min(480px,100%)}.account-form{display:grid;gap:14px}.account-form label>span{display:block;margin-bottom:6px;color:#52685f;font-size:13px;font-weight:900}.account-form .primary{margin-top:4px}.account-switch{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.dialog-cancel{width:100%;margin-top:12px}
.history-panel{width:min(900px,100%);text-align:left!important}.history-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.history-heading h2,.history-heading p{margin:0}.history-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.history-totals>div{display:grid;place-items:center;padding:15px;border-radius:14px;background:#d7e3dd}.history-totals b{color:var(--mint2);font-size:28px}.history-totals span{color:#52685f;font-size:12px;font-weight:900;text-transform:uppercase}.history-games{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.history-games>div{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 13px;border:1px solid #b2c5bc;border-radius:11px;background:#d7e3dd}.history-games span{color:#52685f;font-size:12px;white-space:nowrap}.history-panel h3{margin:22px 0 10px}.history-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-list li{display:grid;grid-template-columns:1fr auto;gap:12px;padding:12px 14px;border-left:4px solid #b2c5bc;border-radius:10px;background:#d7e3dd}.history-list li>div{display:grid}.history-list span{color:#52685f;font-size:12px}.history-list b{color:#52685f}.history-list .history-win{border-left-color:var(--mint)}.history-list .history-win b{color:var(--mint2)}.history-list .history-loss{border-left-color:var(--coral)}.history-list .history-loss b{color:var(--coral)}.history-list .history-draw{border-left-color:var(--gold)}.history-empty{padding:20px;border-radius:12px;background:#d7e3dd;color:#52685f;text-align:center}
.profile-progress{display:grid;gap:12px;margin-top:14px}.profile-level{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--profile-level-border,#b2c5bc);border-radius:14px;background:linear-gradient(135deg,var(--profile-level-surface,#d7e3dd),#d7e3dd)}.profile-level>strong{display:grid;width:58px;height:58px;place-items:center;border-radius:50%;background:var(--profile-level-surface,var(--mint));color:var(--profile-level-color,#24745b);font-size:18px}.profile-level>div{display:grid;gap:7px}.profile-level span{color:#52685f;font-size:12px;font-weight:800}.profile-level i{display:block;height:8px;overflow:hidden;border-radius:999px;background:#c6d5c3}.profile-level i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--mint),var(--gold))}.mastery-heading{display:flex;align-items:end;justify-content:space-between;gap:12px}.mastery-heading h3{margin:4px 0 0}.mastery-heading span{color:var(--muted);font-size:10px;font-weight:800}.mastery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.mastery-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:10px;background:var(--panel2)}.mastery-card>div{display:grid;min-width:0}.mastery-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.mastery-card span{color:var(--muted);font-size:9px}.mastery-card>b{flex:0 0 auto;color:var(--gold);font-size:11px}.profile-rating-note{margin:0;color:#52685f;font-size:10px;line-height:1.35}.history-result small{color:var(--metric-xp);font-size:10px;font-weight:900;white-space:nowrap}
.profile-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:12px;padding:4px;border-radius:11px;background:#d7e3dd}.profile-tabs button{min-height:42px;padding:9px 14px;border:0;border-radius:8px;background:transparent;color:#52685f;font-size:17px;font-weight:900;cursor:pointer}.profile-tabs button.active{background:#d7e3dd;color:#24745b;box-shadow:inset 0 -2px var(--mint)}
.ai-rating-note{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:7px 0 13px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--muted);font-size:11px;font-weight:850}.ai-rating-note strong{color:var(--metric-rating);font-size:12px;white-space:nowrap}
.profile-lifetime-totals{margin:8px 0 0}.game-progress-section{margin-top:10px}.game-progress-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:6px}.game-progress-heading h3{margin:0}.game-progress-table{display:grid;gap:6px;overflow:visible;background:transparent}.game-progress-columns,.game-progress-row{display:grid;grid-template-columns:minmax(150px,1.25fr) minmax(150px,1fr) minmax(150px,1fr);align-items:center;gap:14px;padding:8px 12px}.game-progress-columns{border-radius:9px;background:#d7e3dd;color:#52685f;font-size:11px;font-weight:800;letter-spacing:0;text-transform:none}.game-progress-row{position:relative;min-height:58px;overflow:hidden;border:1px solid #b2c5bc;border-radius:10px;background:linear-gradient(105deg,hsl(var(--game-accent-hue) 42% 40% / .1),#d7e3dd 55%);box-shadow:inset 3px 0 hsl(var(--game-accent-hue) 48% 57%)}.game-progress-name,.game-skill{display:grid;min-width:0;gap:2px}.game-progress-name>strong,.game-skill>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-progress-name>strong{color:hsl(var(--game-accent-hue) 44% 32%);font-size:15px;font-weight:900}.game-progress-name small,.game-skill small{color:#52685f;font-size:11px}.game-skill>strong{color:var(--mint2);font-size:12px;font-weight:800}.game-skill .game-progress-metric-label{color:#52685f;font-size:12px;font-weight:800;letter-spacing:0;text-transform:none}.game-mastery{display:grid;min-width:0;gap:5px}.game-mastery>span{display:flex;align-items:center;justify-content:space-between;min-width:0;gap:8px}.game-mastery>span b{flex:0 0 auto;color:#52685f;font-size:13px;font-weight:800;white-space:nowrap}.game-mastery>span small{min-width:0;color:#52685f;font-size:12px;text-align:right}.game-mastery>i{display:block;overflow:hidden;height:5px;border-radius:999px;background:#d7e3dd}.game-mastery>i>b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--mint),var(--gold))}.history-changes{display:flex;align-items:center;justify-content:flex-end;gap:4px;flex-wrap:wrap}.history-result .history-changes small{padding:3px 6px;border-radius:6px;background:#d7e3dd}.history-result .change-xp{color:var(--mint2)}.history-result .change-rating{color:#52685f}.history-result .change-credit{color:var(--gold)}.history-result .change-credit .credit-amount{font-size:inherit}.history-result{gap:7px}.history-section-title>span{max-width:52%;text-align:right}.profile-guide-button{width:30px;height:30px;font-size:18px}
.game-skill:empty{display:none}.game-skill-empty{color:#52685f!important}.history-record-details .history-opponent{display:flex!important;align-items:center;gap:5px;flex-wrap:wrap}.history-opponent .history-changes{justify-content:flex-start}.history-opponent .history-changes small{padding:3px 6px;border-radius:6px;background:#d7e3dd}.history-opponent .change-xp{color:var(--mint2)}.history-opponent .change-rating{color:#52685f}.history-opponent .change-credit,.history-opponent .change-credit .credit-amount,.history-opponent .change-credit .credit-amount>span{color:var(--gold)!important}.history-opponent .change-credit .credit-amount{font-size:inherit}
.game-skill.rating>strong{color:var(--metric-rating)}.game-skill.credit>strong{color:var(--metric-credit)}.history-result .change-xp,.history-opponent .change-xp{color:var(--metric-xp)}.history-result .change-rating,.history-opponent .change-rating{color:var(--metric-rating)}.history-result .change-credit,.history-opponent .change-credit,.history-opponent .change-credit .credit-amount,.history-opponent .change-credit .credit-amount>span{color:var(--metric-credit)!important}
@media(max-width:620px){.game-progress-heading{display:block}.game-progress-columns{display:none}.game-progress-row{grid-template-columns:minmax(0,1.35fr) minmax(0,.95fr) minmax(0,1.1fr);grid-template-areas:"name skill mastery";align-items:start;gap:8px;padding:9px 10px}.game-progress-name{grid-area:name;align-content:start;overflow:hidden;padding-right:2px}.game-progress-name>strong{white-space:nowrap}.game-skill{grid-area:skill;align-content:start;justify-items:start;max-width:100%;overflow:hidden;padding:0;text-align:left}.game-skill>strong{display:block;max-width:100%}.game-skill>small:not(.game-progress-metric-label){display:none}.game-mastery{grid-area:mastery;align-content:start;padding:0 0 0 7px;border-left:1px solid #b2c5bc}.game-mastery>span{display:grid;gap:2px}.game-mastery>span small{text-align:left;line-height:1.2}.history-section-title{align-items:flex-start}.history-section-title>span{max-width:58%}.history-record-details{align-items:flex-start}.history-result{align-items:flex-end}.history-changes{justify-content:flex-start}}
@media(max-width:460px){.game-progress-row{grid-template-columns:minmax(0,1fr) minmax(145px,1.08fr);grid-template-areas:"name mastery" "skill mastery";column-gap:10px;row-gap:3px}.game-progress-row:has(>.game-skill:empty){row-gap:0}.game-skill{grid-template-columns:auto minmax(0,1fr);align-items:baseline;justify-items:start;align-self:start;column-gap:7px;padding:0;border:0}.game-skill>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-mastery{grid-row:1/3;padding-left:10px}}
@media(max-width:520px){.header-account{min-width:56px;padding:0 5px}.account-switch{grid-template-columns:1fr}.history-games,.mastery-grid{grid-template-columns:1fr}.profile-level{grid-template-columns:auto minmax(0,1fr);gap:10px;padding:11px}.profile-level>strong{width:48px;height:48px;font-size:15px}.mastery-heading{align-items:start;flex-direction:column;gap:2px}}

/* History dashboard alignment, filtering, chart, and pagination. */
.history-heading{align-items:flex-start}
.history-identity,.history-identity .eyebrow,.history-identity h2{text-align:left}
.history-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.history-filters{display:flex;gap:4px;padding:4px;border-radius:12px;background:#d7e3dd}
.history-filters button{min-width:43px;padding:9px 11px;border:0;border-radius:9px;background:transparent;color:#52685f;font-weight:900;cursor:pointer}
.history-filters button.active{background:var(--mint);color:#f3f6f3}
.history-heading-actions>.secondary{width:auto;margin:0}
.history-totals{grid-template-columns:repeat(4,minmax(0,1fr))}
.history-section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:22px 0 10px}
.history-section-title h3{margin:0}
.history-section-title>span{color:#52685f;font-size:12px;font-weight:800}
.history-list li{align-items:center;text-align:left}
.history-list li>div:first-child{text-align:left}

.history-chart{margin-top:18px;padding:14px 16px 8px;border:1px solid #b2c5bc;border-radius:14px;background:#d7e3dd}
.history-chart>div{display:flex;align-items:center;justify-content:space-between;gap:12px}
.history-chart h3{margin:0}
.history-chart>div>span{display:flex;align-items:center;gap:7px;color:#52685f;font-size:11px;font-weight:800}
.history-chart i{display:inline-block;width:8px;height:8px;margin-left:5px;border-radius:50%}
.history-chart i.wins{background:var(--mint)}.history-chart i.losses{background:var(--coral)}.history-chart i.draws{background:var(--gold)}
.history-chart svg{display:block;width:100%;height:auto;margin-top:6px;overflow:visible}
.history-chart .chart-grid{fill:none;stroke:#243b34;stroke-width:1}
.history-chart polyline{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:history-line-grow 1s ease-out forwards}
.history-chart .chart-wins{stroke:var(--mint)}.history-chart .chart-losses{stroke:var(--coral)}.history-chart .chart-draws{stroke:var(--gold)}
.history-chart text{fill:#52685f;font-size:16px;text-anchor:middle}
@keyframes history-line-grow{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.history-chart polyline{animation:none;stroke-dashoffset:0}}
.history-pages{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-top:12px;text-align:center}
.history-pages .secondary{width:auto;margin:0;padding:9px 14px}
.history-pages span{color:#52685f;font-size:12px;font-weight:800}
.history-pages button:disabled{opacity:.4;cursor:default}
@media(max-width:650px){.history-heading{display:grid}.history-heading-actions{justify-content:space-between}.history-totals{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:430px){.history-heading-actions{display:grid;grid-template-columns:1fr auto;width:100%}.history-filters{min-width:0}.history-filters button{min-width:0;padding-inline:8px}.history-list li{grid-template-columns:1fr}.history-list li>div:last-child{text-align:left}.history-chart>div{align-items:flex-start;flex-direction:column}.history-pages .secondary,.history-close{padding-inline:10px!important}}

/* Battleship setup readiness. */
.board-title.setup-status,.battle-opponent-status{display:flex;align-items:center;justify-content:space-between;gap:12px}
.board-ready{padding:5px 10px;border-radius:14px;background:#24384d;color:#a9bac8;font-size:11px;font-weight:900;text-transform:uppercase}
.board-ready.ready{background:var(--mint);color:#102338}
.battle-opponent-status{display:none;width:min(100%,680px);margin:0 auto 8px;padding:10px 13px;border:1px solid #3b5268;border-radius:13px;background:#1b2e40;font-weight:900}
@media(max-width:850px){.battle-opponent-status{display:flex}}

/* Compact history identity and summary controls. */
.history-name-row{display:flex;align-items:center;gap:7px;margin-top:2px}
.history-name-row h2{height:34px;line-height:34px}
.profile-account-action{display:grid;flex:0 0 20px;box-sizing:border-box;width:20px;min-width:20px;height:20px;min-height:20px;place-items:center;margin:0;padding:0;border:1px solid #b2c5bc;border-radius:6px;background:#d7e3dd;color:#52685f;box-shadow:none;line-height:1;cursor:pointer}
.history-delete{color:#ffaaa2}
.profile-account-action svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.profile-account-action:hover{filter:brightness(1.12)}



.history-totals{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;margin:11px 0}
.history-totals>div{min-width:0;min-height:48px;overflow:hidden;padding:6px 2px;border-radius:9px}
.history-totals b{max-width:100%;font-size:clamp(12px,4vw,18px);line-height:1;white-space:nowrap}
.history-totals span{max-width:100%;margin-top:3px;overflow:hidden;color:#52685f;font-size:11px;font-weight:700;line-height:1;text-overflow:clip;text-transform:none;white-space:nowrap}
@media(max-width:430px){.history-name-row{gap:5px}}

/* Align the homepage header and keep International Draughts pieces equal. */
.top{padding-inline:34px}
.checkerboard.international-board .piece,.checkerboard.international-board .piece.p0,.checkerboard.international-board .piece.p1{width:84%;border-width:3px}
@media(max-width:850px){.top{padding-left:16px;padding-right:16px}}

/* History paging. */
.history-pages{margin-bottom:12px}

/* Single-row history summary and compact top controls. */
.history-panel{position:relative}
.history-heading{display:block}
.history-close{position:static;width:auto!important;min-width:0;height:auto;min-height:0;margin:0 0 0 auto!important;padding:9px 14px!important}
.history-identity{width:100%;padding-right:0}
.history-heading-actions{align-items:flex-start;margin-top:9px;justify-content:flex-start}
.history-filters{gap:2px;padding:3px;border-radius:9px}
.history-filters button{min-width:34px;padding:5px 7px;border-radius:7px;font-size:13px;line-height:18px}
@media(max-width:650px){.history-heading{display:block}.history-heading-actions{margin-top:9px;justify-content:flex-start}}

.history-pages{grid-template-columns:1fr auto 1fr}
.history-pages .secondary:first-child{justify-self:start}
.history-pages .secondary:last-child{justify-self:end}

/* Pig Dice's zero total belongs to the new current turn, never the previous bust. */
.turn-total.neutral strong{background:#35535a;color:#c4d6d3}

/* Balanced dice hands and clearer bid context. */
.dice-table,.own-hand{min-width:0}
.own-dice-grid{display:flex!important;width:100%;min-width:0;justify-content:center;gap:10px;flex-wrap:nowrap!important}
.own-dice-grid .die-face{width:var(--responsive-die-size,68px);flex:0 0 var(--responsive-die-size,68px)}
.previous-bid{display:flex;align-items:center;justify-content:space-between;margin-bottom:-10px;padding:4px 18px;color:#8fa9ae;font-size:12px}
.previous-bid strong{color:#b7c8cb;font-size:13px}


/* Host settings reuse the existing key form, inputs and action buttons. */
.terminate-panel{width:min(520px,100%)}
.host-settings-section{display:grid;gap:12px;margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:13px;background:#d7e3dd}
.host-settings-heading{display:block;margin:0;color:var(--paper);font-size:14px;font-weight:800;line-height:1.25}
.host-settings-section label{display:grid;gap:7px;min-width:0}
.host-settings-label{color:#52685f;font-size:13px;font-weight:700}
.host-key-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.host-key-actions button:only-child{grid-column:1/-1}
.host-key-input.valid:placeholder-shown{border-color:#b2c5bc;background:#d7e3dd;color:white;font-weight:400;opacity:1}
.host-key-input.valid::placeholder{color:#24745b;opacity:1}.host-key-input.checking,.host-key-input.checking:placeholder-shown{border-color:#c9a453}.host-key-input.checking::placeholder{color:#f8dda0}.host-key-input.invalid,.host-key-input.invalid:placeholder-shown{border-color:#f05d78}.host-key-input.invalid::placeholder{color:#ffc0ca;opacity:1}
.host-runtime-status{margin:8px 0 0;color:#52685f;font-size:12px;line-height:1.4;white-space:pre-line}.host-runtime-status.error{margin:8px 0 0;padding:0;background:transparent;border-radius:0;color:#f7d98b}
.host-settings-times{display:grid;gap:7px;margin:14px 0 0;padding:0;font-size:12px;line-height:1.4}
.host-settings-times>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.host-settings-times dt{color:var(--muted)}.host-settings-times dd{margin:0;text-align:right;color:#52685f}
.host-setting-feedback{margin:0;color:var(--mint2);font-size:12px;line-height:1.4}.host-setting-feedback:empty{display:none}.host-setting-feedback.error{padding:0;background:transparent;color:#ff9bab}
.host-settings-entry{position:relative;display:flex;width:100%;align-items:center;justify-content:center;text-align:center}.host-settings-entry .ui-icon{position:absolute;right:14px;width:18px;height:18px}
.database-transfer{padding:0;border:0;background:transparent}
.host-settings-actions{margin-top:18px}

/* Reliable momentum scrolling and denser match records on mobile Safari. */
.history-list{gap:5px}
.history-list li{gap:8px;padding:8px 10px;border-left-width:3px;border-radius:8px}
.history-list li>div{line-height:1.15}
.history-list strong,.history-list b{font-size:13px;line-height:1.15}
.history-list span{font-size:10px;line-height:1.25}
.history-opponent{gap:8px}
@media(max-width:560px){
 .own-dice-grid{gap:6px}
 .previous-bid{margin-bottom:-7px;padding:2px 12px;font-size:11px}
 .previous-bid strong{font-size:11px}
 .history-list li{gap:7px;padding:7px 8px}
}

/* Coach mode uses a distinct, subdued gold so it cannot be confused with normal move hints. */
.seg.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.coach-note{display:flex;align-items:center;justify-content:center;gap:7px;margin:10px auto 0;color:#c7a64f;font-size:12px;font-weight:800;text-align:center}
.coach-note i{width:10px;height:10px;flex:0 0 auto;border-radius:50%;background:#8a681f;box-shadow:0 0 0 3px #d1ad4a35}
.checkerboard .cell.coach-source{box-shadow:inset 0 0 0 5px #8a681f}
.checkerboard .cell.coach-target:after{content:'';width:30%;height:auto;aspect-ratio:1;border-radius:50%;background:#8a681f!important;box-shadow:0 0 0 4px #d1ad4a44!important}
.cc-hole.coach-source{box-shadow:0 0 0 5px #8a681f}
.cc-hole.coach-target{background:#8a681f!important;box-shadow:0 0 0 5px #d1ad4a44!important}
.chess-cell.coach-source{box-shadow:inset 0 0 0 5px #8a681f}
.chess-cell.coach-target:after{content:'';position:absolute;width:30%;height:auto;aspect-ratio:1;border:0!important;border-radius:50%;background:#8a681f!important;box-shadow:0 0 0 4px #d1ad4a44!important;z-index:3}
.go-point.coach-target{background:#8a681f55;box-shadow:inset 0 0 0 3px #8a681f;border-radius:50%}

/* The losing Battleship player gets a short, clearly labelled full-fleet reveal. */
.battle-reveal-banner{margin:0 auto 10px;padding:8px 14px;border:1px solid #8a681f;border-radius:10px;background:#332d22;color:#e2c56f;font-size:12px;font-weight:900;text-align:center}
.desktop-reveal-banner{display:block;width:min(720px,100%)}
.fleet-revealed .cell.ship:not(.hit):after{content:'';width:24%;height:24%;border-radius:50%;background:#e2c56f;box-shadow:0 0 0 3px #332d2288}
@media(min-width:851px){.mobile-battle-board+.battle-reveal-banner,.battle-opponent-status+.battle-reveal-banner{display:none}}
@media(max-width:850px){.desktop-reveal-banner{display:none}}

/* Full-height document dialogs share History's visual-viewport and safe-area shell. */
.history-dialog,.viewport-dialog{position:fixed;inset:var(--dialog-viewport-top,0px) 0 auto;box-sizing:border-box;align-items:stretch;width:100%;max-width:100vw;height:var(--dialog-viewport-height,var(--history-viewport-height,100vh));max-height:var(--dialog-viewport-height,var(--history-viewport-height,100vh));padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));overflow-x:hidden;touch-action:pan-y}
.history-dialog{overflow-y:auto}.viewport-dialog{overflow-y:hidden}
.history-dialog .history-panel{box-sizing:border-box;width:min(900px,100%);max-width:100%;min-width:0;min-height:min(760px,calc(var(--history-viewport-height,100vh) - 12px));max-height:none;overflow:visible}
.history-panel>*,.history-heading,.history-name-row,.history-games,.history-list,.history-list li,.history-chart,.history-chart svg{min-width:0;max-width:100%;box-sizing:border-box}

@media(max-width:560px){
 .history-dialog,.viewport-dialog{align-items:stretch;padding:max(5px,env(safe-area-inset-top)) max(5px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left))}
 .history-dialog .history-panel{width:100%;height:auto;max-height:none;padding:12px 10px}
 .seg.four button{padding-inline:3px;font-size:14px}
}

/* Final Coach indicator behavior: default hint geometry, gold color, no caption. */
.coach-note{display:none!important}
.checkerboard .cell.coach-target.legal:after{width:34%;background:#8a681f!important;box-shadow:0 0 0 4px #d1ad4a44!important}
.checkerboard.international-board .cell.coach-target.legal:after{width:34%}
.cc-hole.coach-target.legal{background:#8a681f!important;box-shadow:0 0 0 5px #d1ad4a44!important}
.chess-cell.coach-target.legal:after,.chess-cell.coach-target.legal:has(.chess-piece):after{width:28%;height:auto;aspect-ratio:1;border:0!important;border-radius:50%;background:#8a681f!important;box-shadow:none!important}
.coach-action{border-color:#8a681f!important;background:#4b3d22!important;color:#e2c56f!important;box-shadow:inset 0 0 0 2px #8a681f}
@media(max-width:850px){
 .checkerboard .cell.coach-target.legal:after{width:36%}
 .checkerboard.international-board .cell.coach-target.legal:after{width:36%}
}
@media(max-width:430px){.checkerboard .cell.coach-target.legal:after{width:38%}.checkerboard.international-board .cell.coach-target.legal:after{width:38%}}

/* One fleet-reveal banner per responsive layout. */
.mobile-reveal-banner{display:none}
@media(max-width:850px){.mobile-reveal-banner{display:block}}

/* Previous Liar's Dice bid mirrors the active bid card using muted text. */
.previous-bid{margin-bottom:0;padding:15px 18px;border-radius:15px;background:#1c3941;color:#8fa9ae;font-size:inherit}
.previous-bid span,.previous-bid strong{color:#8fa9ae}
.previous-bid strong{font-size:22px}
@media(max-width:560px){.previous-bid{margin-bottom:0;padding:15px 18px;font-size:inherit}.previous-bid strong{font-size:18px}}

/* Compact two-row history records: title/time, then opponent/result. */
.history-list li{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:3px!important}
.history-list .history-record-row{display:flex!important;min-width:0;width:100%;max-width:100%;align-items:center;line-height:1.15}
.history-record-main{justify-content:flex-start;gap:8px}
.history-record-main strong{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history-record-main span{flex:0 0 auto;color:#52685f}
.history-record-details{justify-content:space-between;gap:10px}
.history-record-details .history-opponent{display:flex!important;min-width:0;max-width:none!important;flex:1 1 auto;align-items:center;justify-content:flex-start;gap:5px;overflow:hidden;text-align:left}.history-record-details .history-opponent>i{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal}.history-record-details .history-changes{flex:0 0 auto;flex-wrap:nowrap}
.history-result{display:flex;flex:0 0 auto;align-items:center;gap:7px;margin-left:auto}
.history-result em{color:#52685f;font-style:normal;font-weight:900}
@media(max-width:520px){.history-record-main{gap:6px}}

/* Keep recent-match metadata as prominent as the score and pin time to the right. */
.history-record-main{justify-content:space-between}
.history-record-main .history-timestamp{flex:0 0 auto;margin-left:auto;text-align:right;white-space:nowrap}
.history-record-main .history-timestamp,.history-record-details .history-opponent,.history-result em{font-size:13px;line-height:1.15}

/* Force every visible Dice-game label and numeral through the app typeface. */
.dice-page,.dice-page button,.dice-page input,.dice-page .game-select-trigger,.dice-page .game-select-trigger span,.dice-selection-panel,.dice-selection-panel button{font-family:"Trebuchet MS",system-ui,sans-serif!important}

/* Private room entry and waiting room. */
.room-join-box{margin:13px 0;padding:13px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}.room-join-box>label{display:block;margin-bottom:7px;color:var(--muted);font-size:13px;font-weight:900}.room-join-box>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.room-join-box .input{letter-spacing:2px;font-weight:900}.room-capacity-note{margin:8px 0 0!important;color:#8fe4d4!important;font-size:12px}.waiting-room-panel{text-align:center}.join-code-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;margin:20px 0 14px;padding:15px;border:1px solid #46647a;border-radius:17px;background:#182a3b;text-align:left}.join-code-card span{color:#91a4b5;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:1px}.join-code-card strong{grid-row:2;font-size:42px;line-height:1;color:var(--mint2);letter-spacing:5px}.join-code-card button{grid-row:1/3;grid-column:2}.waiting-room-settings{margin:0 0 18px;padding:13px;border:1px solid var(--line);border-radius:15px;background:var(--panel2);text-align:left}.waiting-room-settings h3{margin:0 0 10px;color:#dce9e8;font-size:13px;letter-spacing:.5px;text-transform:uppercase}.waiting-room-settings dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.waiting-room-settings dl>div{min-width:0;padding:9px 10px;border-radius:10px;background:var(--panel2)}.waiting-room-settings dt{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.waiting-room-settings dd{overflow:hidden;margin:3px 0 0;color:#f2f6f5;font-size:13px;font-weight:850;text-overflow:ellipsis}.waiting-room-count{display:flex;align-items:baseline;justify-content:center;gap:7px;margin-bottom:12px}.waiting-room-count strong{font-size:28px;color:var(--mint2)}.waiting-room-count span{color:var(--muted)}.waiting-room-roster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0 0 16px;padding:0;list-style:none}.waiting-room-roster li{min-height:38px;display:grid;grid-template-columns:24px minmax(0,max-content) auto auto minmax(0,1fr) auto;grid-template-areas:"seat name level rating . state";align-items:center;min-width:0;gap:7px;padding:7px 9px;border-radius:11px;background:var(--panel2);text-align:left}.waiting-room-roster li.has-kick{grid-template-columns:24px minmax(0,max-content) auto auto minmax(0,1fr) auto 20px;grid-template-areas:"seat name level rating . state kick"}.waiting-room-roster i{display:grid;grid-area:seat;place-items:center;width:23px;height:23px;border-radius:50%;background:var(--panel2);color:var(--paper);font-style:normal;font-size:10px;font-weight:900}.waiting-room-roster span{grid-area:name;min-width:0;overflow:hidden;color:var(--paper);font-size:14px;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.waiting-room-roster small{display:contents;color:var(--muted);font-size:10px;font-weight:900;text-transform:none}.waiting-room-roster small b{display:inline-flex;align-items:center;min-height:20px;padding:2px 6px;border-radius:999px;background:var(--panel2);color:var(--muted);font-size:10px;font-weight:900;line-height:1;white-space:nowrap}.waiting-room-roster small .match-level{grid-area:level;color:var(--match-level-color,var(--paper))}.waiting-room-roster small .match-state{grid-area:state;color:var(--mint2)}.waiting-room-roster small .match-opponent{grid-area:level}.waiting-room-roster small .match-rating{grid-area:rating;color:var(--metric-rating)}.waiting-room-roster li.host-player span{color:var(--gold);font-weight:950}.room-kick{display:grid;grid-area:kick;align-self:center;width:20px;min-width:20px;height:20px;min-height:20px;place-items:center;padding:0;border:1px solid var(--line);border-radius:6px;background:var(--panel2);color:#eef5f2;font-size:18px;line-height:1}.waiting-room-panel>[data-start-room],.waiting-ready-controls>button{width:100%}.waiting-ready-controls{display:grid}

/* Multi-player Dice status and compact bid controls. */
.dice-players-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:7px;margin:0 auto 12px;width:min(900px,100%)}.dice-player-chip{display:grid;grid-template-columns:25px minmax(0,1fr) auto;align-items:center;gap:6px;min-width:0;padding:8px 9px;border:1px solid #34495d;border-radius:13px;background:#1c2c3e}.dice-player-chip.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}.dice-player-chip.mine{background:#21374a}.dice-player-chip i{grid-row:1/3;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#314a60;color:#dce9e8;font-style:normal;font-size:11px;font-weight:900}.dice-player-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900}.dice-player-chip small{color:#91a4b5;font-size:10px}.dice-player-chip b{grid-column:3;grid-row:1/3;display:grid;place-items:center;min-width:27px;height:27px;border-radius:50%;background:#263f53;color:var(--mint2)}.dice-quantity-stepper{display:grid;grid-template-columns:44px minmax(58px,1fr) 44px;align-items:center;overflow:hidden;min-height:54px;border:1px solid #50657a;border-radius:13px;background:#172a3a}.dice-quantity-stepper button{height:100%;border:0;background:#d7e3dd;color:var(--mint2);font-size:26px;font-weight:900;cursor:pointer}.dice-quantity-stepper strong{text-align:center;color:#edf5f2;font-size:24px}.dice-bid-controls label>small{display:block;margin-top:6px;color:#77929f;font-size:10px}.dice-face-choices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}.dice-face-choice{display:grid;place-items:center;padding:4px;border:1px solid #425e6f;border-radius:10px;background:#172a3a;cursor:pointer}.dice-face-choice.active{border-color:var(--gold);background:#3b3a2f;box-shadow:0 0 0 2px #f6c45333}.bid-face-die{position:relative;display:block;width:30px;aspect-ratio:1;border-radius:7px;background:#173c3d}.showdown-hand>div{display:flex;flex-wrap:nowrap;gap:5px}.showdown-dice-row{width:100%;min-width:0}.showdown-dice-row .reveal-die{width:var(--responsive-die-size,48px);flex:0 0 var(--responsive-die-size,48px)}.multi-final-list{display:grid;gap:7px;margin:16px 0}.multi-final-list span{display:flex;justify-content:space-between;padding:10px 13px;border-radius:11px;background:var(--panel2)}.multi-final-list .winner{border-left:4px solid var(--mint)}.multi-final-list .loser{border-left:4px solid var(--coral)}.multi-final-list .neutral{border-left:4px solid var(--gold)}
@media(max-width:560px){.join-code-card{margin:12px 0 10px;padding:11px}.join-code-card strong{font-size:35px}.join-code-card button{padding-inline:12px}.waiting-room-settings{margin-bottom:12px;padding:10px}.waiting-room-settings h3{margin-bottom:7px}.waiting-room-settings dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.waiting-room-settings dl>div{padding:7px 8px}.waiting-room-count{margin-bottom:8px}.waiting-room-roster{grid-template-columns:1fr;margin-bottom:10px}.waiting-room-panel>[data-start-room]{position:sticky;z-index:2;bottom:max(0px,env(safe-area-inset-bottom));box-shadow:0 -8px 18px #243b3422}.dice-players-bar{display:flex;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.dice-player-chip{flex:0 0 128px}.dice-bid-controls{grid-template-columns:1fr}.dice-face-choices{gap:4px}.dice-face-choice{padding:3px}.bid-face-die{width:28px}.dice-quantity-stepper{min-height:48px}.dice-showdown .showdown-hand{margin:0!important}}

/* Multiplayer card and tile games */
.card-game-page{width:min(1080px,100%);margin:auto}.credit-players-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:7px;margin:0 auto 12px}.credit-player-chip{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:6px;padding:8px 10px;border:1px solid #b2c5bc;border-radius:13px;background:#d7e3dd;min-width:0}.credit-player-chip.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #c6950055}.credit-player-chip.mine{background:#d7e3dd}.credit-player-chip i{grid-row:1/3;display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#d7e3dd;font-style:normal;font-size:11px;font-weight:900}.credit-player-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900}.credit-player-chip small{color:#52685f;font-size:10px}.credit-player-chip b{grid-column:3;grid-row:1/3;color:var(--mint2);font-size:14px}.card-game-status{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 15px;border-radius:13px;background:#15363a;color:#d8f4ed}.card-game-status strong{font-size:14px}.card-game-status span{color:#8eb8b0;font-size:11px;text-align:right}
.live-credit{position:relative;display:inline-flex;align-items:baseline;overflow:visible;isolation:isolate;--credit-delta-left:calc(100% + 5px);--credit-delta-right:auto;--credit-delta-top:50%}.live-credit-total{display:inline-flex;align-items:center;gap:.28em;color:inherit;font:inherit;line-height:1;white-space:nowrap}.credit-amount{display:inline;color:inherit;font:inherit;line-height:inherit;white-space:nowrap}.credit-amount>span:last-child{line-height:inherit}.credit-dollar{display:inline-block;flex:0 0 auto;width:.72em;height:.72em;width:1cap;height:1cap;max-width:1em;max-height:1em;border:0;vertical-align:baseline;filter:drop-shadow(0 0 2px #c6950044)}.credit-amount .credit-dollar{margin:0 .28em 0 0}.live-credit-total .credit-dollar{margin:0}.live-credit-effects{position:fixed;z-index:101;inset:0;overflow:visible;pointer-events:none}.live-credit-effect-anchor{position:fixed;display:block;overflow:visible;pointer-events:none}.live-credit-delta{position:absolute;z-index:8;left:var(--credit-delta-left);right:var(--credit-delta-right);top:var(--credit-delta-top);color:var(--gold);font:inherit;font-weight:900;font-style:normal;line-height:1;white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px #061019,0 0 8px #f6c45355;animation-duration:2400ms;animation-timing-function:cubic-bezier(.2,.72,.28,1);animation-fill-mode:both}.live-credit-delta.positive{animation-name:credit-delta-rise}.live-credit-delta.negative{animation-name:credit-delta-fall}@keyframes credit-delta-rise{0%{opacity:0;transform:translate3d(0,13px,0)}24%,62%{opacity:1;transform:translate3d(0,0,0)}100%{opacity:0;transform:translate3d(0,-18px,0)}}@keyframes credit-delta-fall{0%{opacity:0;transform:translate3d(0,-13px,0)}24%,62%{opacity:1;transform:translate3d(0,0,0)}100%{opacity:0;transform:translate3d(0,18px,0)}}
.mahjong-table{display:grid;gap:12px;padding:14px;border:1px solid #285059;border-radius:20px;background:linear-gradient(145deg,#0d3234,#10272d)}.mahjong-opponents{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.mahjong-opponent,.mahjong-self{min-width:0;padding:10px;border:1px solid #34535a;border-radius:14px;background:#10262d}.mahjong-opponent.active,.mahjong-self.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}.mahjong-opponent header,.mahjong-self header{display:flex;justify-content:space-between;gap:8px;margin-bottom:7px}.mahjong-opponent header strong,.mahjong-self header strong{font-size:12px}.mahjong-opponent header span,.mahjong-self header span,.mahjong-opponent>small{color:#8ba2ac;font-size:10px}.mahjong-hidden-hand{display:flex;gap:2px;overflow:hidden}.mahjong-hidden-hand i{flex:0 0 9px;height:23px;border-radius:2px;background:linear-gradient(90deg,#d7e4db,#a9c2b6)}.mahjong-discards,.mahjong-melds{display:flex;flex-wrap:wrap;gap:2px;margin-top:6px}.mahjong-melds>span{display:flex;padding:2px;border-radius:4px;background:#203c42}.mahjong-tile{display:inline-block;width:auto;height:auto;border-radius:0;background:none;box-shadow:none;color:inherit;font-style:normal;font-size:30px;line-height:1}.mahjong-discards .mahjong-tile,.mahjong-melds .mahjong-tile{width:auto;height:auto;font-size:22px}.mahjong-self{padding:12px}.mahjong-own-hand{display:flex;justify-content:center;align-items:flex-end;gap:4px;overflow-x:auto;padding:5px 2px 8px;scrollbar-width:thin}.mahjong-own-tile{flex:0 0 auto;padding:2px;border:2px solid transparent;border-radius:7px;background:none;cursor:pointer;transition:translate .15s,border-color .15s}.mahjong-own-tile .mahjong-tile{width:auto;height:auto;font-size:42px}.mahjong-own-tile.selected{translate:0 -9px;border-color:var(--gold);box-shadow:0 0 0 2px #f6c45333}.mahjong-own-tile.selected .mahjong-tile{outline:0}.mahjong-own-tile.coach-target{border-color:#8a681f;box-shadow:0 0 0 2px #d1ad4a44}.mahjong-own-tile:disabled{cursor:default;opacity:1}.mahjong-actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin-top:9px}.mahjong-actions button{min-width:100px}.mahjong-actions span{color:#91a9b2;font-size:11px}.credit-settlement ol{display:grid;gap:7px;padding:0;margin:16px 0;list-style:none}.credit-settlement li{display:flex;justify-content:space-between;align-items:center;padding:10px 13px;border-radius:11px;background:#d7e3dd}.credit-settlement li>span{display:flex;flex-direction:column;text-align:left}.credit-settlement li small{color:#52685f;font-size:10px}.credit-settlement li.positive{border-left:4px solid var(--mint)}.credit-settlement li.negative{border-left:4px solid var(--coral)}.credit-settlement li.even{border-left:4px solid #b2c5bc}.credit-settlement li.positive b{color:var(--mint2)}.credit-settlement li.negative b{color:#ff8da2}.credit-session-note{color:#52685f;font-size:11px}
.holdem-table{position:relative;display:grid;gap:14px;min-height:540px;padding:18px;border:1px solid #285b4b;border-radius:30px;background:radial-gradient(ellipse at center,#145a43 0,#0c4437 58%,#102c2d 100%);box-shadow:inset 0 0 0 9px #17373a}.holdem-pot{text-align:center}.holdem-pot>span,.holdem-pot>small{display:block;color:#9fc4b9;font-size:11px}.holdem-pot>strong{display:block;color:#fff2bc;font-size:23px}.holdem-board-cards,.holdem-self-cards{display:flex;justify-content:center;gap:7px}.poker-card{display:grid;grid-template-rows:auto 1fr;width:58px;height:80px;padding:6px;border:1px solid #9aa79f;border-radius:8px;background:#f7f7ee;box-shadow:0 4px 0 #aab8af,inset 0 0 0 1px #f3f6f399;color:#182532;font-style:normal;text-align:left}.poker-card b{font-size:21px}.poker-card span{align-self:end;text-align:right;font-size:27px}.poker-card.red{color:var(--card-red,#c52e45)}.poker-card.hidden{display:grid;place-items:center;border-color:#80938a;background:repeating-linear-gradient(45deg,#234b6b 0 5px,#d7e0d9 5px 7px);color:#e7d36a;font-size:24px}.holdem-seats{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:8px}.holdem-seat{display:grid;grid-template-columns:1fr auto;gap:4px;padding:9px;border:1px solid #487365;border-radius:13px;background:#112d2d}.holdem-seat.active{border-color:var(--gold);box-shadow:0 0 0 2px #f6c45333}.holdem-seat.mine{background:#163d38}.holdem-seat.folded,.casino-poker-seat.folded{opacity:.58;box-shadow:inset 0 0 0 999px #06151a66}.holdem-seat strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.holdem-seat>div.holdem-seat-cards{grid-row:1/4;grid-column:2;display:flex;gap:2px}.holdem-seat .poker-card{width:27px;height:38px;padding:2px;border-radius:4px;box-shadow:0 2px 0 #9daaa2,inset 0 0 0 1px #f3f6f399}.holdem-seat .poker-card b{font-size:10px}.holdem-seat .poker-card span{font-size:12px}.holdem-seat>span{font-size:11px;color:var(--mint2)}.holdem-seat>small{font-size:9px;color:#96aaa5}.holdem-self-cards{align-items:center}.holdem-self-cards>span{margin-right:6px;color:#b4cec5;font-size:12px;font-weight:900}.holdem-actions label{display:grid;gap:3px}.holdem-actions label>span{font-size:10px;color:#9cb3ad}.holdem-actions input{width:110px;min-height:42px}.holdem-wait{text-align:center;color:#c2d5cf;font-weight:800}
@media(max-width:700px){.credit-players-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.credit-player-chip{padding:6px 7px}.mahjong-opponents{grid-template-columns:1fr}.mahjong-opponent{display:grid;grid-template-columns:minmax(95px,.7fr) 1.3fr;gap:4px 8px}.mahjong-opponent header{grid-row:1/4}.mahjong-hidden-hand{align-self:center}.mahjong-discards,.mahjong-melds{margin-top:0}.holdem-table{min-height:0;padding:14px 11px;border-radius:20px}.holdem-seats{grid-template-columns:repeat(2,minmax(0,1fr))}.holdem-actions button{padding-inline:8px}.holdem-actions input{width:100%}.poker-card{width:47px;height:66px}.poker-card b{font-size:17px}.poker-card span{font-size:22px}}
.holdem-seat.folded,.casino-poker-seat.folded{opacity:1}.holdem-seat.folded>*,.casino-poker-seat.folded>*{opacity:.58}
@media(max-width:420px){.card-game-status{align-items:flex-start;flex-direction:column}.card-game-status span{text-align:left}.mahjong-table{padding:9px}.mahjong-own-tile .mahjong-tile{width:auto;height:auto;font-size:36px}.mahjong-own-hand{justify-content:flex-start}.mahjong-actions button{min-width:82px}.holdem-seats{grid-template-columns:1fr 1fr}.holdem-board-cards{gap:3px}.holdem-board-cards .poker-card{width:39px;height:56px}.holdem-self-cards .poker-card{width:52px;height:72px}}

/* Shared gold active-state language for dice and credit games. */
.pig-scores>div.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}
.dice-showdown .showdown-hand{display:block!important;padding:10px!important}
.dice-showdown .showdown-hand>b{display:block;width:100%!important;margin-bottom:7px}
.dice-showdown,.dice-showdown .dice-reveal,.dice-showdown .showdown-hand{min-width:0;max-width:100%;overflow:hidden}.dice-showdown .dice-reveal>strong,.dice-showdown .dice-reveal>p{overflow-wrap:anywhere}.dice-showdown .showdown-dice-row{display:grid;grid-template-columns:repeat(var(--dice-count),minmax(0,1fr));align-items:start;gap:clamp(2px,1vw,5px);width:100%;min-width:0;max-width:100%;margin:0!important}.dice-showdown .showdown-dice-row .reveal-die{justify-self:start;width:100%;max-width:48px;min-width:0;flex:none}
.ai-opponent-stepper{max-width:260px}

/* Compact Mahjong hands and one-row opponent information. */
.mahjong-opponent header>div{display:grid;gap:3px;min-width:0}.mahjong-opponent header>div strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mahjong-opponent header>div small{color:#8ba2ac;font-size:10px}.mahjong-opponent-cards{display:grid;gap:6px;min-width:0}.mahjong-concealed-row{display:grid;align-content:start;justify-items:start;gap:3px;min-width:0}.mahjong-opponent-meta{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;color:#8ba2ac;font-size:10px;white-space:nowrap}.mahjong-hidden-hand{width:100%;gap:2px;min-width:0}.mahjong-hidden-hand i{flex:0 0 11px;height:28px}.mahjong-shown-section{display:grid;grid-template-columns:25px minmax(0,1fr);align-items:start;gap:4px;min-width:0}.mahjong-shown-section>small{padding-top:8px;color:#718c96;font-size:9px;line-height:1}.mahjong-exposed-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:4px;min-width:0}.mahjong-shown-meld{display:grid;grid-auto-flow:column;grid-auto-columns:32px;align-items:start;gap:1px;min-width:0}.mahjong-shown-row{display:grid;grid-template-columns:repeat(auto-fill,32px);align-items:start;justify-content:start;gap:3px;min-width:0;max-width:100%;overflow:visible}.mahjong-shown-row>.mahjong-tile,.mahjong-shown-meld>.mahjong-tile{display:grid;place-items:center;width:32px;height:32px;overflow:hidden;font-size:32px;line-height:1}.mahjong-shown-meld>.mahjong-exposed-tile{border-radius:4px;background:#203c42}.mahjong-self{position:relative}.mahjong-self>header{position:absolute;top:10px;right:11px;z-index:1;display:grid;justify-items:end;gap:3px;margin:0;text-align:right;line-height:1.15}.mahjong-self>.mahjong-melds{justify-content:flex-start;max-width:calc(100% - 90px);margin:0}.mahjong-own-hand{display:grid;grid-template-columns:repeat(7,max-content);justify-content:start;align-items:end;gap:5px;overflow:visible;padding:2px 0 10px}.mahjong-own-tile .mahjong-tile{font-size:40px}

/* Symmetric Hold'em seats and three-row betting controls. */
.holdem-seat{min-height:78px;align-items:center}.holdem-seat>div.holdem-seat-cards{grid-row:1/4;grid-column:2;display:flex;align-items:center;gap:5px}.holdem-seat .poker-card{width:40px;height:56px;padding:4px;border-radius:6px}.holdem-seat .poker-card b{font-size:15px}.holdem-seat .poker-card span{font-size:19px}.holdem-actions{display:grid;grid-template-columns:1fr;justify-content:center;align-items:end;gap:10px;width:min(560px,100%);margin:auto;padding:12px;border-radius:14px;background:#0b2928}.holdem-action-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.holdem-action-row button{width:100%;min-height:52px}.holdem-raise-control{display:grid;grid-template-columns:1fr;gap:5px}.holdem-raise-control>span{color:#9cb3ad;font-size:10px}.holdem-raise-control .dice-quantity-stepper{width:100%}.holdem-raise-control .dice-quantity-stepper button:disabled{opacity:.4;cursor:not-allowed}
/* Per-seat Hold'em coaching: the label and gold card border stay with the described hand. */
.holdem-seat.coach-ranked{grid-template-rows:auto auto auto minmax(22px,auto);min-height:100px}.holdem-seat.coach-ranked>div.holdem-seat-cards{grid-row:1/4}.holdem-seat>div.holdem-seat-coach{grid-column:1/-1;grid-row:4;display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;padding-top:5px;border-top:1px solid #8a783d55;color:#d8b950;font-size:9px;font-weight:900;line-height:1.1}.holdem-seat-coach.placeholder{visibility:hidden}.holdem-seat-coach span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.holdem-seat-coach b{flex:0 0 auto;color:#c6b77f;font-size:9px;white-space:nowrap}.poker-card.holdem-scoring-card{border:2px solid #f6c453;box-shadow:0 3px 0 #8d7229,0 0 0 2px #f6d66b77,0 0 12px #f6c45399,inset 0 0 0 1px #fff7c7aa}

@media(max-width:700px){.mahjong-opponent{display:grid;grid-template-columns:62px minmax(0,1fr);gap:5px}.mahjong-opponent header{display:block;grid-column:1;grid-row:1;margin:0}.mahjong-opponent header>div{gap:4px}.mahjong-opponent header>span{display:block;margin-top:6px}.mahjong-opponent-cards{grid-column:2;grid-row:1}.mahjong-own-hand{grid-template-columns:repeat(7,max-content);justify-content:start}.mahjong-own-tile .mahjong-tile{font-size:38px}.holdem-actions{grid-template-columns:1fr}.holdem-actions label{grid-column:auto}.holdem-seat .poker-card{width:36px;height:51px}.holdem-seat .poker-card b{font-size:13px}.holdem-seat .poker-card span{font-size:17px}}
@media(max-width:420px){.mahjong-opponent{grid-template-columns:58px minmax(0,1fr);gap:4px}.mahjong-concealed-row{gap:3px}.mahjong-hidden-hand i{flex-basis:9px;height:25px}.mahjong-shown-section{grid-template-columns:22px minmax(0,1fr);gap:3px}.mahjong-shown-section>small{font-size:8px}.mahjong-exposed-row{gap:3px}.mahjong-shown-meld{grid-auto-columns:30px}.mahjong-shown-row{grid-template-columns:repeat(auto-fill,30px);gap:2px}.mahjong-shown-row>.mahjong-tile,.mahjong-shown-meld>.mahjong-tile{width:30px;height:30px;font-size:30px}.mahjong-own-hand{grid-template-columns:repeat(7,max-content);justify-content:start;gap:2px}.mahjong-own-tile{padding:1px}.mahjong-own-tile .mahjong-tile{width:auto;height:auto;font-size:32px}.holdem-seat{padding:7px}.holdem-seat>div.holdem-seat-cards{gap:3px}.holdem-seat .poker-card{width:35px;height:50px}.holdem-seat .poker-card b{font-size:13px}.holdem-seat .poker-card span{font-size:17px}}

/* Left-aligned game headings and compact Mahjong identity/card alignment. */
.lobby-panel{position:relative}.lobby-panel>.eyebrow{padding-inline-start:2px}.lobby-panel>.eyebrow,.lobby-panel>.sub{text-align:left!important}.lobby-title-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.lobby-title-row h2{min-width:0;margin-block:8px 6px;text-align:left!important}
.game-guide-button{position:static;z-index:2;flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #b2c5bc;border-radius:50%;background:#d7e3dd;color:#52685f;font-size:20px;font-weight:800;line-height:1;box-shadow:inset 0 1px 0 #243b3416}.game-guide-button:hover,.game-guide-button:focus-visible{border-color:var(--gold);color:var(--gold);background:#d7e3dd}.game-guide-panel{display:flex;flex-direction:column;width:min(760px,calc(100vw - 24px));height:100%;max-height:100%;padding:clamp(18px,3vw,30px);overflow:hidden;text-align:left!important}.game-guide-heading{display:flex;flex:0 0 auto;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:10px;text-align:left}.game-guide-heading h2{margin:2px 0 0;font-size:clamp(27px,4vw,38px);text-align:left}.game-guide-heading>.secondary{flex:0 0 auto}.game-guide-summary{flex:0 0 auto;margin:0;color:#52685f;font-size:16px;line-height:1.55;text-align:left!important}.game-guide-scroll{min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}.game-guide-setting{margin:14px 0 0;padding:10px 12px;border:1px solid #b2c5bc66;border-radius:10px;background:#d7e3dd;color:#52685f;font-size:13px;line-height:1.45;text-align:left!important}.game-guide-content{display:grid;gap:12px;margin-top:18px}.game-guide-section{padding:16px;border:1px solid #b2c5bc55;border-radius:13px;background:#d7e3dd;text-align:left!important}.game-guide-section h3{margin:0 0 7px;color:var(--gold);font-size:17px;line-height:1.25;text-align:left!important}.game-guide-section p{margin:0;color:#52685f;font-size:14px;line-height:1.6;text-align:left!important}.game-guide-section ul{margin:9px 0 0;padding-left:21px;color:#52685f;font-size:14px;line-height:1.55;text-align:left!important}.game-guide-section li+li{margin-top:5px}
.game-guide-panel,.game-guide-content,.game-guide-section{min-width:0}.game-guide-group{overflow:hidden;border:1px solid #b2c5bc66;border-radius:14px;background:#d7e3dd}.game-guide-group>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer;list-style:none;background:#d7e3dd}.game-guide-group>summary::-webkit-details-marker{display:none}.game-guide-group>summary span{display:grid;gap:2px}.game-guide-group>summary strong{color:var(--gold);font-size:17px}.game-guide-group>summary small{color:#52685f;font-size:12px}.game-guide-group>summary i{position:relative;width:18px;height:18px;flex:0 0 auto}.game-guide-group>summary i:before,.game-guide-group>summary i:after{content:"";position:absolute;left:3px;top:8px;width:12px;height:2px;border-radius:2px;background:#d7e3dd}.game-guide-group>summary i:after{rotate:90deg;transition:rotate .18s ease}.game-guide-group[open]>summary i:after{rotate:0deg}.game-guide-group-content{display:grid;gap:10px;padding:10px}.game-guide-group .game-guide-section{border-color:#b2c5bc44}.game-guide-table-wrap{width:100%;max-width:100%;margin-top:12px;overflow-x:auto;border:1px solid #b2c5bc55;border-radius:10px;background:#d7e3dd;overscroll-behavior-x:contain}.game-guide-table-wrap table{width:100%;min-width:460px;border-collapse:collapse;color:#52685f;font-size:13px;line-height:1.4}.game-guide-table-wrap th,.game-guide-table-wrap td{padding:9px 10px;border-right:1px solid #b2c5bc44;border-bottom:1px solid #b2c5bc44;text-align:left;vertical-align:top}.game-guide-table-wrap th{background:#d7e3dd;color:var(--gold);font-weight:900;white-space:nowrap}.game-guide-table-wrap tr:last-child td{border-bottom:0}.game-guide-table-wrap th:last-child,.game-guide-table-wrap td:last-child{border-right:0}
@media(max-width:600px){.game-guide-button{width:30px;height:30px;font-size:18px}.game-guide-panel{width:100%;padding:16px 13px}.game-guide-heading{gap:10px}.game-guide-heading h2{font-size:25px}.game-guide-heading>.secondary{padding:8px 11px}.game-guide-summary{font-size:14px}.game-guide-content{gap:9px;margin-top:13px}.game-guide-section{padding:13px}.game-guide-section h3{font-size:16px}.game-guide-section p,.game-guide-section ul{font-size:13px}.game-guide-table-wrap{overflow:visible;border:0;background:transparent}.game-guide-table-wrap table{min-width:0;font-size:12px}.game-guide-table-wrap thead{display:none}.game-guide-table-wrap tbody,.game-guide-table-wrap tr,.game-guide-table-wrap td{display:block;width:100%}.game-guide-table-wrap tr{margin-top:8px;overflow:hidden;border:1px solid #b2c5bc55;border-radius:9px;background:#d7e3dd}.game-guide-table-wrap tr:first-child{margin-top:0}.game-guide-table-wrap td{display:grid;grid-template-columns:minmax(88px,34%) 1fr;gap:9px;padding:8px 9px;border:0;border-bottom:1px solid #b2c5bc44}.game-guide-table-wrap td:last-child{border-bottom:0}.game-guide-table-wrap td:before{content:attr(data-label);color:var(--gold);font-weight:900}}
.mahjong-opponent{position:relative;display:block;grid-template-columns:none;min-height:58px}.mahjong-opponent>header{position:absolute;top:10px;right:10px;z-index:1;display:block;margin:0;text-align:right;line-height:1.15}.mahjong-opponent>header>div{justify-items:end;gap:3px}.mahjong-opponent-cards,.mahjong-concealed-row{width:100%;justify-items:start;text-align:left}.mahjong-opponent-meta{max-width:calc(100% - 105px)}.mahjong-concealed-count{color:#9bb0b7!important;font-weight:800}.mahjong-exposed-row,.mahjong-shown-row,.mahjong-self>.mahjong-melds{display:flex;width:100%;align-items:flex-start;align-content:flex-start;justify-content:flex-start;flex-wrap:wrap}.mahjong-shown-row{grid-template-columns:none}.mahjong-shown-row>.mahjong-tile{flex:0 0 auto}.mahjong-shown-meld{flex:0 0 auto}.mahjong-shown-section{width:100%;grid-template-columns:1fr;justify-items:start;gap:2px}.mahjong-shown-section>small{padding-top:0}.mahjong-self>.mahjong-melds,.mahjong-own-hand{margin-inline:0;text-align:left}

/* Hold'em coach guidance, bounded raise controls, and delayed showdown summary. */
.secondary:disabled{opacity:.4;cursor:not-allowed}.dice-quantity-stepper button:disabled{opacity:.35;color:#52685f;cursor:not-allowed}.holdem-primary-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.holdem-summary .result-panel{width:min(760px,100%)}.holdem-summary h2{margin:5px 0 14px;font-size:clamp(28px,7vw,42px)}.holdem-summary ol{display:grid;gap:7px;margin:0;padding:0;list-style:none}.holdem-summary li{display:grid;grid-template-columns:26px minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);text-align:left}.holdem-summary li.winner{border-color:var(--gold);box-shadow:inset 3px 0 #f6c453}.holdem-summary li.folded{opacity:.62}.holdem-summary li>i{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#30475c;color:#dce8e7;font-style:normal;font-size:10px;font-weight:900}.holdem-summary li>div:not(.holdem-summary-cards){display:grid;gap:2px}.holdem-summary li strong{font-size:12px}.holdem-summary li span{color:var(--muted);font-size:10px}.holdem-summary li>b{color:#f6c453;font-size:12px}.holdem-summary-cards{display:flex;gap:3px}.holdem-summary-cards .poker-card{width:32px;height:44px;padding:3px;border-radius:5px}.holdem-summary-cards .poker-card b{font-size:12px}.holdem-summary-cards .poker-card span{font-size:15px}
@media(max-width:500px){.mahjong-opponent>header{top:8px;right:9px}.holdem-summary li{grid-template-columns:24px minmax(0,1fr) auto;gap:7px}.holdem-summary-cards{grid-column:2;grid-row:2}.holdem-summary li>b{grid-column:3;grid-row:1/3}.holdem-summary .result-panel{padding-inline:13px}}

/* Phone-first overflow contract: pages shrink to the viewport; only the page body scrolls vertically. */
html,body,#app{width:100%;max-width:100%}.shell,.main,.top,.content,.modal-wrap,.panel,.game-page,.game-tabs,.scorebar,.boards,.board-card,.strategy-wrap,.dice-page,.dice-table,.card-game-page,.mahjong-table,.mahjong-opponent,.mahjong-self,.holdem-table,.holdem-seat,.holdem-actions{min-width:0;max-width:100%}.game-page,.modal-wrap{width:100%}.game-page{align-self:start;margin:0 auto}.top-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.controls{flex:0 0 auto;min-width:0}.game-select-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cc-scroll{width:100%;max-width:100%;margin-inline:0;overflow:visible}.own-dice-grid,.showdown-dice-row{max-width:100%}.sea,.checkerboard,.go-board,.cc-board,.chess-board,.own-dice-grid,.pig-die,.holdem-table,.mahjong-table,.sea *,.checkerboard *,.go-board *,.cc-board *,.chess-board *{touch-action:none}

@media(max-width:560px){.dice-players-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;padding-bottom:0}.dice-player-chip{width:auto;min-width:0;max-width:none}.mahjong-shown-row{gap:2px}.mahjong-shown-row>.mahjong-tile{font-size:30px}}
@media(max-width:360px){.top{padding-inline:8px}.top .controls{gap:4px}.header-icon-btn{width:38px;height:38px}.game-page{padding-inline:3px}.holdem-table{padding-inline:8px}.holdem-seat{padding:5px}.holdem-seat .poker-card{width:31px;height:45px}.holdem-seat .poker-card b{font-size:12px}.holdem-seat .poker-card span{font-size:15px}.credit-player-chip{grid-template-columns:23px minmax(0,1fr) auto;padding-inline:5px}.credit-player-chip i{width:22px;height:22px}.dice-player-chip{grid-template-columns:22px minmax(0,1fr) auto;padding-inline:5px}.dice-player-chip i{width:21px;height:21px}.mahjong-opponent{grid-template-columns:54px minmax(0,1fr);padding:8px}.mahjong-opponent-meta{font-size:9px}.mahjong-hidden-hand i{flex-basis:8px}}
@media(max-width:330px){.holdem-seats{grid-template-columns:1fr}.credit-players-bar,.dice-players-bar{grid-template-columns:1fr 1fr}.card-game-status{padding-inline:10px}.dice-face-choices{grid-template-columns:repeat(3,minmax(0,1fr))}}
.lobby-panel .time-grid.dice-options{grid-template-columns:1fr}

/* Blackjack, Landlord, and Solitaire share the Hold'em card-table language. */
.blackjack-table,.landlord-table,.solitaire-table{width:min(900px,100%);min-width:0;margin-inline:auto}
.blackjack-dealer,.blackjack-hand{display:grid;gap:5px;min-width:0;padding:8px;border:1px solid #447163;border-radius:14px;background:#102f2e}
.blackjack-table{align-content:start;gap:10px;padding:14px}
.blackjack-dealer{--blackjack-card-row-height:80px;width:min(440px,100%);margin-inline:auto;text-align:center}
.blackjack-dealer .poker-card,.three-card-dealer .poker-card{width:clamp(52px,6vw,62px);height:auto;aspect-ratio:58/80;padding:clamp(5px,.7vw,6px)}
.blackjack-dealer .poker-card b,.three-card-dealer .poker-card b{font-size:clamp(18px,2vw,22px)}
.blackjack-dealer .poker-card span,.three-card-dealer .poker-card span{font-size:clamp(24px,2.7vw,29px)}
.blackjack-dealer header,.blackjack-hand header,.blackjack-hand footer,.landlord-opponent header,.landlord-self header{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0}
.blackjack-dealer header span,.blackjack-hand header span,.blackjack-hand footer span{color:#9eb9b2;font-size:10px}
.blackjack-player-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));gap:7px;min-width:0}
.blackjack-hand{--blackjack-card-row-height:66px}.blackjack-hand .poker-card{width:48px;height:66px;padding:5px}.blackjack-hand .poker-card b{font-size:17px}.blackjack-hand .poker-card span{font-size:22px}
.blackjack-hand.active,.landlord-opponent.active,.landlord-self.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}
.blackjack-hand.mine{background:#16413a}.blackjack-cards{display:flex;justify-content:center;align-items:flex-start;flex-wrap:wrap;gap:7px;min-width:0}.blackjack-dealer>.blackjack-cards,.blackjack-hand>.blackjack-cards{min-height:var(--blackjack-card-row-height)}
.blackjack-hand footer b{color:#fff2bc;font-size:20px}.blackjack-actions .holdem-action-row{grid-template-columns:repeat(3,minmax(0,1fr))}

.landlord-table{gap:11px}.landlord-bottom{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:7px;min-width:0}.landlord-bottom>span{margin-right:5px;color:#9eb9b2;font-size:12px;font-weight:900}
.landlord-bottom .poker-card,.landlord-last-cards .poker-card,.landlord-trick .poker-card{width:38px;height:53px;padding:3px;border-radius:5px}.landlord-bottom .poker-card b,.landlord-last-cards .poker-card b,.landlord-trick .poker-card b{font-size:13px}.landlord-bottom .poker-card span,.landlord-last-cards .poker-card span,.landlord-trick .poker-card span{font-size:16px}
.landlord-status{display:flex;align-items:flex-start;gap:10px}.landlord-status>div:first-child{display:grid;justify-items:start;gap:3px;min-width:0;text-align:left}.landlord-status>div:first-child>span{color:#8eb8b0;font-size:11px}.landlord-status .landlord-bottom{flex:0 1 auto;margin-left:auto;justify-content:flex-end;align-items:flex-start;flex-wrap:nowrap}.landlord-status .landlord-bottom>span{margin-right:2px;white-space:nowrap}
.landlord-opponents{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0}.landlord-opponent,.landlord-self{position:relative;display:grid;gap:6px;min-width:0;padding:28px 10px 10px;border:1px solid #447163;border-radius:13px;background:#112f2f}.landlord-opponent{min-height:104px}.landlord-self{background:#16413a}
.landlord-seat-meta{position:absolute!important;left:10px;top:10px;z-index:4;display:flex!important;justify-content:space-between;gap:8px;width:calc(100% - 20px);margin:0!important;pointer-events:none}.landlord-opponent .landlord-seat-meta,.landlord-self .landlord-seat-meta{align-items:flex-start}.landlord-seat-meta>div{display:grid;flex:1 1 auto;min-width:0;max-width:none;justify-items:start;gap:2px;text-align:left}.landlord-seat-meta>div>strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.landlord-seat-meta>small{flex:0 0 auto;color:#9eb9b2;font-size:10px;line-height:1.2;white-space:nowrap}.landlord-role-callout{color:var(--gold);font-size:15px;line-height:1;font-weight:1000;text-shadow:0 1px 7px #f6c45344}.landlord-remaining-cards{color:#e5f2ee;font-size:13px;line-height:1.1;font-weight:1000}
.landlord-player-last,.landlord-opponent>.landlord-player-last,.landlord-self .landlord-self-last{position:relative;inset:auto;display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;justify-items:stretch;width:100%;height:66px;min-height:66px;margin:0;padding:0;background:transparent}.landlord-last-play-content{position:relative;display:grid;place-items:center;align-content:center;width:100%;height:100%;min-width:0;text-align:center}.landlord-last-play-content .landlord-play-label{position:absolute;right:0;top:50%;display:grid;justify-items:end;gap:2px;width:52px;transform:translateY(-50%);padding:0;color:#bdd4ce;font-size:10px;font-weight:900;text-align:right}.landlord-play-label b{color:var(--gold);font-size:9px;white-space:nowrap}.landlord-last-play-content .landlord-last-cards{display:flex;position:static;justify-content:center;align-items:center;flex-wrap:wrap;gap:3px;max-width:calc(100% - 112px);min-width:0;margin:auto;transform:none}.landlord-last-play-content :is(.landlord-passed,.landlord-no-play){margin:0;color:#718e88;font-size:10px;font-weight:900;text-align:center}
.landlord-last-cards.two-rows{--played-card-width:clamp(30px,7vw,38px);flex:0 1 auto;justify-content:center;align-content:center;width:min(100%,var(--play-width));max-width:calc(100% - 112px)}.landlord-last-cards.two-rows .poker-card{width:var(--played-card-width);height:clamp(42px,9.8vw,53px)}.landlord-opponent.has-two-row-play{min-height:142px}.landlord-opponent.has-two-row-play>.landlord-player-last,.landlord-self.has-two-row-play .landlord-self-last{height:104px;min-height:104px}.landlord-passed{color:#9eb9b2!important;font-size:13px!important}
.landlord-trick{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding:8px 10px;border-radius:11px;background:#0c3732}.landlord-trick>span{flex:0 0 auto;color:#b7d2ca;font-size:11px;font-weight:800}.landlord-trick.empty{justify-content:center;color:#7f9c96;font-size:11px}
.landlord-own-hand{display:flex;justify-content:flex-start;align-items:flex-end;align-content:flex-start;flex-wrap:wrap;gap:3px;min-width:0;padding-top:8px}.landlord-own-card{flex:0 0 auto;min-width:0;padding:0;border:0;background:none;transition:transform .14s}.landlord-own-card:disabled{opacity:1}.landlord-own-card.selected{transform:translateY(-9px)}.landlord-own-card.selected .poker-card{outline:2px solid var(--gold);outline-offset:1px}.landlord-own-card .poker-card{width:clamp(36px,9vw,54px);height:clamp(51px,13vw,75px);padding:4px}.landlord-own-card .poker-card b{font-size:clamp(13px,3vw,19px)}.landlord-own-card .poker-card span{font-size:clamp(16px,4vw,24px)}.landlord-own-card.coach-target .poker-card{outline:2px solid #d1ad4a;outline-offset:1px;box-shadow:0 3px 0 #8d7229,0 0 0 3px #d1ad4a44,0 0 12px #d1ad4a77}
.landlord-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(68px,1fr));gap:8px;min-width:0}.landlord-actions button{min-width:0}

.solitaire-table{gap:13px}.solitaire-table .poker-card.hidden{background:#234b6b}.solitaire-status{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center}.solitaire-status .solitaire-clock{color:#d8f4ed;font-size:13px;font-weight:900;font-variant-numeric:tabular-nums;text-align:center}.solitaire-status .solitaire-progress{text-align:right}.solitaire-time-setting{display:grid}.solitaire-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;min-width:0}.solitaire-draw-piles,.solitaire-foundations{display:flex;align-items:flex-start;gap:clamp(3px,1vw,8px);min-width:0}.solitaire-pile{display:grid;place-items:center;width:clamp(36px,10vw,60px);height:clamp(51px,14vw,84px);min-width:0;padding:0;border:1px dashed #6b8c81;border-radius:8px;background:#123a32;color:#a7c3ba;font-style:normal}.solitaire-pile:disabled{opacity:1}.solitaire-pile .poker-card{width:100%;height:100%;padding:clamp(3px,1vw,6px)}.solitaire-pile .poker-card b{font-size:clamp(13px,3.3vw,21px)}.solitaire-pile .poker-card span{font-size:clamp(17px,4.5vw,27px)}.solitaire-pile>i{font-style:normal;font-size:clamp(16px,5vw,27px)}.solitaire-pile.selected,.solitaire-tableau-card.selected .poker-card{outline:2px solid var(--gold);outline-offset:2px}
.solitaire-tableau{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(2px,1vw,8px);width:100%;min-width:0;min-height:350px}.solitaire-column{position:relative;width:100%;min-width:0;min-height:350px}.solitaire-tableau-card{position:absolute;top:calc(var(--card-index) * clamp(21px,5vw,30px));left:0;width:100%;min-width:0;padding:0;border:0;background:none}.solitaire-tableau-card:disabled{opacity:1}.solitaire-tableau-card .poker-card{width:100%;height:clamp(54px,14vw,82px);padding:clamp(2px,.8vw,5px);border-radius:clamp(4px,1.4vw,8px)}.solitaire-tableau-card .poker-card b{font-size:clamp(11px,3vw,20px)}.solitaire-tableau-card .poker-card span{font-size:clamp(14px,4vw,25px)}.solitaire-empty{width:100%;aspect-ratio:.7;min-width:0;padding:0;border:1px dashed #6b8c81;background:transparent;color:#89a79e;font-size:clamp(13px,4vw,24px)}.solitaire-help{margin:0;color:#9db6ae;font-size:10px;text-align:center}

@media(max-width:520px){.blackjack-table,.landlord-table,.solitaire-table{padding:11px 8px;border-radius:20px}.blackjack-player-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.blackjack-hand .poker-card{width:40px;height:56px}.blackjack-hand .poker-card b{font-size:14px}.blackjack-hand .poker-card span{font-size:18px}.landlord-opponents{grid-template-columns:1fr}.landlord-opponent,.landlord-self{padding:28px 8px 8px}.landlord-seat-meta{left:8px;width:calc(100% - 16px)}.landlord-remaining-cards{font-size:11px}.landlord-last-play-content .landlord-play-label{width:46px}.landlord-last-play-content .landlord-last-cards,.landlord-last-cards.two-rows{max-width:calc(100% - 96px)}.landlord-own-card .poker-card{width:clamp(32px,10vw,44px);height:clamp(46px,14vw,62px)}.solitaire-tableau,.solitaire-column{min-height:300px}.solitaire-help{display:none}}
@media(max-width:350px){.blackjack-player-grid{grid-template-columns:1fr}.blackjack-actions .holdem-action-row{gap:5px}.blackjack-actions .holdem-action-row button{padding-inline:4px}.landlord-own-card .poker-card{width:30px;height:43px}.solitaire-tableau,.solitaire-column{min-height:270px}}

/* Card-game refinements: readable ranks, Joker portraits, summaries, and touch guidance. */
.casino-heading{display:grid;min-height:64px;align-content:start;justify-items:center}.casino-heading>span,.casino-heading>small{min-height:15px}.casino-heading>strong{min-height:28px}
.holdem-seat>strong{font-size:14px}
.blackjack-dealer{align-content:start}
.blackjack-hand>footer,.three-card-seat>small{margin-top:5px}
.poker-card.joker{display:grid;place-items:center;padding:3px}.joker-art{display:block;width:100%;height:100%;overflow:visible}.joker-art.black{color:#182532}.joker-art.gold{color:#bd8f22}.joker-label{fill:currentColor;font-family:inherit;font-size:10px;font-weight:900;text-anchor:middle}.joker-hat-mark{overflow:visible;fill:none;stroke:currentColor;stroke-width:34;stroke-linecap:round;stroke-linejoin:round}.joker-hat-mark rect,.joker-hat-mark circle{fill:#f7f7ee;stroke:currentColor}

.blackjack-dealer{width:100%;max-width:none}.blackjack-player-grid{width:100%}.blackjack-table .holdem-pot small{max-width:640px;margin:3px auto 0;line-height:1.35}.blackjack-round-result strong{color:var(--gold)}.blackjack-dealer footer{display:flex;justify-content:center;color:#fff2bc}.blackjack-dealer.bust{border-color:#a84557}.blackjack-dealer.bust footer{color:#ff8aa0}.blackjack-hand.winner{border-color:#49c8aa}.blackjack-hand.loser{border-color:#a84557}.blackjack-hand.even{border-color:#647887}.blackjack-hand.winner footer span{color:var(--mint2)}.blackjack-hand.loser footer span{color:#ff8aa0}
.blackjack-result-detail,.blackjack-dealer-result{min-height:15px}.blackjack-dealer-result:not(.visible){visibility:hidden}
.blackjack-card-flip,.staggered-card-flip,.staggered-card-deal{display:inline-grid;perspective:700px;will-change:transform}.blackjack-card-flip{--card-arrival-duration:220ms;--card-flip-duration:580ms;animation:casino-card-slide-in var(--card-arrival-duration) cubic-bezier(.16,.84,.28,1) both}.blackjack-card-flip.seated-card-flip{--card-arrival-duration:0ms;animation:none}.staggered-card-flip,.staggered-card-deal{animation:casino-card-slide-in var(--card-arrival-duration,180ms) cubic-bezier(.16,.84,.28,1) var(--card-delay,0ms) both}.staggered-card-flip.casino-card-pending,.staggered-card-deal.casino-card-pending{visibility:hidden;animation:casino-card-slide-in var(--card-arrival-duration,180ms) cubic-bezier(.16,.84,.28,1) var(--card-delay,0ms) both,casino-card-becomes-visible 1ms step-start var(--card-delay,0ms) forwards}.blackjack-card-flip-inner,.staggered-card-flip-inner{display:grid;transform:rotateY(0);transform-origin:50% 50%;transform-style:preserve-3d;will-change:transform}.blackjack-card-flip-inner{animation:blackjack-long-axis-flip var(--card-flip-duration,580ms) cubic-bezier(.42,0,.22,1) var(--card-arrival-duration,220ms) both}.staggered-card-flip-inner{animation:blackjack-long-axis-flip var(--card-flip-duration,440ms) cubic-bezier(.42,0,.22,1) calc(var(--card-delay,0ms) + var(--card-arrival-duration,180ms)) both}.blackjack-card-face{display:grid;grid-area:1/1;backface-visibility:hidden;-webkit-backface-visibility:hidden}.blackjack-card-face.front{transform:rotateY(180deg)}.blackjack-flipping .blackjack-card-flip,.blackjack-flipping .staggered-card-flip,.blackjack-flipping .staggered-card-deal{pointer-events:none}.casino-card-placeholder{visibility:visible}.casino-card-reserved{visibility:hidden!important}.casino-fixed-card-slot{display:inline-grid;overflow:visible;contain:layout;isolation:isolate;flex:0 0 auto}.casino-fixed-card-slot>*{grid-area:1/1}.casino-fixed-card-base{visibility:visible}.casino-fixed-card-slot.occupied>.casino-fixed-card-base{visibility:hidden}.casino-fixed-card-slot.pending>.casino-fixed-card-base{visibility:visible}.casino-card-back-deal{display:inline-grid;perspective:700px;transform-origin:50% 50%;animation:casino-card-slide-in 220ms cubic-bezier(.16,.84,.28,1) both;will-change:transform}
@keyframes blackjack-long-axis-flip{from{transform:rotateY(0)}to{transform:rotateY(180deg)}}
@keyframes casino-card-becomes-visible{to{visibility:visible}}
@keyframes casino-card-slide-in{from{transform:translate3d(0,-55%,0) scale(.96)}to{transform:translate3d(0,0,0) scale(1)}}

/* Guaranteed opening cards have visible empty slots. Optional cards have no
   advance slot and enter only when the rules actually deal them. */

.landlord-actions [data-landlord-play]{box-shadow:none}
.landlord-own-card.landlord-card-submitting{transform:translateY(-15px);opacity:.42;pointer-events:none}

.solitaire-tableau,.solitaire-column{min-height:480px}.solitaire-tableau-card{top:calc(var(--card-index) * clamp(24px,3vw,30px));left:50%;width:min(72px,100%);transform:translateX(-50%)}.solitaire-tableau-card .poker-card{width:100%;height:auto;aspect-ratio:58/80;padding:clamp(2px,.7vw,5px)}.solitaire-empty{display:block;width:min(72px,100%);margin-inline:auto}.solitaire-pile .poker-card{aspect-ratio:58/80}
.solitaire-pile>:is(.staggered-card-flip,.seated-card-reveal),.solitaire-tableau-card>:is(.staggered-card-flip,.seated-card-reveal),.solitaire-pile>:is(.staggered-card-flip,.seated-card-reveal)>.staggered-card-flip-inner,.solitaire-tableau-card>:is(.staggered-card-flip,.seated-card-reveal)>.staggered-card-flip-inner{width:100%}
.solitaire-win-cascade{position:fixed;inset:0;z-index:48;overflow:hidden;pointer-events:none}.solitaire-win-card{position:fixed;z-index:1;will-change:transform,opacity;filter:drop-shadow(0 5px 4px #001b18aa)}.solitaire-win-card .poker-card{display:grid;width:100%;height:100%;padding:clamp(3px,1vw,6px);border-radius:8px}.solitaire-win-card .poker-card b{font-size:clamp(13px,3.3vw,21px)}.solitaire-win-card .poker-card span{font-size:clamp(17px,4.5vw,27px)}
.solitaire-pile.foundation.cascade-empty>.poker-card{visibility:hidden}

@media(max-width:520px){.landlord-status{flex-direction:row;align-items:flex-start;padding:9px}.landlord-status .landlord-bottom{gap:3px}.landlord-status .landlord-bottom .poker-card{width:31px;height:44px}.landlord-status .landlord-bottom>span{font-size:10px}.solitaire-table>.solitaire-status{align-items:center}.solitaire-table>.solitaire-status .solitaire-progress{margin-left:0;text-align:right}.solitaire-tableau,.solitaire-column{min-height:370px}.solitaire-tableau-card{top:calc(var(--card-index) * clamp(17px,5vw,20px));width:100%}.solitaire-empty{width:100%}}
@media(max-width:350px){.landlord-status .landlord-bottom .poker-card{width:27px;height:39px}.landlord-status .landlord-bottom>span{display:none}.solitaire-tableau,.solitaire-column{min-height:340px}.solitaire-tableau-card{top:calc(var(--card-index) * 16px)}}
.blackjack-player-grid.single{grid-template-columns:1fr}
.holdem-board-empty,.casino-card-placeholder{border:1px dashed #6d9187;background:#0e3932;box-shadow:0 4px 0 #234d43;color:transparent}
.holdem-control-dock{display:grid;align-items:center;width:100%;height:180px;min-height:180px}.holdem-control-dock>.holdem-wait{margin:0}.casino-flow.holdem-progress{min-height:55px;padding:8px 10px;border:1px solid #5f5128;border-radius:12px;background:#142f2c}.casino-flow.holdem-progress .current span,.casino-flow.holdem-progress .done span{color:#f0d77d}

/* Compact controls for the games behind the 18+ disclosure. */
.compact-adult-controls :is(.dice-actions,.mahjong-actions,.landlord-actions,.holdem-action-row,.casino-actions,.result-actions) button{min-height:40px;padding-block:8px}
.compact-adult-controls .holdem-actions{gap:7px;padding-block:8px}
.compact-adult-controls .mahjong-actions{gap:6px;margin-top:6px}
.compact-adult-controls .dice-quantity-stepper button{min-height:38px;padding-block:6px}

/* Mahjong tiles are intentionally about 30% larger, with wrapping instead of overflow. */
.mahjong-tile{font-size:39px}
.mahjong-discards .mahjong-tile,.mahjong-melds .mahjong-tile{font-size:29px}
.mahjong-hidden-hand i{flex-basis:14px;height:36px}
.mahjong-own-hand{display:flex;justify-content:flex-start;align-items:flex-end;align-content:flex-end;flex-wrap:wrap;gap:5px;overflow:visible}
.mahjong-own-tile .mahjong-tile{font-size:52px}
.mahjong-shown-meld{grid-auto-columns:42px}
.mahjong-shown-row{grid-template-columns:repeat(auto-fill,42px)}
.mahjong-shown-row>.mahjong-tile,.mahjong-shown-meld>.mahjong-tile{width:42px;height:42px;font-size:42px}

/* One compact selector drives every History total, graph, and match row. */
.history-game-filter{display:flex;align-items:center;gap:8px;min-width:min(250px,100%);margin:0}
.performance-game-filter{margin-top:11px}
.history-game-filter>span{flex:0 0 auto;color:#52685f;font-size:11px;font-weight:900;text-transform:uppercase}
.history-game-filter .game-select-trigger{min-width:0;min-height:34px;padding:7px 10px;border-radius:9px;font-size:12px;font-weight:800}

@media(max-width:700px){
 .mahjong-own-tile .mahjong-tile{font-size:49px}
}
@media(max-width:520px){
 .compact-adult-controls :is(.dice-actions,.mahjong-actions,.landlord-actions,.holdem-action-row,.casino-actions,.result-actions) button{min-height:36px;padding-block:6px}
 .compact-adult-controls .holdem-actions,.compact-adult-controls .casino-actions{gap:6px;padding-block:6px}
 .mahjong-hidden-hand i{flex-basis:12px;height:33px}
 .mahjong-shown-meld{grid-auto-columns:39px}
 .mahjong-shown-row{grid-template-columns:repeat(auto-fill,39px)}
 .mahjong-shown-row>.mahjong-tile,.mahjong-shown-meld>.mahjong-tile{width:39px;height:39px;font-size:39px}
 .history-heading-actions{display:grid;grid-template-columns:1fr;width:100%}
 .history-game-filter{width:100%}
 .history-game-filter .game-select-trigger{flex:1;width:auto}
}
@media(max-width:420px){
 .mahjong-own-tile .mahjong-tile{font-size:42px}
 .mahjong-own-hand{gap:2px}
}
@media(max-width:360px){.mahjong-hidden-hand i{flex-basis:10px;height:30px}}

/* Shared casino-card tables */
.casino-player-row{display:grid;grid-template-columns:minmax(56px,1fr) auto minmax(56px,1fr);grid-template-areas:"info cards status";align-content:center;align-items:center;gap:7px;min-width:0;padding:8px 10px}
.casino-player-meta{display:contents}
.casino-player-info{grid-area:info;display:grid;align-self:start;justify-self:stretch;justify-items:start;align-content:start;gap:4px;min-width:0}
.casino-player-info strong{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.casino-player-info .player-name-with-flag{font-size:var(--casino-player-name-size,16px)!important}
.casino-player-info .live-credit{justify-self:start;color:var(--metric-credit);font-size:11px;font-weight:900}
.casino-seat>.live-credit{justify-self:start}
.casino-player-row>div.casino-player-cards{grid-area:cards;display:flex;align-self:center;align-items:center;justify-content:center;gap:5px;min-width:0}
.casino-player-status{grid-area:status;justify-self:end;max-width:100%;overflow:visible;color:#a6c9c0;font-size:10px;line-height:1.15;text-align:right;text-overflow:clip;white-space:normal}
.casino-player-extra{grid-column:1/-1;min-width:0}
.holdem-seat{min-height:68px}.holdem-seat>div.holdem-seat-cards{grid-area:cards;display:flex;align-items:center;justify-content:center;gap:5px}.holdem-seat.coach-ranked{grid-template-rows:auto auto;min-height:90px}.casino-player-extra .holdem-seat-coach{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;padding-top:5px;border-top:1px solid #8a783d55;color:#d8b950;font-size:9px;font-weight:900;line-height:1.1}.blackjack-hand{--blackjack-card-row-height:auto;min-height:72px}.blackjack-hand>.casino-player-cards.blackjack-cards{width:158px;max-width:100%;min-height:0;flex-wrap:wrap}.three-card-seat{grid-template-columns:minmax(68px,1fr) auto minmax(68px,1fr);grid-template-rows:auto}.three-card-seat .casino-player-cards.casino-card-row{min-height:0;flex-wrap:nowrap}.casino-seat>.casino-player-cards:empty{display:block;width:96px}
.casino-table{display:grid;gap:12px;overflow:hidden}.baccarat-hands{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.casino-hand,.casino-seat,.casino-poker-seat{min-width:0;border:1px solid #31564f;border-radius:14px;background:#103b35}.casino-hand{display:grid;grid-template-rows:1fr auto 1fr;min-height:124px;justify-items:center;gap:0;padding:10px}.casino-hand>header{grid-row:1;align-self:start}.casino-hand>:is(.blackjack-cards,.casino-card-row){grid-row:2;align-self:center}.casino-hand.winner{border-color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}.casino-hand header,.casino-poker-seat header{display:flex;width:100%;justify-content:space-between;align-items:center;gap:8px}.casino-hand header span,.casino-poker-seat header span,.casino-seat span,.casino-seat small,.casino-poker-seat>small{color:#a6c9c0;font-size:11px}.casino-seats{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px}.casino-seat{display:grid;gap:3px;padding:9px 10px}.casino-seat>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.casino-seat>.live-credit{color:var(--metric-credit);font-size:11px;font-weight:900}.casino-seat.active,.casino-poker-seat.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}.casino-poker-seats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.casino-poker-seat{display:grid;align-content:center;justify-items:center;gap:8px;padding:10px}.casino-poker-seat.mine{background:#15493f}.casino-card-row{display:flex;width:100%;max-width:100%;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px}.casino-card-choice{all:unset;display:block;cursor:pointer;border:2px solid transparent;border-radius:9px;transition:translate .15s,border-color .15s}.casino-card-choice.selected{translate:0 -7px;border-color:var(--gold);box-shadow:0 0 0 2px #f6c45333}.casino-card-choice:disabled{cursor:default}.casino-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:10px;border-radius:15px;background:#0b332e}.casino-actions button{min-width:0;padding-inline:8px}.baccarat-actions button{font-weight:900}.three-card-heading span,.three-card-heading small{min-height:15px}.three-card-seat:not(.casino-player-row){grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;align-items:center;justify-items:stretch;gap:5px;padding:9px}.three-card-seat:not(.casino-player-row) header{grid-column:1;grid-row:1}.three-card-seat:not(.casino-player-row) .casino-card-row{grid-column:1;grid-row:2;min-height:0;flex-wrap:nowrap}.three-card-seat:not(.casino-player-row)>small{grid-column:1;grid-row:3}.three-card-seat .poker-card{width:32px;height:45px;padding:3px;border-radius:5px}.three-card-seat .poker-card b{font-size:12px}.three-card-seat .poker-card span{font-size:15px}.three-card-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.three-card-dealer{background:#0d342f}
.casino-control-dock{display:grid;align-items:center;width:100%;height:100px;min-height:100px}.casino-control-dock>.holdem-wait{margin:0}.casino-poker-seat>small{display:block;min-height:14px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.casino-card-choice>.poker-card,.casino-card-choice>.blackjack-card-flip,.casino-card-choice>.staggered-card-flip{display:grid}.casino-card-choice>.blackjack-card-flip,.casino-card-choice>.staggered-card-flip{width:max-content}
.casino-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;margin:0;padding:0;list-style:none}.casino-flow li{position:relative;display:grid;justify-items:center;align-content:start;gap:4px;min-width:0;color:#71988f;text-align:center;font-size:10px;line-height:1.15}.casino-flow li:not(:last-child)::after{content:"";position:absolute;z-index:0;top:10px;left:calc(50% + 10px);width:calc(100% - 17px);height:2px;background:#31564f}.casino-flow i{position:relative;z-index:1;display:grid;width:21px;height:21px;place-items:center;border:2px solid #31564f;border-radius:50%;background:#0c302c;font-size:9px;font-style:normal;font-weight:900}.casino-flow .done,.casino-flow .current{color:#f0d77d}.casino-flow .done i,.casino-flow .done:not(:last-child)::after{border-color:#9e7b22;background:#9e7b22;color:#081c1a}.casino-flow .current i{border-color:var(--gold);box-shadow:0 0 0 4px #f6c4531f,0 0 15px #f6c45342;animation:casino-stage-pulse 1.2s ease-in-out infinite alternate}.casino-flow span{min-width:0;overflow-wrap:anywhere}@keyframes casino-stage-pulse{to{box-shadow:0 0 0 6px #f6c45310,0 0 20px #f6c45366}}
.baccarat-table .casino-hand .blackjack-cards{min-height:80px}
.three-card-seat .casino-card-row{min-height:45px}.three-card-dealer .casino-card-row{min-height:80px}
@media(max-width:700px){.blackjack-dealer{--blackjack-card-row-height:66px}.three-card-dealer .casino-card-row{min-height:66px}}
@media(max-width:520px){.blackjack-hand{--blackjack-card-row-height:56px}}
@media(max-width:420px){.three-card-dealer .casino-card-row{min-height:55px}}
.casino-horseshoe{--casino-seat-gap:clamp(6px,1.2vh,9px);position:relative;isolation:isolate;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--casino-seat-gap)}
.casino-horseshoe>.casino-player-row{position:relative;z-index:1}
 .casino-horseshoe.order-guided:is(.seat-count-4,.seat-count-5,.seat-count-6){--casino-seat-gap:clamp(12px,3vw,16px);--order-arrow-size:14px;--order-arrow-half:7px;--order-arrow-half-gap:clamp(6px,1.5vw,8px);--order-arrow-axis-offset:clamp(46px,12vw,58px);--order-arrow-lane:-17px;row-gap:20px}
.casino-horseshoe.order-guided:is(.seat-count-4,.seat-count-5,.seat-count-6)>.casino-player-row::after{content:"";position:absolute;z-index:3;width:var(--order-arrow-size);height:var(--order-arrow-size);pointer-events:none;opacity:.52;background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M1 7h12M9 3l4 4-4 4' fill='none' stroke='%23b7d8ce' stroke-width='1.35' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.casino-horseshoe.order-guided.seat-count-4>:first-child::after{top:var(--order-arrow-lane);left:calc(100% + var(--order-arrow-half-gap) - var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:-45deg}.casino-horseshoe.order-guided.seat-count-4>:nth-child(2)::after{bottom:var(--order-arrow-lane);left:calc(50% + var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:45deg}.casino-horseshoe.order-guided.seat-count-4>:nth-child(3)::after{bottom:var(--order-arrow-lane);left:calc(var(--order-arrow-axis-offset) - var(--order-arrow-half-gap) - var(--order-arrow-half));rotate:135deg}.casino-horseshoe.order-guided.seat-count-4>.mine::after{top:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:-135deg}
.casino-horseshoe.order-guided.seat-count-5>:first-child::after{top:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-half));rotate:-90deg}.casino-horseshoe.order-guided.seat-count-5>:nth-child(2)::after{top:calc(50% - var(--order-arrow-half));right:calc(0px - var(--order-arrow-half-gap) - var(--order-arrow-half))}.casino-horseshoe.order-guided.seat-count-5>:nth-child(3)::after{bottom:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-half));rotate:90deg}.casino-horseshoe.order-guided.seat-count-5>:nth-child(4)::after{bottom:var(--order-arrow-lane);left:calc(var(--order-arrow-axis-offset) - var(--order-arrow-half-gap) - var(--order-arrow-half));rotate:135deg}.casino-horseshoe.order-guided.seat-count-5>.mine::after{top:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:-135deg}
.casino-horseshoe.order-guided.seat-count-6>:first-child::after{top:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-half));rotate:-90deg}.casino-horseshoe.order-guided.seat-count-6>:nth-child(2)::after{top:var(--order-arrow-lane);left:calc(100% + var(--order-arrow-half-gap) - var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:-45deg}.casino-horseshoe.order-guided.seat-count-6>:nth-child(3)::after{bottom:var(--order-arrow-lane);left:calc(50% + var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:45deg}.casino-horseshoe.order-guided.seat-count-6>:nth-child(4)::after{bottom:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-half));rotate:90deg}.casino-horseshoe.order-guided.seat-count-6>:nth-child(5)::after{bottom:var(--order-arrow-lane);left:calc(var(--order-arrow-axis-offset) - var(--order-arrow-half-gap) - var(--order-arrow-half));rotate:135deg}.casino-horseshoe.order-guided.seat-count-6>.mine::after{top:var(--order-arrow-lane);left:calc(50% - var(--order-arrow-axis-offset) - var(--order-arrow-half));rotate:-135deg}
.casino-horseshoe.seat-count-1>.mine,.casino-horseshoe.seat-count-2>:first-child,.casino-horseshoe.seat-count-2>.mine{grid-column:1/-1;width:min(100%,440px);justify-self:center}
.casino-horseshoe.seat-count-2>.mine{grid-row:2}
.casino-horseshoe.seat-count-3>.mine{grid-column:1/-1;width:100%;justify-self:stretch}
.casino-horseshoe.seat-count-4>:nth-child(2),.casino-horseshoe.seat-count-4>.mine,.casino-horseshoe.seat-count-5>.mine,.casino-horseshoe.seat-count-6>:nth-child(3),.casino-horseshoe.seat-count-6>.mine{grid-column:1/-1;width:calc((100% - var(--casino-seat-gap))/2);justify-self:center}
.casino-horseshoe.seat-count-3>.mine{grid-row:2}.casino-horseshoe.seat-count-4>:first-child{grid-column:1;grid-row:2}.casino-horseshoe.seat-count-4>:nth-child(2){grid-row:1}.casino-horseshoe.seat-count-4>:nth-child(3){grid-column:2;grid-row:2}.casino-horseshoe.seat-count-4>.mine{grid-row:3}
.casino-horseshoe.seat-count-5>:first-child{grid-column:1;grid-row:2}.casino-horseshoe.seat-count-5>:nth-child(2){grid-column:1;grid-row:1}.casino-horseshoe.seat-count-5>:nth-child(3){grid-column:2;grid-row:1}.casino-horseshoe.seat-count-5>:nth-child(4){grid-column:2;grid-row:2}.casino-horseshoe.seat-count-5>.mine{grid-row:3}
.casino-horseshoe.seat-count-6>:first-child{grid-column:1;grid-row:3}.casino-horseshoe.seat-count-6>:nth-child(2){grid-column:1;grid-row:2}.casino-horseshoe.seat-count-6>:nth-child(3){grid-row:1}.casino-horseshoe.seat-count-6>:nth-child(4){grid-column:2;grid-row:2}.casino-horseshoe.seat-count-6>:nth-child(5){grid-column:2;grid-row:3}.casino-horseshoe.seat-count-6>.mine{grid-row:4}
@media(max-width:700px){
 .holdem-table,.blackjack-table,.casino-table{min-height:0;align-content:start;gap:clamp(8px,1.2vh,12px);gap:clamp(8px,1.2svh,12px)}
 .casino-seat-grid{--casino-seat-gap:clamp(6px,1.2vh,9px);grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:var(--casino-seat-gap)}
 .casino-seat-grid:is(.seat-count-1,.seat-count-2,.seat-count-3){grid-template-columns:minmax(0,1fr)}
 .casino-horseshoe:is(.seat-count-1,.seat-count-2,.seat-count-3)>*{grid-column:1;grid-row:auto;width:100%;justify-self:stretch}
 .casino-horseshoe.seat-count-2>.mine,.casino-horseshoe.seat-count-3>.mine{grid-row:auto}
 .casino-seat-grid:is(.seat-count-1,.seat-count-2,.seat-count-3) .casino-player-row>.casino-player-cards{width:min(52vw,220px)}
 .blackjack-hand>.casino-player-cards.blackjack-cards{width:126px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-row{--compact-meta-min:44px;--compact-seat-column-gap:3px;--compact-card-width:clamp(28px,7.8vw,32px);grid-template-columns:minmax(var(--compact-meta-min),1fr) auto;grid-template-areas:"meta cards";gap:0 var(--compact-seat-column-gap);padding:7px 4px;container-type:inline-size}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-info .live-credit{font-size:10px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-meta{grid-area:meta;display:grid;align-self:start;align-content:start;justify-self:stretch;justify-items:start;width:100%;gap:0;min-width:0}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-meta :is(.casino-player-info,.casino-player-status){grid-area:auto}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .blackjack-hand:not(:has(>.blackjack-cards>:nth-child(3))){--compact-card-width:clamp(33px,calc((100cqi - var(--compact-meta-min) - var(--compact-seat-column-gap) - 4px)/3),42px)}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .blackjack-hand:has(>.blackjack-cards>:nth-child(3)):not(:has(>.blackjack-cards>:nth-child(4))){--compact-card-width:clamp(28px,calc((100cqi - var(--compact-meta-min) - var(--compact-seat-column-gap) - 4px)/3),32px)}
 .casino-seat-grid:is(.seat-count-1,.seat-count-2,.seat-count-3) .holdem-seat .poker-card{width:44px;height:62px;padding:4px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .holdem-seat{--compact-card-width:clamp(38px,27cqi,48px);grid-template-columns:minmax(var(--compact-meta-min),1fr) auto}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .three-card-seat{--compact-card-width:clamp(28px,calc((100cqi - var(--compact-meta-min) - var(--compact-seat-column-gap) - 4px)/3),32px);min-height:78px;padding-block:8px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .three-card-seat .casino-player-status{min-height:23px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-status{justify-self:start;text-align:left}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-cards{width:auto}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .blackjack-hand>.casino-player-cards.blackjack-cards{width:calc(var(--compact-card-width) * 2 + 5px)}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .blackjack-hand>.casino-player-cards.blackjack-cards:has(>:nth-child(3)){width:calc(var(--compact-card-width) * 3 + 10px)}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-seat>.casino-player-cards:empty{width:0}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) :is(.blackjack-hand,.holdem-seat,.three-card-seat) .poker-card{width:var(--compact-card-width);height:calc(var(--compact-card-width) * 1.42);padding:3px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) :is(.blackjack-hand,.holdem-seat) .poker-card b{font-size:12px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) :is(.blackjack-hand,.holdem-seat) .poker-card span{font-size:15px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .holdem-seat .poker-card b{font-size:15px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .holdem-seat .poker-card span{font-size:19px}
 .casino-poker-seat{padding:8px}.casino-table{padding:11px 6px}.casino-card-row{gap:3px}.three-card-seat{gap:4px;padding:8px}.three-card-seat .poker-card{width:36px;height:51px;padding:3px}.three-card-seat .poker-card b{font-size:13px}.three-card-seat .poker-card span{font-size:17px}.holdem-action-row button{display:flex;align-items:center;justify-content:center;gap:.28em}.holdem-action-row button .credit-amount{flex:0 0 auto}
}
@media(max-width:420px){.baccarat-hands{gap:6px}.casino-hand{padding:8px 5px}.casino-hand .poker-card,.holdem-board-cards .poker-card{width:42px;height:60px}.casino-hand .poker-card b{font-size:14px}.casino-hand .poker-card span{font-size:19px}.baccarat-table .casino-hand .blackjack-cards{min-height:55px}.casino-seats{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.casino-seat{padding:7px}.casino-actions{gap:6px;padding:8px}.casino-actions button{font-size:12px;padding:10px 4px}}

/* Quiet, centered feedback replaces the old high-attention pink corner toast. */
.toast{right:auto;bottom:max(12px,env(safe-area-inset-bottom));left:50%;box-sizing:border-box;width:max-content;max-width:calc(100vw - 24px);padding:8px 12px;transform:translateX(-50%);border:1px solid #b2c5bc;border-radius:10px;background:#d7e3dded;color:#52685f;box-shadow:0 8px 22px #243b3466;backdrop-filter:blur(10px);font-size:14px;font-weight:750;line-height:1.3;text-align:center;overflow-wrap:anywhere;animation:toast-pop-in .24s cubic-bezier(.2,.85,.25,1.18) both;transform-origin:50% 100%}.toast.toast-out{animation:toast-pop-out .2s cubic-bezier(.55,0,.8,.2) both}
@keyframes toast-pop-in{0%{opacity:0;transform:translateX(-50%) scale(.72)}72%{opacity:1;transform:translateX(-50%) scale(1.06)}100%{opacity:1;transform:translateX(-50%) scale(1)}}
@keyframes toast-pop-out{from{opacity:1;transform:translateX(-50%) scale(1)}to{opacity:0;transform:translateX(-50%) scale(.72)}}
@media(max-width:520px){.toast{bottom:max(9px,env(safe-area-inset-bottom));font-size:13px}}

/* Keep identity labels clear of Mahjong tiles and balance any required two-row hands. */
.mahjong-opponent>header,.mahjong-self>header{max-width:min(46%,160px)}
.mahjong-opponent .mahjong-concealed-row{min-height:48px;padding-right:clamp(115px,38%,160px)}
.mahjong-self>.mahjong-melds{width:100%;max-width:100%;min-height:38px;padding-right:clamp(90px,28%,125px)}
.mahjong-self>.mahjong-melds:empty{display:none}
.balanced-item-rows{display:grid!important;grid-template-columns:repeat(var(--balanced-columns),max-content)!important;align-items:start;align-content:center;max-width:100%;overflow:visible}
.blackjack-cards.balanced-item-rows,.casino-card-row.balanced-item-rows{justify-content:center}
.mahjong-own-hand.balanced-item-rows,.mahjong-shown-row.balanced-item-rows,.mahjong-exposed-row.balanced-item-rows,.mahjong-melds.balanced-item-rows,.landlord-own-hand.balanced-item-rows{justify-content:start}
.blackjack-cards.balanced-single-row{grid-template-columns:repeat(var(--balanced-columns),var(--balanced-item-size))!important;gap:clamp(2px,1vw,7px)}.blackjack-cards.balanced-single-row>:is(.poker-card,.blackjack-card-flip,.staggered-card-flip,.staggered-card-deal,.seated-card-reveal,.casino-card-back-slot){width:var(--balanced-item-size)}.blackjack-cards.balanced-single-row .poker-card{width:100%;height:auto;aspect-ratio:48/66;padding:clamp(2px,1vw,5px)}.blackjack-cards.balanced-single-row .poker-card b{font-size:clamp(10px,3vw,17px)}.blackjack-cards.balanced-single-row .poker-card span{font-size:clamp(13px,4vw,22px)}
.balanced-item-rows.balanced-two-rows .poker-card{max-width:var(--balanced-item-size);height:auto;aspect-ratio:58/80}

/* A light, non-interactive casino win burst timed with the victory sound. */
.win-coin-burst{position:fixed;inset:0;z-index:1050;display:block!important;overflow:hidden;pointer-events:none;perspective:760px}
.win-coin-burst>i{position:absolute;bottom:calc(var(--coin-size) * -1.5);display:block;width:var(--coin-size);height:var(--coin-size);opacity:0;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;will-change:transform,opacity}
.coin-solid{position:absolute;inset:0;display:block;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;will-change:transform}
.coin-slice,.coin-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:50%;box-sizing:border-box}
.coin-slice{transform:translateZ(var(--coin-depth));background:linear-gradient(90deg,#713700 0%,#be6900 13%,#ffcf43 38%,#f6aa12 56%,#9c4b00 82%,#5b2a00 100%);border:1px solid #6a3300;box-shadow:inset 0 1px #ffe27c55}
.coin-face{backface-visibility:hidden;-webkit-backface-visibility:hidden;border:2px solid #8d5005;background:radial-gradient(circle at 30% 22%,#fff9ce 0 5%,transparent 6%),radial-gradient(circle at 42% 37%,#fff1a8 0%,#ffd354 24%,#e79b0d 53%,#9d5102 73%,#f8cc4e 82%,#703600 90%,#df930a 97%);box-shadow:0 7px 6px #0007,inset 0 0 0 3px #ffe07a,inset 0 0 0 5px #a96607,inset -5px -6px 8px #6b360080,inset 4px 4px 7px #fff5b080;color:#804500;text-shadow:0 1px 0 #ffec99,0 -1px 0 #653500;font-family:Georgia,serif;font-weight:900}
.coin-face b{display:grid;width:48%;height:48%;place-items:center;border:1px solid #9b5b08;border-radius:50%;box-shadow:inset 0 1px 2px #fff3a8,0 1px 1px #6d3700;font-size:calc(var(--coin-size) * .27);line-height:1}
.coin-front{transform:translateZ(3px)}
.coin-back{transform:rotateY(180deg) translateZ(3px)}
.win-confetti-burst{position:fixed;z-index:900;inset:0;overflow:hidden;pointer-events:none}.win-confetti-launcher{position:absolute;z-index:2;display:block;font-size:clamp(76px,16vw,118px);line-height:1;translate:-50% -50%;filter:drop-shadow(0 8px 9px #06101bcc);animation:win-confetti-launcher 1.18s cubic-bezier(.16,.8,.2,1) both}.win-confetti-burst.from-right .win-confetti-launcher{scale:-1 1}.win-confetti-burst>i{position:absolute;display:block;border-radius:2px;opacity:0;transform-origin:center;will-change:transform,opacity}.win-confetti-burst>i.round{border-radius:50%}@keyframes win-confetti-launcher{0%{opacity:0;transform:translate3d(0,24px,0) rotate(-14deg) scale(.28)}14%{opacity:1;transform:translate3d(0,2px,0) rotate(5deg) scale(.88)}24%{opacity:1;transform:translate3d(0,-3px,0) rotate(10deg) scale(1.28)}38%{opacity:1;transform:translate3d(0,1px,0) rotate(-5deg) scale(.94)}58%{opacity:1;transform:translate3d(0,0,0) rotate(2deg) scale(1.04)}78%{opacity:1;transform:translate3d(0,0,0) rotate(0) scale(1)}100%{opacity:0;transform:translate3d(0,9px,0) rotate(0) scale(.92)}}
.card-relocating{position:relative;z-index:7;pointer-events:none;will-change:transform,opacity}

/* Card tables pass vertical gestures to the single page scroller. */
.game-page,.card-game-page,.mahjong-table,.holdem-table{touch-action:pan-y}

/* Denser Mahjong seats: preserve tile size while removing unused vertical space. */
.mahjong-table{gap:7px;padding:9px}.mahjong-opponents{gap:6px}.mahjong-opponent,.mahjong-self{padding:7px}.mahjong-opponent>header{top:7px;right:8px}.mahjong-self>header{top:7px;right:8px}.mahjong-opponent .mahjong-concealed-row{min-height:38px;padding-right:clamp(105px,35%,148px)}.mahjong-opponent-cards,.mahjong-concealed-row{gap:2px}.mahjong-shown-section{gap:1px}.mahjong-discards,.mahjong-melds{margin-top:3px}.mahjong-self>.mahjong-melds{min-height:30px;padding-right:clamp(84px,27%,118px)}.mahjong-own-hand{padding-block:0 5px;row-gap:2px}.mahjong-actions{margin-top:4px}

/* Align compact account actions with the name baseline and give them breathing room. */
.history-name-row{gap:10px}.history-game-filter{min-width:min(260px,100%)}
@media(max-width:430px){.history-name-row{gap:8px}.mahjong-table{gap:5px;padding:6px}.mahjong-opponent,.mahjong-self{padding:6px}.mahjong-opponent>header,.mahjong-self>header{top:6px;right:7px}.mahjong-opponent .mahjong-concealed-row{min-height:34px;padding-right:100px}.mahjong-self>.mahjong-melds{min-height:27px;padding-right:82px}}

/* Mahjong rows keep stable first-line space; newly shown tiles drop into place once. */
.mahjong-opponent-cards{gap:0}.mahjong-opponent .mahjong-concealed-row{min-height:30px}.mahjong-shown-section{min-height:43px;align-content:start}.mahjong-shown-section>small{padding-top:2px}.mahjong-exposed-row,.mahjong-shown-row{min-height:42px;direction:ltr}.mahjong-self>.mahjong-melds,.mahjong-self>.mahjong-melds:empty{display:flex!important;min-height:30px;margin-top:0;align-items:flex-start;align-content:flex-start}.mahjong-tile-drop{position:relative;z-index:3;transform-origin:50% 50%;animation:mahjong-tile-drop .3s cubic-bezier(.2,.72,.25,1) both}@keyframes mahjong-tile-drop{from{transform:translateY(-7px) scale(1.5);filter:brightness(1.18)}to{transform:translateY(0) scale(1);filter:brightness(1)}}
.mahjong-own-tile.claim-match{translate:0 -6px;border-color:var(--gold);background:#f6c45312;box-shadow:0 0 0 2px #f6c45338,0 5px 12px #0004}.mahjong-action-callout{display:block;margin-top:2px;color:var(--gold);font-size:16px;line-height:1;font-weight:1000;text-shadow:0 1px 8px #f6c45344;animation:mahjong-action-pop .3s ease-out both}@keyframes mahjong-action-pop{from{transform:scale(.72);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:520px){.mahjong-shown-section{min-height:40px}.mahjong-exposed-row,.mahjong-shown-row{min-height:39px}}
@media(max-width:430px){.mahjong-opponent .mahjong-concealed-row{min-height:27px}.mahjong-shown-section{min-height:39px}.mahjong-exposed-row,.mahjong-shown-row{min-height:38px}}

/* Mahjong seat identity and table status use one deliberate hierarchy. */
.mahjong-opponent>header>div{display:grid;justify-items:end;gap:2px}
.mahjong-seat-name{font-size:12px}
.mahjong-seat-detail{color:#9bb0b7!important;font-size:10px!important;font-weight:800}
.mahjong-opponent.mahjong-won,.mahjong-self.mahjong-won{box-shadow:inset 0 0 0 999px #06151a88}
.mahjong-opponent.mahjong-won .mahjong-action-callout,.mahjong-self.mahjong-won .mahjong-action-callout{position:relative;z-index:2}

/* Compact Mahjong identity/status rows and ranked credit settlements. */
.mahjong-status{flex-direction:row!important;align-items:center!important;min-width:0}
.mahjong-status strong{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mahjong-status span{display:block;flex:0 1 auto;max-width:70%;min-width:0;margin-left:auto;overflow:hidden;color:inherit;font-size:11px;font-weight:900;line-height:1.15;text-align:right!important;text-overflow:ellipsis;white-space:nowrap}
.mahjong-opponent>header{max-width:min(64%,220px)}
.mahjong-name-line{display:flex;justify-content:flex-end;align-items:baseline;gap:6px;min-width:0;white-space:nowrap}
.mahjong-name-line strong{min-width:0}
.mahjong-name-line .mahjong-ai-credit{flex:0 0 auto;color:#9cb5b5!important;font-size:9px!important;font-weight:800}
.mahjong-opponent-cards{padding-top:0}
.mahjong-opponent-cards>.mahjong-shown-section:first-child{padding-right:clamp(100px,24%,150px)}

.credit-settlement ol{counter-reset:settlement-place}
.credit-settlement li{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:9px;border:1px solid transparent;border-left-width:4px;text-align:left}
.credit-settlement li.without-credit-delta{grid-template-columns:26px minmax(0,1fr)}
.credit-settlement li.credit-self{border:2px solid #b2c5bc!important;box-shadow:0 0 0 1px #243b3426}
.credit-settlement li.credit-winner:not(.credit-self){border-top-color:#d5ae43;border-right-color:#d5ae43;border-bottom-color:#d5ae43}
.credit-settlement .credit-place{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#d7e3dd;color:#52685f;font-style:normal;font-size:10px;font-weight:900}
.credit-settlement li>span{min-width:0}
.credit-settlement li>span>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.credit-settlement li .credit-combo{color:#e5bd50;font-size:14px;line-height:1.2;font-weight:900}
.credit-settlement li>b{justify-self:end;white-space:nowrap}.credit-settlement li>b .credit-amount{display:inline}
.settlement-credit-roll{display:inline-block;text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:430px){
 .mahjong-status{gap:7px;padding-inline:9px}
 .mahjong-status strong{font-size:12px}
 .mahjong-status span{font-size:10px}
 .mahjong-name-line{gap:4px}
 .mahjong-name-line .mahjong-ai-credit{font-size:8px!important}
 .mahjong-opponent-cards>.mahjong-shown-section:first-child{padding-right:94px}
 .credit-settlement li{grid-template-columns:23px minmax(0,1fr) auto;gap:7px;padding:8px 9px}
 .credit-settlement .credit-place{width:22px;height:22px}
 .credit-settlement li .credit-combo{font-size:13px}
}
@media(prefers-reduced-motion:reduce){.mahjong-tile-drop{animation:none}.solitaire-win-cascade{display:none}}

/* Keep newly dealt cards and already-seated hidden cards as distinct motions. */
.seated-card-reveal{--card-arrival-duration:0ms;--card-flip-duration:580ms;display:inline-grid;perspective:700px;will-change:auto}
.blackjack-flipping .seated-card-reveal{pointer-events:none}
.casino-card-choice>.seated-card-reveal{display:grid;width:max-content}


.history-name-row{align-items:center}
.history-name-row h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history-edit,.history-logout,.history-delete{align-self:center;transform:none}


.history-name-row>.country-flag{align-self:center;flex:0 0 24px!important;width:24px!important;min-width:24px!important;height:24px!important;transform:none}
.history-name-row>.history-edit,.history-name-row>.history-logout,.history-name-row>.history-delete{width:24px;min-width:24px;height:24px;min-height:24px}
.account-confirm-panel{width:min(430px,100%)}
.history-panel .history-heading{display:flex!important;align-items:flex-end;justify-content:space-between;gap:14px}
.history-identity{min-width:0}
.profile-header-actions{display:flex;flex:0 0 auto;align-items:center;gap:7px;transform:translateY(-7.5px)}
.profile-header-actions .profile-guide-button,.profile-header-actions .history-close{align-self:auto;transform:none}
.profile-header-actions .profile-guide-button{display:grid;width:34px;min-width:34px;height:34px;min-height:34px;place-items:center;margin:0;padding:0;border-radius:9px;font-size:18px;line-height:1}
.profile-header-actions .history-close{height:34px;min-height:34px;margin:0!important;padding:0 14px!important;border-radius:9px}
@media(max-width:430px){.history-panel .history-heading{gap:8px}.profile-header-actions{gap:5px}.profile-header-actions .profile-guide-button{width:32px;min-width:32px;height:32px;min-height:32px}.profile-header-actions .history-close{height:32px;min-height:32px;padding-inline:10px!important}}

/* Keep the selectable tile's box centered on its glyph at every responsive size. */
.mahjong-own-tile{display:grid;place-items:center;position:relative;line-height:1}
.mahjong-own-tile.claim-match{border-color:transparent;background:transparent;box-shadow:none}
.mahjong-own-tile.claim-match::after{content:none}
.mahjong-own-tile.claim-match .mahjong-tile{color:#edc24f;text-shadow:0 0 7px #edc24f55}

/* A single cross-game reveal barrier: animate the physical pieces first, then expose derived results. */
#app[data-reveal-pending] .dice-reveal>strong,
#app[data-reveal-pending] .dice-reveal>p,
#app[data-reveal-pending] .blackjack-round-result>* ,
#app[data-reveal-pending] .blackjack-dealer>header span,
#app[data-reveal-pending] .blackjack-dealer-result,
#app[data-reveal-pending] .blackjack-hand>footer,
#app[data-reveal-pending] .holdem-seat>span,
#app[data-reveal-pending] .casino-hand>header span,
#app[data-reveal-pending] .casino-poker-seat>header span,
#app[data-reveal-pending] .casino-poker-seat>small,
#app[data-reveal-pending] .mahjong-ai-credit,
#app[data-reveal-pending] .landlord-opponent>header small,
#app[data-reveal-pending] .landlord-self>header span{visibility:hidden}
#app[data-reveal-pending] .dice-reveal{position:relative}
#app[data-reveal-pending] .dice-reveal::before{content:'Revealing…';position:absolute;top:0;left:0;right:0;color:#52685f;font-weight:900;text-align:center}
#app[data-reveal-pending] .casino-hand.winner{border-color:#b2c5bc;box-shadow:none}

/* Sunk fleets stay identifiable while visually retiring from play. */
.sea .cell.ship.sunk:before,.sea .cell.sunk .hit-mark{filter:brightness(.64) saturate(.72);opacity:.88}
.fleet-chip.sunk{background:#77818a!important;filter:none;opacity:.58}

/* Setup labels are persistent state, not replayed notifications. */
.mahjong-action-callout{animation:none}
.mahjong-seats{display:grid;gap:6px;min-width:0}
.mahjong-opponent-cards>.mahjong-shown-section{padding-right:clamp(100px,24%,150px)}
.mahjong-self>.mahjong-melds{padding-right:clamp(84px,27%,118px)}
.mahjong-self>.mahjong-melds:empty{display:none!important;min-height:0;padding-block:0}
.mahjong-self>.mahjong-own-hand{padding-block:5px}
@media(max-width:430px){.mahjong-opponent-cards>.mahjong-shown-section{padding-right:94px}.mahjong-self>.mahjong-melds{padding-right:82px}}
.mahjong-own-tile.mahjong-tile-discarding{position:relative;z-index:6;pointer-events:none;animation:mahjong-tile-discard .3s cubic-bezier(.42,0,.8,.28) both}
@keyframes mahjong-tile-discard{from{transform:translateY(0) scale(1);filter:brightness(1);opacity:1}to{transform:translateY(-7px) scale(1.5);filter:brightness(1.18);opacity:0}}
.dice-player-chip.mine:not(.active),.credit-player-chip.mine:not(.active),.mahjong-self.mine:not(.active),.holdem-seat.mine:not(.active),.blackjack-hand.mine:not(.active),.casino-seat.mine:not(.active),.casino-poker-seat.mine:not(.active),.landlord-self.mine:not(.active){border-color:#b2c5bc;box-shadow:inset 0 0 0 1px #243b34c7}
.mahjong-tile-drop{transform-origin:center;will-change:transform}.mahjong-discard-tile.mahjong-tile-drop{transform-origin:50% 100%}
.mahjong-action-callout.persistent{animation:none}

/* Share actions stay ordered vertically: Copy Link above Close. */
.share-panel [data-copy-share],.share-panel [data-share-invitation],.share-panel .dialog-cancel{display:block;width:100%;box-sizing:border-box}
.share-panel [data-copy-share],.share-panel [data-share-invitation]{margin-bottom:9px}

/* One literal Mahjong geometry: spacing is based on the visible tile, not the font em box. */
.mahjong-table{--mahjong-tile-height:41.294px;--mahjong-tile-width:28.08px;--mahjong-tile-column-gap:calc(var(--mahjong-tile-width)/4);--mahjong-tile-row-gap:0px;--mahjong-own-tile-gap:0px}
.mahjong-public-cards{display:grid;gap:6px;min-width:0;padding-top:0}
.mahjong-public-cards>.mahjong-shown-section{min-height:0;padding-right:var(--mahjong-info-reserve,112px);align-content:start;gap:4px}
.mahjong-shown-section>small{font-size:12px;line-height:16px;padding-top:0}
.mahjong-opponent .mahjong-public-cards,.mahjong-self .mahjong-public-cards{width:100%;grid-template-columns:minmax(0,1fr)}
.mahjong-public-cards .mahjong-exposed-row{display:flex;min-height:var(--mahjong-tile-height);align-items:flex-start;align-content:flex-start;justify-content:flex-start;flex-wrap:wrap;column-gap:var(--mahjong-tile-column-gap)!important;row-gap:var(--mahjong-tile-row-gap)!important;direction:ltr}
.mahjong-public-cards .mahjong-shown-row{display:flex;min-height:var(--mahjong-tile-height);height:auto!important;align-items:start;align-content:start;justify-content:flex-start;flex-wrap:wrap;column-gap:0!important;row-gap:var(--mahjong-tile-row-gap)!important;overflow:visible;direction:ltr}
.mahjong-public-cards .mahjong-discard-slot{display:grid;flex:0 0 var(--mahjong-tile-width);place-items:center;width:var(--mahjong-tile-width);height:var(--mahjong-tile-height);padding:0;border:0;cursor:default}
.mahjong-public-cards .mahjong-discard-slot>.mahjong-tile,.mahjong-public-cards .mahjong-shown-meld>.mahjong-tile{display:grid;place-items:center;width:var(--mahjong-tile-width);height:var(--mahjong-tile-height);overflow:visible;font-size:var(--mahjong-tile-height);line-height:1}
.mahjong-public-cards .mahjong-shown-meld{display:flex;flex:0 0 auto;gap:0!important}
.mahjong-public-cards .mahjong-shown-meld>.mahjong-tile{flex:0 0 var(--mahjong-tile-width);margin:0!important;padding:0}
.mahjong-tile[data-mahjong-face]{position:relative;isolation:isolate;overflow:hidden!important;border:0;border-radius:calc(var(--mahjong-tile-width)*.12);background:transparent;box-shadow:0 1px 1px #0313167a;color:transparent}
.mahjong-tile[data-mahjong-face]::before{content:'';position:absolute;z-index:1;inset:0;background:var(--mahjong-face-image) center/100% 100% no-repeat;pointer-events:none}
html[data-mahjong-tile-theme="pixel"] .mahjong-tile[data-mahjong-face]::before{image-rendering:pixelated}
.live-hand-count-value{color:inherit;transition:color .12s linear}.live-hand-count-value.count-changed{color:var(--gold)}
.mahjong-own-tile.claim-match>.mahjong-tile{box-shadow:0 0 0 2px #edc24f,0 0 8px #edc24f70}
.mahjong-own-hand-section{position:relative;z-index:4;width:100%;min-height:0!important;margin-top:4px;gap:2px!important;padding-top:2px;padding-right:0!important}

/* Device-independent card marks: fixed SVG geometry replaces platform suit glyphs. */
.poker-card>.card-suit{align-self:end;justify-self:end;display:block;width:50%;height:50%;overflow:visible;fill:currentColor}
.solitaire-pile>.solitaire-foundation-mark{width:42%;height:42%;color:#91a59f;fill:currentColor}
.solitaire-result-suits .card-suit{width:clamp(30px,8vw,48px);height:clamp(30px,8vw,48px);fill:currentColor;filter:drop-shadow(0 3px 5px #07101d99)}
.solitaire-result-suits .card-suit-d,.solitaire-result-suits .card-suit-h{color:var(--coral)}
.mahjong-own-hand-section>small{position:relative;z-index:4;padding-top:0!important}
.mahjong-own-hand-section>.mahjong-own-hand{display:flex;width:100%;min-height:var(--mahjong-tile-height);padding:0 0 5px!important;align-items:flex-end;align-content:flex-end;justify-content:flex-start;flex-wrap:wrap;column-gap:var(--mahjong-own-tile-gap)!important;row-gap:2px!important;overflow:visible;direction:ltr}
.room-progress-control{position:relative;isolation:isolate;overflow:hidden}.room-progress-control::before{content:'';position:absolute;z-index:0;inset:0;transform:scaleX(var(--room-progress,0));transform-origin:right center;background:linear-gradient(270deg,#5c6874e8,#69747ee0);box-shadow:inset 0 0 0 1px #aeb8bf45;will-change:transform;transition:transform .1s linear;pointer-events:none}.room-progress-control>span{position:relative;z-index:1;color:#fff!important;text-shadow:none}.return-room-countdown{display:grid;place-items:center;min-height:44px;margin-top:4px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--paper);font-weight:900;letter-spacing:.04em}
.match-start-progress{display:grid;place-items:center;width:100%;min-height:44px;pointer-events:none}
.matchmaking-confirmation-panel .waiting-room-roster li{grid-template-rows:auto;min-height:44px}.matchmaking-confirmation-panel .waiting-room-roster i{grid-row:1}.matchmaking-confirmation-actions{display:grid;grid-template-columns:1fr;gap:8px}.matchmaking-confirmation-actions>*{width:100%;min-width:0;min-height:46px}.matchmaking-confirmation-actions .match-start-progress{min-height:46px}
.mahjong-own-hand>.mahjong-own-tile{display:grid;flex:0 0 var(--mahjong-tile-width);place-items:center;width:var(--mahjong-tile-width);height:var(--mahjong-tile-height);padding:0;border:0;box-sizing:border-box}
.mahjong-own-hand>.mahjong-own-tile>.mahjong-tile{display:grid;place-items:center;width:100%;height:100%;overflow:hidden;font-size:0;line-height:1}.mahjong-own-hand>.mahjong-own-tile.coach-target>.mahjong-tile{box-shadow:inset 0 0 0 2px #d1ad4a,0 0 0 2px #d1ad4a55,0 0 10px #d1ad4a88}
.mahjong-opponent.mahjong-won,.mahjong-self.mahjong-won{isolation:isolate;overflow:hidden;box-shadow:none}
.mahjong-opponent.mahjong-won::after,.mahjong-self.mahjong-won::after{content:'';position:absolute;z-index:8;inset:0;border:2px solid #d3ad52;border-radius:inherit;background:#06151a68;box-shadow:inset 0 0 24px #0005,0 0 0 1px #f6c45355;pointer-events:none}
.mahjong-opponent.mahjong-won>header,.mahjong-self.mahjong-won>header{z-index:9}
@media(max-width:520px){.mahjong-table{--mahjong-tile-height:38.118px;--mahjong-tile-width:25.92px;--mahjong-own-tile-gap:0px}}

/* One off-white for every neutral control in the top-right header. */
:root{--header-control-fg:#243b34}
.header-icon-btn,.music-btn,.music-btn.on,.music-btn.off,.desktop-reaction-btn,.host-power-btn.host-offline{color:var(--header-control-fg)}

/* Betting choices are neutral: gold remains reserved for turn/coach information. */
.holdem-actions button:not(.coach-action),.casino-actions button:not(.coach-action){border:1px solid #b2c5bc!important;background:#d7e3dd!important;box-shadow:none!important;color:#52685f!important}
.holdem-actions button:not(.coach-action):disabled,.casino-actions button:not(.coach-action):disabled{filter:none!important;opacity:.42}

/* Stable viewport-derived centering for the square strategy boards. */
#app[data-view="room"][data-game-kind="checkers"] .checker-wrap,
#app[data-view="room"][data-game-kind="go"] .strategy-wrap,
#app[data-view="room"][data-game-kind="gomoku"] .strategy-wrap,
#app[data-view="room"][data-game-kind="reversi"] .strategy-wrap,
#app[data-view="room"][data-game-kind="chinese"] .strategy-wrap,
#app[data-view="room"][data-game-kind="chess"] .strategy-wrap{margin-top:clamp(10px,calc((100vh - 150px - min(820px,calc(100vw - 16px)))/2),88px);margin-top:clamp(10px,calc((100svh - 150px - min(820px,calc(100vw - 16px)))/2),88px)}
/* Battleship uses the same auto-margin principle without a second board-size formula. */
#app[data-view="room"][data-game-kind="battleship"] .game-page{display:flex;min-height:calc(100vh - 68px);min-height:calc(100svh - 68px);flex-direction:column}
#app[data-view="room"][data-game-kind="battleship"] .desktop-battle-boards{margin-block:auto}
@media(max-width:850px){#app[data-view="room"][data-game-kind="battleship"] .battle-opponent-status{margin-bottom:0}#app[data-view="room"][data-game-kind="battleship"] .game-page{padding-bottom:max(12px,env(safe-area-inset-bottom))}#app[data-view="room"][data-game-kind="battleship"] .mobile-battle-stage{margin:clamp(12px,3vh,26px) auto auto;margin:clamp(12px,3svh,26px) auto auto}}
@media(max-width:430px){#app[data-view="room"][data-game-kind="battleship"] .game-page{min-height:calc(100vh - 58px);min-height:calc(100svh - 58px)}}

/* One scorebar geometry: names stay at the outside edges while every game
   marker, score and clock gathers toward the center. */
.scorebar{grid-template-columns:minmax(0,1fr) minmax(72px,max-content) minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;row-gap:2px}
.scorebar .player{display:flex;min-width:0;gap:6px}
.scorebar .player.left{grid-column:1;grid-row:1;justify-content:flex-start}
.scorebar .player.right{grid-column:3;grid-row:1;justify-content:flex-end}
.scorebar .player>span{display:flex}
.scorebar .name{flex:1 1 auto;min-width:0;max-width:none;overflow:hidden;flex-direction:row;align-items:center;gap:3px;white-space:nowrap}
/* Canonical identity text is immune to descendant status/row selectors. */
.player-name-with-flag>.player-name-text{display:block!important;grid-area:auto!important;min-width:0;padding:0!important;border:0!important;border-radius:0!important;background:none!important;color:inherit!important;font:inherit!important;line-height:inherit!important;justify-content:initial!important;visibility:visible!important}
.landlord-role-callout{font-size:16px!important}
:is(.game-player-name){font-size:14px!important;line-height:1.2}
:is(.dice-player-chip .player-name-with-flag,.mahjong-seat-name,.mahjong-self>header>strong,.landlord-seat-meta .player-name-with-flag,.casino-player-info .player-name-with-flag){font-size:16px!important;line-height:1.2}
:is(.game-player-name,.dice-player-chip .player-name-with-flag,.mahjong-seat-name,.mahjong-self>header>strong,.landlord-seat-meta .player-name-with-flag,.casino-player-info .player-name-with-flag)>.country-flag{flex-basis:16px!important;width:16px!important;min-width:16px!important;height:16px!important}
.game-page .country-flag{display:none!important}
.game-page .result .country-flag{display:inline-block!important;transform:none!important}
/* Credit deltas rest on the source text line; only their entrance and exit travel. */
.live-credit{--credit-delta-top:0}
/* In-game text is bare text, never a nested rectangular badge. */
.game-page :is(.live-credit,.live-credit-total,.mahjong-seat-detail,.mahjong-action-callout,.landlord-role-callout,.landlord-seat-meta small){background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;box-shadow:none!important;text-shadow:none!important}
.mahjong-winning-tile{display:inline-flex;margin-left:6px;border:0;background:transparent;padding:0}
.reaction-menu{max-height:270px;background:var(--panel);border-color:var(--line)}
.room-message-composer{grid-column:1/-1;display:flex;align-items:center;gap:6px;margin:0 0 6px;min-width:0}
.room-message-composer[hidden]{display:none}
.room-message-composer input{min-width:0;width:100%;height:44px;flex:1;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--paper);font-size:16px;line-height:1.25;box-shadow:none;user-select:text;-webkit-user-select:text}
.room-message-composer input::placeholder{color:var(--muted);opacity:1}
.room-message-composer input:focus-visible{outline:2px solid var(--mint);outline-offset:1px}
.reaction-menu .room-message-composer button{width:44px;height:44px;flex:0 0 44px;aspect-ratio:1;padding:0;display:grid;place-items:center;background:var(--panel2);color:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:none;line-height:0}
.reaction-menu .room-message-composer button .ui-icon{width:22px;height:22px}
.reaction-menu .room-message-composer button:focus-visible{outline:2px solid var(--mint);outline-offset:1px}
.room-reaction.room-text-message{width:max-content;max-width:208px;height:auto;min-height:32px;padding:7px 10px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--paper);font-size:14px;font-weight:700;line-height:1.25;overflow-wrap:anywhere;filter:none}

/* Shared dice artwork and stable roll geometry. */
.die-face,.reveal-die,.pig-die,.bid-face-die{overflow:hidden;border:0!important;border-radius:18%!important;background:transparent!important;box-shadow:0 8px 18px #07121966!important}
.die-face>img,.reveal-die>img,.pig-die>img,.bid-face-die>img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.dice-rolling{filter:brightness(1.06);transform-origin:50% 50%;box-shadow:0 8px 18px #07121966!important;animation:dice-centre-z-shake 1s linear both}@keyframes dice-centre-z-shake{0%,24%,42%,58%,76%,100%{transform:rotateZ(0) scale(1)}6%,28.5%,46%,62.5%,82%{transform:rotateZ(-4deg) scale(1.012)}18%,37.5%,54%,71.5%,94%{transform:rotateZ(4deg) scale(1.012)}}
.dice-zhai-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dice-zhai-button{width:100%;min-height:var(--control-height,44px);font-size:15px;font-weight:900}.dice-zhai-button.active{border-color:var(--gold);color:var(--gold);box-shadow:inset 0 0 0 1px #f6c45355}@media(max-width:700px){.dice-zhai-choice{grid-template-columns:1fr}}

/* Larger, darker Chinese Checkers targets reduce visual strain. */
.cc-hole{width:5%!important;background:#344657!important}.cc-hole .piece{width:96%!important}.cc-hole.legal{background:#12bfa0!important}

/* Profile navigation is secondary to the profile itself. */
.profile-tabs button{min-height:34px;padding:6px 10px;font-size:14px}.profile-guide-button,.profile-header-actions .profile-guide-button{width:29px!important;min-width:29px!important;height:29px!important;min-height:29px!important;font-size:15px!important}

/* The numeric XP delta remains present while its value rolls. */
.xp-result.animate .xp-result-top strong{animation:none!important;opacity:1!important;transform:none!important}
.live-credit-total{align-items:baseline}
.scorebar .name-text{display:block;flex:0 1 auto;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scorebar .player span.name{max-width:none}
.scorebar .player.right .name{align-items:center;justify-content:flex-end;text-align:right}
.scorebar .player-metrics{display:flex;flex:0 0 auto;flex-direction:row;align-items:center;gap:5px;white-space:nowrap}
.scorebar .score-piece{display:inline-grid;min-width:30px;width:30px;height:30px;padding:0;place-items:center;border:3px solid;border-radius:50%;line-height:1}
.scorebar .score-piece.piece-dark{border-color:#526475;background:#101d2b;color:#f5f7f2;box-shadow:inset 0 -2px #07101a;text-shadow:0 1px 1px #000}
.scorebar .score-piece.piece-light{border-color:#aab8c5;background:#edf8f5;color:#102338;box-shadow:inset 0 -2px #c7d6d4}
.scorebar .score-piece.piece-coral{border-color:#f68ca0;background:#ef6077;color:#102338;box-shadow:inset 0 -2px #ca405c}
.scorebar .turn-center{display:contents}
.scorebar .turn-center .turn-badge{grid-column:2;grid-row:1;justify-self:center}
.scorebar .turn-badge{width:auto;min-width:72px;min-height:25px;max-width:94px;padding:4px 6px;border-radius:14px;overflow:hidden;text-overflow:ellipsis;font-size:12px;white-space:nowrap}
.scorebar .player-time{font-size:12px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.scorebar .round-pill{grid-column:2;grid-row:2;justify-self:center;margin:0;color:#91a4b5;font-size:12px;font-weight:800;line-height:1.1;white-space:nowrap}
.scorebar .player-context{grid-row:2;min-width:0;overflow:hidden;color:#91a8b5;font-size:10px;font-weight:800;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.scorebar .player-context.left{grid-column:1;justify-self:start}.scorebar .player-context.right{grid-column:3;justify-self:end;text-align:right}
.scorebar .player-submetric{display:flex;grid-row:2;width:44px;min-width:0;align-items:center;justify-content:center}
.scorebar .player-submetric.left{grid-column:1;justify-self:end}
.scorebar .player-submetric.right{grid-column:3;justify-self:start}
.scorebar .player-submetric .pawn-loss,.scorebar .player-submetric .go-count{display:inline-flex;min-width:0;height:auto;align-items:center;justify-content:center;font-size:12px;line-height:1.1}
.scorebar .player-submetric .pawn-loss{color:var(--coral)}
.waiting-room-roster span,.dice-player-chip span,.mahjong-seat-name,.mahjong-self>header>strong{font-size:14px}
.pig-players-bar .dice-player-chip span{grid-row:1/3;align-self:center}
.toast{z-index:2147483647;pointer-events:none}
.account-help{margin:10px 0 0;color:#52685f;font-size:12px;line-height:1.35;text-align:center}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}
.host-users-dialog{box-sizing:border-box;align-items:stretch;height:var(--host-users-viewport-height,100vh);max-height:var(--host-users-viewport-height,100vh);padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))}
.host-users-panel{display:grid;align-content:start;box-sizing:border-box;width:min(680px,100%);min-height:min(720px,calc(var(--host-users-viewport-height,100vh) - 12px));text-align:left!important}
.host-users-heading{display:flex;align-items:center;gap:10px;margin-bottom:7px}.host-users-heading label{flex:1;min-width:0}.host-users-heading input{width:100%;margin:0}.host-users-heading>button{flex:0 0 auto;margin:0}
.host-users-summary{display:flex;align-items:center;justify-content:space-between;min-height:20px;margin-bottom:7px;color:#52685f;font-size:11px;font-weight:800}
.host-user-pages{margin:0 0 8px}
.host-user-list{display:grid;gap:7px;min-height:0;margin:0;padding:0;list-style:none}
.host-user-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:9px 10px;border-radius:11px;background:#d7e3dd}
.host-user-copy{display:grid;min-width:0;gap:5px}.host-user-name{display:flex;min-width:0;align-items:center;gap:7px}.host-user-name strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.host-user-level{flex:0 0 auto;padding:2px 6px;border-radius:6px;background:#24745b1b;color:var(--mint2);font-size:9px;font-weight:900}.host-user-name small{flex:0 0 auto;padding:2px 5px;border-radius:6px;background:#f2c66d1c;color:#f2c66d;font-size:9px;font-weight:900}.host-user-last{align-self:center;color:#52685f;font-size:10px;font-weight:800;white-space:nowrap}.host-user-last.online{color:#24745b;font-weight:900}
.host-user-copy dl{display:flex;min-width:0;flex-wrap:wrap;gap:5px 16px;margin:0}.host-user-copy dl>div{display:flex;min-width:0;gap:5px}.host-user-copy dt{color:#52685f;font-size:10px}.host-user-copy dd{min-width:0;margin:0;color:#52685f;font-size:10px}
.host-user-actions{display:flex;gap:6px}.host-user-list li button{min-height:34px;padding:6px 10px}
.host-users-empty{margin:18px 0;color:#52685f;text-align:center}
@supports not (height:100dvh){.host-users-dialog{height:100vh;height:100svh;max-height:100vh;max-height:100svh}}
@media(max-width:430px){.host-users-dialog{padding:5px}.host-users-panel{width:100%;padding:12px 10px}.host-users-heading{gap:6px;margin-bottom:4px}.host-users-heading input{min-height:38px;padding:7px 10px;font-size:16px}.host-users-heading>button{min-height:38px;padding:6px 10px}.host-users-summary{min-height:17px;margin-bottom:4px}.host-user-pages{margin-bottom:5px}.host-user-pages button{min-height:32px;padding:5px 9px;font-size:11px}.host-user-list{gap:5px}.host-user-list li{grid-template-columns:minmax(0,1fr) auto auto;gap:7px;padding:6px 7px;border-radius:9px}.host-user-copy{gap:3px}.host-user-name strong{font-size:14px}.host-user-copy dl{display:grid;gap:1px}.host-user-copy dt,.host-user-copy dd{font-size:9px}.host-user-actions{display:flex;gap:4px}.host-user-list li button{min-height:30px;padding:5px 7px;font-size:10px}}

/* One vertical scrolling contract: header stays fixed; exactly one page or overlay owns the gesture. */
html,body,#app,.shell,.main{width:100%;height:100%;min-height:0}
html,body,#app,.shell,.main{overflow:hidden}
body{touch-action:pan-y}.game-page,.result,.result-panel{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.main{display:grid;grid-template-rows:auto minmax(0,1fr)}
.content,.modal-wrap,.game-page{width:100%;min-height:0;max-height:100%;overflow-x:clip;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.content{max-width:1180px;margin-inline:auto;margin-block:0}
.modal-wrap{display:flex;align-items:flex-start;justify-content:center}
.modal-wrap>.panel{flex:0 0 auto;margin:auto}
.result{align-items:flex-start;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.result>.panel{margin:auto}
.settlement-title{display:block;max-width:100%;white-space:nowrap}
@media(max-width:850px){.scorebar .player-submetric{width:42px}}
@media(max-width:430px){
 .scorebar{grid-template-columns:minmax(0,1fr) minmax(64px,max-content) minmax(0,1fr);column-gap:4px;row-gap:2px;padding-inline:6px}
 .scorebar .player{gap:3px}
 .scorebar .name{min-width:0}
 .scorebar .player-metrics{gap:3px}
 .scorebar .turn-badge{min-width:72px;min-height:24px;padding-inline:4px;font-size:12px}
 .scorebar .score{min-width:25px;width:25px}
 #app[data-game-kind="battleship"] .scorebar .score{display:inline-grid;height:25px;padding:0;place-items:center;border:2px solid #087d6c;border-radius:50%;line-height:1}
 .scorebar .score-piece{height:25px;border-width:2px}
 .scorebar .player-time{min-width:34px;padding-inline:4px}
 .scorebar .player-submetric{width:34px}
}
.profile-header-actions .profile-guide-button,.profile-header-actions .history-close{display:grid;place-items:center;width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important;padding:0!important;margin:0!important;font-size:20px!important;line-height:1;border-radius:9px}.profile-header-actions .history-close svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}

.matchmaking-default-note>span{display:block;text-wrap:pretty}.matchmaking-default-note>span+span{margin-top:3px;font-size:11px;color:#52685f}

/* Credit digits follow the history change line, including nested amount spans. */
.history-changes .credit-amount, .history-changes .credit-amount > span { font-size: inherit; }

/* Compact entry leaderboard and expandable, scroll-contained standings. */
.leaderboard-banner{width:100%;display:flex;align-items:center;gap:12px;text-align:left;margin:8px 0 20px;padding:12px 14px;min-height:76px;border:1px solid #b2c5bc66;background:linear-gradient(115deg,#d7e3dd,#d7e3dd);border-radius:14px;color:inherit}
.leaderboard-cup{font-size:26px;color:#e4c487}.leaderboard-slide{flex:1;min-width:0}.leaderboard-slide.is-entering{animation:leaderboard-slide-in .35s ease-out}.leaderboard-slide>small{display:block;color:#52685f;font-size:11px;margin-bottom:5px}.leaderboard-slide>span{display:flex;align-items:center;gap:7px;font-size:13px;min-width:0}.leaderboard-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:35%}.leaderboard-slide strong{font-variant-numeric:tabular-nums}.leaderboard-slide small{white-space:nowrap}.leaderboard-banner .country-flag,.leaderboard-row .country-flag{flex-shrink:0}
.leaderboard-panel{width:min(560px,100%);max-height:calc(var(--dialog-viewport-height,100dvh) - 32px);display:flex;flex-direction:column;gap:12px;overflow:hidden}.leaderboard-panel header{display:flex;justify-content:space-between;align-items:center}.leaderboard-panel h2{margin:0}.leaderboard-panel header button{font-size:24px;width:44px;height:44px;padding:0}.leaderboard-category{display:flex;align-items:center;gap:12px;font-size:13px}.leaderboard-category select{flex:1;min-width:0;padding:9px;border-radius:8px;background:#d7e3dd;color:inherit;border:1px solid #b2c5bc66}.leaderboard-note{font-size:11px;color:#52685f;margin:0;line-height:1.5}.leaderboard-scroll{overflow:auto;min-height:100px;flex:1}.leaderboard-panel ol{list-style:none;padding:0;margin:0}.leaderboard-row{display:flex;align-items:baseline;gap:12px;padding:13px 8px;border-bottom:1px solid #b2c5bc33}.leaderboard-place{width:25px;color:#d6bc83;font-variant-numeric:tabular-nums}.leaderboard-row-content{display:flex;justify-content:space-between;align-items:center;gap:10px;flex:1;min-width:0}.leaderboard-identity{display:flex;align-items:center;gap:8px;min-width:0}.leaderboard-identity>.leaderboard-player-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-row strong{font-variant-numeric:tabular-nums;white-space:nowrap}.leaderboard-row p{font-size:12px;color:#52685f;margin:8px 0 0}.leaderboard-row.is-you{background:#d7e3dd33;border-radius:8px}.leaderboard-own{border-top:1px solid #b2c5bc66}.leaderboard-pages{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}.leaderboard-empty{padding:30px 8px;text-align:center;color:#52685f}@keyframes leaderboard-slide-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.leaderboard-slide{animation:none}}

.leaderboard-cup{width:25px;height:25px;flex:0 0 25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* Entry hierarchy and compact standings share one readable text scale. */
.lobby-entry-heading{display:flex;align-items:center;gap:16px;margin-bottom:14px}.lobby-entry-copy{flex:1;min-width:0}.lobby-entry-copy h2,.lobby-entry-copy .sub{font-size:14px;line-height:1.45;text-align:left;margin:0}.lobby-entry-copy h2{margin-bottom:4px}.lobby-entry-heading .game-guide-button{width:44px;height:44px;flex:0 0 44px;font-size:23px}
.leaderboard-banner{padding:8px 12px;min-height:60px;margin:8px 0 16px;gap:10px}.leaderboard-slide>small{margin-bottom:3px}.leaderboard-slide>span{min-height:1.4em;font-size:14px;line-height:1.4;align-items:center;flex-wrap:nowrap}.leaderboard-name{max-width:none;flex:1;min-width:0}.leaderboard-slide strong{white-space:nowrap}.leaderboard-own-place{font-size:inherit;color:#52685f}
.leaderboard-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.leaderboard-tabs button{padding:10px 5px;font-size:13px}.leaderboard-row{align-items:center;font-size:14px;line-height:1.4;padding:10px 6px;gap:9px}.leaderboard-place{flex:0 0 3.5ch;width:auto}.leaderboard-row-content{align-items:center}.leaderboard-identity{align-items:center;flex:1}.leaderboard-row strong{font-size:inherit}.leaderboard-identity small{font-size:11px}.leaderboard-gap{text-align:center;color:var(--muted);letter-spacing:4px;line-height:1;margin-top:0}.leaderboard-own{flex-shrink:0}.leaderboard-panel{gap:10px}.leaderboard-empty{font-size:14px;line-height:1.6;padding:24px 10px}
.leaderboard-banner .country-flag,.leaderboard-row .country-flag{width:1em!important;min-width:1em!important;height:1em!important;flex:0 0 1em!important;align-self:center;transform:none}

.leaderboard-full-name{overflow-wrap:anywhere}.leaderboard-panel{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
.leaderboard-dialog>.leaderboard-panel{max-height:100%;min-height:0}.leaderboard-place{flex:0 0 auto;min-width:3.5ch}

.leaderboard-place{color:#52685f}.leaderboard-row.is-top-ten .leaderboard-place{color:var(--gold)}
.leaderboard-row.is-you{position:relative;border:1px solid #b2c5bc77;border-left:3px solid #b2c5bc;background:linear-gradient(110deg,#d7e3dd55,#d7e3dd88 65%,#d2bc7922);box-shadow:inset 0 1px 0 #243b341c,0 3px 14px #243b3426;border-radius:12px;padding-left:8px}.leaderboard-row.is-you .leaderboard-identity{color:#24745b;font-weight:700}.leaderboard-row.is-you strong{color:#24745b}.leaderboard-row.is-you .leaderboard-place{color:#52685f}.leaderboard-row.is-you.is-top-ten .leaderboard-place{color:var(--gold)}.leaderboard-category .game-select{flex:1;min-width:0}.leaderboard-category-dialog .selection-panel{max-height:100%;overflow:auto}

.lobby-entry-heading{display:grid;grid-template-columns:minmax(0,1fr) 22px;align-items:start;column-gap:12px;row-gap:4px}.lobby-entry-copy{display:contents}.lobby-entry-copy h2{grid-column:1;grid-row:1;color:var(--mint2);line-height:22px;margin:0}.lobby-entry-copy .sub{grid-column:1/-1;grid-row:2;margin:0}.lobby-entry-heading .game-guide-button{grid-column:2;grid-row:1;width:22px;height:22px;min-width:0;font-size:14px;line-height:1;padding:0}
.leaderboard-panel header{gap:12px}.leaderboard-panel header h2{font-size:24px;line-height:30px}.leaderboard-panel header button{width:30px;height:30px;flex:0 0 30px;font-size:24px;line-height:1;border-radius:9px;display:grid;place-items:center;padding:0;position:relative}.leaderboard-panel header button::after,.lobby-entry-heading .game-guide-button::after{content:"";position:absolute;inset:-7px}.lobby-entry-heading .game-guide-button{position:relative}
.leaderboard-row.is-top-three .leaderboard-identity>.leaderboard-player-name{color:var(--gold)}

.leaderboard-chevron{width:22px;height:22px;flex:0 0 22px;fill:none;stroke:#52685f;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.leaderboard-level{flex-shrink:0;white-space:nowrap;font-size:11px;color:#52685f;font-weight:600}.leaderboard-identity>.leaderboard-player-name{min-width:0}

.leaderboard-placeholder{min-height:min(calc(var(--dialog-viewport-height,100vh) * .5),100%)}
.leaderboard-skeleton{padding:4px 0}.leaderboard-skeleton-row{display:flex;align-items:center;gap:12px;height:46px;border-bottom:1px solid #b2c5bc22}.leaderboard-skeleton-row i,.leaderboard-banner-skeleton{display:block;height:13px;border-radius:6px;background:linear-gradient(100deg,#d1dfcf 25%,#90bb9b 50%,#d1dfcf 75%);background-size:200% 100%;animation:leaderboard-shimmer 1.5s linear infinite}.leaderboard-skeleton-row i:first-child{width:24px}.leaderboard-skeleton-row i:nth-child(2){width:44%}.leaderboard-skeleton-row i:last-child{width:23%;margin-left:auto}.leaderboard-banner-skeleton{width:90%;height:18px}.leaderboard-placeholder .leaderboard-empty{margin:auto 0}@keyframes leaderboard-shimmer{from{background-position:200% 0}to{background-position:0% 0}}@media(prefers-reduced-motion:reduce){.leaderboard-skeleton-row i,.leaderboard-banner-skeleton{animation:none}}

/* Share the profile visual-viewport shell; retain breathing room above gesture navigation when WebView reports a zero bottom safe inset. */
.leaderboard-dialog{padding-bottom:max(24px,env(safe-area-inset-bottom))}

.leaderboard-slide strong,.leaderboard-own-place{flex-shrink:0}.leaderboard-empty-copy{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-slide>span{gap:5px}.leaderboard-row-content>strong{flex-shrink:0}

.account-privacy-button{width:100%;margin:0 0 14px;text-align:center}.privacy-panel{display:flex;flex-direction:column;width:min(700px,calc(100vw - 24px));height:min(760px,calc(var(--dialog-viewport-height) - 24px));padding:14px;overflow:hidden}.privacy-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.privacy-heading h2{margin:0}.privacy-panel iframe{display:block;flex:1;width:100%;min-height:0;border:1px solid #b2c5bc;border-radius:10px;background:#e7eeeb}
.account-form .primary.is-pending{transform:translateY(2px);box-shadow:inset 0 -2px #243b34;filter:none;opacity:1;cursor:progress}
.account-form .secondary.is-pending,[data-confirm-account-delete].is-pending{filter:none;opacity:1;cursor:progress}
.input.input-invalid{border-color:#ed6670!important;box-shadow:0 0 0 2px #ed667055!important;animation:account-input-shake .34s ease-in-out}
@keyframes account-input-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
.profile-loading{display:grid;gap:12px;margin:24px 0}.profile-loading i{display:block;height:36px;border-radius:9px;background:linear-gradient(100deg,#d1dfcf 25%,#90bb9b 50%,#d1dfcf 75%);background-size:200% 100%;animation:leaderboard-shimmer 1.5s linear infinite}.profile-loading i:first-child{width:65%;height:52px}.profile-loading i:nth-child(2){width:95%}.profile-loading i:nth-child(3){width:82%}
@media(prefers-reduced-motion:reduce){.input.input-invalid,.profile-loading i{animation:none}}


/* Social pages reuse profile viewport, buttons, flags, and loading skeletons. */
[data-public-player]{cursor:pointer;border-radius:4px}
[data-public-player]:focus-visible{outline:2px solid #65e3b8;outline-offset:3px}
.social-heading{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;gap:12px;margin-bottom:18px}.social-heading>h2{grid-column:2;text-align:center;min-width:0;overflow-wrap:anywhere}.social-heading>.social-close{grid-column:3}
.social-heading h2{margin:0}.social-heading>.social-close,.public-player-profile .social-close{width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important;padding:0!important;margin:0!important;display:grid;place-items:center;line-height:1;flex-shrink:0}
.social-close svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.public-player-profile .history-heading{align-items:center!important}
.public-player-profile .history-identity{width:100%;min-width:0}
.public-profile-name-line{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;gap:12px}.public-profile-name-line>.history-name-row{grid-column:2;justify-content:center;text-align:center}.public-profile-name-line>.social-close{grid-column:3}.public-player-profile .eyebrow{text-align:center}
.public-profile-name-line .history-name-row{min-width:0;flex:1;margin-top:0}
.public-profile-name-line h2{overflow-wrap:anywhere}
.friend-request-panel .friend-request-identity{justify-content:center;text-align:center;margin:22px 0}
.room-invitation-panel{width:min(560px,100%);margin:0;text-align:center;gap:16px}
.app-dialog>.room-invitation-panel{flex:0 0 auto;margin:auto}
.room-invitation-panel .social-heading{margin:0;display:grid}.room-invitation-panel h2{font-size:22px;line-height:1.25}.room-invitation-panel .invitation-actions{display:flex;gap:12px}.room-invitation-panel .invitation-actions>button,.friend-request-actions>button{flex:1;min-height:46px;padding:12px 16px;line-height:20px}
.room-invitation-panel .invitation-player{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;margin:0;font-size:20px}
.public-profile-actions,.friend-request-actions{display:flex;gap:10px;margin:16px 0}.public-profile-actions>button{flex:1;min-height:46px;margin:0!important;padding:13px 18px!important;line-height:20px;display:grid;place-items:center}
.public-progress .game-skill,.public-progress .game-progress-columns>span:nth-child(2){display:none}
.public-progress .game-progress-row,.public-progress .game-progress-columns{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
.friends-tabs{margin-bottom:16px}.friends-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.friends-list>li{display:flex;align-items:center;gap:10px;padding:12px;border-radius:12px;background:#d7e3dd}.friends-list>li>div{display:flex;gap:8px;flex-shrink:0}
.friend-identity{display:flex!important;align-items:center;gap:8px;flex:1;min-width:0;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important;text-align:left!important;color:inherit}
.friend-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.friend-identity small{display:block;font-size:12px;color:#52685f;flex-shrink:0}
.friend-request-identity{display:flex;align-items:center;gap:8px;font-size:20px}.friend-request-actions>button{flex:1}

.friends-login{display:block;width:100%;min-height:46px;padding:12px 16px;margin:14px 0 0}.lobby-room-actions{display:grid;gap:9px}.lobby-room-actions>button{width:100%;min-height:46px;line-height:20px;margin:0}
@media(max-width:430px){.friends-list>li{flex-wrap:wrap}.friends-list>li>div{margin-left:auto}.friend-identity{flex-basis:55%}.friends-panel{padding-inline:16px!important}}

.public-progress .game-progress-row{grid-template-areas:"name mastery"}.public-progress .game-progress-name{grid-area:name}.public-progress .game-mastery{grid-area:mastery}

.friends-list [data-challenge-friend],.friends-list [data-social-action=unblock]{font-size:14px;line-height:20px;min-height:30px;margin:0;padding:5px 10px;border-radius:8px}
.waiting-room-roster .waiting-room-invite-seat{grid-template-columns:1fr;grid-template-areas:"add";padding:0}.waiting-seat-add{display:grid;grid-area:add;place-items:center;width:100%;min-width:0;min-height:38px;height:100%;margin:0;padding:0;border:0;border-radius:11px;background:var(--panel2);color:var(--mint2);box-shadow:none}.waiting-seat-add svg{display:block;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.waiting-seat-add:hover{background:#cbdcc9}

/* Own profile controls share the identity row baseline. */
.own-player-profile .history-name-row{display:flex;align-items:baseline;gap:8px;width:100%}
.own-player-profile .history-identity{width:100%}
.own-player-profile .history-name-row h2{flex:0 1 auto;min-width:0}
.own-player-profile .history-name-row h2,.public-player-profile .history-name-row h2{font-size:28px}
.own-player-profile .history-name-row>.country-flag{width:auto!important;min-width:0!important;height:24px!important;flex:0 0 auto!important;object-fit:contain}
.own-player-profile .profile-account-action,.own-player-profile .profile-header-actions .profile-guide-button,.own-player-profile .profile-header-actions .history-close{width:24px!important;min-width:24px!important;height:24px!important;min-height:24px!important;padding:0!important;margin:0!important;font-size:16px!important;border-radius:6px}
.own-player-profile .profile-account-action svg{width:16px;height:16px}
.own-player-profile .profile-header-actions{align-items:baseline;gap:8px;transform:none;margin-left:auto;flex-shrink:0}
.own-player-profile .profile-header-actions .profile-guide-button,.own-player-profile .profile-header-actions .history-close{width:28px!important;min-width:28px!important;height:28px!important;min-height:28px!important;font-size:18px!important}
.own-player-profile .profile-header-actions .history-close svg{width:18px;height:18px}.own-player-profile .history-name-row>.country-flag,.own-player-profile .history-name-row>.profile-account-action,.own-player-profile .profile-header-actions{align-self:baseline}
/* Give icon controls a bottom-edge baseline to match the nickname's text baseline. */
.own-player-profile .profile-account-action,.own-player-profile .profile-header-actions button{display:flex;align-items:center;justify-content:center}
.own-player-profile .profile-account-action::before,.own-player-profile .profile-header-actions button::before{content:"";width:0;height:calc(100% + 2px);flex:0 0 0}
.unfriend-confirmation{text-align:center}.unfriend-confirmation h2{margin-bottom:18px}.unfriend-confirmation .unfriend-player{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;font-size:20px}.unfriend-confirmation .unfriend-player .friend-name{max-width:80%}.unfriend-confirmation .sub{line-height:1.5;margin:16px 0 22px}.unfriend-confirmation .result-actions>button{flex:1}
/* Shared product entries do not compete with the primary game action. */
.monetization-links{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin:0 0 14px}.monetization-links button{font-size:13px;min-height:32px;padding:5px 10px}.premium-panel{width:min(560px,100%);max-height:calc(var(--dialog-viewport-height,100dvh) - 32px);overflow:auto}.premium-panel header{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.premium-panel header h2{margin:0}.premium-panel header button{width:32px;height:32px;padding:0;font-size:24px}.premium-products{display:grid;gap:12px;margin:18px 0}.premium-products article{border:1px solid #b2c5bc66;background:#d7e3dd;border-radius:12px;padding:14px}.premium-products h3{margin:0 0 8px;font-size:17px}.premium-products p{color:#52685f;font-size:13px;line-height:1.6}.premium-status{color:#24745b;font-size:13px}.house-ad{z-index:10000!important}.house-ad .panel,.house-promo-panel{width:min(480px,100%);text-align:center}.house-promo-panel .primary{width:100%}.house-brand{margin:24px 0;color:var(--mint);font-size:24px;font-weight:800}.simply-preview{text-align:center;padding:24px 0}.home-discovery-actions{display:flex;align-items:center;gap:8px}.home-discovery-actions .premium-icon{color:var(--gold,#e4c487)}@media(max-width:430px){.home-discovery-actions{gap:5px}}.house-ad .primary{width:100%}.house-ad .room-progress-control:disabled{opacity:1}
.leaderboard-ad-slot{position:fixed;left:0;right:0;bottom:env(safe-area-inset-bottom,0px);height:90px;z-index:30;pointer-events:none}.leaderboard-dialog.has-bottom-ad{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}

.glyph-icon{display:inline-block;width:1em;height:1em;vertical-align:-.12em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}

.account-panel > .account-privacy-button{margin:12px 0 0}
.home-title-row{font-size:36px}.home-title-row h2{font-size:inherit}.home-discovery-actions .header-icon-btn{width:1em;height:1em;min-width:1em;min-height:1em;font-size:inherit;padding:0;position:relative}.home-discovery-actions .header-icon-btn::after{content:"";position:absolute;inset:-6px}.home-discovery-actions .ui-icon{width:.6em;height:.6em}.home-discovery-actions{font-size:inherit;flex-shrink:0}@media(max-width:850px){.home-title-row{font-size:30px}}

.credit-reward-entry{margin:12px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#d7e3dd;border-radius:12px}.credit-reward-balance{display:grid;gap:4px;min-width:0}.credit-reward-balance>span{font-size:12px;color:var(--muted)}.credit-reward-balance strong{font-size:18px;color:var(--metric-credit)}.credit-reward-balance small{font-size:12px;font-weight:600}
.credit-reward-entry>button{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px;flex-shrink:0;font-size:13px}.credit-reward-action svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}.credit-reward-action svg path{fill:currentColor;stroke:none}.credit-reward-action span{display:grid;gap:2px;text-align:center}.credit-reward-action small{font-size:11px;color:var(--metric-credit)}.credit-reward-panel{width:min(480px,100%)}.credit-reward-panel [data-credit-watch]{width:100%}

.credit-assistance-toast{position:fixed;z-index:2147483647;top:max(16px,env(safe-area-inset-top));left:50%;display:grid;gap:5px;width:min(420px,calc(100vw - 28px));box-sizing:border-box;padding:14px 38px 14px 16px;transform:translateX(-50%);border:1px solid #a98238;border-radius:13px;background:#2a2518f7;color:#f7e4a7;box-shadow:0 12px 32px #243b3488,0 0 18px #c6950022;text-align:left;animation:credit-assistance-slide-down .3s ease-out both}
.credit-assistance-toast strong{font-size:14px}.credit-assistance-toast>span{font-size:14px;font-weight:900;color:var(--metric-credit)}.credit-assistance-toast p{margin:0;font-size:12px;color:#cbbd96}.credit-assistance-toast button{position:absolute;right:8px;top:8px;width:26px;height:26px;padding:3px;background:transparent;border:0;box-shadow:none}.credit-assistance-toast svg{width:20px;height:20px;fill:none;stroke:#d7c48d;stroke-width:2}.credit-assistance-toast-out{animation:credit-assistance-slide-up .26s ease-in both;pointer-events:none}
@keyframes credit-assistance-slide-down{from{opacity:0;transform:translate(-50%,calc(-100% - 24px))}to{opacity:1;transform:translate(-50%,0)}}@keyframes credit-assistance-slide-up{from{opacity:1;transform:translate(-50%,0)}to{opacity:0;transform:translate(-50%,calc(-100% - 24px))}}
.glyph-icon.question-icon{stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.premium-crown{display:inline-block;width:1em;height:1em;flex:0 0 1em;vertical-align:baseline;color:var(--gold,#f5ce76);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.history-name-row h2>.premium-crown{margin-right:.25em}
.leaderboard-identity{justify-content:flex-start;text-align:left}
.leaderboard-identity>.leaderboard-player-name{text-align:left}
.leaderboard-row.is-you{border:0;border-bottom:1px solid transparent;padding:10px 6px;box-shadow:inset 3px 0 #243b34,inset 0 0 0 1px #243b3477,0 3px 14px #243b3426}
/* App promotion and account invitations share the existing panel/button system. */
.more-app-categories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.more-app-categories article{background:var(--panel2);border-radius:14px;padding:16px 8px}
.more-app-categories h3{font-size:1rem;margin:0}
.premium-products article>button{display:block;width:100%;margin-top:12px}
.profile-invitation{width:100%;margin:12px 0}

/* Non-selectable reaction artwork: long presses never leave an image selection. */
.reaction-menu,.reaction-menu button,.reaction-menu img,.room-reaction-icon{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.reaction-menu img,.room-reaction-icon{pointer-events:none;-webkit-user-drag:none}
/* Symmetric gutters keep popup titles centered independently of the close control. */
.panel .popup-heading{display:grid;grid-template-columns:var(--popup-control-size,32px) minmax(0,1fr) var(--popup-control-size,32px);align-items:center;gap:8px}
.panel .popup-heading h2{grid-column:2;grid-row:1;text-align:center;min-width:0;margin:0;overflow-wrap:anywhere}
.panel .popup-heading>button{grid-column:3;grid-row:1;justify-self:end;width:30px;height:30px;min-width:30px;min-height:30px;padding:0;display:grid;place-items:center;line-height:1;font-size:24px}
.premium-price{display:inline-flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:8px}
.premium-price del{font-size:.85em;font-weight:500;opacity:.7}
.premium-discount-price{color:var(--gold,#f5ce76);text-shadow:0 1px 1px #243b3480}

.panel .social-heading{--popup-control-size:34px;grid-template-columns:var(--popup-control-size) minmax(0,1fr) var(--popup-control-size)}

/* Ivory / emerald: foregrounds on filled controls are explicit. */
.primary,.primary>span,.danger,.danger>span{color:#fff}.primary{--button-edge:#174d33}.secondary{color:var(--paper)}.input,.input option{color:var(--paper)}.music-btn,.music-btn.on,.music-btn.off{color:var(--paper)}

.game-tab{background:var(--panel2);color:var(--paper);border-color:var(--line)}.game-tab.has-art{background:var(--panel2)}.game-tab.has-art span{text-shadow:none}.game-tab:hover{border-color:var(--mint)}.leaderboard-row.is-you{box-shadow:inset 3px 0 var(--mint),inset 0 0 0 1px #24745b44,0 3px 14px #24745b15}
/* Loading remains readable while interaction is disabled. */
.leaderboard-banner:disabled{opacity:1;filter:none}.leaderboard-cup{color:var(--gold)}
.room-capacity-note{color:var(--mint)!important}
#app[data-view=lobby] .game-select-trigger i,.app-dialog .game-select-trigger i{border-color:var(--muted)}


/* Light gameplay surfaces. Board artwork, cards and seat geometry stay shared. */
:root:not([data-theme="dark"]) .dice-quantity-stepper{background:var(--panel);border-color:var(--line)}
:root:not([data-theme="dark"]) .dice-quantity-stepper strong{color:var(--paper)}
:root:not([data-theme="dark"]) .scorebar{background:var(--panel2);border-color:var(--line);color:var(--paper)}
:root:not([data-theme="dark"]) .scorebar .player-context{color:var(--muted)}
:root:not([data-theme="dark"]) .player-time{background:var(--panel);color:var(--gold)}
:root:not([data-theme="dark"]) .turn-badge{background:var(--panel2);color:var(--muted)}
:root:not([data-theme="dark"]) .turn-badge.live{background:var(--mint);color:white}
:root:not([data-theme="dark"]) .turn-badge.live.timer-warning{background:var(--coral);color:white}
:root:not([data-theme="dark"]) .battle-turn{background:var(--panel2);border-color:var(--line);color:var(--muted)}
:root:not([data-theme="dark"]) .battle-turn.active{border-color:var(--mint);color:var(--mint)}
:root:not([data-theme="dark"]) :is(.holdem-table,.blackjack-table,.casino-table,.mahjong-table,.landlord-table){
 background:linear-gradient(145deg,#d7e3dd,#a6c1b0);border-color:#b2c5bc;color:var(--paper);box-shadow:inset 0 0 0 9px #b2c5bc;
}
:root:not([data-theme="dark"]) :is(.casino-hand,.casino-seat,.casino-poker-seat,.holdem-seat,.blackjack-dealer,.blackjack-hand,.landlord-opponent,.landlord-self,.mahjong-opponent,.mahjong-self){
 background:#f3f6f3;border-color:#b2c5bc;color:var(--paper);
}
:root:not([data-theme="dark"]) :is(.casino-poker-seat.mine,.holdem-seat.mine,.blackjack-hand.mine,.landlord-self){background:#d7e3dd}
:root:not([data-theme="dark"]) :is(.casino-actions,.blackjack-actions,.holdem-actions,.landlord-trick){background:#d7e3dd;color:var(--paper)}
:root:not([data-theme="dark"]) :is(.casino-heading,.holdem-heading,.landlord-status){color:var(--paper)}
:root:not([data-theme="dark"]) :is(.casino-hand header span,.casino-poker-seat header span,.casino-seat small,.casino-poker-seat>small,.landlord-seat-meta>small,.landlord-status>div:first-child>span,.mahjong-opponent header span,.mahjong-self header span,.mahjong-opponent-meta,.mahjong-actions span,.holdem-wait){
 color:var(--muted);
}
:root:not([data-theme="dark"]) .landlord-remaining-cards{color:var(--paper)}
:root:not([data-theme="dark"]) .casino-heading>strong,
:root:not([data-theme="dark"]) .casino-heading>strong .credit-amount{color:var(--paper)}
:root:not([data-theme="dark"]) :is(.casino-heading>span,.casino-heading>small,.casino-player-status,.holdem-seat>small,.blackjack-dealer header span,.blackjack-hand header span,.blackjack-hand footer span){color:var(--muted)}
:root:not([data-theme="dark"]) :is(.blackjack-hand footer b,.blackjack-dealer footer){color:var(--gold)}
:root:not([data-theme="dark"]) .casino-flow.holdem-progress{background:var(--panel2);border-color:var(--line)}
:root:not([data-theme="dark"]) .casino-flow li{color:var(--muted)}
:root:not([data-theme="dark"]) .casino-flow i{background:var(--panel2);border-color:var(--line);color:var(--muted)}
:root:not([data-theme="dark"]) .casino-flow li::after{background:var(--line)}
:root:not([data-theme="dark"]) .casino-flow :is(.done,.current),
:root:not([data-theme="dark"]) .casino-flow.holdem-progress :is(.done,.current) span{color:var(--mint)}
:root:not([data-theme="dark"]) .casino-flow .done i{background:var(--gold);border-color:var(--gold);color:white}
:root:not([data-theme="dark"]) .casino-flow .current i{background:var(--mint);border-color:var(--mint);color:white;box-shadow:0 0 0 4px #24745b22,0 0 15px #24745b44}

.panel .social-heading>.players-guide-button{grid-column:1;grid-row:1;justify-self:start;width:34px;height:34px;min-width:34px;min-height:34px;padding:0}
.players-guide-button svg{width:20px;height:20px}
/* Table children fit the felt instead of widening its grid track. */
.poker-card{height:auto!important;min-height:0!important;aspect-ratio:58/80!important}
.solitaire-pile{height:auto!important;aspect-ratio:58/80}
.solitaire-empty{aspect-ratio:58/80}
.holdem-table{grid-template-columns:minmax(0,1fr)}
.holdem-board-cards{min-width:0;max-width:100%}
.holdem-board-cards>.poker-card{min-width:0;flex-shrink:1}
/* Fitted three-card hands obey the same measured card width as Blackjack. */
.casino-card-row.balanced-single-row{grid-template-columns:repeat(var(--balanced-columns),var(--balanced-item-size))!important}
.casino-card-row.balanced-single-row>:is(.casino-fixed-card-slot,.casino-card-choice,.poker-card){width:var(--balanced-item-size);min-width:0}
.casino-card-row.balanced-single-row .poker-card{width:var(--balanced-item-size);max-width:100%;height:auto;aspect-ratio:58/80}
/* Fit the entire card slot, including both animation faces, at one fixed ratio. */
.blackjack-cards:is(.balanced-single-row,.balanced-two-rows){grid-template-columns:repeat(var(--balanced-columns),var(--balanced-item-size))!important}
.blackjack-cards:is(.balanced-single-row,.balanced-two-rows)>*{width:var(--balanced-item-size);min-width:0}
.blackjack-cards:is(.balanced-single-row,.balanced-two-rows) .poker-card{width:var(--balanced-item-size)!important;height:calc(var(--balanced-item-size) * 80 / 58)!important;min-width:0;min-height:0;aspect-ratio:58/80;padding:clamp(1px,calc(var(--balanced-item-size) * .08),5px)}
.blackjack-cards:is(.balanced-single-row,.balanced-two-rows) .poker-card b{font-size:calc(var(--balanced-item-size) * .29)!important;line-height:1}
.blackjack-cards:is(.balanced-single-row,.balanced-two-rows) :is(.blackjack-card-flip,.staggered-card-flip,.staggered-card-deal,.casino-card-back-deal){width:var(--balanced-item-size);min-width:0}
@media(max-width:560px){
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .blackjack-hand:has(>.blackjack-cards>:nth-child(4)){grid-template-columns:minmax(0,1fr);grid-template-areas:"meta" "cards";row-gap:6px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .blackjack-hand:has(>.blackjack-cards>:nth-child(4))>.casino-player-cards{width:100%;max-width:100%}
}
/* Narrow phones reserve the original HUD text before fitting adjacent cards. */
@media(max-width:360px){
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-row{--compact-meta-min:52px}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .holdem-seat{--compact-card-width:min(38px,calc((100cqi - var(--compact-meta-min) - var(--compact-seat-column-gap) - 5px)/2))}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .three-card-seat{--compact-card-width:min(28px,calc((100cqi - var(--compact-meta-min) - var(--compact-seat-column-gap) - 10px)/3))}
 .casino-seat-grid:not(:is(.seat-count-1,.seat-count-2,.seat-count-3)) .casino-player-cards{max-width:calc(100cqi - var(--compact-meta-min) - var(--compact-seat-column-gap))}
}

/* Protected host review uses existing panel/action colours in both themes. */
.recovery-review-panel{max-height:calc(var(--dialog-viewport-height,100dvh) - 2rem);overflow-y:auto}
.recovery-review-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:.4rem 0;font-size:.85em}
.recovery-review-panel dd{margin-inline-start:0}

.account-edit-tabs{grid-template-columns:auto auto auto;margin:12px 0 16px}
.account-edit-tabs button{min-width:0;padding:10px 2px;font-size:clamp(13px,3.8vw,16px)}
.account-current-email{overflow-wrap:anywhere;margin:0}

.waiting-lan-share{display:block;width:100%;margin:0 0 12px}


.nearby-app-join{display:grid;gap:8px;margin-top:16px;min-width:0}
.nearby-app-join-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.nearby-app-join .input{min-width:0;width:100%;box-sizing:border-box}

/* Keep roster and disabled actions legible using the shared theme palette. */
:root:not([data-theme="dark"]) .room-kick{color:var(--coral);border-color:var(--coral);background:color-mix(in srgb,var(--coral) 10%,var(--panel))}
:root:not([data-theme="dark"]) .room-kick:hover,:root:not([data-theme="dark"]) .room-kick:focus-visible{background:color-mix(in srgb,var(--coral) 20%,var(--panel))}
:root:not([data-theme="dark"]) button.primary:disabled,:root:not([data-theme="dark"]) button.danger:disabled{opacity:1;background:var(--muted);--button-edge:var(--paper);color:var(--action-ink)}
:root:not([data-theme="dark"]) .secondary:disabled{opacity:1;background:var(--panel2);border-color:var(--line);color:var(--muted)}
:root[data-theme="dark"] button.primary:disabled,:root[data-theme="dark"] button.danger:disabled{opacity:1;background:var(--panel2);--button-edge:var(--line);color:var(--paper)}
:root[data-theme="dark"] button.secondary:disabled{opacity:1;background:var(--panel2);border-color:var(--line);color:var(--paper)}

/* Standalone audience prompt has no game header. */


.profile-loading.profile-sync-loading{display:block;min-height:8px;height:8px;margin:8px 0 14px;overflow:hidden}.profile-loading.profile-sync-loading i:first-child{width:100%;min-height:8px;height:8px}.client-update-gate{z-index:100000;pointer-events:auto}

.server-unavailable{opacity:.55;cursor:not-allowed}
