*{box-sizing:border-box}body{color:#f1f4e9;background:#071f1b;margin:0;font:16px/1.5 system-ui,Microsoft YaHei,sans-serif}button,select,input{font:inherit}button{cursor:pointer;color:inherit;background:#173b32;border:1px solid #ffffff25;border-radius:9px;padding:10px 18px}button:hover{filter:brightness(1.15)}button:disabled{opacity:.4;cursor:default}.shell{height:100dvh;padding:0 max(18px, env(safe-area-inset-right)) 14px max(18px, env(safe-area-inset-left));flex-direction:column;display:flex}header{justify-content:space-between;align-items:center;gap:16px;height:72px;display:flex}header b{font-size:22px}small{letter-spacing:2px;color:#a6bfb3;font-size:12px}header small{margin-left:10px}nav{background:#041b17;border:1px solid #ffffff15;border-radius:12px;gap:5px;padding:4px;display:flex}nav button{background:0 0;border:0;min-width:90px}.active,.primary{color:#20362c!important;background:#e6c789!important}.status{color:#abd8bb;font-size:14px}.table{background:radial-gradient(at 50% 30%,#24624b,#104333 65%,#0b342b);border:1px solid #b8d19735;border-radius:32px;flex:1;min-height:0;position:relative;overflow:hidden;box-shadow:inset 0 0 0 8px #092c2370,inset 0 0 100px #041e1940}.table:before{content:"";pointer-events:none;border:1px solid #c6d6b51c;border-radius:40%;position:absolute;inset:24px}.table-mark{letter-spacing:8px;color:#d4e4c921;text-align:center;white-space:nowrap;font-size:27px;position:absolute;top:30%;left:50%;transform:translate(-50%)}.table-mark small{letter-spacing:3px;color:inherit;display:block}.opponent{color:#e1e9d8;font-size:14px;position:absolute;top:18%}.left{left:5%}.right{right:5%}.welcome{text-align:center;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.eyebrow{color:#e6c789;letter-spacing:4px;font-size:14px}h1{letter-spacing:12px;margin:8px 0;font-size:54px}p{color:#b7cabc}.primary{min-width:140px;font-weight:700}footer{color:#d9e7d5;justify-content:space-between;display:flex;position:absolute;bottom:18px;left:28px;right:28px}.rotate{display:none}@media (height<=500px){header{height:54px}header b{font-size:18px}header small{display:none}.shell{padding-bottom:8px}.table{border-radius:22px}button{padding:7px 13px}h1{font-size:36px}.status{font-size:12px}}@media (orientation:portrait) and (width<=700px){html,body{overflow:hidden}.rotate{z-index:100;background:#0a3027;flex-direction:column;justify-content:center;align-items:center;font-size:42px;display:flex;position:fixed;inset:0}.rotate h2{font-size:24px}.rotate p{text-align:center;max-width:310px;padding:0 24px;font-size:16px}.rotate-action{margin-top:8px}}button{justify-content:center;align-items:center;gap:7px;transition:background .18s,transform .18s;display:inline-flex}button:focus-visible,select:focus-visible{outline-offset:3px;outline:2px solid #ebd397}.brand{white-space:nowrap;letter-spacing:1px;align-items:center;display:flex}.brand-icon{color:#153f30;background:#e6c789;border-radius:8px;place-items:center;width:34px;height:36px;font-size:28px;display:grid}.top-tools{align-items:center;gap:12px;display:flex}.icon-button{background:0 0;border:none;min-width:32px;min-height:32px;padding:8px}.status{align-items:center;gap:8px;display:flex}.status i,.bottom-status i{background:#a1d7a7;border-radius:100%;width:6px;height:6px;display:inline-block}.table-top{z-index:3;justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;top:20px;left:30px;right:25px}.room-tag{color:#c6d6c0;align-items:center;gap:10px;font-size:14px;display:flex}.room-tag i{background:#ffffff30;width:1px;height:12px}.quiet{color:#a6bca6;font-size:13px}.table-tools{align-items:center;gap:8px;display:flex}.dev-button{color:#dac99c;background:#092f2680;border-color:#b8d19740;padding:7px 12px;font-size:14px}.sandbox-tag{color:#243325;background:#dfb45b;border-radius:5px;padding:3px 8px;font-size:12px}.welcome{width:65%;max-width:580px;top:45%}.welcome p{margin:10px 0 24px;font-size:15px}.start{min-width:200px;margin:0 auto;padding:12px 25px;box-shadow:0 7px 24px #001a1945}.welcome-note{color:#94b8a5;justify-content:center;align-items:center;gap:9px;margin-top:18px;font-size:12px;display:flex}.banker-select{margin:0 0 14px;font-size:14px;display:block}.banker-select select{margin-left:10px}.opponent{z-index:2;flex-direction:column;align-items:center;gap:8px;min-width:100px;display:flex;top:24%}.seat-0{left:5%}.seat-1{right:5%}.seat-2{top:10%;left:50%;transform:translate(-50%)}.avatar{color:#e8ddb9;background:#597f5c;border:1px solid #dbd8b449;border-radius:16px;place-items:center;width:52px;height:52px;display:grid;position:relative;box-shadow:0 3px 14px #00181030}.avatar-2{background:#586c74}.avatar-3{background:#90694c}.player-meta{text-align:center;flex-direction:column;gap:2px;display:flex}.player-meta b{font-size:15px;font-weight:600}.player-meta b span{letter-spacing:1px;color:#b5cab6;background:#ffffff0d;border:1px solid #ffffff1c;border-radius:3px;margin-left:4px;padding:2px 3px;font:10px monospace}.player-meta>span{color:#e6c789;font-size:14px}.player-meta small{color:#99b4a3;letter-spacing:0;font-size:11px}.opponent-cards{align-items:center;gap:8px;display:flex}.opponent-cards.peekable{cursor:pointer;border-radius:9px;margin:-5px -8px;padding:5px 8px;transition:background .18s,transform .18s}.opponent-cards.peekable:hover,.opponent-cards.peekable:focus-visible{background:#ffffff12;outline:1px solid #e6c78966}.opponent-cards.peekable:active{transform:scale(.97)}.opponent-back-row{padding-right:8px;display:flex}.opponent-back-row .card-back{margin-right:-18px;box-shadow:2px 0 #527887,3px 0 #dbd9c2}.count small{color:#e6c789;letter-spacing:0;white-space:nowrap;font-size:9px;display:block}.card-back{color:#dfd8b6;background:repeating-linear-gradient(45deg,#30586f 0 3px,#264b61 3px 6px);border:2px solid #dddac0;border-radius:4px;place-items:center;width:29px;height:42px;font-size:18px;display:grid;box-shadow:3px 0 #527887,5px 0 #dbd9c2}.count{color:#c1d3be;margin-left:4px;font-size:12px}.player-action{color:#b9cca9;min-height:18px;font-size:12px}.thinking .avatar{outline-offset:4px;outline:2px solid #e6c789}.thinking .player-action{color:#efd99f}.crown{color:#223827;box-sizing:content-box;background:#ebc777;border-radius:4px;padding:2px;position:absolute;top:-6px;right:-5px}.bottom-cards{color:#bdd0b8;flex-direction:column;align-items:center;gap:5px;font-size:11px;display:flex;position:absolute;top:11%;left:50%;transform:translate(-50%)}.bottom-cards>div{gap:7px;display:flex}.bottom-cards .card{width:35px;height:48px}.bottom-cards .corner{font-size:13px}.bottom-cards .pip{font-size:18px}.bottom-cards .corner em{font-size:12px}.bottom-cards .bottom-corner{display:none}.bottom-cards .card-back{width:30px;height:39px;box-shadow:none}.center-play{flex-direction:column;justify-content:center;align-items:center;gap:10px;height:24%;display:flex;position:absolute;top:34%;left:21%;right:21%}.played-label{color:#d3dbc1;font-size:12px}.played-cards{justify-content:center;max-width:100%;padding-right:22px;display:flex}.played-cards .card{flex-shrink:0;margin-right:-22px}.phase-text{text-align:center;letter-spacing:1px;color:#d2dec5;font-size:15px}.phase-dot{background:#ddcd9b;border-radius:50%;width:5px;height:5px;margin:0 10px 3px 0;display:inline-block}.phase-text small{color:#8db39c;letter-spacing:0;margin-top:8px;font-size:12px;display:block}.action-bar{z-index:4;justify-content:center;align-items:center;gap:10px;min-height:42px;display:flex;position:absolute;bottom:calc(18% + 70px);left:20%;right:20%}.waiting{color:#b8ccad;font-size:14px}.waiting>span{letter-spacing:4px;margin-left:5px}.hand{scrollbar-width:thin;scrollbar-color:#a3bda055 transparent;touch-action:pan-x;z-index:5;justify-content:center;align-items:flex-end;height:clamp(85px,19vh,145px);padding:20px 6px 6px;display:flex;position:absolute;bottom:65px;left:20%;right:20%;overflow:auto hidden}.card{color:#26383b;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;text-align:left;background:linear-gradient(135deg,#fffef4,#e9ebdf);border:1px solid #deded1;border-radius:7px;flex-shrink:0;width:76px;height:110px;padding:0;transition:transform .12s,border .12s;display:block;position:relative;overflow:hidden;box-shadow:-2px 2px 5px #00271b50}.card:hover{filter:none;background:#fffef4}.card.red{color:#b5463c}.corner{flex-direction:column;align-items:center;font:700 22px/1.05 Georgia,serif;display:flex;position:absolute;top:5px;left:7px}.corner em{margin-top:1px;font-size:20px;font-style:normal}.pip{font-size:36px;line-height:1;position:absolute;bottom:15px;right:13px}.bottom-corner{font:700 14px Georgia;position:absolute;bottom:4px;right:5px;transform:rotate(180deg)}.card.selected{border-color:#eccb7a;transform:translateY(-15px);box-shadow:0 0 0 2px #e9c777,-2px 2px 8px #001a1b55}.hand .card{width:clamp(54px,7vw,86px);height:clamp(76px,17vh,128px);margin-left:clamp(-58px, calc((60vw - 86px * var(--hand-count)) / max(1, var(--hand-count))), -8px)}.hand .card:first-child{margin-left:0}.hand-card-back{border-radius:7px;flex-direction:column;flex:none;gap:5px;width:clamp(54px,7vw,86px);height:clamp(76px,17vh,128px);margin-left:0;font-size:28px;box-shadow:inset 0 0 0 4px #ffffff18,-2px 2px 8px #001a1b55}.hand-card-back small{color:#efe2b6;letter-spacing:0;font-size:10px}.flip-action{animation:1.6s ease-in-out infinite flip-pulse;box-shadow:0 0 0 5px #e6c78920,0 8px 25px #001b1545}@keyframes flip-pulse{50%{transform:translateY(-3px)}}.hand .card .corner{font-size:clamp(17px,2.6vw,26px)}.short-hand{gap:9px}.short-hand .card{margin-left:0}.mini{border-radius:5px;width:46px;height:65px}.mini .corner{font-size:16px;top:4px;left:4px}.mini .corner em{font-size:14px}.mini .pip{font-size:22px;bottom:8px;right:6px}.mini .bottom-corner{font-size:10px}.result-banner{z-index:6;background:#092f28f0;border:1px solid #d2bf8245;border-radius:18px;flex-direction:column;align-items:center;gap:5px;min-width:230px;padding:14px 25px;display:flex;box-shadow:0 15px 40px #001c2340}.result-banner h2{color:#f0dbab;margin:0;font-size:24px}.result-banner .eyebrow{letter-spacing:3px;font-size:10px}.result-banner strong{color:#e6c789;font-size:27px;line-height:1.2}.result-banner strong.loss{color:#becfca}.result-banner strong small{letter-spacing:0;font-size:12px;font-weight:400}.result-banner .primary{margin-top:4px;padding:8px 14px;font-size:14px}.next-banker{align-items:center;gap:10px;font-size:12px;display:flex}.next-banker select{padding:2px 6px;font-size:12px}.revealed-hand{max-width:170px;padding:15px 0 0;display:flex;overflow-x:auto}.revealed-hand .card{width:38px;height:54px;margin-right:-18px}.revealed-hand .card:last-child{margin-right:0}.revealed-hand .selected{transform:translateY(-5px);box-shadow:0 0 0 1px #dfc177}.revealed-hand .pip{display:none}.self{align-items:center;gap:12px;display:flex}.self-avatar{background:#477457;border-radius:11px;width:36px;height:36px;font-size:15px}.self b{font-size:14px;font-weight:500}.self b small{letter-spacing:0;color:#adc3a8;margin-left:7px;font-size:10px}.score{color:#ead5a3;letter-spacing:1px;margin-left:6px;font-size:18px}.score small{letter-spacing:0;color:#9ebda6;font-size:11px}.footer-hint{color:#94b39e;align-items:center;gap:13px;font-size:12px;display:flex}.bottom-status{color:#799e8b;justify-content:space-between;align-items:center;height:25px;padding:5px 10px 0;font-size:11px;display:flex}.bottom-status i{width:4px;height:4px;margin-right:7px}.divider{color:#577a67;margin:0 9px}.panel-backdrop,.modal-backdrop{z-index:30;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#001b1680;justify-content:flex-end;display:flex;position:fixed;inset:0}.peek-backdrop{background:#031b18d9;padding:20px}.peek-dialog{background:linear-gradient(145deg,#154b3b,#092c25);border:1px solid #e0c78466;border-radius:20px;width:min(920px,94vw);max-height:82vh;padding:20px;overflow:hidden;box-shadow:0 24px 70px #00130dbb}.peek-title{justify-content:space-between;align-items:flex-start;display:flex}.peek-title h2{margin:3px 0 0;font-size:21px}.peek-dialog>p{margin:6px 0 16px;font-size:12px}.peek-hand{align-items:flex-end;min-height:135px;padding:15px 8px 12px;display:flex;overflow-x:auto}.peek-hand .card{pointer-events:none;flex:none;width:70px;height:102px;margin-left:-35px}.peek-hand .card:first-child{margin-left:0}.panel{background:#0e2924;border-left:1px solid #8baf8e40;width:min(480px,78vw);height:100%;padding:22px 26px;overflow-y:auto;box-shadow:-15px 0 60px #00151270}.panel-header{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.panel-header h2{margin:4px 0 0;font-size:24px}.panel-header .eyebrow{letter-spacing:3px;font-size:10px}.panel-notice{color:#deca96;background:#d4be7010;border-radius:6px;align-items:center;gap:6px;padding:10px;font-size:12px;display:flex}.mode-switch{background:#051d18;border-radius:9px;gap:5px;margin-top:16px;padding:4px;display:flex}.mode-switch button{background:0 0;border:none;flex:1;font-size:14px}.help{color:#9eb9aa;font-size:13px;line-height:1.7}.field{justify-content:space-between;align-items:center;gap:10px;margin:14px 0;font-size:14px;display:flex}select{color:#e3eadc;background:#143a2e;border:1px solid #74908155;border-radius:6px;padding:7px 10px;font-size:14px}option{background:#143a2e}.editor-cards{background:#081f1b;border:1px solid #50755d4d;border-radius:10px;flex-wrap:wrap;gap:9px;min-height:90px;max-height:230px;padding:16px 10px 10px;display:flex;overflow-y:auto}.editor-cards .selected{transform:translateY(-5px)}.edit-summary{color:#d4c49d;justify-content:space-between;margin:10px 0 16px;font-size:12px;display:flex}.card-inputs{gap:14px;display:flex}.card-inputs label{color:#a5bcb0;flex-direction:column;flex:1;gap:5px;font-size:12px;display:flex}.edit-buttons{gap:7px;margin:14px 0;display:flex}.edit-buttons button{flex:1;padding:9px 7px;font-size:13px}.full-width{width:100%;font-size:13px}.panel-bottom{background:#0e2924;border-top:1px solid #ffffff15;gap:8px;margin-top:18px;padding:13px 0;display:flex;position:sticky;bottom:-22px}.panel-bottom button{flex:1;padding:10px;font-size:13px}.text-button{color:#9db7a7;background:0 0;border:0;padding:10px 0;font-size:12px}.validation{color:#e9b88f;font-size:12px}.validation p{color:inherit;margin:6px 0}.rules h3{color:#e4ca95;margin:23px 0 8px;font-size:17px}.rules p{color:#bfd0c2;margin:8px 0;font-size:14px;line-height:1.8}.logs>div{color:#c1d4c4;overflow-wrap:anywhere;border-bottom:1px solid #ffffff12;padding:11px 0;font-size:13px}.logs>div>span{color:#749b81;margin-right:12px;font:12px monospace}.toast{color:#283a2c;z-index:80;background:#f0dfb7;border-radius:9px;align-items:center;gap:12px;min-width:250px;max-width:90vw;padding:8px 12px 8px 18px;font-size:14px;display:flex;position:fixed;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 5px 30px #00130b70}.modal-backdrop{z-index:50;justify-content:center;align-items:center}.confirm{background:#12382d;border:1px solid #b7c89b50;border-radius:18px;width:min(470px,80vw);padding:26px}.confirm h2{font-size:22px}.confirm p{font-size:14px}.confirm button{margin:12px 8px 0 0}.table .seat-2 .opponent-cards{display:none}.table.game-bull .seat-2 .opponent-cards,.table.game-sangong .seat-2 .opponent-cards{order:3;justify-content:center;width:100%;display:flex}.table.game-bull .seat-2,.table.game-sangong .seat-2{max-width:230px}.table.game-bull .seat-2 .player-action,.table.game-sangong .seat-2 .player-action{order:4}.table.in-game:has(.seat-2) .center-play{top:32%}.table.in-game:has(.seat-2) .table-mark{top:32%}.table.in-game:has(.seat-2) .seat-2{flex-flow:wrap;gap:10px;max-width:220px;top:10%}.seat-2 .player-action{text-align:center;width:100%;margin-top:-4px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand){max-width:280px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .opponent-cards{order:3;justify-content:center;width:100%;display:flex}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-action{order:4}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .revealed-hand{padding-top:4px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .avatar{width:32px;height:32px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-meta{flex-direction:row;gap:10px}@media (width>=1200px){.shell{padding:0 32px 13px}.table{max-height:880px}.opponent{min-width:130px}.seat-0{left:8%}.seat-1{right:8%}.avatar{width:62px;height:62px}.hand{bottom:76px}.action-bar{bottom:calc(19% + 82px)}}@media (height<=600px){header{height:54px;min-height:54px}.shell{padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right));padding-bottom:5px}.brand{font-size:17px}.brand-icon{width:28px;height:29px;font-size:24px}header small{display:none}nav{padding:3px}nav button{min-width:72px;padding:6px 12px;font-size:14px}.top-tools{gap:5px}.status{font-size:12px}.table-top{top:10px;left:20px;right:17px}.room-tag{font-size:12px}.quiet{font-size:11px}.dev-button{padding:4px 9px;font-size:12px}.table-tools{gap:2px}.table{border-radius:22px}.table:before{inset:18px}.opponent{gap:4px;min-width:83px;top:23%}.avatar{border-radius:11px;width:39px;height:39px}.avatar svg{width:21px}.player-meta b{font-size:13px}.player-meta>span{font-size:12px}.card-back{width:23px;height:32px}.player-action{font-size:11px}.opponent-cards{gap:5px}.count{font-size:11px}.seat-0{left:4%}.seat-1{right:4%}.welcome{top:46%}.eyebrow{font-size:12px}.welcome h1{letter-spacing:8px;margin:5px 0;font-size:38px}.welcome p{margin:6px 0 12px;font-size:13px}.start{min-width:175px;padding:8px 22px}.welcome-note{margin-top:11px;font-size:11px}.table-mark{font-size:22px;top:26%}.table-mark small{font-size:9px}.banker-select{margin:0 0 10px;font-size:12px}.banker-select select{padding:3px 6px;font-size:12px}footer{bottom:9px;left:20px;right:20px}.self{gap:8px}.self-avatar{width:29px;height:29px;font-size:13px}.self b{font-size:12px}.score{margin-left:2px;font-size:16px}.footer-hint{font-size:10px}.bottom-status{height:21px;font-size:10px}.hand{height:105px;padding-top:20px;bottom:42px;left:15%;right:15%}.hand .card{width:60px;height:83px;margin-left:clamp(-44px, calc((70vw - 60px * var(--hand-count)) / max(1, var(--hand-count))), -5px)}.hand-card-back{width:60px;height:83px}.hand .card .corner{font-size:20px;left:5px}.card .pip{font-size:27px;bottom:10px;right:8px}.short-hand .card{margin-left:0}.action-bar{gap:7px;min-height:32px;bottom:140px}.action-bar button{min-width:0;padding:6px 13px;font-size:13px}.action-bar .primary{min-width:95px}.waiting{font-size:12px}.center-play{gap:4px;height:23%;top:29%}.played-cards .card{width:36px;height:49px;margin-right:-17px}.played-cards{padding-right:17px}.played-cards .corner{font-size:13px;top:3px;left:3px}.played-cards .corner em{font-size:11px}.played-cards .pip{font-size:19px;bottom:6px;right:4px}.played-label{font-size:10px}.bottom-cards{flex-direction:row;gap:2px;font-size:10px;top:9%}.bottom-cards>div{gap:4px}.bottom-cards .card{width:25px;height:34px}.bottom-cards .card .corner{font-size:11px;top:2px;left:3px}.bottom-cards .card .corner em{font-size:10px}.bottom-cards .pip{display:none}.bottom-cards .card-back{width:22px;height:30px;font-size:13px}.phase-text{font-size:13px}.phase-text small{margin-top:4px;font-size:10px}.result-banner{border-radius:12px;gap:3px;min-width:200px;padding:8px 20px}.result-banner h2{font-size:20px}.result-banner strong{font-size:23px}.result-banner .primary{padding:5px 12px}.result-banner .eyebrow{font-size:9px}.revealed-hand{max-width:125px}.revealed-hand .card{width:30px;height:43px;margin-right:-12px}.revealed-hand .corner{font-size:12px}.revealed-hand .corner em{font-size:11px}.table.in-game:has(.seat-2) .seat-2{gap:5px;max-width:190px;top:13%}.table.in-game:has(.seat-2) .seat-2 .avatar{width:28px;height:28px}.table.in-game:has(.seat-2) .seat-2 .player-meta{flex-direction:row;align-items:center;gap:8px}.table.in-game:has(.seat-2) .seat-2 .player-action{margin-top:-4px}.table.in-game:has(.seat-2) .center-play{top:32%}.panel{padding:15px 20px}.panel-header{margin-bottom:12px}.panel-header h2{font-size:21px}.panel-header .eyebrow{font-size:9px}.panel-bottom{bottom:-15px}.editor-cards{max-height:170px}.toast{font-size:12px;bottom:10px}.next-banker,.next-banker select{font-size:11px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand){gap:3px;max-width:220px;top:10%}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-action{font-size:10px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .avatar{display:none}}@media (height<=390px){header{height:46px;min-height:46px}.top-tools .status{display:none}.bottom-status{height:17px}.hand{height:89px;bottom:37px}.hand .card{width:52px;height:71px;margin-left:clamp(-39px, calc((70vw - 52px * var(--hand-count)) / max(1, var(--hand-count))), -5px)}.hand-card-back{width:52px;height:71px;font-size:22px}.hand-card-back small{font-size:8px}.hand .card .corner{font-size:17px}.short-hand .card{margin-left:0}.action-bar{bottom:120px}.center-play{height:20%;top:27%}.table-top{top:7px}.table-top .quiet{display:none}.bottom-cards{top:8%}.opponent{top:21%}.avatar{width:31px;height:31px}.player-meta b{font-size:12px}.player-action{font-size:10px}.player-meta small,.footer-hint{display:none}.welcome h1{font-size:30px}.welcome-note{margin-top:7px}.welcome p{margin-bottom:9px}.result-banner{padding:6px 16px}.result-banner h2{font-size:17px}.result-banner strong{font-size:20px}.table.in-game:has(.seat-2) .seat-2{top:10%}.table.in-game:has(.seat-2) .center-play{top:30%}.phase-text small{display:none}}.online-button{white-space:nowrap;background:#123d32;padding:7px 10px;font-size:12px}.online-button.connected{color:#f0d58e;border-color:#e6c78966}.turn-timer{color:#e8d49f;align-items:center;gap:5px;min-width:48px;font:600 13px/1 monospace;display:inline-flex}.turn-timer.urgent{color:#ff9c83;animation:.7s ease-in-out infinite alternate timer-pulse}@keyframes timer-pulse{to{transform:scale(1.08)}}.pass-notice{color:#ffcf8b;font-size:14px}.seat-pass-badge{color:#24382f;background:#f3ddaa;border-radius:12px;padding:3px 9px;font-size:11px;font-weight:800;position:absolute;top:-8px;right:-12px;box-shadow:0 4px 14px #001e1766}.waiting-room{color:#efd99f;background:#0b342bd9;border:1px solid #e6c78955;border-radius:12px;padding:9px 18px;font-weight:700}.bet-board{color:#b9cebc;background:#082c25dd;border:1px solid #ffffff17;border-radius:10px;align-items:center;gap:7px;padding:7px 10px;font-size:10px;display:flex}.bet-board b{color:#e8cd91}.bet-board span{white-space:nowrap;border-radius:5px;padding:2px 5px}.bet-board span.current{color:#24382f;background:#e6c789}.online-backdrop{background:#031b18df;padding:20px}.online-dialog{background:linear-gradient(145deg,#154b3b,#092c25);border:1px solid #e6c78955;border-radius:20px;width:min(520px,92vw);padding:24px;box-shadow:0 24px 70px #00130dbb}.online-dialog p{font-size:13px;line-height:1.75}.room-code{text-align:center;color:#f2d78e;letter-spacing:8px;border:1px dashed #e6c78988;border-radius:12px;margin:18px 0 8px;padding:13px;font:800 30px/1.2 monospace}.join-row{gap:8px;margin-top:15px;display:flex}.join-row input{color:#f3e5bc;text-transform:uppercase;letter-spacing:3px;background:#061f1a;border:1px solid #ffffff2b;border-radius:9px;flex:1;min-width:0;padding:10px 12px}@media (height<=500px){.online-button{padding:5px 8px}.bet-board{transform:scale(.9)}.online-dialog{padding:17px}.room-code{margin-top:10px;padding:8px;font-size:24px}}.hand{--card-width:clamp(54px, 7vw, 86px);justify-content:safe center}.hand .card{margin-left:clamp(calc(14px - var(--card-width)), calc((60vw - 30px - var(--card-width) * var(--hand-count)) / max(1, calc(var(--hand-count) - 1))), 0px)}.hand .card:first-child,.short-hand .card{margin-left:0}@media (height<=600px){.hand{--card-width:60px}.action-bar{bottom:151px}}@media (height<=390px){.hand{--card-width:52px}.action-bar{bottom:133px}}.table:has(.result-banner) .center-play{height:16%;top:43%}@media (height<=600px){.table:has(.result-banner) .center-play{height:64px;top:43%}.result-banner{grid-template-columns:auto auto;gap:5px 14px;min-width:300px;padding:9px 14px;display:grid}.result-banner>.eyebrow{display:none}.result-banner h2{font-size:18px}.result-banner strong{text-align:right;font-size:22px}.result-banner .primary{margin:0;padding:5px 12px}.result-banner .next-banker{justify-content:flex-end}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand){top:11%}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-action{margin-top:0}}.hand-scroll{pointer-events:none;z-index:6;justify-content:space-between;display:flex;position:absolute;bottom:70px;left:9%;right:9%}.hand-scroll button{pointer-events:auto;background:#153a2b;padding:4px 9px;font-size:24px}@media (height<=600px){.hand-scroll{bottom:65px;left:8%;right:8%}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand){flex-wrap:nowrap;justify-content:center;gap:10px;width:260px;max-width:300px;top:11%}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-meta{flex-direction:column;gap:0}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .opponent-cards{width:auto}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-action{font-size:10px;position:absolute;top:47px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .revealed-hand .card{height:35px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .revealed-hand{padding-top:1px}.table.in-game:has(.seat-2) .seat-2:has(.revealed-hand) .player-action{top:34px}}.played-by{color:#f6e7bd;background:#072b24e8;border:1px solid #e6c78978;border-radius:999px;align-items:center;gap:9px;min-width:150px;padding:7px 13px 7px 8px;animation:.26s ease-out play-arrive;display:flex;box-shadow:0 8px 25px #001b166b}.played-avatar{color:#173b2f;background:#e6c789;border-radius:50%;place-items:center;width:30px;height:30px;font-size:12px;font-weight:800;display:grid}.played-by>span:last-child{flex-direction:column;line-height:1.15;display:flex}.played-by small{color:#9fc2ae;letter-spacing:0;font-size:10px}.played-by b{margin-top:3px;font-size:15px}.last-played .avatar{outline-offset:5px;outline:3px solid #e6c789;box-shadow:0 0 0 8px #e6c78918,0 3px 18px #00181050}.seat-play-badge{color:#1e3b2d;white-space:nowrap;background:#efd28f;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;animation:.26s ease-out play-arrive;position:absolute;top:-25px;box-shadow:0 4px 14px #00150f60}@keyframes play-arrive{0%{opacity:0;transform:translateY(7px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}.panel.developer-panel{background:#0d2b24;border:1px solid #b7cba34a;border-radius:20px;width:min(1120px,100vw - 28px);height:calc(100dvh - 28px);margin:14px;padding:20px 24px 0;box-shadow:0 25px 80px #00130ea8}.developer-panel .panel-header{margin-bottom:10px}.developer-panel .panel-notice{padding:7px 12px;position:absolute;top:26px;left:50%;transform:translate(-50%)}.edit-step{background:#071f1b87;border:1px solid #76937a2e;border-radius:13px;padding:12px}.step-title{align-items:center;gap:9px;margin-bottom:10px;display:flex}.step-title>span{color:#17382d;background:#e6c789;border-radius:50%;flex:none;place-items:center;width:25px;height:25px;font-size:13px;font-weight:900;display:grid}.step-title>div{flex-direction:column;display:flex}.step-title b{font-size:14px}.step-title small{color:#91ad9e;letter-spacing:0;font-size:11px}.mode-step,.zone-step{grid-template-columns:190px 1fr;align-items:center;gap:14px;margin-bottom:9px;display:grid}.mode-step .step-title,.zone-step .step-title{margin:0}.mode-cards,.zone-tabs{gap:7px;min-width:0;display:flex;overflow-x:auto}.mode-cards button{text-align:left;background:#123a2f;flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-height:48px;padding:7px 12px;display:flex}.mode-cards button.active,.zone-tabs button.active{border-color:#f1d995;box-shadow:0 0 0 2px #e7cc8d24;color:#263c30!important;background:#e7cc8d!important}.mode-cards small{color:inherit;opacity:.72;letter-spacing:0}.zone-tabs button{color:#b8cdbf;background:#11382d;flex:1;justify-content:space-between;gap:10px;min-width:105px;padding:6px 11px;font-size:12px;display:flex}.zone-tabs button b{color:#e9d39d;white-space:nowrap}.zone-tabs button.active b{color:inherit}.edit-workspace{grid-template-columns:minmax(0,1.55fr) minmax(300px,.9fr);gap:9px;display:grid}.hand-step,.target-step{min-height:257px}.developer-panel .editor-cards{align-content:flex-start;gap:8px;min-height:146px;max-height:172px;padding:15px 10px 8px}.developer-panel .editor-cards .card{width:43px;height:61px}.developer-panel .editor-cards .card.selected{transform:translateY(-6px);box-shadow:0 0 0 3px #e8c976,0 7px 14px #00181280}.empty-zone{color:#bed0c3;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:115px;display:flex}.empty-zone small{color:#809c8d;letter-spacing:0;margin-top:5px}.picked-card{color:#829f90;border:1px dashed #79938555;border-radius:8px;justify-content:space-between;margin-top:8px;padding:7px 10px;font-size:12px;display:flex}.picked-card.ready{color:#d9c693;background:#e6c7890a;border-style:solid;border-color:#e6c78980}.rank-grid{grid-template-columns:repeat(8,minmax(32px,1fr));gap:5px;display:grid}.rank-grid button{background:#143c31;min-width:0;height:34px;padding:2px;font-weight:750}.rank-grid button:nth-last-child(-n+2){grid-column:span 2;font-size:12px}.rank-grid button.active,.suit-grid button.active{border-color:#f2d993;color:#263c30!important;background:#e7cc8d!important}.suit-grid{grid-template-columns:repeat(4,1fr);gap:5px;margin-top:7px;display:grid}.suit-grid button{color:#26383b;background:#f4f2e9;min-width:0;padding:6px 3px;font-size:12px;font-weight:700}.suit-grid button.red{color:#b5463c}.target-preview{justify-content:center;align-items:center;gap:12px;margin-top:9px;display:flex}.target-preview .card{pointer-events:none}.target-preview>div{flex-direction:column;display:flex}.target-preview small{color:#8eaa9b;letter-spacing:0}.target-preview b{color:#ebd49e;font-size:18px}.quick-actions{grid-template-columns:1.5fr 1.2fr .8fr;gap:7px;margin-top:9px;display:grid}.quick-actions button{min-height:40px;padding:7px 10px;font-size:13px}.quick-actions .danger-action:not(:disabled){color:#ffd9cf;background:#6e30283d;border-color:#c66d5d70}.developer-panel .full-width{color:#e6c789;border-color:#e6c78955;min-height:36px;margin-top:7px}.developer-panel .validation{min-height:23px;margin-top:4px}.developer-panel .validation p{align-items:center;gap:5px;margin:3px 0;display:flex}.developer-panel .validation-ok{color:#a9d7af}.developer-panel .panel-bottom{background:#0b251f;border-radius:0 0 20px 20px;grid-template-columns:1fr 130px 210px;align-items:center;margin:2px -24px 0;padding:10px 24px;display:grid;bottom:0}.save-summary{flex-direction:column;display:flex}.save-summary b{font-size:13px}.save-summary small{color:#829e8f;letter-spacing:0;font-size:11px}.developer-panel>.text-button{margin-right:4px;padding:6px 10px}@media (height<=620px){.played-by{padding:5px 10px 5px 6px}.played-avatar{width:25px;height:25px}.played-by b{font-size:13px}.seat-play-badge{padding:2px 6px;font-size:9px;top:-18px}.panel.developer-panel{border-radius:13px;width:calc(100vw - 12px);height:calc(100dvh - 12px);margin:6px;padding:10px 14px 0}.developer-panel .panel-header{margin-bottom:5px}.developer-panel .panel-header h2{margin-top:0;font-size:18px}.developer-panel .panel-header .eyebrow,.developer-panel .panel-notice,.step-title small{display:none}.edit-step{border-radius:9px;padding:7px 9px}.step-title{margin-bottom:6px}.step-title>span{width:20px;height:20px;font-size:11px}.step-title b{font-size:12px}.mode-step,.zone-step{grid-template-columns:145px 1fr;gap:7px;margin-bottom:5px}.mode-cards button{min-height:35px;padding:4px 8px}.mode-cards small{display:none}.zone-tabs button{min-width:87px;padding:4px 7px;font-size:11px}.edit-workspace{grid-template-columns:minmax(0,1.65fr) minmax(280px,.85fr);gap:5px}.hand-step,.target-step{min-height:191px}.developer-panel .editor-cards{gap:6px;min-height:119px;max-height:119px;padding:10px 7px 5px}.developer-panel .editor-cards .card{width:35px;height:49px}.developer-panel .editor-cards .corner{font-size:13px}.developer-panel .editor-cards .pip,.developer-panel .editor-cards .bottom-corner{display:none}.picked-card{margin-top:5px;padding:4px 7px}.rank-grid button{height:28px;font-size:11px}.suit-grid{margin-top:5px}.suit-grid button{padding:4px 2px;font-size:11px}.target-preview{margin-top:5px}.target-preview .card{width:32px;height:44px}.target-preview .pip,.target-preview .bottom-corner{display:none}.target-preview b{font-size:14px}.quick-actions{margin-top:5px}.quick-actions button{min-height:32px;padding:4px 7px;font-size:11px}.developer-panel .validation{min-height:16px;font-size:10px}.developer-panel .panel-bottom{grid-template-columns:1fr 110px 180px;margin:0 -14px;padding:6px 14px}.developer-panel .panel-bottom button{padding:6px;font-size:11px}.developer-panel>.text-button{display:none}}
