@font-face{font-family:Penghu;src:url(/fonts/penghu.woff2) format("woff2");font-display:swap}:root{font-family:Microsoft YaHei,PingFang SC,sans-serif;color:#273f36;background:#f6f5ef;font-synthesis:none;--green:#285e4e;--gold:#e1b965;--muted:#8b948a}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;background:none;color:inherit;touch-action:manipulation}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #daa958;outline-offset:3px}a{color:inherit;text-decoration:none}input,select{outline:none}button,select,input{-webkit-tap-highlight-color:transparent}input{min-width:0}h1,h2,h3,p{margin-top:0}.lobby{max-width:1280px;margin:0 auto;padding:32px 58px 0}.lobby-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:26px;border-bottom:1px solid #dde2d8}.brand{display:flex;gap:12px;align-items:center;font-family:serif;font-weight:700;font-size:23px;letter-spacing:2px}.brand-seal{border:1px solid #426e55;background:#2e604c;color:#f6f5e8;padding:4px 8px;border-radius:7px;font-size:28px;font-family:Penghu,KaiTi,serif;box-shadow:inset 0 0 0 3px #436e57}.brand small{font:8px Arial;letter-spacing:3px;display:block;margin-top:5px;color:#879185}.lobby-header nav{display:flex;gap:24px;font-size:13px}.lobby-header nav button{padding:10px}.lobby-grid{display:grid;grid-template-columns:1fr 430px;gap:75px;padding:45px 0 35px}.hero{position:relative;padding-top:14px}.eyebrow{font-size:11px;letter-spacing:3px;color:#6e826f;font-weight:500}.eyebrow>span{display:inline-block;width:6px;height:6px;border-radius:50%;background:#689372;margin-right:7px;vertical-align:middle}.hero h1{font-family:Songti SC,SimSun,serif;font-size:clamp(46px,5.2vw,68px);letter-spacing:4px;line-height:1.3;font-weight:500;margin:22px 0}.hero h1>span{color:#417858}.hero-sub{font-size:14px;line-height:2.15;color:#7d897c}.hero-art{height:280px;position:relative;margin-top:5px}.hero-ring{position:absolute;border:1px solid #dbe3d7;border-radius:50%;width:270px;height:270px;left:55px;top:7px;background:radial-gradient(ellipse,#e5ecd9,transparent 68%)}.hero-ring:after{content:"";position:absolute;inset:17px;border:1px dashed #d7dece;border-radius:50%}.art-card{position:absolute;width:91px;height:168px;top:28px;background:linear-gradient(110deg,#fffefa,#ebe8dc);border:1px solid #d8d7c9;border-radius:8px;box-shadow:4px 8px #c4c6b5,10px 18px 24px #3a4f3428;display:flex;align-items:center;flex-direction:column;z-index:2;transform-origin:bottom center}.art-card span{font-family:Penghu,KaiTi,STKaiti,serif;font-size:67px;color:#a34136;line-height:1.1;margin-top:16px}.art-card i{border:1px solid #b86154;font:12px serif;color:#b86154;position:absolute;bottom:21px;padding:1px 3px;writing-mode:vertical-rl}.c1{left:83px;transform:rotate(-15deg)}.c2{left:162px;top:12px;z-index:3;transform:rotate(1deg)}.c3{left:241px;transform:rotate(15deg)}.art-caption{position:absolute;bottom:17px;left:133px;letter-spacing:5px;font:16px serif;color:#7c8065;text-align:center}.art-caption span{display:block;font:10px sans-serif;letter-spacing:2px;margin-top:10px;color:#959b89}.hero-notes{display:flex;gap:12px;font-size:10px;color:#889381;letter-spacing:1px;padding-top:15px}.hero-notes i{font-style:normal;color:#b7bdad}.start-panel{padding:30px 30px 22px;border:1px solid #dfe4d9;border-radius:16px;background:#fffefa;box-shadow:0 12px 35px #25462a06}.panel-title h2{font-family:SimSun,serif;font-size:28px;font-weight:500;margin:11px 0 10px;letter-spacing:2px}.panel-title>p{font-size:12px;color:#98a090;margin-bottom:25px}.input-label{display:block;font-size:12px;color:#5b6b5b;margin:16px 0 10px}.name-input{border:1px solid #e0e5db;display:flex;align-items:center;background:#f8f9f3;height:46px;gap:12px;border-radius:7px;padding:0 14px}.name-input>span{font-size:25px;color:#769477}.name-input input{width:100%;border:0;background:none;font-size:13px;color:#40573e}.name-input small{font-size:9px;color:#a7ae9d;white-space:nowrap}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-card{border:1px solid #e3e7df;border-radius:8px;padding:15px 12px;text-align:left;position:relative;background:#fffefa;transition:.18s}.mode-card:hover{border-color:#90ae90;background:#fafcf6}.mode-card.selected{border:1px solid #527e59;background:#eff5e9;box-shadow:inset 0 0 0 .5px #527e59}.mode-icon{color:#668961;display:block;font-size:24px;height:30px;line-height:1}.mode-card b{display:block;font-size:13px;font-weight:600;margin-top:5px}.mode-card small{display:block;font-size:9px;color:#98a08e;margin-top:7px;white-space:nowrap}.mode-card i{position:absolute;right:10px;top:10px;background:#537c59;color:#fff;width:16px;height:16px;line-height:16px;border-radius:50%;text-align:center;font-size:10px;font-style:normal}.practice-options{display:flex;align-items:center;justify-content:space-between;margin:22px 0;font-size:11px;color:#788c72}.practice-options select,.setting-row select{border:1px solid #e1e7db;border-radius:5px;padding:7px 10px;background:#f8faf3;color:#63765a;font-size:11px}.primary{background:#2e604c;color:#fffef3;border-radius:7px;padding:14px 22px;font-weight:600;font-size:13px;box-shadow:0 5px 10px #244b3214;transition:background .2s}.primary:hover{background:#3d775d}.start-button{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:14px;letter-spacing:1px}.start-button span{font-size:20px;font-weight:400}.panel-foot{font-size:10px;text-align:center;color:#a1a994;margin:11px 0 20px}.panel-tip{border-top:1px solid #e9ecdf;display:flex;gap:12px;padding-top:18px;font-size:11px}.panel-tip>span{font-size:24px;color:#bdaa75}.panel-tip p{margin:0;color:#839078}.panel-tip button{padding:0;color:#548064;font-size:11px}.panel-tip small{display:block;margin-top:8px;color:#a1aa98;font-size:10px}.room-input{width:100%;padding:12px;margin:15px 0;border:1px solid #dbe2d3;border-radius:7px;letter-spacing:5px;background:#f5f8ee;color:#335d45}.lobby-footer{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#a5ad9c;border-top:1px solid #e0e4d8;padding:20px 0 24px}.error{color:#b3493c;font-size:12px}.connect-status{font-size:12px;color:#577b57}.game-page{height:100dvh;width:100%;display:flex;flex-direction:column;background:#e9ede1;padding:0 16px;color:#fffef2;overflow:hidden}.game-header{flex:0 0 56px;display:flex;gap:18px;align-items:center;color:#355742;font-size:12px;width:100%;max-width:1440px;margin:auto}.table-brand{font-family:Penghu,KaiTi,serif;font-size:24px;letter-spacing:2px}.back-button{font-size:14px}.room-tag{font-size:11px;color:#6f846a;padding:7px 12px;background:#f5f7ee;border-radius:20px}.room-tag button{font-size:10px;padding:0 0 0 5px;text-decoration:underline}.spacer{flex:1}.base-control{display:flex;gap:6px;align-items:center}.base-control select{border:1px solid #cad8c4;border-radius:4px;background:#f9faef;color:#577650}.table-wrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.table{position:relative;container-type:inline-size;width:min(100%,calc((100dvh - 88px)*16/9));aspect-ratio:16/9;max-width:1440px;border:9px solid #8b6c43;border-radius:30px;background:radial-gradient(ellipse at 50% 40%,#477960,#275942 75%);box-shadow:inset 0 0 0 2px #ad8955,inset 0 0 70px #112f2566,0 7px 18px #3c523629;overflow:hidden;isolation:isolate}.table:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.5' filter='url(%23n)'/%3E%3C/svg%3E")}.table:after{content:"";position:absolute;inset:2.2%;border:1px solid #adca9040;border-radius:20px;pointer-events:none}.table-emboss{position:absolute;left:38%;top:28%;width:24%;font-family:Penghu,KaiTi,serif;font-size:4cqw;opacity:.13;text-align:center;letter-spacing:.4cqw}.table-emboss small{display:block;font-family:sans-serif;font-size:.9cqw;letter-spacing:.25cqw}.seat{position:absolute;z-index:2;font-size:1cqw}.south{bottom:3%;left:2.7%;width:19%;height:30%}.east{right:2.7%;top:28%;width:18%;height:42%}.west{left:2.7%;top:28%;width:18%;height:42%}.north{top:4%;left:34%;width:32%;height:24%}.player-info{display:flex;align-items:center;gap:.8cqw;position:relative}.avatar{width:4.3cqw;height:4.3cqw;display:grid;place-items:center;border-radius:1.1cqw;background:linear-gradient(140deg,#f5e9bf,#d2c698);border:2px solid #e6dcae;color:#5b6645;font-family:serif;font-size:1.9cqw;position:relative;box-shadow:0 3px 8px #102e2844}.avatar i{position:absolute;right:-3px;bottom:-3px;width:.8cqw;height:.8cqw;border-radius:50%;background:#93d196;border:2px solid #356749}.player-info b{display:block;max-width:12cqw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:1.05cqw;font-weight:500}.score{display:block;color:#f3d68b;font-size:1.1cqw;font-variant-numeric:tabular-nums;margin:.3cqw 0}.player-info small{font-size:.72cqw;color:#b9d0af;display:block}.player-info em{font-style:normal;background:#d9b258;color:#2f553e;padding:.15cqw .4cqw;border-radius:.25cqw}.player-info .alarm{background:#b95645;color:#ffe6bf}.active .avatar{box-shadow:0 0 0 .3cqw #e9d58566,0 0 18px #e9d58588}.north .player-info{justify-content:center}.north .opponent-hand{top:.2cqw;right:-10cqw}.opponent-hand{display:flex;max-width:14cqw;margin:.8cqw 0;position:relative;flex-wrap:wrap;gap:.15cqw}.opponent-hand .tile{width:1cqw;height:1.5cqw;font-size:.8cqw;box-shadow:0 1px 1px #0c2d2777}.opponent-hand.revealed{max-width:18cqw}.opponent-hand.revealed .tile{width:1.8cqw;height:2.3cqw;font-size:1.65cqw}.tile{position:relative;display:block;flex-shrink:0;width:4.5cqw;height:8.5cqw;background:linear-gradient(105deg,#fffef7,#e9e6d8);color:#34312a;border:1px solid #d8d1b6;border-radius:.35cqw;box-shadow:0 .2cqw #c3baa4,.15cqw .3cqw .5cqw #14282040;font-family:Penghu,KaiTi,STKaiti,serif;font-size:3.5cqw;padding:.1cqw 0 0;line-height:1;text-align:center;overflow:hidden}.tile>span{display:block;position:absolute;top:.2cqw;left:0;right:0}.tile.red{color:#b13d34}.tile>i{position:absolute;bottom:.7cqw;left:42%;border:1px solid #b75a46;color:#b75a46;font:.7cqw serif;font-style:normal;padding:.1cqw}.tile.small{width:2.4cqw;height:2.7cqw;font-size:2.05cqw;border-radius:.2cqw}.tile.small i{display:none}.tile.back{background:repeating-linear-gradient(45deg,#896343 0 2px,#997550 2px 4px);border-color:#c9ab70;color:#dcc7a0}.tile .back-mark{border:1px solid #b89c66;margin:.1cqw .2cqw;font-size:70%;line-height:1.1}.melds{display:flex;gap:.65cqw;position:absolute;max-width:18cqw;flex-wrap:wrap;top:5.8cqw;left:0}.meld-stack{position:relative}.mini-pile{display:flex;flex-direction:column}.mini-pile .tile{margin-top:-.6cqw}.meld-stack>span{font-size:.6cqw;color:#d4dbb8;display:block;max-width:4cqw;text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-top:.5cqw}.meld-stack sup{position:absolute;right:-.35cqw;top:-.25cqw;background:#b65342;border-radius:.15cqw;color:#ffe0b1;padding:.1cqw .2cqw;font-size:.55cqw}.north .melds{left:-16cqw;top:0}.south .melds{left:18cqw;top:0;max-width:20cqw}.east .melds{left:-5cqw;max-width:5cqw;top:0}.west .melds{left:15cqw;max-width:5cqw;top:0}.discard-zone{position:absolute;top:5.5cqw;left:4.3cqw;width:13cqw;min-height:3cqw;background:#123d2920;border:1px solid #aac88730;border-radius:.6cqw;padding:.35cqw .5cqw}.discard-zone>span{font-size:.6cqw;color:#9fc49a;display:block;margin-bottom:.3cqw}.discard-zone>div{display:flex;flex-wrap:wrap;gap:.2cqw}.discard-zone .tile{width:1.65cqw;height:1.85cqw;font-size:1.5cqw;pointer-events:none}.north .discard-zone{top:5.4cqw;left:10cqw}.south .discard-zone{top:-5cqw;left:18cqw;width:18cqw}.east .discard-zone,.west .discard-zone{top:9cqw;left:0}.latest{outline:2px solid #f7dc81;border-radius:.25cqw;box-shadow:0 0 1cqw #f5ce6377;animation:land .4s ease-out}.table-center{position:absolute;left:33%;top:34%;width:34%;text-align:center;z-index:2}.round-info{font-size:.85cqw;color:#b5d0a3;letter-spacing:.05cqw}.round-info span{margin:0 .5cqw}.deck{background:linear-gradient(125deg,#a45741,#773e30);border:1px solid #d3b065;border-radius:.45cqw;padding:.6cqw;width:4.4cqw;display:inline-block;margin-top:1.3cqw;box-shadow:.15cqw .25cqw #693b2c}.deck b{display:block;font:2cqw Georgia;color:#f1d88f;line-height:1}.deck span{font-size:.6cqw;color:#d1b78a}.current-card{display:inline-flex;vertical-align:top;flex-direction:column;margin-left:1.5cqw;margin-top:.7cqw;animation:land .45s ease-out}.current-card .tile{height:6cqw;width:3.5cqw;font-size:3cqw}.current-card small{color:#e6e7cb;font-size:.65cqw;margin-top:.5cqw}.current-card.discard{animation:land .45s ease-out,glow 1.2s .45s}.prompt{font-size:1cqw;color:#f4e5b4;margin-top:1cqw;min-height:1.2cqw}.thinking{color:#b0ca98;letter-spacing:.25cqw;margin-left:.4cqw;animation:blink 1s infinite}.hand-area{position:absolute;bottom:3%;left:23%;width:54%;z-index:5;-webkit-user-select:none;user-select:none;touch-action:none}.hand-hint{text-align:center;font-size:.8cqw;color:#bad2a8;margin-bottom:.6cqw;height:1.4cqw}.hand-hint b{color:#eadc9e;font-weight:400}.hand-hint .waits{color:#ffd5b2}.hand{display:flex;gap:.65cqw;align-items:flex-end;justify-content:center}.hand-pile{display:flex;flex-direction:column;gap:.15cqw;min-height:4.2cqw}.hand-tile{height:4.2cqw;width:4.3cqw;overflow:hidden;border-radius:.35cqw;box-shadow:0 .18cqw .2cqw #17382b66;touch-action:none}.hand .tile{width:4.3cqw;font-size:3.35cqw;box-shadow:none;touch-action:none}.playable .hand-tile:hover{transform:translateY(-.3cqw);outline:1px solid #e6cf80}.actions{position:absolute;right:20%;bottom:31%;display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.6cqw;max-width:65%;z-index:8}.actions button{border-radius:2cqw;border:1px solid #d8c475;padding:.9cqw 1.5cqw;font-size:1.15cqw;color:#fff3bf;background:linear-gradient(#b49b55,#978141);box-shadow:0 .25cqw .2cqw #213f3080}.actions .hu-button{background:linear-gradient(#c16849,#9a4032);font-size:1.5cqw}.actions .pass-button{background:#54775a;color:#cadbb7;border-color:#98b58a}.table-tools{position:absolute;bottom:4%;right:3%;display:flex;flex-direction:column;gap:.6cqw;z-index:8}.table-tools button{border:1px solid #a5b98c66;background:#28533c99;color:#c7d8ac;border-radius:.6cqw;padding:.5cqw .8cqw;font-size:.8cqw}.table-tools .auto-on{background:#ae9a55;color:#fff7d8}.game-footer{flex:0 0 32px;width:100%;max-width:1440px;margin:auto;display:flex;align-items:center;justify-content:space-between;color:#7f9377;font-size:10px}.coin-layer,.three-layer{position:absolute;inset:0;z-index:10;pointer-events:none}.three-layer canvas{display:block;width:100%;height:100%}.coin-flight{position:absolute;background:radial-gradient(circle at 35% 30%,#ffe49d,#d2982a);color:#9b6b16;border:2px solid #efc86b;width:2cqw;height:2cqw;border-radius:50%;display:grid;place-items:center;font-size:1cqw;box-shadow:0 0 .6cqw #ebc56177;animation:coin .65s ease-in-out forwards}.score-float{position:absolute;font-size:1.6cqw;font-weight:700;text-shadow:0 2px 4px #203c23;animation:float 1.5s ease-out forwards;z-index:15}.positive{color:#66c48b}.negative{color:#ef8b78}.toast{position:absolute;bottom:37%;left:50%;transform:translate(-50%);font-size:1cqw;padding:.7cqw 1.5cqw;border-radius:1cqw;background:#173d2edf;color:#f4e7b4;z-index:20}.end-banner{position:absolute;left:32%;top:46%;width:36%;background:#244e3ce8;border:1px solid #c5b071;border-radius:1cqw;display:flex;flex-direction:column;align-items:center;gap:1cqw;padding:1.4cqw;z-index:8}.end-banner>span{font-family:serif;color:#f3d987;font-size:1.8cqw}.end-banner .primary{background:#b09650;font-size:1cqw;padding:.6cqw 1.8cqw}.modal-scrim{position:fixed;inset:0;background:#132b235c;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:24px;z-index:100}.modal{background:#fffef7;color:#35533f;width:440px;max-height:90dvh;overflow:auto;padding:35px;border:1px solid #dbe2ce;border-radius:16px;position:relative;box-shadow:0 15px 60px #17362944}.modal.wide{width:760px}.modal h2{font-family:serif;font-size:28px;font-weight:500;margin:8px 0 25px}.close{position:absolute;right:17px;top:11px;font-size:27px;color:#91a282;z-index:2}.setting-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e8ecd9;padding:16px 0;font-size:13px;gap:15px}.setting-row small{display:block;font-size:10px;color:#91a17e;margin-top:7px}.setting-row input[type=checkbox]{appearance:none;width:36px;height:21px;background:#cdd8c2;border-radius:20px;position:relative;cursor:pointer;transition:.2s;flex-shrink:0}.setting-row input[type=checkbox]:checked{background:#55835a}.setting-row input[type=checkbox]:after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;background:#fffef3;top:3px;left:3px;transition:.2s}.setting-row input[type=checkbox]:checked:after{left:18px}.setting-row input[type=range]{accent-color:#4c7950;width:150px}.settings-note{font-size:11px;line-height:1.8;color:#94a084;margin:20px 0 0}.guide{font-size:13px;line-height:1.9}.guide p{color:#71836b}.guide h3{font-size:16px;border-bottom:1px solid #e5ebd9;padding:12px 0 8px;color:#3c6247;margin-bottom:14px}.guide-examples{display:flex;gap:12px;margin:22px 0}.guide-examples>span{flex:1;text-align:center;color:#9e473d;font:22px Penghu,KaiTi,serif;background:#f5f4e7;border:1px solid #e5e5d2;border-radius:6px;padding:12px 4px}.guide-examples small{display:block;font:10px sans-serif;color:#8c987d;margin-top:10px}table{width:100%;border-collapse:collapse;font-size:12px;text-align:left;margin:18px 0 25px}th{background:#eef3e5;color:#658256;font-weight:500}td,th{padding:10px;border-bottom:1px solid #e6ead8}.ledger-scores{display:flex;justify-content:space-between;font-size:10px;gap:12px}.ledger-scores b{display:block;font-size:19px;font-family:Georgia;color:#b49756;margin-top:7px}.ledger{margin-top:20px;max-height:50vh;overflow:auto}.ledger p{font-size:12px;border-bottom:1px solid #edf0e1;padding:8px 0;margin:0}.ledger small{font-size:9px;color:#a4ad93;margin-right:10px}.ledger .transfer{color:#9c854f}.settlement>button{width:100%;margin-bottom:10px}.settlement>p{font-size:13px;color:#869975}@keyframes coin{0%{transform:translate(0) rotate(0)}50%{left:var(--mid-x);top:calc(var(--mid-y) - 4%);transform:rotate(180deg)}to{left:var(--to-x);top:var(--to-y);transform:rotate(360deg);opacity:.7}}@keyframes float{0%{opacity:0;transform:translate(-50%)}15%{opacity:1}to{opacity:0;transform:translate(-50%,-3cqw)}}@keyframes land{0%{transform:translateY(-1.5cqw) scale(.9);opacity:.5}to{transform:translateY(0) scale(1);opacity:1}}@keyframes blink{50%{opacity:.3}}@keyframes glow{50%{filter:drop-shadow(0 0 .8cqw #e8d177)}}@media(min-width:1450px){.lobby{padding-top:50px}.lobby-grid{padding-top:65px}}@media(max-width:1000px){.lobby{padding:25px 30px 0}.lobby-grid{grid-template-columns:1fr 380px;gap:30px}.start-panel{padding:25px}.hero-art{transform:scale(.9);transform-origin:left center}.hero-notes{gap:7px;font-size:9px}.game-header{gap:12px}.game-page{padding:0 8px}.table{border-width:6px;border-radius:20px}}@media(max-width:750px){.lobby{padding:18px 20px 0}.lobby-header{padding-bottom:16px}.brand{font-size:19px}.lobby-header nav{gap:3px;font-size:11px}.lobby-grid{grid-template-columns:1fr;padding-top:25px;gap:20px}.hero{padding:0}.hero h1{font-size:42px;margin:14px 0;line-height:1.15}.hero-sub{font-size:12px}.hero-art{position:absolute;width:320px;height:260px;transform:scale(.48);transform-origin:top right;right:0;top:65px}.hero-ring{display:none}.hero-notes{padding-top:4px;font-size:8px}.start-panel{width:100%;padding:24px}.hero .eyebrow{font-size:9px}.lobby-footer{font-size:8px;gap:10px;margin-top:8px}.mode-card{padding:14px}.game-header{flex-basis:36px;gap:9px;font-size:10px}.table-brand{font-size:18px}.room-tag{font-size:9px;padding:5px 8px}.game-footer{flex-basis:20px;font-size:8px}.table{width:min(100%,calc((100dvh - 56px)*16/9));border-width:5px}.game-page{padding:0 5px}.modal-scrim{padding:12px}.modal{padding:26px;max-height:92dvh}.guide-examples{gap:4px}.guide-examples>span{font-size:18px}.guide-examples small{font-size:8px}}@media(orientation:portrait){.game-page{position:fixed;width:100dvh;height:100dvw;left:50%;top:50%;transform:translate(-50%,-50%) rotate(90deg);padding:0 5px}.game-page .table{width:min(100%,calc((100dvw - 56px)*16/9))}.game-page .game-header{flex-basis:36px;gap:9px;font-size:10px}.game-page .table-brand{font-size:18px}.game-page .game-footer{flex-basis:20px;font-size:8px}.game-page>.modal-scrim{position:absolute}.game-page .modal{max-height:85%;width:440px}}@media(prefers-reduced-motion:reduce){.thinking{animation:none}.coin-flight{animation-duration:.3s}.score-float{animation-duration:.8s}}.opponent-hand .tile.small{width:1cqw;height:1.5cqw;font-size:.8cqw}.opponent-hand.revealed .tile.small{width:1.8cqw;height:2.3cqw;font-size:1.65cqw}@media(max-height:500px)and (orientation:landscape){.game-header{flex-basis:36px;gap:10px;font-size:10px}.game-footer{flex-basis:20px;font-size:8px}.table{width:100%;height:100%;aspect-ratio:auto;border-width:5px}.game-page{padding:0 5px}}@media(orientation:portrait){.game-page .table{width:100%;height:100%;aspect-ratio:auto}}@media(max-height:500px)and (orientation:landscape){.table-center{top:26%}.actions{bottom:43%}}@media(orientation:portrait){.game-page .table-center{top:26%}.game-page .actions{bottom:43%}}.score-float.negative{animation-name:float-down}@keyframes float-down{0%{opacity:0;transform:translate(-50%)}15%{opacity:1}to{opacity:0;transform:translate(-50%,3cqw)}}.hand{position:relative}.hand-pile.free-pile{position:absolute;z-index:6}.hand .tile{height:4.2cqw}.hand .tile i{display:none}.player-info small,.meld-stack>span,.discard-zone>span,.deck span,.current-card small{font-size:max(11px,.85cqw)}.meld-stack>span{max-width:7cqw}.meld-stack sup{font-size:max(10px,.7cqw)}.player-info b,.score,.round-info,.prompt,.hand-hint,.table-tools button,.toast{font-size:max(12px,1cqw)}.hand-hint{height:auto;min-height:1.4cqw}.actions button,.end-banner .primary{font-size:max(12px,1.15cqw)}.game-page .game-header,.game-page .room-tag,.game-page .game-footer{font-size:11px}.game-footer{gap:12px}.game-footer>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opponent-hand{position:absolute;top:5.4cqw;left:0;margin:0}.north .opponent-hand{top:0;left:auto;right:-12cqw}.east .discard-zone,.west .discard-zone{top:9.5cqw}.east .opponent-hand,.west .opponent-hand{top:6.6cqw}.east .discard-zone,.west .discard-zone{top:10.2cqw}.melds{display:grid;grid-template-columns:repeat(5,3.2cqw);gap:.6cqw;max-width:none;flex-wrap:nowrap}.meld-stack{min-width:0}.meld-stack>span{max-width:3.2cqw}.mini-pile{align-items:center}.east .melds,.west .melds{grid-template-columns:repeat(3,3.2cqw);max-width:none;width:10.8cqw}.east .melds{left:-11.8cqw}.west .melds{left:15cqw}.north .melds,.south .melds{max-width:none;width:18.4cqw}.east .melds,.west .melds{top:2cqw}.south .melds,.south .discard-zone{left:28cqw}.many-melds .hand-area{left:51%;width:28%}.many-melds .hand-pile{flex-direction:row;min-height:0;gap:.2cqw}.table>.current-card{position:absolute;z-index:7;margin:0;align-items:center;transform:translate(-50%);pointer-events:none}.table>.current-card[data-position=south]{left:53%;bottom:21%}.table>.current-card[data-position=north]{left:58%;top:21%}.table>.current-card[data-position=east]{left:78%;top:39%}.table>.current-card[data-position=west]{left:31%;top:39%}.table>.current-card small{max-width:15cqw;text-align:center;white-space:nowrap}@media(max-height:500px)and (orientation:landscape){.table>.current-card[data-position=south]{bottom:21%}.table>.current-card[data-position=north]{top:20%}}@media(orientation:portrait){.table>.current-card[data-position=south]{bottom:21%}.table>.current-card[data-position=north]{top:20%}}.round-tag{font-size:13px;font-weight:700;color:#416148;background:#e5ecd8;border:1px solid #bfd0ad;border-radius:14px;padding:5px 10px;white-space:nowrap}.game-page{padding:env(safe-area-inset-top) max(5px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(5px,env(safe-area-inset-left))}.game-header{gap:12px;flex-basis:46px;flex-shrink:0;white-space:nowrap}.game-header button{min-height:30px}.network-status{font-size:11px;color:#527454}.fullscreen-button{border:1px solid #bdcfaf;border-radius:5px;padding:4px 9px}.table{container-type:size;width:min(100%,calc((100dvh - 46px)*16/9))}.player-info{display:grid;grid-template-columns:clamp(28px,4.3cqw,52px) minmax(0,1fr);gap:6px;align-items:center}.avatar{width:100%;height:auto;aspect-ratio:1;font-size:clamp(18px,1.9cqw,25px)}.player-info b{max-width:100%;font-size:clamp(12px,1.05cqw,16px);line-height:1.25}.score{font-size:clamp(12px,1.1cqw,17px);line-height:1.2;margin:3px 0}.player-info small{display:flex;flex-wrap:wrap;gap:3px;align-items:center;font-size:11px;line-height:1.25}.player-info small>span{white-space:nowrap}.player-info em{padding:1px 3px}.seat{height:auto;width:18%}.north{top:3%;left:40%;width:20%}.north .player-info{justify-content:initial}.east,.west{top:19%;bottom:auto}.south{bottom:4%;width:19%}.opponent-hand,.east .opponent-hand,.west .opponent-hand{position:relative;top:auto;left:auto;right:auto;margin:6px 0;max-width:100%;flex-wrap:nowrap;overflow:hidden;gap:2px}.opponent-hand .tile.small{width:clamp(7px,.95cqw,13px);height:clamp(10px,1.5cqw,19px)}.north .opponent-hand{position:absolute;left:calc(100% + 16px);top:0;width:18cqw;max-width:none;flex-wrap:wrap}.discard-zone,.east .discard-zone,.west .discard-zone{position:relative;top:auto;left:auto;width:100%;min-height:0;margin-top:6px;padding:4px 5px}.discard-zone>span{font-size:11px;line-height:1.2;margin-bottom:3px}.discard-zone>div{flex-wrap:nowrap;overflow-x:auto;gap:3px;scrollbar-width:none}.discard-zone>div>span{flex:none}.discard-zone .tile{width:clamp(13px,1.65cqw,22px);height:clamp(16px,1.85cqw,25px);font-size:clamp(12px,1.5cqw,21px)}.north .discard-zone{position:absolute;left:calc(100% + 16px);top:clamp(28px,4cqh,42px);width:18cqw;margin:0}.south .discard-zone{position:absolute;left:0;top:auto;bottom:calc(100% + 8px);width:100%;margin:0}.melds{grid-template-columns:repeat(5,3.2cqw);gap:.6cqw}.north .melds{left:-21cqw;top:0}.south .melds{left:calc(100% + 8px);top:0;width:20cqw}.east .melds,.west .melds{top:0;grid-template-columns:repeat(3,3.2cqw);row-gap:7px;width:10.8cqw}.east .melds{left:-12cqw}.west .melds{left:calc(100% + 8px)}.mini-pile .tile{width:2.8cqw;height:clamp(16px,2.7cqw,35px);font-size:clamp(14px,2.2cqw,29px);margin-top:-.65cqw}.mini-pile .tile:first-child{margin-top:0}.meld-stack>span{font-size:11px;line-height:1.2;margin-top:4px;max-width:3.2cqw}.meld-stack sup{font-size:10px}.table-center{left:44%;top:26%;width:12%}.deck{width:auto;min-width:38px;margin:0;padding:5px 8px}.deck b{font-size:clamp(19px,2cqw,29px)}.deck span{font-size:11px;line-height:1.2}.table-prompt{position:absolute;z-index:3;left:32%;top:47%;width:36%;margin:0;line-height:1.3;font-size:clamp(12px,1cqw,16px);text-align:center;overflow-wrap:anywhere}.hand-area{bottom:4%;left:31%;width:44%;display:flex;flex-direction:column-reverse;gap:5px}.hand-hint{margin:0;min-height:0;font-size:11px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hand-tile,.hand .tile{height:clamp(23px,8.4cqh,55px);width:clamp(25px,4.3cqw,56px)}.hand .tile{font-size:clamp(21px,3.35cqw,44px)}.hand-pile{min-height:0}.many-melds .hand-area{left:43%;width:36%}.many-melds .hand-pile{flex-direction:column;min-height:0;gap:.15cqw}.table-tools{right:2.7%;bottom:4%;gap:5px}.table-tools button{font-size:12px;line-height:1.2;padding:6px 8px}.actions{right:25%;bottom:43%;max-width:45%;gap:5px;max-height:30%;overflow-y:auto}.actions button{padding:6px 12px}.table>.current-card[data-position=north]{left:65%;top:26%}.table>.current-card[data-position=south]{left:38%;bottom:43%}.table>.current-card[data-position=west]{left:31%;top:25%}.table>.current-card[data-position=east]{left:69%;top:25%}.table>.current-card .tile{width:clamp(26px,3.5cqw,47px);height:clamp(38px,14cqh,75px);font-size:clamp(24px,3cqw,40px)}.table>.current-card small{font-size:11px;max-width:12cqw;white-space:normal;line-height:1.2;margin-top:4px}.table-emboss{top:25%;left:35%;width:30%;font-size:3cqw}.toast{bottom:auto;top:12%;font-size:12px;max-width:60%;text-align:center}@media(max-height:500px)and (orientation:landscape){.game-header{flex-basis:36px;gap:8px}.table-brand{font-size:19px}.round-tag{font-size:12px;padding:3px 7px}.room-tag{padding:4px 7px}.table{width:100%;height:100%;aspect-ratio:auto}.table-prompt{top:45%}.game-page{padding-top:0}.table-tools button{padding:5px 7px}.network-status{max-width:90px;overflow:hidden;text-overflow:ellipsis}}@media(orientation:portrait){.game-page{width:100dvh;height:100dvw;padding:0 5px}.game-page .table{width:100%;height:100%;aspect-ratio:auto}.game-page .game-header{flex-basis:36px}.game-page .table-center{top:26%}.game-page .actions{bottom:43%}}@media(max-width:800px){.game-header{gap:6px}.table-brand,.network-status{display:none}}.audio-status{font-size:12px;line-height:1.5;color:#527454;margin:8px 0 0;min-height:18px}.opponent-hand.revealed{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));max-width:100%;gap:3px;overflow:visible}.opponent-hand.revealed .tile.small{width:100%;height:clamp(20px,2.3cqw,30px);font-size:clamp(16px,1.65cqw,23px)}.north .opponent-hand.revealed{max-width:none}.table[data-phase=ended] .discard-zone,.table[data-phase=ended] .table-prompt,.table[data-phase=ended] .table-center{display:none}.end-banner{top:29%;padding:8px 10px;gap:8px}.end-banner>span{font-size:clamp(17px,1.8cqw,25px)}.end-banner .primary{font-size:12px;padding:7px 12px}.north .melds{left:-38cqw;width:36.4cqw;grid-template-columns:repeat(5,6.8cqw)}.north .mini-pile{flex-direction:row;gap:.15cqw}.north .mini-pile .tile{width:2.1cqw;margin:0;font-size:clamp(13px,1.8cqw,24px)}.north .meld-stack>span{max-width:6.8cqw}@media(max-height:350px)and (orientation:landscape){.east .opponent-hand:not(.revealed),.west .opponent-hand:not(.revealed){display:none}.east .discard-zone,.west .discard-zone{display:flex;align-items:center;gap:4px;padding:3px 4px}.east .discard-zone>span,.west .discard-zone>span{margin:0;white-space:nowrap;font-size:10px}.east .discard-zone>div,.west .discard-zone>div{flex:1;min-width:0}.table[data-phase=ended] .discard-zone{display:none}}.table-center,.game-page .table-center{top:22%}.table-prompt{top:48%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table>.current-card[data-position=south]{left:38%;top:20%;bottom:auto}.table>.current-card[data-position=north]{left:65%;top:20%}.table>.current-card[data-position=west]{left:37%;top:20%}.table>.current-card[data-position=east]{left:63%;top:20%}.table>.current-card small{white-space:nowrap}.end-banner{top:26%;left:33%;width:34%;flex-direction:row;justify-content:space-between;padding:6px 8px;gap:6px}.end-banner>span{flex:1;min-width:0;font-size:14px;line-height:1.3;overflow-wrap:anywhere}.end-banner .primary{flex:none;font-size:11px;padding:6px 8px}.north .mini-pile.count-4 .tile{width:1.55cqw;font-size:clamp(12px,1.4cqw,20px)}.north .opponent-hand{margin:0}.hand-area{left:33%;width:34%;--hand-width:34cqw;--hand-card-width:min(4.3cqw,calc((var(--hand-width) - (var(--hand-columns) - 1)*.65cqw)/var(--hand-columns)))}.many-melds .hand-area{left:43%;width:24%;--hand-width:24cqw}.hand-tile,.hand .tile{width:var(--hand-card-width)}.hand .tile{font-size:min(3.35cqw,calc(var(--hand-card-width)*.85))}.table[data-phase=ended] .east .melds,.table[data-phase=ended] .west .melds{top:6px}.south .melds{top:auto;bottom:0;align-items:end}.south .meld-stack>span{margin-top:5px;min-height:14px;line-height:14px}.east .melds,.west .melds{grid-template-columns:repeat(2,5cqw);width:10.6cqw;row-gap:3px}.east .mini-pile,.west .mini-pile{flex-direction:row;gap:0}.east .mini-pile .tile,.west .mini-pile .tile{width:1.6cqw;height:clamp(14px,1.8cqw,23px);font-size:clamp(11px,1.4cqw,19px);margin:0}.east .mini-pile.count-4 .tile:not(:first-child),.west .mini-pile.count-4 .tile:not(:first-child){margin-left:-.45cqw}.east .meld-stack>span,.west .meld-stack>span{max-width:5cqw;font-size:11px;line-height:11px;margin-top:2px}.table[data-phase=ended] .table-tools{flex-direction:row;bottom:2%;gap:5px}.table[data-phase=ended] .table-tools button{padding:5px 6px}.north .discard-zone{top:calc(clamp(10px,1.5cqw,19px) + 2px);display:flex;align-items:center;gap:4px;padding:3px 4px}.north .discard-zone>span{margin:0;white-space:nowrap;font-size:10px}.north .discard-zone>div{flex:1;min-width:0}.table[data-phase=ended] .north .discard-zone{display:none}.table-center,.game-page .table-center{top:26%}.table-prompt{left:33%;width:34%}.north .opponent-hand:not(.revealed){flex-wrap:nowrap;gap:.2cqw}.north .opponent-hand:not(.revealed) .tile.small{width:.85cqw}.meld-new-dot{position:absolute;top:-7px;right:1px;width:5px;height:5px;border-radius:50%;background:#f56b5a;box-shadow:0 0 0 1px #fff5c2;pointer-events:none}.ledger-modal{display:flex;flex-direction:column;width:min(660px,calc(100vw - 24px));height:min(600px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);padding:8px 14px;overflow:hidden}.ledger-modal h2{flex:none;font-size:20px;line-height:22px;margin:0;padding-right:32px}.ledger-modal .close{top:8px;right:10px;width:28px;height:28px;line-height:28px;padding:0}.ledger-modal .ledger-scores{flex:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:5px 0;padding:0}.ledger-modal .ledger-scores>div{display:flex;align-items:center;gap:5px;min-width:0;font-size:12px;line-height:20px}.ledger-modal .ledger-scores span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-modal .ledger-scores b{flex:none;display:inline;font-size:15px;line-height:20px;margin:0}.ledger-modal .ledger{flex:1;min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;margin:0}.ledger-modal .ledger p{font-size:13px;line-height:1.5;margin:0;padding:8px 0;overflow-wrap:anywhere}@media(max-width:600px)and (orientation:portrait){.lobby{width:100%;padding:10px 12px 0;min-height:100dvh}.lobby-header{padding-bottom:10px;gap:8px}.brand{font-size:20px;gap:8px;letter-spacing:1px}.brand small{font-size:7px;letter-spacing:2px}.brand-seal{font-size:24px}.lobby-header nav{gap:2px;font-size:12px}.lobby-header nav button{padding:10px 5px;min-height:40px}.lobby-grid{display:flex;flex-direction:column;padding:12px 0;gap:24px}.hero{display:block;order:2;padding-top:0}.start-panel{order:1}.start-panel{padding:14px;border-radius:12px}.panel-title>.eyebrow,.panel-title>p,.panel-tip,.panel-foot{display:none}.panel-title h2{font-size:23px;line-height:28px;margin:0 0 10px}.input-label{font-size:13px;line-height:18px;margin:8px 0 6px}.name-input{height:44px;padding:0 10px}.name-input input{font-size:16px}.mode-grid{gap:8px}.mode-card{display:flex;align-items:center;gap:8px;min-height:48px;padding:10px;text-align:left}.mode-icon{font-size:22px;height:auto;line-height:24px}.mode-card b{font-size:14px;margin:0}.mode-card small{display:none}.mode-card i{right:6px;top:5px;width:13px;height:13px;line-height:13px;font-size:9px}.practice-options{margin:10px 0;font-size:13px;min-height:36px}.practice-options select{font-size:13px;padding:7px}.room-input{height:44px;font-size:16px;margin:10px 0}.start-button{min-height:44px;padding:10px 14px;font-size:15px}.lobby-footer{padding:0 0 10px;justify-content:center;font-size:11px;border:0}.lobby-footer>span:first-child{display:none}}.lobby-grid{grid-template-columns:430px minmax(0,1fr)}.start-panel{grid-column:1;grid-row:1}.hero{grid-column:2;grid-row:1;min-width:0}.game-header .game-settings-button{font-size:25px;line-height:1;min-width:40px;min-height:36px;padding:4px 7px;border:1px solid #b6cbb0;border-radius:7px;background:#f8faee;color:#285e4e;flex:none}@media(max-width:1050px)and (min-width:601px){.lobby-grid{grid-template-columns:minmax(300px,430px) minmax(0,1fr);gap:30px}.hero-art{transform:scale(.8);transform-origin:left top}.hero h1{font-size:42px}.hero-notes{flex-wrap:wrap}}@media(max-width:600px)and (orientation:portrait){.hero h1{font-size:36px;margin:8px 0}.hero-art{height:250px;transform:scale(.85);transform-origin:left top}.hero-notes{font-size:11px;flex-wrap:wrap}.hero-sub{font-size:13px}.hero .eyebrow{font-size:11px}.lobby-footer{gap:12px;flex-wrap:wrap}.lobby-footer .service-count{display:block;color:#607c62}}@media(max-width:600px)and (orientation:portrait){.hero-art{position:relative;display:block;top:auto;right:auto;width:320px;max-width:100%;height:235px;transform:scale(.85);transform-origin:left top}.hero-notes{padding-top:0}.hero{overflow:hidden}}.game-page,.modal-scrim.in-game{--dialog-width:100dvw;--dialog-height:100dvh}.modal-scrim.in-game{padding:12px}.game-page .modal,.in-game .modal{width:min(760px,calc(var(--dialog-width) - 24px));max-height:calc(var(--dialog-height) - 24px);padding:12px 16px}.in-game .modal.wide{width:min(920px,calc(var(--dialog-width) - 24px))}.in-game .ledger-modal{height:min(600px,calc(var(--dialog-height) - 24px));padding:8px 14px}.game-page .modal h2,.in-game .modal h2{font-size:22px;line-height:1.2;margin:0 32px 10px 0}.in-game .ledger-modal h2{font-size:20px;line-height:22px;margin:0;padding-right:32px}.game-page .modal>.eyebrow,.in-game .modal>.eyebrow,.in-game .settings-modal>.eyebrow{display:none}.in-game .modal .close{top:8px;right:10px}.in-game .settings-modal{display:grid;grid-template-columns:1fr 1fr;gap:6px 22px}.in-game .settings-modal h2,.in-game .settings-modal>.settings-note{grid-column:1/-1}.in-game .settings-modal .setting-row{margin:0;padding:5px 0;min-width:0;font-size:13px}.in-game .settings-modal .setting-row small{font-size:11px}.in-game .settings-modal .settings-note{font-size:11px;line-height:1.5;margin:0}.in-game .settings-modal>.audio-status{margin:0;align-self:center}.in-game .settings-modal>button:not(.close){border:1px solid #c7d5bf;border-radius:6px;padding:8px;font-size:13px}.in-game .guide h2{margin-bottom:8px}.in-game .guide h3{margin:12px 0 6px;font-size:16px}.in-game .guide p{font-size:13px;line-height:1.65;margin-bottom:8px}.game-page .settlement table{margin:8px 0}.game-page .settlement th,.game-page .settlement td{padding:5px 8px;font-size:13px}.game-page .settlement>p{margin:4px 0;font-size:13px}.game-page .settlement>button{padding:8px 14px;margin-right:10px}.base-control .base-button{border:1px solid #cad8c4;border-radius:4px;background:#f9faef;color:#577650;padding:5px 9px;min-height:30px}.in-game .base-modal{width:min(480px,calc(var(--dialog-width) - 24px))}.base-choices{display:flex;gap:12px}.base-choices button{flex:1;border:1px solid #adc4a2;border-radius:6px;min-height:44px;font-size:18px}@media(orientation:portrait){.game-page,.modal-scrim.in-game{--dialog-width:100dvh;--dialog-height:100dvw}.modal-scrim.in-game{position:fixed;inset:50% auto auto 50%;width:100dvh;height:100dvw;transform:translate(-50%,-50%) rotate(90deg)}}.table>.current-card[data-position=south]{left:25%;top:70%;bottom:auto}.table>.current-card[data-position=north]{left:69%;top:4%;bottom:auto}.table>.current-card[data-position=west]{left:35%;top:20%;bottom:auto}.table>.current-card[data-position=east]{left:96%;top:12%;bottom:auto}.east .player-info{width:calc(100% - 4.5cqw)}.table>.current-card small{max-width:5cqw;white-space:normal;margin-top:3px;line-height:12px;text-align:center}.table>.current-card small span{display:block}.in-game .modal>.close{position:sticky;float:right;top:0;right:auto;z-index:10;background:#fffef4;border-radius:5px;padding:0;width:28px;height:28px;line-height:28px;margin:0 0 0 8px}.in-game .settings-modal>.close{grid-row:1;grid-column:2;justify-self:end;align-self:start}.in-game .settings-modal>h2{grid-row:1}.in-game .ledger-modal>.close{position:absolute;top:8px;right:10px;margin:0}.south .melds{left:calc(100% + 5cqw);width:16cqw;grid-template-columns:repeat(5,2.8cqw);column-gap:.3cqw}.south .mini-pile .tile{width:2.8cqw}.south .meld-stack>span{max-width:2.8cqw}.table>.current-card[data-position=south]{left:23.8%;top:68%}.table>.current-card[data-position=north]{left:63%;top:4%}.north .discard-zone,.north .opponent-hand{left:calc(100% + 7cqw)}.game-page .settlement>button{display:inline-block;width:calc(50% - 7px);margin:4px 10px 0 0;min-height:36px}.game-page .settlement>button:last-child{margin-right:0}.game-page .settlement table{margin:6px 0}.game-page .settlement th,.game-page .settlement td{padding:3px 6px;line-height:18px}.game-page .settlement h2{margin-bottom:4px}.game-page .settlement>p{margin:0 0 4px;line-height:18px}@media(max-width:600px)and (orientation:portrait){.hero-art{height:280px}.hero-art .art-caption{left:0;bottom:8px;width:100%}}.table>.current-card{transform:translate(-50%,-50%);animation:card-location .3s ease-out}@keyframes card-location{0%{opacity:.4;transform:translate(-50%,-50%) scale(.95)}}.table>.current-card small{max-width:none;white-space:nowrap}.table>.current-card small span{display:inline}.table>.current-card small span+span{margin-left:3px}.table>.current-card[data-position=south]{left:70.5%;top:72%;bottom:auto}.table>.current-card[data-position=north]{left:42%;top:35.5%;bottom:auto}.table>.current-card[data-position=west]{left:28%;top:53%;bottom:auto}.table>.current-card[data-position=east]{left:72.7%;top:35%;bottom:auto}.table[data-draw-west-crowded=true]>.current-card[data-position=west]{left:37%;top:53%}.table[data-draw-east-crowded=true]>.current-card[data-position=east]{left:63%;top:30%}.table-prompt{left:43%;width:24%}.game-page{background:#f4f2e6;padding:0 max(5px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(5px,env(safe-area-inset-left))}.game-page .game-header{flex-basis:50px;gap:12px;background:#f4f2e6}.game-page .table{border-color:#927344;background:radial-gradient(ellipse at 50% 35%,#216d50,#104c35 90%);box-shadow:inset 0 0 0 2px #b39768;--tool-width:clamp(64px,9cqw,110px);--meld-card-width:clamp(18px,min(3.2cqw,7.5cqh),46px)}.game-page .table:before,.game-page .table-emboss{display:none}.game-page .table:after{display:none}.game-page .table .seat{width:16%;height:auto}.game-page .table .north{left:45%;top:3%;bottom:auto;width:15%}.game-page .table .west{inset:3% auto auto 3%}.game-page .table .east{inset:3% auto auto 81%}.game-page .table .south{left:3%;bottom:7%;top:auto}.game-page .table .player-info{width:100%;grid-template-columns:clamp(28px,4.3cqw,62px) minmax(0,1fr);gap:.65cqw}.game-page .table .avatar,.game-page .table .responsibility-avatar{font-family:serif;font-size:clamp(18px,1.9cqw,25px);color:#294e36;background:linear-gradient(#f4e5b8,#e7d4a0);border-color:#d6c28b}.game-page .table .player-info b{font-size:clamp(12px,1.6cqw,22px);line-height:1.25}.game-page .table .score{font-size:clamp(13px,1.6cqw,23px);color:#efd789;margin:3px 0}.game-page .table .player-info small{font-size:clamp(11px,1.1cqw,16px);color:#c3d8b2;line-height:1.2}.game-page .table .south .player-info{display:flex;flex-direction:column;align-items:flex-start}.game-page .table .south .avatar{width:clamp(28px,4.3cqw,62px)}.game-page .table .south .player-info>div:last-child{width:100%}.game-page .table .melds{display:grid;grid-template-columns:repeat(var(--meld-columns),var(--meld-card-width));align-items:end;column-gap:.65cqw;row-gap:0;width:max-content;max-width:none;height:auto}.game-page .table .north .melds{left:auto;right:calc(100% + .65cqw);top:0;bottom:auto;direction:rtl}.game-page .table .east .melds{left:auto;right:0;top:28cqh;bottom:auto;direction:rtl}.game-page .table .west .melds{left:1.5cqw;top:28cqh;bottom:auto}.game-page .table .meld-stack{direction:ltr}.game-page .table .south .melds{left:20cqw;bottom:0;top:auto}.game-page .table .mini-pile{display:flex;flex-direction:column;align-items:stretch;gap:0}.game-page .table .mini-pile .tile{width:var(--meld-card-width);height:calc(var(--meld-card-width)*1.45);font-size:calc(var(--meld-card-width)*.8);margin:0}.game-page .table .mini-pile .tile:not(:first-child){margin-top:calc(var(--meld-card-width)*-.6);margin-left:0}.game-page .table .meld-stack{width:var(--meld-card-width);position:relative;min-width:0}.game-page .table .meld-stack>span{display:block;width:100%;max-width:none;min-height:16px;line-height:1.35;margin:3px 0 0;padding:1px 0;font-size:clamp(11px,1.2cqw,17px);overflow:visible;white-space:nowrap;text-overflow:clip}.game-page .table .meld-new-dot{top:-5px;right:-3px;width:5px;height:5px}.game-page .table .tile{background:linear-gradient(100deg,#fffef6,#ece8dc);border-color:#cec6b5;border-radius:.28cqw;box-shadow:.08cqw .12cqw .18cqw #052b2670;font-weight:400}.game-page .table .tile>span{top:.08cqw}.game-page .table .tile>i{left:50%;transform:translate(-50%);bottom:.32cqw;font-size:.5cqw;padding:.12cqw;border-radius:50%}.game-page .table .tile.back{background:repeating-linear-gradient(45deg,#896343 0 2px,#997550 2px 4px)}.game-page .table .mini-pile .tile:not(.back)>i{display:block}.game-page .table .discard-zone{--discard-rows:3;--discard-card-height:clamp(18px,2.4cqw,34px);position:absolute;display:flex;align-items:center;gap:4px;width:18cqw;max-width:100%;min-height:0;margin:0;padding:4px 5px;background:#123d2920;border:1px solid #a4bf9944}.game-page .table .discard-zone>span{font-size:11px;line-height:1.2;margin:0;white-space:nowrap}.game-page .table .discard-zone>div{display:flex;flex:1;gap:2px;flex-wrap:wrap;align-content:flex-start;min-width:0;max-height:calc(var(--discard-card-height)*var(--discard-rows) + (var(--discard-rows) - 1)*2px);overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.game-page .table .discard-zone .tile{width:clamp(16px,2.15cqw,30px);height:clamp(18px,2.4cqw,34px);font-size:clamp(14px,1.95cqw,27px)}.game-page .table .west .discard-zone,.game-page .table .east .discard-zone{left:0;top:16cqh;bottom:auto}.game-page .table .north .discard-zone{left:17cqw;top:0;bottom:auto;width:18cqw;max-width:none}.game-page .table .east,.game-page .table .west{display:flex;flex-direction:column;gap:7px}.game-page .table .east .player-info,.game-page .table .west .player-info{order:0}.game-page .table .east .discard-zone,.game-page .table .west .discard-zone{position:static;order:1}.game-page .table .east .melds,.game-page .table .west .melds{position:static;order:2}.game-page .table .east .melds{align-self:flex-end}.game-page .table .west .melds{align-self:flex-start;margin-left:1.5cqw}.game-page .table .bottom-controls{position:absolute;right:2.5%;bottom:2%;display:flex;align-items:flex-end;gap:8px;z-index:8}.game-page .table .bottom-controls .self-discard{position:static;width:18cqw;max-width:none;min-width:0;padding:2px 4px}.game-page .table .bottom-controls .table-tools{position:static;width:var(--tool-width)}.game-page .table .opponent-hand:not(.revealed){display:none}.game-page .table .north .opponent-hand:not(.revealed){left:17cqw;top:0;width:18cqw;max-width:none}.game-page .table .opponent-hand:not(.revealed) .tile.small{width:clamp(6px,.7cqw,10px);height:clamp(10px,1.2cqw,17px);font-size:8px}.game-page .table .table-center{left:42%;top:32%;width:16%;text-align:center}.game-page .table .deck{display:inline-block;width:auto;min-width:38px;aspect-ratio:auto;padding:5px 8px;margin:0;background:linear-gradient(125deg,#a45741,#773e30);border:1px solid #d3b065;border-radius:.45cqw;box-shadow:.15cqw .25cqw #693b2c}.game-page .table .deck b{display:block;font:clamp(19px,2cqw,29px)/1 Georgia;color:#f1d88f}.game-page .table .deck span{font-family:inherit;font-size:11px;line-height:1.2;color:#d1b78a}.game-page .table .hand-area{left:calc(23% + var(--own-meld-count,0)*4.2cqw);width:var(--hand-width);bottom:clamp(8px,2cqh,14px);--hand-width:calc(56.5cqw - var(--own-meld-count,0)*4.2cqw - var(--tool-width) - 20px);--hand-gap:.65cqw;--hand-card-width:min(4.4cqw,10cqh,calc((var(--hand-width) - (var(--hand-columns) - 1)*var(--hand-gap))/var(--hand-columns)));gap:6px;display:flex;flex-direction:column-reverse}.game-page .table .hand{align-items:flex-end;justify-content:center;gap:var(--hand-gap)}.game-page .table .hand-pile{flex-direction:column;gap:0;min-height:0;width:var(--hand-card-width)}.game-page .table .hand-tile{width:var(--hand-card-width);height:calc(var(--hand-card-width)*.85);overflow:visible;box-shadow:none;border-radius:.28cqw}.game-page .table .hand-tile:last-child{height:calc(var(--hand-card-width)*1.45)}.game-page .table .hand .tile{width:var(--hand-card-width);height:calc(var(--hand-card-width)*1.45);font-size:calc(var(--hand-card-width)*.8)}.game-page .table .hand-hint{align-self:center;width:max-content;max-width:100%;font-size:clamp(11px,1.1cqw,15px);line-height:14px;height:14px;min-height:14px}.game-page .table>.current-card .tile{width:clamp(24px,min(3.8cqw,10cqh),52px);height:auto;aspect-ratio:1 / 1.45;font-size:clamp(21px,3cqw,41px)}.game-page .table>.current-card[data-position=north]{left:70%;top:40%}.game-page .table>.current-card[data-position=east]{left:74%;top:45%}.game-page .table>.current-card[data-position=west]{left:28%;top:47%}.game-page .table>.current-card[data-position=south]{left:75%;top:auto;bottom:43%}.game-page .table>.current-card small{font-size:11px;line-height:13px;margin-top:4px}.game-page .table .table-prompt{left:56%;width:18%;top:44%;font-size:clamp(12px,1.2cqw,17px);white-space:normal;max-height:12%;line-height:1.35}.game-page .table .table-tools{right:2.5%;bottom:2%;gap:7px;flex-direction:column}.game-page .table .table-tools button{font-size:clamp(12px,1.5cqw,21px);padding:7px 10px;background:#153f2e88;border-color:#adbf98}.game-page .table .actions{inset:33% auto auto 60%;width:20%;max-width:20%;max-height:24%;gap:5px;justify-content:center}.game-page .table .actions button{font-size:clamp(12px,1.2cqw,17px);padding:6px 10px;line-height:1.25}.game-page .table:has(.east .meld-stack:nth-child(4)) .table-tools{flex-direction:column;bottom:2%}.game-page .table .opponent-hand.revealed{position:absolute;left:0;top:12cqh;right:auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:5px;margin:0;width:18cqw;max-width:100%;overflow:visible}.game-page .table .revealed-group{display:flex;flex-direction:column;align-items:stretch;min-width:0;padding:0 1px;border-bottom:2px solid #e8d69a88}.game-page .table .revealed-group .tile.small{aspect-ratio:1 / 1.45}.game-page .table .revealed-group .tile.small:not(:first-child){margin-top:-60%}.game-page .table[data-phase=ended] .table-prompt,.game-page .table[data-phase=ended] .hand-hint{display:none}.game-page .table[data-phase=ended] .hand-pile.free-pile{position:static}.game-page .table .end-banner>span{white-space:normal;overflow-wrap:anywhere;font-size:clamp(12px,1.5cqw,21px);line-height:1.35}.game-page .table .opponent-hand.revealed .tile.small{width:100%;height:auto;aspect-ratio:1 / 1.3;font-size:clamp(12px,1.8cqw,24px)}.game-page .table .north .opponent-hand.revealed{left:17cqw;top:0;max-width:none}.game-page .table[data-phase=ended] .east,.game-page .table[data-phase=ended] .west{top:3%}.game-page .table[data-phase=ended] .east .opponent-hand.revealed,.game-page .table[data-phase=ended] .west .opponent-hand.revealed{top:20cqh}.game-page .table[data-phase=ended] .east .melds,.game-page .table[data-phase=ended] .west .melds{top:38cqh}.game-page .table[data-phase=ended] .south .player-info{display:grid;grid-template-columns:clamp(28px,4.3cqw,62px) minmax(0,1fr)}.game-page .table[data-phase=ended] .south .player-info small{flex-wrap:nowrap}.game-page .table[data-phase=ended] .south{bottom:3%}.game-page .table[data-phase=ended] .table-center{display:none}.game-page .table[data-phase=ended] .table-tools{flex-direction:column;bottom:2%}.game-page .table .end-banner{top:30%;left:45%;width:35%;gap:8px;padding:8px}.game-page .table[data-phase=ended] .east,.game-page .table[data-phase=ended] .west{display:flex;flex-direction:column;gap:7px}.game-page .table[data-phase=ended] .east .player-info,.game-page .table[data-phase=ended] .west .player-info{order:0}.game-page .table[data-phase=ended] .east .opponent-hand.revealed,.game-page .table[data-phase=ended] .west .opponent-hand.revealed{position:static;order:1;width:100%;margin:3px 0 0}.game-page .table[data-phase=ended] .east .melds,.game-page .table[data-phase=ended] .west .melds{position:static;order:2;margin:2px 0 0}.game-page .table[data-phase=ended] .east .melds{align-self:flex-end}.game-page .table[data-phase=ended] .west .melds{align-self:flex-start}@media(max-height:500px)and (orientation:landscape){.game-page .game-header{flex-basis:36px;gap:6px}.game-page .table{border-width:6px;border-radius:20px}.game-page .table .table-tools button{padding:5px 7px}.game-page .table .table-tools{gap:5px}}@media(orientation:portrait){.game-page .game-header{flex-basis:36px;gap:6px}.game-page .table{border-width:6px;border-radius:20px}.game-page .table .table-tools button{padding:5px 7px}.game-page .table .table-tools{gap:5px}}@container (max-height:400px){.game-page .table .south .player-info{display:grid;grid-template-columns:clamp(28px,4.3cqw,62px) minmax(0,1fr)}.game-page .table .south .player-info small{flex-wrap:nowrap}}@container (max-height:250px){.game-page .table .east,.game-page .table .west{top:3%;gap:1px}.game-page .table .east .discard-zone,.game-page .table .west .discard-zone{--discard-rows:2;padding:2px 5px}.game-page .table .east .score,.game-page .table .west .score{margin:0}.game-page .table .table-center{top:26%}.game-page .table .south .player-info{display:grid;grid-template-columns:28px minmax(0,1fr);gap:5px}.game-page .table .south .avatar{width:28px}.game-page .table .south .player-info small{flex-wrap:nowrap}.game-page .table .south{bottom:1%}.game-page .table .south .player-info b{font-size:12px;line-height:14px}.game-page .table .south .score{font-size:13px;line-height:14px;margin:1px 0}.game-page .table .south .player-info small{font-size:10px;line-height:12px}.game-page .table .south .melds{bottom:8px}.game-page .table .west .discard-zone,.game-page .table .east .discard-zone{top:22cqh}.game-page .table .east .melds,.game-page .table .west .melds{top:34cqh}.game-page .table .meld-stack>span{margin-top:3px;line-height:1.35;min-height:16px}.game-page .table .hand-hint{display:none}.game-page .table .table-tools{flex-direction:column;bottom:2%;right:2%}.game-page .table .table-tools button{font-size:11px;padding:5px 6px}.game-page .table[data-phase=ended] .east,.game-page .table[data-phase=ended] .west{top:1%}.game-page .table[data-phase=ended] .east .opponent-hand.revealed,.game-page .table[data-phase=ended] .west .opponent-hand.revealed{top:24cqh}.game-page .table[data-phase=ended] .east .melds,.game-page .table[data-phase=ended] .west .melds{top:38cqh}.game-page .table[data-phase=ended] .south{bottom:2%}.game-page .table[data-phase=ended] .south .player-info{grid-template-columns:28px minmax(0,1fr)}}.game-page .table .hand-hint{position:absolute;left:0;bottom:calc(100% + 5px);width:100%;margin:0}.game-page .table .hand-area .actions{left:50%;right:auto;top:auto;bottom:calc(100% + 24px);width:max-content;max-width:min(50cqw,calc(100cqw - 24px));max-height:28cqh;overflow-y:auto;transform:translate(-50%)}.game-page .table .north .player-name-row{position:relative;display:flex;align-items:flex-start;width:max-content;max-width:none}.game-page .table .north .player-name-row>b{flex:none;max-width:calc(14.35cqw - clamp(28px,4.3cqw,62px));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-page .table .north .player-name-row .discard-zone{left:calc(100% + 6px);top:0;margin:0;transform:none}@container (max-height:250px){.game-page .table .hand-area .actions{bottom:calc(100% + 8px)}}.game-page .table>.current-card{transform:translate(-50%,-50%)}.game-page .table>.current-card[data-position=north]{left:44%;top:28%;bottom:auto}.game-page .table>.current-card[data-position=east]{left:72%;top:35%;bottom:auto}.game-page .table>.current-card[data-position=west]{left:28%;top:51%;bottom:auto}.game-page .table>.current-card[data-position=south]{left:68%;top:71%;bottom:auto}.game-page .table .north .melds{right:calc(100% + 4cqw)}.game-page .table{--own-bottom:clamp(14px,3.5cqh,20px)}.game-page .table .hand-area{left:calc(26% + var(--own-meld-count,0)*4.2cqw);bottom:var(--own-bottom);--hand-width:calc(53.5cqw - var(--own-meld-count,0)*4.2cqw - var(--tool-width) - 16px)}.game-page .table .hand{justify-content:flex-end}.game-page .table .south .melds{bottom:calc(var(--own-bottom) - 7cqh)}.game-page .table[data-phase=ended] .south .melds{bottom:calc(var(--own-bottom) - 3cqh)}@container (max-height:250px){.game-page .table .south .melds{bottom:calc(var(--own-bottom) - 1cqh)}.game-page .table[data-phase=ended] .south .melds{bottom:calc(var(--own-bottom) - 2cqh)}}.game-page .table .end-banner{left:50%;right:auto;transform:translate(-50%);width:max-content;min-width:0;max-width:calc(100% - 32px);flex-direction:column;justify-content:center;text-align:center;padding:8px 14px}.game-page .table .end-banner>span{flex:none;width:100%;min-width:0;overflow-wrap:anywhere;text-wrap:pretty}.game-page .table .hand-area{padding-bottom:18px}.game-page .table .hand-hint{display:block;bottom:0;top:auto;text-align:center;white-space:nowrap;font-size:clamp(10px,1.1cqw,15px)}.game-page .table[data-phase=ended] .hand-area{padding-bottom:0}.game-page .table[data-phase=ended] .hand-hint{display:none}.game-page .table .discard-display{order:1;display:flex;flex-direction:column;gap:3px;width:18cqw;max-width:100%}.game-page .table .discard-display .discard-zone{position:static;width:100%;max-width:none}.game-page .table .remaining-backs{display:flex;flex-wrap:wrap;gap:2px;pointer-events:none}.game-page .table .remaining-backs .tile.small{width:clamp(5px,.7cqw,10px);height:clamp(9px,1.2cqw,17px);font-size:8px;padding:0}.game-page .table .north .player-name-row .discard-display{position:absolute;left:calc(100% + 6px);top:0;max-width:none}.game-page .table .north .player-name-row .discard-zone{position:static;transform:none}@container (max-height:250px){.game-page .table .east,.game-page .table .west{--meld-card-width:16px}}@container (max-height:250px){.game-page .table .east .discard-display,.game-page .table .west .discard-display{gap:1px}}.game-page .table .hand-area .actions{left:calc(50% + 5cqw)}.game-page .table .table-center .table-prompt{display:block;position:absolute;left:50%;top:calc(100% + 6px);bottom:auto;transform:translate(-50%);width:48cqw;max-width:none;max-height:none;margin:0;text-align:center}.game-page .table[data-phase=ended] .table-center .table-prompt{display:none}.game-page .table .remaining-backs{width:100%;gap:2px}.game-page .table .remaining-backs .tile.small{box-sizing:border-box;flex:0 0 calc((100% - 28px)/15);width:calc((100% - 28px)/15);min-width:0;box-shadow:none}@container (max-height:250px){.game-page .table .hand-area .actions{left:auto;right:-22cqw;transform:none;bottom:calc(100% - 10px)}}.game-page .table .west .melds{left:0;margin-left:0}.game-page .table .hand-area .actions{left:calc(50% + 10cqw)}.game-page .table .actions .pass-button{min-width:clamp(64px,8cqw,96px);padding-left:18px;padding-right:18px}@container (max-height:250px){.game-page .table .hand-area .actions{left:auto;right:-24cqw}}.game-page .table .hand-area .actions{left:calc(50% + 14cqw)}@container (max-height:250px){.game-page .table .hand-area .actions{left:auto;right:-28cqw}}.game-page .table .player-info{display:grid;align-items:start}.game-page .table .avatar-column{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.game-page .table .avatar{width:clamp(28px,4.3cqw,62px);height:clamp(28px,4.3cqw,62px)}.game-page .table .player-info .dealer-badge{display:block;font-size:11px;line-height:14px;white-space:nowrap;padding:0 3px}.game-page .table .south,.game-page .table[data-phase=ended] .south{bottom:var(--own-bottom)}.game-page .table .south .player-info{display:grid;align-items:start}.game-page .table .south .melds,.game-page .table[data-phase=ended] .south .melds{bottom:0}.game-page .table .hand-area{--hand-width:calc(53.5cqw - var(--own-meld-count,0)*4.2cqw - var(--tool-width) - 36px)}.game-page .table .hand-hint{left:auto;right:0;width:calc(var(--hand-columns)*var(--hand-card-width) + (var(--hand-columns) - 1)*var(--hand-gap));max-width:none;text-align:center}.game-page .table .mini-pile{position:relative}.game-page .table .mini-pile[data-responsible=true]>.tile:nth-last-child(2)>i{display:none}.game-page .table .responsibility-avatar{position:absolute;left:50%;bottom:2px;transform:translate(-50%);display:grid;place-items:center;width:calc(var(--meld-card-width)*.416);height:calc(var(--meld-card-width)*.416);padding:0;border:1px solid #d6c28b;border-radius:25%;box-shadow:0 3px 8px #102e2844;font:calc(var(--meld-card-width)*.32)/1 serif;cursor:pointer;z-index:3}.game-page .table .responsibility-avatar:focus-visible{outline:2px solid #fff;outline-offset:1px}.game-page .table .self-discard-column{position:relative;width:18cqw;flex:none}.game-page .table .bottom-controls .self-discard{width:100%}.game-page .table .self-discard-column .actions{position:absolute;left:50%;right:auto;top:auto;bottom:calc(100% + 8px);transform:translate(-50%);display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:5px;width:clamp(80px,12cqw,140px);max-width:100%;max-height:none;overflow:visible;margin:0}.game-page .table .actions .action-options{display:flex;flex-direction:column;gap:5px;max-height:calc(60cqh - 38px);overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.game-page .table .actions button{width:100%;flex:none}.game-page .table .actions .pass-button{width:100%}.game-page .table .hand-area>.current-card[data-position=south]{position:absolute;left:calc(100% + 10px);right:auto;top:-50px;bottom:auto;transform:none;width:clamp(24px,min(3.8cqw,10cqh),52px);margin:0;z-index:7;pointer-events:none}.game-page .table .hand-area>.current-card .tile{width:100%;height:auto;aspect-ratio:1 / 1.45;font-size:clamp(21px,3cqw,41px)}.game-page .table .hand-area>.current-card small{font-size:11px;line-height:13px;margin-top:4px;white-space:nowrap;text-align:center}@container (max-height:250px){.game-page .table .self-discard-column .actions{left:10px;right:auto;transform:none;width:70px}}.game-page .table .mini-pile>.tile:not(:first-child),.game-page .table .hand-tile+.hand-tile>.tile,.game-page .table .revealed-group>.tile:not(:first-child){box-shadow:inset 0 2px 2px -1px #40382c26,.08cqw .12cqw .18cqw #052b2670}.game-page .table .actions .alarm-decline{padding-left:8px;padding-right:8px;white-space:nowrap}.game-page .table .review-deck{position:absolute;left:30%;top:48%;width:40%;z-index:3;padding:5px 6px;border:1px solid #a4bf9944;border-radius:6px;background:#123d2920;max-height:22cqh;display:flex;flex-direction:column;gap:4px}.game-page .table .review-deck>span{font-size:11px;line-height:1.3;text-align:center;color:#d4dbb8}.game-page .table .review-deck>div{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;overflow-y:auto;min-height:0;scrollbar-width:thin}.game-page .table .review-deck .tile{width:clamp(16px,2.2cqw,30px);height:clamp(18px,2.4cqw,33px);font-size:clamp(14px,1.95cqw,27px)}.game-page .table .review-deck p{margin:0;font-size:12px;color:#b9d0af}.game-page .table[data-phase=ended] .discard-zone{display:flex}.game-page .table[data-phase=ended] .north .discard-zone{--discard-rows:2}.game-page .table[data-phase=ended] .north .opponent-hand.revealed{top:calc(100% + 12px);grid-template-columns:repeat(7,minmax(0,1fr))}.game-page .table[data-phase=ended] .east .opponent-hand.revealed,.game-page .table[data-phase=ended] .west .opponent-hand.revealed{grid-template-columns:repeat(7,minmax(0,1fr))}.game-page .table .review-deck{top:43%}.game-page .table[data-phase=ended] .end-banner{top:25%}@container (max-height:250px){.game-page .table .review-deck{top:39%;max-height:none;padding:3px 4px;gap:2px}.game-page .table .review-deck>div{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overflow-y:hidden}.game-page .table[data-phase=ended] .end-banner{top:21%;flex-direction:row;gap:6px;padding:4px 8px;max-width:48cqw}.game-page .table[data-phase=ended] .end-banner>span{flex:1;width:auto;font-size:11px}.game-page .table[data-phase=ended] .end-banner>button{flex:none;white-space:nowrap}}.game-page .table[data-phase=ended] .north .opponent-hand.revealed{left:var(--north-reveal-center,50%);top:var(--north-reveal-top, calc(100% + 6px) );width:15cqw;transform:translate(-50%)}.game-page .table .review-deck{left:36%;width:28%}.game-page .table .review-deck .tile{width:clamp(14px,1.8cqw,26px);height:clamp(18px,2.2cqw,30px);font-size:clamp(14px,1.6cqw,23px)}@container (max-height:250px){.game-page .table .review-deck{top:38%}}@container (max-height:250px){.game-page .table[data-phase=ended] .end-banner{top:23%}.game-page .table .review-deck{top:40%;padding:2px 4px}}.game-page .table[data-phase=ended] .end-banner{top:var(--end-notice-top,25%);padding:1px 8px;max-width:calc(100% - 32px);gap:0}.game-page .table[data-phase=ended] .end-banner>span{width:auto;flex:none;white-space:nowrap;line-height:1.2}.game-page .table .table-tools .result-button{background:#a58c48;color:#fff3bf;border-color:#d8c475}.game-page .table .review-deck{left:50%;transform:translate(-50%);width:max-content;max-height:none}.game-page .table .review-deck>div{display:grid;grid-template-columns:repeat(12,clamp(14px,1.8cqw,26px));gap:2px;overflow:visible;justify-content:center}.game-page .table .review-deck .tile{width:100%}@container (max-height:250px){.game-page .table .review-deck{top:38%;gap:1px}.game-page .table .review-deck>span{font-size:10px;line-height:12px}.game-page .table .review-deck .tile{height:14px;font-size:12px}}.game-page .table .review-deck{gap:2px}.game-page .table .review-deck>span{font-size:11px;line-height:12px}.game-page .table .review-deck>span small{font-size:inherit}@container (max-height:250px){.game-page .table .review-deck>span{text-align:left;font-size:10px}.game-page .table .review-deck>span small{display:none}}@container (max-height:250px){.game-page .table .review-deck{top:43%;gap:1px;padding:0 4px}.game-page .table .review-deck .tile{height:13px}}.game-page .table[data-phase=ended] .opponent-hand.revealed{gap:3px;align-items:end}.game-page .table[data-phase=ended] .north .opponent-hand.revealed{width:18cqw}.game-page .table[data-phase=ended] .revealed-group{gap:2px;padding:0;border-bottom:2px solid #e8d69a88}.game-page .table[data-phase=ended] .revealed-group .tile.small{height:clamp(16px,2.2cqw,27px);aspect-ratio:auto;font-size:clamp(11px,1.4cqw,19px);line-height:1;min-width:0;padding:0;overflow:visible}.game-page .table[data-phase=ended] .revealed-group .tile.small:not(:first-child){margin-top:0;box-shadow:.08cqw .12cqw .18cqw #052b2670}.game-page .table[data-phase=ended] .hand-pile{gap:2px}.game-page .table[data-phase=ended] .hand-pile .tile{height:calc(var(--hand-card-width)*.85);font-size:calc(var(--hand-card-width)*.65);margin-top:0;line-height:1;padding:0}.game-page .table[data-phase=ended] .end-banner{left:50%;top:50%;transform:translate(-50%,-50%);padding:8px 12px;gap:6px;flex-direction:column;max-width:calc(100% - 32px);width:max-content;z-index:8}.game-page .table[data-phase=ended] .end-banner>span{font-size:clamp(12px,1.5cqw,21px);line-height:1.3}.game-page .table[data-phase=ended] .end-banner .result-button{font-size:clamp(12px,1.4cqw,19px);padding:4px 12px;background:#a58c48;color:#fff3bf;border-color:#d8c475}@container (max-height:250px){.game-page .table[data-phase=ended] .end-banner{padding:4px 8px;gap:3px}.game-page .table[data-phase=ended] .end-banner>span{font-size:11px}.game-page .table[data-phase=ended] .end-banner .result-button{font-size:11px;padding:3px 10px}}@container (max-height:250px){.game-page .table[data-phase=ended] .west .melds:not(:has(.meld-stack:nth-child(3))){position:absolute;left:calc(100% + 8px);top:28cqh;margin:0}.game-page .table[data-phase=ended] .east .melds:not(:has(.meld-stack:nth-child(3))){position:absolute;left:auto;right:calc(100% + 8px);top:28cqh;margin:0}}.game-page .table[data-phase=ended] .revealed-group{gap:0}.game-page .table[data-phase=ended] .revealed-group .tile.small{height:calc(clamp(16px,2.2cqw,27px) + 5px);display:flex;align-items:flex-start;justify-content:center;overflow:hidden}.game-page .table[data-phase=ended] .revealed-group .tile.small>span{display:block;padding-top:2px;line-height:1}.game-page .table[data-phase=ended] .revealed-group .tile.small:not(:first-child){margin-top:-5px;box-shadow:inset 0 2px 2px -1px #40382c26,.08cqw .12cqw .18cqw #052b2670}.game-page .table[data-phase=ended] .hand-pile{gap:0}.game-page .table[data-phase=ended] .hand-pile .tile{height:calc(var(--hand-card-width)*.85 + 6px);display:flex;align-items:flex-start;justify-content:center}.game-page .table[data-phase=ended] .hand-pile .tile>span{padding-top:3px;line-height:1}.game-page .table[data-phase=ended] .hand-pile .tile:not(:first-child){margin-top:-6px;box-shadow:inset 0 2px 2px -1px #40382c26,.08cqw .12cqw .18cqw #052b2670}.game-page .table{--stack-seam-shadow:inset 0 3px 3px -1px #40382c38,0 1px 2px #052b2640}.game-page .table .mini-pile>.tile:not(:first-child),.game-page .table .hand-pile .hand-tile+.hand-tile>.tile,.game-page .table[data-phase=ended] .hand-pile .hand-tile+.hand-tile>.tile,.game-page .table[data-phase=ended] .revealed-group>.tile.small:not(:first-child){box-shadow:var(--stack-seam-shadow)}
