:root{font-family:Microsoft YaHei UI,PingFang SC,system-ui,sans-serif;color:#223b34;background:#f5f2e9;font-synthesis:none;font-weight:400;--green:#1d5848;--deep:#123d35;--gold:#d5b978;--muted:#7d8981;--cream:#f8f5ed}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:0;transition:background .18s,transform .18s,opacity .18s}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #d9b96c;outline-offset:3px}button:not(:disabled):active{transform:translateY(1px)}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}button.text-button{background:none;color:inherit;padding:8px}.gold{color:#c4a464}.muted{color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:2.5px;font-weight:700;color:#9b8151}.tiny-line{display:inline-block;width:30px;height:1px;background:#b49a65;vertical-align:middle;margin-right:12px}.primary{background:#d6b97b;color:#183d33;border:1px solid #d6b97b;padding:12px 24px;border-radius:8px;font-weight:700;box-shadow:0 3px 7px #00000012}.primary:hover:not(:disabled){background:#e6cc94}.secondary{background:#f4efe4;border:1px solid #d7d9cf;color:#315044;padding:11px 20px;border-radius:8px}.secondary:hover:not(:disabled){background:#fff}.status-dot{display:inline-block;background:#6e9b7b;border-radius:50%;width:6px;height:6px;margin-right:7px;vertical-align:middle}.status-dot.offline{background:#df9e69}.error{color:#b34d3b;font-size:13px;line-height:1.8;margin-top:16px}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);z-index:120;background:#173e34;color:#fff;box-shadow:0 8px 40px #0003;padding:14px 24px;border-radius:10px;max-width:90vw;font-size:14px;text-align:center}.welcome{max-width:1440px;padding:0 7%;margin:auto;min-height:100dvh;display:flex;flex-direction:column;background:radial-gradient(ellipse at 26% 58%,#e3e9dd88,transparent 60%)}.welcome-header{height:102px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d9ded3}.wordmark{font-family:SimSun,serif;font-size:28px;font-weight:900;letter-spacing:3px}.wordmark span{font-family:system-ui,sans-serif;font-size:11px;font-weight:400;letter-spacing:1px;border-left:1px solid #b6c1b3;margin-left:20px;padding-left:20px;color:#7b887c}.welcome-header>.text-button{font-size:13px}.welcome-header>.text-button span{margin-left:13px}.welcome-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:8%;align-items:center;flex:1;padding:70px 0}.hero{position:relative;min-height:470px}.hero h1{font-family:SimSun,Songti SC,serif;font-size:clamp(44px,5vw,70px);line-height:1.3;letter-spacing:5px;margin:26px 0 20px;font-weight:800}.hero-copy{font-size:15px;color:#78867b;line-height:2.1;letter-spacing:1px}.hero-cards{position:absolute;left:245px;top:254px;display:flex;height:180px;align-items:center;filter:drop-shadow(0 20px 18px #3454431d);pointer-events:none}.hero-cards .card-face{width:92px;height:136px;margin-left:-38px;box-shadow:0 5px 10px #20352b12;transform:rotate(-19deg) translateY(9px)}.hero-cards .card-face:nth-child(2){transform:rotate(1deg) translateY(-12px);z-index:1}.hero-cards .card-face:nth-child(3){transform:rotate(19deg) translateY(5px);z-index:2}.hero-cards .card-corner b{font-size:27px}.hero-cards .card-center{font-size:48px}.hero-caption{position:absolute;bottom:12px;display:flex;gap:15px;font-size:12px;color:#7d887c;letter-spacing:1px}.hero-caption i{font-style:normal;color:#b1b6a4}.entry-panel{background:#fffef9;border:1px solid #e5e4d9;border-radius:18px;padding:36px 38px;box-shadow:0 24px 70px #264a3310;max-width:460px;width:100%}.panel-kicker{font-size:11px;color:#a79572;letter-spacing:2px;margin-bottom:13px}.entry-panel h2{font-family:SimSun,serif;font-size:27px;letter-spacing:1px;margin-bottom:10px}.entry-panel>.muted{font-size:13px;margin-bottom:30px}.entry-panel label{display:block;font-size:12px;color:#536d5f;margin-bottom:10px;font-weight:600}.entry-panel input{border:1px solid #dddfd4;background:#fbfaf5;width:100%;height:49px;border-radius:8px;padding:0 15px;color:#264a3d;outline:none;font-size:14px}.entry-panel input::placeholder{color:#a2a99d}.entry-panel input:focus{border-color:#759583;box-shadow:0 0 0 3px #8da18f11}.tabs{display:flex;border-bottom:1px solid #e5e6dd;margin:22px 0 24px}.tabs button{width:50%;background:none;color:#859084;padding:12px 0;font-size:13px;position:relative}.tabs button.active{color:#214c3e;font-weight:700}.tabs button.active:after{content:"";height:2px;background:#2d614e;position:absolute;bottom:-1px;left:18%;right:18%}.room-promise{display:flex;align-items:center;gap:14px;background:#f2f5ed;border-radius:8px;padding:17px 14px;margin-bottom:25px}.promise-icon{font-size:31px;color:#63836c}.room-promise strong{font-size:13px;display:block;margin-bottom:7px}.room-promise div>span{font-size:11px;color:#8a9687}.entry-panel .enter-button{width:100%;display:flex;align-items:center;justify-content:space-between;background:#21503f;color:#f5f0de;border-color:#21503f;font-size:14px;height:49px}.enter-button:hover:not(:disabled){background:#30654e}.code-input{letter-spacing:6px;margin-bottom:25px}.entry-foot{display:flex;justify-content:center;align-items:center;border-top:1px solid #eeeee5;margin-top:25px;padding-top:22px;color:#929b8c;font-size:10px;letter-spacing:.4px}.welcome-footer{display:flex;justify-content:space-between;border-top:1px solid #d9ded3;padding:23px 0;color:#9ba392;font-size:10px;letter-spacing:1px}.resume-box{display:flex;flex-direction:column;align-items:center;gap:20px;background:#f3f4ec;padding:24px;border-radius:10px;font-size:13px}.small-button{background:#275641;color:#fff;border-radius:6px;padding:10px 20px}.card-face{display:block;position:relative;width:76px;height:108px;border-radius:7px;border:1px solid #dedbcf;background:linear-gradient(125deg,#fffefa,#f6f1e5);box-shadow:0 2px 4px #0002;color:#243d35;user-select:none;overflow:hidden}.card-face.red{color:#b8493b}.card-corner{position:absolute;left:7px;top:6px;display:flex;flex-direction:column;align-items:center;line-height:1.05}.card-corner b{font-family:Georgia,serif;font-size:23px}.card-corner>span{font-size:16px;margin-top:2px}.card-center{position:absolute;left:40%;top:38%;font-size:36px;color:inherit;opacity:.85}.card-bottom{position:absolute;bottom:6px;right:6px;font-size:11px;transform:rotate(180deg);font-weight:700}.card-badge{position:absolute;top:8px;right:6px;background:#c3a66a;color:#fffdf2;border-radius:3px;padding:3px;font-size:10px;line-height:1}.marker-badge{background:#608c76}.card-face.selected{background:#fff8d8;border-color:#c6a45e;box-shadow:0 0 0 2px #c6a45e}.card-face.small{width:49px;height:69px;border-radius:5px}.small .card-corner{left:4px;top:4px}.small .card-corner b{font-size:17px}.small .card-corner>span{font-size:12px}.small .card-center{font-size:23px}.small .card-bottom{font-size:8px;right:4px;bottom:4px}.small .card-badge{font-size:8px;right:3px;top:5px;padding:2px}.joker .card-corner b{font-size:17px}.joker .card-corner>span{font-size:16px}.joker.small .card-corner b,.joker.small .card-corner>span{font-size:12px}.game-shell{background:#11382f;color:#edf0dc;min-height:100dvh;display:flex;flex-direction:column}.game-header{height:70px;display:flex;align-items:center;padding:0 28px;gap:28px;background:#10372f;border-bottom:1px solid #76917d30;flex-shrink:0}.game-brand{font-family:SimSun,serif;font-size:27px;letter-spacing:3px;font-weight:700;display:flex;align-items:center;gap:13px}.game-brand small{font-family:system-ui,sans-serif;font-size:10px;letter-spacing:1px;color:#a4b6a5;font-weight:400}.room-code{display:flex;gap:9px;align-items:center;background:#ffffff09;border:1px solid #8da18630;border-radius:6px;padding:8px 12px;font-size:11px;color:#a9baa8}.room-code strong{color:#eee7cc;font-size:15px;letter-spacing:2px}.room-code>span{margin-left:6px;color:#cbb780}.round-pill{font-size:11px;color:#9bb09c;display:flex;gap:12px;align-items:center}.round-pill b{font-size:13px;color:#e3d9b9}.header-tools{margin-left:auto;display:flex;gap:16px}.header-tools button{background:none;color:#b5c3ad;font-size:12px;padding:8px 2px}.game-table{position:relative;flex:1;min-height:390px;background:radial-gradient(ellipse at 50% 45%,#286550,#194e40 55%,#153f35);overflow:hidden}.table-border{position:absolute;inset:24px 30px 12px;border:1px solid #88a27b24;border-radius:90px;pointer-events:none}.table-border:after{content:"";position:absolute;inset:8px;border:1px solid #88a27b12;border-radius:85px}.table-watermark{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);font-family:SimSun,serif;letter-spacing:13px;font-size:42px;color:#c5c9a813;text-align:center;pointer-events:none;white-space:nowrap}.table-watermark small{display:block;font-family:system-ui,sans-serif;font-size:8px;letter-spacing:4px;margin-top:12px}.rule-chips{position:absolute;left:34px;top:16px;display:flex;gap:8px;font-size:10px;z-index:1;flex-wrap:wrap;max-width:36%}.rule-chips>span{border:1px solid #b3c09228;background:#103c3180;border-radius:4px;padding:5px 8px;color:#94b19b}.rule-chips b{color:#eee2b5;font-size:12px;margin-left:5px}.opponent{position:absolute;display:flex;align-items:center;gap:11px;z-index:2}.opponent.top{top:22px;left:50%;transform:translate(-50%)}.opponent.left{top:43%;left:42px}.opponent.right{top:43%;right:42px;flex-direction:row-reverse;text-align:right}.avatar{height:48px;width:48px;display:flex;align-items:center;justify-content:center;border:2px solid #d0c49a44;border-radius:13px;position:relative;font-size:20px;color:#f5eed5;background:#698571;box-shadow:0 3px 10px #0a261d33}.avatar-0{background:#527c67}.avatar-1{background:#9e7957}.avatar-2{background:#597d8a}.avatar-3{background:#8c766b}.active .avatar{outline:2px solid #d4ba7c;outline-offset:4px}.online-dot{position:absolute;bottom:-3px;right:-3px;width:10px;height:10px;border:2px solid #225642;border-radius:50%;background:#93b683}.opponent-info strong{font-size:13px;letter-spacing:.5px}.seat-meta{display:flex;align-items:center;gap:6px;margin-top:6px;color:#a0b79e;font-size:10px}.right .seat-meta{justify-content:flex-end}.role-label{display:inline-block;border:1px solid #b7aa7055;color:#dfcf9e;background:#b5a36b12;border-radius:4px;font-size:10px;padding:2px 5px}.finish-label{font-size:11px;color:#e5cc81}.score{font-size:10px;color:#9eb39e;display:block;margin-top:5px}.positive{color:#d9c183}.opponent-play{position:absolute;display:flex;top:70px;left:50%;transform:translate(-50%);white-space:nowrap}.opponent-play .card-face+.card-face{margin-left:-32px}.left .opponent-play{top:80px;left:20px;transform:none}.right .opponent-play{top:80px;left:auto;right:20px;transform:none}.pass-label{color:#b6c5a4;font-size:16px;letter-spacing:3px}.phase-panel{position:absolute;top:53%;left:50%;transform:translate(-50%,-50%);width:480px;max-width:calc(100% - 320px);z-index:3;text-align:center;background:#184a3ee8;border:1px solid #a3b18c32;border-radius:16px;padding:25px 24px;box-shadow:0 10px 40px #092d2525}.phase-panel .eyebrow{color:#baa778;font-size:10px}.phase-panel h2{font-size:21px;letter-spacing:1px;margin:12px 0}.phase-panel p{font-size:12px;color:#a8bda6;line-height:1.9;margin-bottom:18px}.phase-panel small{color:#9fb39a;font-size:11px}.phase-actions{display:flex;justify-content:center;gap:12px;margin:16px 0}.phase-actions button{font-size:13px;min-width:120px}.invite-code{background:transparent;color:#eee6c7;letter-spacing:7px;font-size:30px;font-weight:700;padding:0}.invite-code small{letter-spacing:0;display:block;font-weight:400;font-size:10px;margin-top:7px}.marker-options{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;max-height:160px;overflow:auto}.marker-options>button{padding:0;background:none}.marker-options>button:hover{transform:translateY(-3px)}.waiting-label{margin:12px 0 0!important;color:#dfcca2!important}.trick-center{position:absolute;left:50%;top:53%;transform:translate(-50%,-50%);text-align:center;width:40%}.turn-status{display:inline-flex;align-items:center;gap:8px;background:#0e382c70;padding:9px 18px;border:1px solid #9caa8220;border-radius:30px;color:#b8c5aa;font-size:12px;white-space:nowrap}.turn-status.mine{color:#f0dca4;border-color:#d5b97866}.turn-status i{width:5px;height:5px;background:currentColor;border-radius:50%}.last-play{display:flex;justify-content:center;position:relative;margin:22px auto 25px;width:fit-content}.last-play .card-face+.card-face{margin-left:-14px}.last-play small{position:absolute;top:80px;color:#97b096;font-size:10px;white-space:nowrap}.new-trick{margin-top:25px;color:#92b091;font-size:13px;letter-spacing:2px}.table-bottom-note{position:absolute;bottom:14px;left:35px;right:35px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#8ca68f}.table-bottom-note button{background:none;color:#a7b698;font-size:11px}.hand-dock{padding:16px 28px 8px;background:linear-gradient(#153f34,#10372e);border-top:1px solid #7c956a2c;position:relative;min-height:198px}.hand-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:38px;margin-bottom:20px}.self-info{display:flex;align-items:center;gap:9px;font-size:11px;color:#a7b59b}.self-info strong{color:#f0ecd9;font-size:13px}.mini-avatar{height:30px;width:30px;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#efe7ca;font-size:14px}.own-xi{color:#bfa873}.action-bar{display:flex;gap:8px;align-items:center}.action-bar>button{font-size:12px;padding:8px 16px;min-width:60px}.action-bar .play-button{min-width:100px}.selected-count,.selection-help{font-size:10px;color:#91a48b;margin-right:10px}.surrender{font-size:10px!important;color:#c5b4a1!important;min-width:auto!important;padding:8px!important}.hand{max-width:1100px;margin:auto}.hand-row{height:120px;position:relative;width:100%;--step:min(80px, calc((100% - 76px)/max(1, var(--count) - 1)) );touch-action:none}.hand-card{position:absolute;left:calc(var(--i) * var(--step));top:0;padding:0;background:none;text-align:left;touch-action:none;user-select:none;transition:top .12s}.hand-card.raised{top:-14px}.mobile-hand{display:none}.empty-hand{text-align:center;font-size:13px;letter-spacing:1px;color:#91a58d;position:absolute;top:108px;left:0;right:0}.game-footer{height:30px;display:flex;justify-content:space-between;align-items:center;padding:0 30px;background:#0d3028;color:#829b84;font-size:9px;gap:10px}.game-footer strong{color:#dccb9b;font-size:12px}.network-banner{background:#a77435;color:#fff3df;text-align:center;font-size:12px;padding:8px}.network-banner button{background:transparent;color:#fff;text-decoration:underline;margin-left:10px}.modal-backdrop{position:fixed;inset:0;background:#0b211b9c;backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:50;padding:22px}.top-modal{z-index:70}.modal{background:#fcfaf1;color:#284438;border:1px solid #dadbc9;border-radius:18px;padding:32px;width:580px;max-width:100%;max-height:90dvh;overflow:auto;box-shadow:0 30px 100px #0005;position:relative}.modal h2{font-family:SimSun,serif;font-size:27px;letter-spacing:1px;margin:14px 0}.modal>p{font-size:13px;color:#7e8a79;line-height:1.8}.modal .eyebrow{font-size:10px}.close-button{position:absolute;right:15px;top:12px;font-size:25px;color:#88947f;background:transparent;line-height:30px;padding:0 6px}.result-modal{text-align:center;width:650px;padding:30px 36px}.result-modal>.eyebrow{letter-spacing:2px}.result-modal>p{margin-bottom:10px}.result-score strong{display:block;font-family:Georgia,serif;font-size:54px;line-height:1.1;color:#3d7753}.result-score strong.negative{color:#a46b52}.result-score span{font-size:10px;color:#a0977d}.result-score{margin:18px 0}.modal table{width:100%;border-collapse:collapse;text-align:right;font-size:12px}.modal th{font-size:10px;font-weight:500;color:#8b967f;background:#f0f1e7;padding:10px 8px}.modal td{padding:11px 8px;border-bottom:1px solid #e6e8db}.modal th:first-child,.modal td:first-child{text-align:left}.modal td small{font-size:9px;color:#a58b51}.modal tr.self{background:#f1f3e8}.round-details{font-size:12px;margin:14px 0 8px;text-align:left}.round-details summary{cursor:pointer;padding:9px 0}.round-details td{padding:7px 8px}.result-modal .phase-actions{margin-bottom:8px}.result-modal>.text-button{font-size:11px;color:#959e89}.rule-list article{border-top:1px solid #e4e5d8;padding:15px 0 0;margin-top:15px}.rule-list b{font-size:12px;letter-spacing:.5px;color:#8d794c}.rule-list p{font-size:12px;color:#718270;line-height:1.9;margin:8px 0}.rules-note{background:#eef1e4;border-radius:8px;padding:13px;font-size:11px;line-height:1.9;color:#75836b;margin-top:18px}.history-item{border-top:1px solid #e1e5d5;padding:15px 0}.history-item>b{font-size:12px;line-height:1.7}.history-item>div{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-size:11px;color:#809076}.history-item strong{color:#416d50}.history-modal h3{font-size:14px;margin-top:25px}.log-list{padding-left:22px;color:#76866d;font-size:12px;line-height:2.2}.confirm-modal{width:420px;text-align:center}@media(min-width:1450px){.game-table{min-height:450px}.phase-panel{top:50%}.game-shell{min-height:100dvh}.hand-dock{padding-left:max(30px,calc((100% - 1200px)/2));padding-right:max(30px,calc((100% - 1200px)/2))}}@media(max-width:1050px){.welcome{padding:0 5%}.welcome-grid{gap:5%}.entry-panel{padding:28px}.hero-cards{left:190px;top:285px}.hero h1{font-size:51px}.game-header{gap:16px;padding:0 20px}.game-brand small{display:none}.rule-chips{left:20px;max-width:30%;gap:4px}.rule-chips>span{padding:4px}.opponent.left{left:22px}.opponent.right{right:22px}.opponent{gap:7px}.phase-panel{max-width:calc(100% - 290px);padding:20px}.hand-heading{gap:6px}.selected-count{display:none}.hand-dock{padding-left:20px;padding-right:20px}.action-bar>button{padding:8px 12px}.own-xi{display:none}.game-footer{padding:0 20px}}@media(max-width:700px)and (orientation:portrait){.welcome-header{height:75px}.wordmark{font-size:24px}.wordmark span{display:none}.welcome-grid{display:flex;flex-direction:column;padding:35px 0;gap:25px}.hero{width:100%;min-height:230px}.hero h1{font-size:40px;letter-spacing:3px;margin:20px 0 12px}.hero-copy{font-size:12px;line-height:1.8}.hero-cards{left:auto;right:12px;top:66px;transform:scale(.75);transform-origin:right center}.hero-caption{font-size:10px;position:static;margin-top:23px;gap:12px}.entry-panel{max-width:100%;padding:25px}.entry-panel>.muted{margin-bottom:22px}.welcome-footer{font-size:8px;letter-spacing:0;gap:10px}.eyebrow{font-size:9px;letter-spacing:1.5px}.game-header{height:53px;padding:0 12px;gap:10px;flex-wrap:wrap;position:relative}.game-brand{font-size:20px;letter-spacing:1px}.room-code{padding:6px 8px;font-size:9px;gap:4px}.room-code strong{font-size:13px;letter-spacing:1px}.room-code>span{display:none}.round-pill{font-size:0;gap:0}.round-pill b{font-size:12px}.header-tools{gap:8px}.header-tools button{font-size:10px}.header-tools button:last-child{display:none}.game-table{min-height:390px}.rule-chips{left:12px;top:10px;max-width:28%;gap:3px}.rule-chips>span{font-size:8px;padding:3px 4px}.rule-chips b{font-size:10px}.opponent.top{top:14px}.opponent.left{left:12px;top:29%;flex-direction:column;text-align:center}.opponent.right{right:12px;top:29%;flex-direction:column;text-align:center}.avatar{height:37px;width:37px;border-radius:10px;font-size:16px}.opponent-info strong{font-size:11px}.seat-meta{font-size:8px;gap:3px;justify-content:center;flex-wrap:wrap;max-width:82px;margin-top:4px}.right .seat-meta{justify-content:center}.role-label{font-size:8px;padding:2px 3px}.opponent .score{font-size:8px}.opponent-play{top:63px}.left .opponent-play{top:120px;left:2px;max-width:60px;overflow:hidden}.right .opponent-play{top:120px;right:2px;max-width:60px;overflow:hidden}.phase-panel{top:61%;width:calc(100% - 100px);max-width:calc(100% - 100px);padding:16px 12px;border-radius:12px}.phase-panel h2{font-size:17px;margin:9px 0}.phase-panel p{font-size:10px;margin-bottom:10px}.phase-panel .eyebrow{font-size:8px;letter-spacing:1px}.phase-actions{gap:7px;margin:12px 0}.phase-actions button{font-size:11px;padding:10px 9px;min-width:0;flex:1}.phase-panel small{font-size:9px}.invite-code{font-size:25px}.trick-center{width:58%;top:62%}.turn-status{font-size:9px;padding:8px 9px;gap:4px;white-space:normal;line-height:1.5}.last-play .card-face{width:42px;height:61px}.last-play .card-face+.card-face{margin-left:-23px}.last-play small{top:68px;font-size:9px}.table-bottom-note{left:15px;right:15px;bottom:10px;font-size:8px}.table-bottom-note button{font-size:9px}.hand-dock{padding:10px 12px 0;min-height:235px}.hand-heading{flex-direction:column;align-items:stretch;margin-bottom:20px;gap:10px}.self-info{font-size:10px;gap:7px}.self-info strong{font-size:11px}.mini-avatar{height:22px;width:22px;font-size:11px;border-radius:6px}.action-bar{justify-content:flex-end;gap:6px}.action-bar>button{min-width:45px;font-size:11px;padding:7px 12px}.action-bar .play-button{min-width:85px}.selection-help{position:absolute;top:16px;right:12px;font-size:8px}.desktop-hand{display:none}.mobile-hand{display:block}.hand-row{height:82px;--step:min(50px, calc((100% - 48px)/max(1, var(--count) - 1)) )}.hand .card-face{width:48px;height:70px}.hand .card-corner{left:4px;top:4px}.hand .card-corner b{font-size:19px}.hand .card-corner>span{font-size:12px}.hand .card-center{font-size:25px}.hand .card-bottom{font-size:8px;right:4px;bottom:4px}.hand .card-badge{font-size:8px;right:3px;padding:2px;top:5px}.hand .joker .card-corner b{font-size:12px}.hand .joker .card-corner>span{font-size:12px}.hand-card.raised{top:-10px}.game-footer{height:28px;padding:0 12px;font-size:8px}.game-footer>span:nth-child(2){display:none}.modal-backdrop{padding:12px}.modal{padding:25px 18px;max-height:94dvh;border-radius:13px}.modal h2{font-size:23px}.modal table{font-size:10px}.modal th{font-size:8px;padding:8px 4px}.modal td{padding:10px 4px}.result-score strong{font-size:42px}.result-score{margin:12px 0}.result-modal>p{font-size:11px}.result-modal .eyebrow{font-size:8px;letter-spacing:1px}.round-details table th{font-size:9px}.marker-options{max-height:145px;gap:4px}.marker-options .card-face.small{width:40px;height:57px}.marker-options .card-center{font-size:20px}}@media(max-height:600px)and (orientation:landscape){.game-header{height:42px;padding:0 16px;gap:18px}.game-brand{font-size:20px}.game-brand small{display:none}.room-code{padding:4px 8px}.room-code strong{font-size:12px}.room-code>span{font-size:9px}.game-table{min-height:220px}.rule-chips{top:8px;left:15px;font-size:8px;gap:3px;max-width:28%}.rule-chips>span{padding:3px 5px}.rule-chips b{font-size:10px}.opponent.top{top:8px}.opponent.left{left:18px;top:35%}.opponent.right{right:18px;top:35%}.avatar{width:35px;height:35px;border-radius:9px;font-size:16px}.opponent-info strong{font-size:11px}.seat-meta{font-size:8px;gap:4px;margin-top:3px}.role-label{font-size:8px}.opponent .score{font-size:8px;margin-top:3px}.opponent-play{top:55px}.left .opponent-play,.right .opponent-play{top:60px}.opponent-play .card-face.small{width:35px;height:48px}.opponent-play .card-face+.card-face{margin-left:-24px}.opponent-play .card-center{display:none}.opponent-play .card-corner b{font-size:12px}.opponent-play .card-corner>span{font-size:9px}.phase-panel{top:57%;width:380px;max-width:calc(100% - 290px);padding:10px 14px}.phase-panel h2{font-size:16px;margin:6px 0}.phase-panel .eyebrow{font-size:8px;letter-spacing:1px}.phase-panel p{font-size:10px;margin-bottom:6px;line-height:1.6}.phase-panel small{font-size:8px}.phase-actions{margin:8px 0;gap:8px}.phase-actions button{font-size:11px;min-width:90px;padding:8px 12px}.invite-code{font-size:23px}.invite-code small{display:none}.table-bottom-note{bottom:6px;font-size:8px;left:20px;right:20px}.table-bottom-note button{font-size:9px}.table-border{inset:10px 15px 6px;border-radius:55px}.trick-center{top:61%}.turn-status{padding:5px 10px;font-size:10px}.last-play{margin-top:12px;margin-bottom:18px}.last-play .card-face.small{width:40px;height:57px}.last-play small{top:62px;font-size:8px}.hand-dock{min-height:139px;padding:8px 16px 0}.hand-heading{margin-bottom:14px;min-height:28px}.self-info{font-size:9px;gap:6px}.self-info strong{font-size:11px}.mini-avatar{width:25px;height:25px;font-size:12px}.hand-row{height:85px;--step:min(58px, calc((100% - 52px)/max(1, var(--count) - 1)) )}.hand .card-face{width:52px;height:76px}.hand .card-corner{left:4px;top:4px}.hand .card-corner b{font-size:19px}.hand .card-corner>span{font-size:12px}.hand .card-center{font-size:26px}.hand .card-bottom{font-size:8px}.hand .card-badge{font-size:8px;right:3px;top:5px;padding:2px}.action-bar>button{padding:6px 12px;font-size:10px;min-width:48px}.action-bar .play-button{min-width:80px}.game-footer{height:22px;font-size:8px}.marker-options{max-height:90px}.marker-options .card-face.small{width:35px;height:49px}.marker-options .card-corner b{font-size:13px}.marker-options .card-corner>span{font-size:10px}.marker-options .card-center{font-size:18px}.empty-hand{top:90px;font-size:11px}.modal{padding:20px;max-height:92dvh}.modal h2{font-size:23px}}.hand .card-badge{inset:auto auto 18px 5px}.invite-url{width:100%;border:1px solid #d9dfcf;border-radius:8px;background:#f1f3e9;color:#315843;padding:12px;font-size:12px}@media(max-height:600px)and (orientation:landscape){.game-shell{height:100dvh;min-height:0}.game-table{min-height:140px}.hand-dock{min-height:0;flex:0 0 auto}}@media(max-height:360px)and (orientation:landscape){.game-header{height:36px}.hand-dock{padding-top:6px}.hand-heading{min-height:26px;margin-bottom:10px}.hand-row{height:71px}.hand .card-face{height:64px}.hand .card-corner b{font-size:17px}.game-footer{height:18px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.card-face.joker .joker-label{writing-mode:vertical-rl;text-orientation:upright;font-family:Arial,sans-serif;font-size:11px!important;line-height:1;letter-spacing:0}.hand .card-face.joker .joker-label{font-size:14px!important}.card-face.joker.small .joker-label{font-size:9px!important}@media(max-width:700px)and (orientation:portrait),(max-height:600px)and (orientation:landscape){.hand .card-face.joker .joker-label{font-size:10px!important}}.hand-dock{padding-bottom:36px;min-height:248px;border-top:2px solid #75957840}.hand-heading{min-height:54px;margin-bottom:24px;flex-wrap:wrap}.action-bar>button{min-height:50px;min-width:80px;padding:12px 22px;font-size:17px;font-weight:700}.action-bar .play-button{min-width:130px;font-size:20px}.action-bar .surrender{min-height:44px;font-size:13px!important}.hand-row{height:132px;--hand-card-width:82px;--step:min(86px,calc((100% - var(--hand-card-width)) / max(1, var(--count) - 1)))}.hand-card{left:calc(50% - var(--hand-card-width) / 2 + (var(--i) - (var(--count) - 1) / 2) * var(--step))}.hand .card-face{width:82px;height:126px}.hand .card-corner b{font-size:27px}.hand .card-corner>span{font-size:20px}.hand .card-center{font-size:42px}.hand .card-badge{bottom:23px;font-size:12px}.hand-card.raised{top:-20px}.hand-dock.my-turn{border-top:3px solid #efd18b;background:linear-gradient(#2f6248,#153d31);box-shadow:inset 0 8px 28px #e9c57318}.self-turn-label{color:#ffe5a5!important;background:#8e6a2490;padding:7px 11px;border:1px solid #e5c373;border-radius:7px;white-space:nowrap}.opponent.active{padding:8px 10px;margin:-8px -10px;border-radius:12px;background:#bf9c3d42;box-shadow:0 0 0 2px #f2d28c,0 0 25px #e6bf5b55}.opponent.active .avatar{outline:3px solid #f5d78c;outline-offset:3px}.seat-turn{position:absolute;left:50%;top:-33px;transform:translate(-50%);white-space:nowrap;background:#f1d08a;color:#493817;font-size:14px;font-weight:800;padding:5px 12px;border-radius:6px;box-shadow:0 3px 12px #0003}.opponent.top .seat-turn{top:0;left:calc(100% + 14px);transform:none}.turn-status{font-size:17px;padding:12px 22px;border:1px solid #b9c2a350;font-weight:600;white-space:normal;line-height:1.6}.turn-status.mine{background:#ecd18a;color:#3b3c1d;border-color:#fff0ba;box-shadow:0 0 24px #d6bc5833}.trick-center{top:52%;width:38%}.finish-badge{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-family:SimSun,serif;font-size:27px;font-weight:900;letter-spacing:3px;border:2px solid #f2d28c;background:linear-gradient(135deg,#f5df9c,#c7a45d);color:#624010;border-radius:9px;padding:7px 13px;box-shadow:0 4px 12px #0003}.finish-badge.place-2{background:linear-gradient(135deg,#e8ede5,#a6c5ae);border-color:#dcead9;color:#315b40}.finish-badge.place-3{background:linear-gradient(135deg,#e9cfb0,#c59877);border-color:#edd9bb;color:#6f4528}.finish-badge.place-4{background:linear-gradient(135deg,#ccd6d9,#96adb2);border-color:#dbe4e7;color:#3a535e}.finish-badge.compact{font-size:18px;letter-spacing:1px;padding:4px 8px;border-width:1px;border-radius:5px;box-shadow:none;vertical-align:middle}.seat-finish{position:absolute;left:50%;top:-43px;transform:translate(-50%)}.top .seat-finish{top:0;left:calc(100% + 16px);transform:none}.seat-play{display:flex;align-items:flex-start;justify-content:center;isolation:isolate}.seat-play .card-face.small{width:64px;height:90px;flex-shrink:0}.seat-play .card-corner b{font-size:23px}.seat-play .card-corner>span{font-size:17px}.seat-play .card-center{font-size:30px;display:block}.seat-play .card-bottom,.seat-play .card-badge{font-size:10px}.seat-play .joker .card-corner b,.seat-play .joker .card-corner>span{font-size:15px}.seat-play .card-face+.card-face{margin-left:-33px}.winning-play{filter:drop-shadow(0 0 5px #f1d07a75)}.self-play{position:absolute;left:50%;bottom:30px;transform:translate(-50%);z-index:2}.opponent.top .opponent-play{top:72px}.opponent.left .opponent-play,.opponent.right .opponent-play{top:82px;max-width:none;overflow:visible}.pass-label{font-size:22px;font-weight:700;color:#d4dcc0;background:#10372f55;padding:7px 12px;border-radius:6px}.result-modal,.history-modal{width:960px}.result-modal .result-score strong{font-size:42px}.result-modal .result-score{margin:12px 0}.original-hands{text-align:left;margin-top:24px;border-top:1px solid #d9decb;padding-top:20px}.original-hands>header{display:flex;align-items:baseline;gap:10px;justify-content:space-between;margin-bottom:15px;flex-wrap:wrap}.original-hands h3{margin:0;color:#304f38;font-size:17px}.original-hands>header>span{font-size:11px;color:#7c8a70}.original-player{background:#edf1e4;border:1px solid #dce2cf;border-radius:10px;padding:14px;margin:12px 0}.original-player-heading{display:flex;gap:10px;align-items:center;margin-bottom:12px;font-size:14px}.original-player-heading strong{font-size:15px}.original-xi{margin-left:auto;font-size:11px;color:#6a7d57}.original-unranked{font-size:11px;color:#8a927e}.original-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(39px,1fr));gap:6px 3px}.original-card-grid .card-face.small{width:100%;height:67px;min-width:39px;max-width:50px}.original-card-grid .card-corner b{font-size:18px}.original-card-grid .card-corner>span{font-size:13px}.original-card-grid .card-center{font-size:23px}.original-card-grid .card-badge{inset:auto auto 14px 3px}.original-card-grid .joker .card-corner b,.original-card-grid .joker .card-corner>span{font-size:13px}.missing-original{padding:16px;font-size:12px;color:#7e8b74;background:#f0f1e9;border-radius:8px}.history-original{margin-top:12px;font-size:12px}.history-original summary{cursor:pointer;color:#476a4b;padding:7px 0}.result-controls{position:sticky;bottom:-32px;background:#fcfaf1f5;backdrop-filter:blur(7px);border-top:1px solid #dbe0ce;margin:18px -8px -20px;padding:2px 8px 12px;z-index:3}.result-controls>.muted{font-size:11px;margin:5px 0}.result-controls>.text-button{font-size:11px;color:#88947a}.result-controls .primary,.result-controls .secondary{min-height:46px;font-size:15px}@media(max-width:1050px){.hand-heading{gap:8px}.action-bar{margin-left:auto;gap:7px}.action-bar>button{padding:10px 18px;min-width:70px;font-size:16px}.action-bar .play-button{min-width:110px;font-size:18px}.seat-play .card-face.small{width:59px;height:83px}.seat-play .card-face+.card-face{margin-left:-31px}.seat-play .card-corner b{font-size:21px}.seat-play .card-corner>span{font-size:16px}.turn-status{font-size:15px;padding:10px 15px}}@media(max-width:700px)and (orientation:portrait){.game-table{min-height:420px}.opponent.left,.opponent.right{top:31%}.opponent.top{top:18px}.opponent.active{padding:6px;margin:-6px;box-shadow:0 0 0 2px #f2d28c,0 0 17px #e6bf5b55}.seat-turn{font-size:11px;top:-28px;padding:5px 8px}.opponent.top .seat-turn{left:calc(100% + 7px);top:3px;padding:4px 6px;font-size:10px}.seat-finish{top:-38px;font-size:22px;padding:4px 9px;letter-spacing:2px}.top .seat-finish{left:calc(100% + 8px);top:0}.trick-center{top:44%;width:51%}.turn-status{font-size:13px;padding:8px 10px}.new-trick{font-size:11px;margin-top:12px}.seat-play .card-face.small{width:48px;height:66px}.seat-play .card-corner b{font-size:18px}.seat-play .card-corner>span{font-size:13px}.seat-play .card-center{font-size:23px}.seat-play .card-bottom,.seat-play .card-badge{font-size:8px}.seat-play .card-face+.card-face{margin-left:-26px}.opponent.top .opponent-play{top:65px}.opponent.left .opponent-play,.opponent.right .opponent-play{top:100px;display:grid;grid-template-columns:repeat(4,28px);gap:4px 0;left:0;right:auto;transform:none;width:132px;max-width:none;justify-content:start}.opponent.right .opponent-play{left:auto;right:0}.opponent.left .opponent-play .card-face,.opponent.right .opponent-play .card-face{margin:0}.self-play{bottom:24px}.pass-label{font-size:17px;padding:5px 8px}.hand-dock{padding:10px 12px 24px;min-height:0}.hand-heading{flex-wrap:nowrap;min-height:0;gap:9px;margin-bottom:20px}.self-info{min-height:28px;flex-wrap:wrap;gap:6px}.self-turn-label{font-size:11px!important;padding:4px 6px;margin-left:auto}.action-bar{margin:0;gap:6px;justify-content:flex-end;flex-wrap:wrap}.action-bar>button{min-height:46px;min-width:61px;padding:10px 12px;font-size:16px}.action-bar .play-button{min-width:103px;font-size:18px}.action-bar .surrender{min-width:40px;font-size:11px!important;padding:5px!important}.hand-row{height:90px;--hand-card-width:52px;--step:min(56px,calc((100% - var(--hand-card-width)) / max(1, var(--count) - 1)))}.hand .card-face{width:52px;height:80px}.hand .card-corner b{font-size:20px}.hand .card-corner>span{font-size:15px}.hand .card-center{font-size:28px}.hand .card-badge{bottom:19px;font-size:10px}.hand-card.raised{top:-14px}.finish-badge.compact{font-size:15px;padding:3px 5px}.result-modal,.history-modal{padding:22px 12px}.result-modal table{font-size:10px}.result-modal td:first-child .finish-badge{display:flex;width:fit-content;margin-top:4px}.original-hands{padding-top:15px;margin-top:18px}.original-hands h3{font-size:15px}.original-hands>header>span{font-size:10px}.original-player{padding:10px 8px}.original-player-heading{gap:7px;font-size:12px}.original-player-heading strong{font-size:13px}.original-xi{font-size:9px}.original-card-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px 3px}.original-card-grid .card-face.small{height:62px;min-width:0;max-width:none}.original-card-grid .card-corner b{font-size:16px}.original-card-grid .card-corner>span{font-size:12px}.original-card-grid .card-center{font-size:20px}.original-card-grid .card-bottom{font-size:7px}.original-player .finish-badge.compact{font-size:16px}.result-controls{bottom:-22px;margin-left:0;margin-right:0;padding-bottom:13px}}@media(max-height:600px)and (orientation:landscape){.game-table{min-height:145px}.hand-dock{padding:6px 16px 14px;min-height:0}.hand-heading{min-height:44px;margin-bottom:13px;flex-wrap:nowrap;gap:7px}.self-info{gap:5px;font-size:10px;flex-wrap:wrap;max-width:40%}.self-info strong{font-size:12px}.self-turn-label{padding:3px 6px;font-size:11px!important}.action-bar{gap:6px;margin-left:auto}.action-bar>button{min-height:44px;min-width:60px;padding:8px 13px;font-size:16px}.action-bar .play-button{min-width:96px;font-size:18px}.action-bar .surrender{min-width:36px;font-size:10px!important;padding:3px!important}.hand-row{height:94px;--hand-card-width:57px;--step:min(62px,calc((100% - var(--hand-card-width)) / max(1, var(--count) - 1)))}.hand .card-face{width:57px;height:88px}.hand .card-corner b{font-size:20px}.hand .card-corner>span{font-size:15px}.hand .card-center{font-size:29px}.hand .card-badge{font-size:10px;bottom:19px}.hand-card.raised{top:-13px}.opponent.top{top:9px}.opponent.left,.opponent.right{top:38%}.opponent.active{padding:5px;margin:-5px}.seat-turn{font-size:11px;padding:4px 7px;top:-27px}.opponent.top .seat-turn{left:auto;right:calc(100% + 12px);top:0;transform:none}.seat-play .card-face.small{width:50px;height:70px}.seat-play .card-corner b{font-size:18px}.seat-play .card-corner>span{font-size:13px}.seat-play .card-center{font-size:24px}.seat-play .card-bottom,.seat-play .card-badge{font-size:8px}.seat-play .card-face+.card-face{margin-left:-37px}.opponent.top .opponent-play{top:0;left:calc(100% + 14px);transform:none}.opponent.left .opponent-play{top:0;left:calc(100% + 12px);right:auto;transform:none}.opponent.right .opponent-play{top:0;right:calc(100% + 12px);left:auto;transform:none}.self-play{bottom:8px}.trick-center{top:12px;transform:translate(-50%);width:28%;display:none}.pass-label{font-size:16px;padding:5px 8px}.seat-finish{font-size:21px;top:-34px;padding:4px 8px}.top .seat-finish{top:0;left:auto;right:calc(100% + 12px);transform:none}.finish-badge.compact{font-size:16px;padding:3px 6px}.table-bottom-note{bottom:5px}.result-modal{padding:20px 26px}.original-player{padding:10px}.original-card-grid{grid-template-columns:repeat(auto-fit,minmax(37px,1fr))}.original-card-grid .card-face.small{height:61px}.result-controls{bottom:-20px;padding-bottom:8px}.result-controls>.text-button{display:none}}@media(max-height:360px)and (orientation:landscape){.hand-row{height:82px}.hand .card-face{height:78px}.hand-dock{padding-bottom:8px}.hand-heading{margin-bottom:10px}.game-table{min-height:130px}.self-info .role-label,.self-info>span:not(.mini-avatar):not(.finish-badge){display:none}.seat-play .card-face.small{height:61px;width:45px}.seat-play .card-face+.card-face{margin-left:-33px}.seat-play .card-corner b{font-size:16px}.self-play{bottom:5px}}
