:root{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#213c34;background:#f5f3eb;font-synthesis:none;--green: #204b3e;--gold: #d7b66e;--muted: #829088;--border: #dce1d7;--count: 18}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.4}button,a,input{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #c99538;outline-offset:4px}input:focus{outline:2px solid #5d8c71;outline-offset:2px}button{border:0;background:none;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h2{font-size:26px;font-weight:600;letter-spacing:1px}h3{font-size:15px}p{line-height:1.8}.app-shell{max-width:1600px;margin:auto;padding:0 5%}.topbar{height:104px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:13px;font-size:24px;font-weight:700;letter-spacing:3px}.brand-mark{width:44px;height:50px;background:var(--green);color:#f8f3df;border-radius:10px;display:grid;place-items:center;font-size:32px;transform:rotate(-5deg)}.brand small{display:block;font-size:10px;letter-spacing:2px;font-weight:400;margin-top:5px;color:#718378}.header-right{display:flex;align-items:center;gap:32px}.live-status{font-size:12px;color:#77887d;display:flex;align-items:center;gap:8px}.live-status i,.pulse-dot{width:6px;height:6px;background:#619978;border-radius:50%;display:inline-block}.live-status .offline{background:#b88039}.text-button{padding:10px 0;font-size:13px}.text-button span{margin-left:12px}.landing{display:grid;grid-template-columns:1fr 440px;gap:10%;padding:62px 0 30px;min-height:700px}.eyebrow{font-size:11px;letter-spacing:3px;color:#7d8c78;display:block;margin-bottom:18px}.intro{position:relative;min-height:570px}.intro h1{font-family:Georgia,Songti SC,SimSun,serif;font-size:66px;line-height:1.27;font-weight:500;letter-spacing:4px;margin:25px 0}.intro>p{font-size:15px;color:#7b877c;line-height:2}.intro-badges{display:flex;gap:18px;margin-top:25px;font-size:10px;letter-spacing:1px;color:#5b7868}.intro-badges span:before{content:"✦";margin-right:7px;font-size:8px;color:#b7a06a}.hero-art{position:absolute;bottom:0;right:5%;height:260px;width:310px}.hero-ring{position:absolute;border:1px solid #d5decf;border-radius:50%;width:290px;height:290px;left:5px;top:-25px}.hero-ring:after{content:"";position:absolute;inset:13px;border:1px dashed #dbe1d5;border-radius:50%}.art-card{width:105px;height:158px;position:absolute;background:#fffdf6;border-radius:10px;box-shadow:0 12px 30px #20392c14;border:1px solid #e8e5d7;font-family:Georgia,serif;color:#b94b40;font-size:36px;padding:12px 15px}.art-card span{display:block;font-size:55px;text-align:center;margin-top:12px}.art-card.a{left:25px;top:40px;transform:rotate(-22deg)}.art-card.b{left:95px;top:18px;transform:rotate(-4deg)}.art-card.c{left:164px;top:37px;transform:rotate(17deg)}.art-caption{position:absolute;bottom:0;left:55px;font-size:10px;letter-spacing:4px;color:#9b9d88}.entry-panel{background:#fffef8;border:1px solid #e1e4d9;border-radius:18px;padding:34px;box-shadow:0 18px 45px #30453605}.panel-heading .eyebrow{margin-bottom:12px}.panel-heading h2{font-size:23px}.panel-heading p{color:#8a9487;font-size:12px;margin-top:10px;margin-bottom:26px}.input-label{font-size:12px;display:block}input:not([type=checkbox]){display:block;width:100%;padding:13px 15px;border:1px solid var(--border);border-radius:8px;background:#fbfcf6;color:#213c34;margin-top:9px;font-size:14px}input::placeholder{color:#a4ad9f}.config-fields>label,.config-fields>.config-field{display:block;font-size:12px;margin:22px 0}.segmented{display:flex;gap:8px;margin-top:10px}.segmented button{flex:1;padding:11px;border:1px solid var(--border);border-radius:7px;font-size:13px;color:#748475}.segmented .chosen{color:var(--green);background:#edf3e8;border-color:#9dae96;font-weight:600}.config-fields .switch-row{display:flex;align-items:center;justify-content:space-between}.switch-row small{display:block;font-size:10px;color:#89927f;margin-top:6px}input[type=checkbox]{width:34px;height:20px;accent-color:var(--green);cursor:pointer}.primary,.secondary{padding:13px 22px;border-radius:8px;font-size:13px;font-weight:600;white-space:nowrap}.primary{background:var(--green);color:#f7f4e5;box-shadow:0 3px 10px #18352912}.primary:hover:not(:disabled){background:#2d624b}.secondary{background:#f4f5ed;border:1px solid #dce3d3}.secondary:hover:not(:disabled){background:#e8eddf}.wide{width:100%}.entry-panel>.primary{display:flex;justify-content:space-between;margin-top:26px}.join-divider{display:flex;align-items:center;gap:12px;color:#949b8c;font-size:10px;margin:26px 0 16px}.join-divider:before,.join-divider:after{content:"";height:1px;flex:1;background:#e8eadf}.join-row{display:flex;gap:10px}.join-row input{margin:0;width:55%;text-transform:uppercase;letter-spacing:2px}.join-row button{padding:13px 15px;flex:1}.error{color:#a94636;font-size:12px;background:#f9e9e0;border:1px solid #efd2c4;border-radius:7px;padding:10px 14px;margin-top:16px}.room-error{margin:0 0 15px}footer{padding:28px 0 20px;border-top:1px solid var(--border);font-family:Georgia,serif;font-size:13px;letter-spacing:5px;color:#7b8779;display:flex;justify-content:space-between}footer span{letter-spacing:2px;font-size:10px}.room-heading{padding:25px 0;display:flex;align-items:center;justify-content:space-between}.room-heading .eyebrow{margin-bottom:8px;letter-spacing:2px}.room-heading h2{font-size:22px}.room-code{font-family:system-ui;font-size:11px;letter-spacing:2px;margin-left:18px;border:1px solid #dce3d3;padding:7px 12px;border-radius:6px;vertical-align:middle;cursor:pointer}.room-code button{font-size:16px;padding:0;margin-left:6px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:24px}.felt-table{min-height:350px;position:relative;border-radius:28px;background:radial-gradient(ellipse at center,#2d6552,#164438);box-shadow:inset 0 0 0 8px #163f332f,inset 0 0 0 10px #74977325,0 15px 30px #223e3012;border:8px solid #b3ae92;padding:24px 25px 18px;color:#ebf0dc;overflow:hidden}.felt-table:before{content:"";position:absolute;inset:18px;border:1px dashed #98b39726;border-radius:18px;pointer-events:none}.felt-decoration{position:absolute;left:50%;top:57%;transform:translate(-50%,-50%);font-family:Songti SC,serif;font-size:60px;letter-spacing:6px;opacity:.035;white-space:nowrap;pointer-events:none}.felt-decoration span{display:block;font-size:12px;text-align:center;letter-spacing:10px}.opponents{position:relative;display:flex;justify-content:space-around;gap:14px;z-index:1}.player-seat{display:flex;align-items:center;gap:10px;background:#123c3080;padding:9px 12px;border:1px solid #799a723b;border-radius:12px;min-width:0}.player-seat.active{border-color:#d5c283;background:#244e3b;box-shadow:0 0 22px #e9d99816}.avatar{width:37px;height:37px;flex-shrink:0;position:relative;border-radius:50%;background:#d0d9b7;color:#365341;display:grid;place-items:center;font-family:Songti SC,serif;font-size:18px}.thinking{position:absolute;right:-2px;bottom:0;width:9px;height:9px;background:#d9b969;border:2px solid #294d38;border-radius:50%;animation:pulse 1s infinite}.player-seat strong{font-size:12px;font-weight:500;white-space:nowrap;max-width:110px;overflow:hidden;text-overflow:ellipsis;display:block}.player-seat p{font-size:10px;color:#bbccb4;white-space:nowrap}.seat-status{font-size:9px;color:#94b29b}.mini-deck{position:relative;margin-left:3px;width:22px;height:31px;background:repeating-linear-gradient(45deg,#517665,#517665 2px,#38604c 2px 5px);border:1px solid #bac7a5;border-radius:3px;font-size:10px;display:grid;place-items:center;box-shadow:2px 2px #50715d,4px 4px #79917c;flex-shrink:0}.mini-deck span{background:#284f3b;border-radius:4px;padding:0 3px}.table-center{min-height:226px;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column}.turn-label{margin:24px 0 12px;display:flex;align-items:center;gap:9px;font-size:11px;color:#d4ddbf}.pulse-dot{background:#d6c287}.countdown{font-variant-numeric:tabular-nums;color:#c7c69a;font-size:10px;margin-left:6px;padding:2px 6px;border:1px solid #aab88940;border-radius:4px}.last-play{max-width:100%;text-align:center}.play-caption{display:block;color:#aec4ac;font-size:10px;margin-bottom:12px}.played-cards{display:flex;justify-content:center;flex-wrap:wrap;gap:4px;max-width:700px}.empty-table{text-align:center;color:#90b09b;font-size:12px;opacity:.7;margin:10px 0 20px}.empty-table>span{font-size:33px;opacity:.4;display:block;margin-bottom:8px}.trick-points{font-size:10px;background:#123c3080;border:1px solid #a9b28338;border-radius:20px;padding:6px 15px;margin-top:16px;color:#c3d4b5}.trick-points strong{font-size:13px;color:#f3d897;margin-left:5px}.trick-points small{margin-left:14px;color:#7fa08c}.drawn-card{display:flex;align-items:center;gap:12px;font-size:12px;margin-top:10px}.drawn-card .card.small{transform:rotate(-6deg)}.card{position:relative;flex-shrink:0;width:76px;height:112px;border-radius:8px;background:#fffdf5;color:#2e403b;border:1px solid #dcdccf;box-shadow:0 4px 8px #1532251a;padding:0;text-align:left;transition:transform .18s,box-shadow .18s,border-color .18s;-webkit-user-select:none;user-select:none}.card.red{color:#b7473c}.card.joker{color:#765da0}.card.joker:has(.joker-name){background:linear-gradient(145deg,#fffdf5,#f1eada)}.corner{position:absolute;left:7px;top:7px;display:flex;flex-direction:column;font-family:Georgia,serif;font-size:17px;line-height:1.1}.corner b{font-weight:600}.corner>span{font-size:14px;text-align:center}.corner.bottom{inset:auto 7px 7px auto;transform:rotate(180deg)}.pip{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:35px}.joker-name{position:absolute;top:68%;left:50%;transform:translate(-50%);font-size:10px;white-space:nowrap;letter-spacing:1px}.card.small{width:48px;height:70px;border-radius:5px}.card.small .corner{font-size:12px;left:4px;top:4px}.card.small .corner>span{font-size:10px}.card.small .corner.bottom{inset:auto 4px 4px auto}.card.small .pip{font-size:22px}.card.small .joker-name{font-size:8px}.hand-dock{background:#fffdf6;border:1px solid #e0e3d7;border-radius:16px;padding:20px 24px;margin-top:18px}.hand-title{display:flex;justify-content:space-between;align-items:center;font-size:13px}.hand-title small{font-size:10px;color:#929b88;margin-left:14px}.my-score{font-size:10px;color:#899681}.my-score b{font-size:14px;color:#456746;margin-left:6px}.hand-fan{display:flex;justify-content:center;padding:30px 4px 12px;min-height:150px;max-width:100%}.hand-fan:not(.pool) .card{width:clamp(40px,calc((100% - 76px)/max(1,var(--count) - 1) + 28px),76px);margin-right:-28px}.hand-fan .card:hover:not(:disabled){transform:translateY(-8px);z-index:2}.hand-fan .card.selected{transform:translateY(-16px);border-color:#7a9564;box-shadow:0 0 0 2px #8fa86e,0 5px 18px #52674120;z-index:1}.hand-fan .card:disabled{opacity:1}.action-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;border-top:1px solid #e9ebdf;margin-top:9px;padding-top:15px}.selection-count{margin-right:auto;font-size:10px;color:#939b85}.action-bar>.text-button{padding:10px;margin-right:6px;color:#6c8064}.room-sidebar{background:#eef0e5;border:1px solid #dce3d4;border-radius:16px;padding:23px 20px}.room-sidebar h3{font-size:13px;margin-bottom:20px;font-weight:600}.score-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #dce3d4;font-size:12px}.score-row small{display:block;font-size:9px;color:#8e9b85;margin-top:4px}.score-row strong{font-size:13px}.sidebar-rule{border-bottom:1px solid #dce3d4;padding:20px 0;margin-bottom:24px}.sidebar-rule b{font-size:11px;font-weight:500}.sidebar-rule p{font-size:9px;color:#7d8d75;margin-top:8px}.event-log{font-size:10px;color:#7b8a72;max-height:240px;overflow:auto}.event-log p{padding:6px 0;border-bottom:1px solid #e0e6d7;line-height:1.5}.privacy-note{font-size:9px;color:#929d85;display:block;margin-top:22px}.waiting-layout{display:grid;grid-template-columns:1fr 300px;gap:28px}.waiting-table{border:1px solid #d4ded0;border-radius:24px;background:#edf1e4;padding:48px 34px;text-align:center;min-height:440px}.waiting-table h2{margin-bottom:15px}.waiting-table>p{font-size:13px;color:#829077}.waiting-seats{display:flex;justify-content:center;gap:30px;margin:45px 0}.waiting-seat{display:flex;align-items:center;flex-direction:column;gap:10px;font-size:12px;min-width:70px}.waiting-seat .avatar{height:50px;width:50px;background:#d4dfc6}.waiting-seat small{font-size:10px;color:#8a987f}.muted{font-size:11px;color:#89967f;line-height:1.8}.modal-backdrop{position:fixed;inset:0;z-index:20;background:#0b2c258a;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:25px;overflow:auto}.dialog{position:relative;background:#fffdf6;border:1px solid #e6e6d7;border-radius:20px;padding:34px;max-width:740px;width:100%;max-height:calc(100dvh - 50px);overflow:auto;box-shadow:0 25px 90px #0c221d40}.dialog.compact{max-width:440px}.dialog .eyebrow{margin-bottom:12px}.dialog>p{font-size:12px;color:#839075;margin:16px 0 20px}.dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:24px;font-size:12px}.dialog-actions small{color:#9fa588;margin-left:10px}.bapi-dialog{max-width:1050px}.hand-fan.pool{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:12px;justify-items:center;padding:24px 4px 12px}.hand-fan.pool .card{width:60px;height:88px}.hand-fan.pool .pip{font-size:26px}.hand-fan.pool .corner{font-size:14px}.hand-fan.pool .corner>span{font-size:11px}.result-table{width:100%;border-collapse:collapse;margin-top:25px;font-size:13px;text-align:right}.result-table th{font-weight:400;font-size:10px;color:#8b987e;padding:10px}.result-table td{padding:14px 10px;border-top:1px solid #e3e8d9}.result-table th:first-child,.result-table td:first-child{text-align:left}.result-table td:first-child span{display:inline-grid;place-items:center;width:23px;height:23px;background:#edf1e2;border-radius:50%;font-size:10px;margin-right:12px}.result-table .winner{background:#f1f2df;color:#536537}.settle-dialog h2>span{color:#c5a760}.dialog details{padding:15px;border:1px solid #dce3d4;border-radius:8px;margin-top:20px;font-size:12px}.dialog details summary{cursor:pointer;color:#748269}.close-dialog{position:absolute;right:20px;top:15px;font-size:28px;color:#7d8d75;width:30px;height:30px}.rules-dialog h3{margin-top:22px}.rules-dialog p{line-height:1.9}.rules-dialog .primary{margin-top:15px}.loading{text-align:center;padding:120px 30px}.loading h2{font-size:18px;margin:20px}.spinner{width:25px;height:25px;border:2px solid #d8dfcf;border-top-color:#416548;border-radius:50%;margin:auto;animation:spin 1s linear infinite}.played-enter-active{transition:transform .3s,opacity .3s}.played-enter-from{opacity:0;transform:translateY(-20px) rotate(-10deg)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.4}}@media(min-width:1450px){.landing{padding:75px 6% 50px}.felt-table{min-height:430px}.table-center{min-height:300px}.hero-art{right:8%;bottom:0}.intro h1{font-size:76px}}@media(max-width:1100px){.app-shell{padding:0 3%}.landing{gap:6%;grid-template-columns:1fr 400px}.intro h1{font-size:56px}.hero-art{transform:scale(.85);transform-origin:bottom right;right:0}.game-layout{grid-template-columns:minmax(0,1fr) 190px;gap:15px}.room-sidebar{padding:20px 15px}.felt-table{padding:20px 12px}.player-seat{padding:8px;gap:6px}.player-seat .avatar{width:30px;height:30px;font-size:15px}.mini-deck,.player-seat p span{display:none}.hand-dock{padding:18px}.hand-fan:not(.pool) .card{margin-right:-34px}.hand-fan:not(.pool) .card:last-child{margin-right:0}}@media(max-width:800px){.topbar{height:80px}.brand{font-size:20px}.brand-mark{width:34px;height:42px;font-size:27px}.header-right{gap:16px}.live-status{display:none}.landing{grid-template-columns:1fr;padding:34px 4%}.intro{min-height:280px}.intro h1{font-size:44px;margin:18px 0}.intro .eyebrow{margin-bottom:10px}.intro>p{font-size:12px}.intro-badges{gap:10px;font-size:9px;margin-top:16px}.hero-art{right:-5px;bottom:40px;transform:scale(.58)}.entry-panel{padding:27px;margin-top:30px}.game-layout{grid-template-columns:1fr}.game-sidebar{display:none}.felt-table{min-height:310px;border-width:5px;border-radius:22px}.player-seat{gap:7px}.player-seat strong{max-width:85px;font-size:11px}.player-seat p{font-size:9px}.seat-status{font-size:8px}.table-center{min-height:220px}.room-heading{padding:20px 0}.room-heading h2{font-size:18px}.room-heading .eyebrow{font-size:9px;letter-spacing:1px}.room-code{font-size:9px;margin-left:6px;padding:5px;letter-spacing:1px}.room-code button{font-size:13px}.hand-dock{padding:15px 10px;margin-top:12px}.card{height:95px;width:65px}.hand-fan:not(.pool) .card{width:clamp(35px,calc((100% - 65px)/max(1,var(--count) - 1) + 35px),65px);margin-right:-35px}.hand-fan .corner.bottom{display:none}.hand-fan:not(.pool) .pip{font-size:26px;left:64%}.hand-fan:not(.pool) .corner{left:5px;font-size:16px}.hand-fan{min-height:135px;padding-top:30px}.action-bar{gap:9px}.action-bar .primary,.action-bar .secondary{padding:11px 20px}.selection-count{font-size:9px}.hand-title small{margin-left:8px;font-size:9px}.waiting-layout{grid-template-columns:1fr}.waiting-table{padding:32px 12px;min-height:350px}.waiting-seats{gap:14px}.waiting-seat{min-width:60px}.modal-backdrop{padding:15px}.dialog{padding:25px;max-height:calc(100dvh - 30px)}.dialog h2{font-size:23px}.hand-fan.pool{gap:12px 8px}.result-table{font-size:11px}.result-table td,.result-table th{padding:12px 5px}.result-table td:first-child span{margin-right:5px}.dialog-actions{gap:8px}.dialog-actions>.primary,.dialog-actions>.secondary{padding:12px 16px}footer{font-size:11px;margin-top:20px}}@media(max-width:420px){.hero-art{transform:scale(.45);right:-20px;bottom:60px}.intro h1{font-size:40px}.intro-badges{gap:7px;letter-spacing:0}.player-seat .avatar{display:none}.opponents{gap:5px}.player-seat{min-width:85px;justify-content:center}.hand-title b{font-size:11px}.hand-fan:not(.pool) .card{margin-right:-39px;width:clamp(34px,calc((100% - 60px)/max(1,var(--count) - 1) + 39px),60px)}.hand-fan:not(.pool) .pip{display:none}.action-bar .text-button{margin:0;padding:8px}.selection-count{max-width:90px}.room-heading>.text-button{font-size:11px}.hand-fan.pool .card{width:52px;height:80px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.collection-layer{position:absolute;inset:0;pointer-events:none;z-index:3;display:flex;align-items:center;justify-content:center}.collection-toast{position:absolute;padding:12px 20px;border-radius:24px;background:#f6edc8;color:#47623a;font-size:12px;box-shadow:0 5px 24px #102e2830;animation:collect-points 1.6s ease-out forwards}.collection-toast b{margin-left:8px;color:#9c7737}@keyframes collect-points{0%{opacity:0;transform:translateY(20px) scale(.85)}18%,48%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-95px) scale(.8)}}@media(prefers-reduced-motion:reduce){.collection-layer{display:none}}html:has(.in-game),body:has(.in-game),#app:has(.in-game){overflow:hidden;overscroll-behavior:none;background:#153e39}.in-game{position:fixed;inset:0;width:100%;overflow:hidden;--card-width: 78px;--card-height: 112px;--dock-height: calc(var(--card-height) + 94px);max-width:none;padding:0;height:var(--table-height, 100dvh);color:#f2efda;background:radial-gradient(ellipse at 50% 40%,#38776b,#21564d 52%,#143b37)}.in-game .room-page{height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.game-toolbar{min-height:48px;flex-shrink:0;display:flex;align-items:center;gap:16px;padding:0 22px;background:#123d3880;border-bottom:1px solid #ffffff0e;font-size:12px;z-index:5}.table-brand{color:#f4d889;font-size:18px;font-weight:700;white-space:nowrap}.table-code{padding:8px 10px;letter-spacing:2px;border-radius:6px;background:#ffffff0a;font-variant-numeric:tabular-nums}.table-code span{color:#bcd6c6}.table-mode{color:#c6daca;white-space:nowrap}.table-connection{color:#a7c5a4;margin-left:auto;white-space:nowrap}.table-connection.offline{color:#ffd27c}.table-tools{display:flex;gap:4px}.table-tools button{min-height:44px;min-width:44px;color:#d4e3d7;border-radius:6px}.table-tools button:hover{background:#ffffff10}.audio-setting{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:18px 0;font-size:14px}.audio-setting small{display:block;font-size:11px;color:#829080;margin-top:4px}.audio-switch{min-height:40px;min-width:64px;padding:8px 14px;border-radius:20px;background:#e1e7db;color:#6d7b65;font-size:12px}.audio-switch[aria-checked=true]{background:#265b47;color:#fff5cf}.audio-volume{display:block;font-size:12px;margin:12px 0 22px}.audio-volume b{float:right;font-variant-numeric:tabular-nums}.audio-dialog input[type=range]{width:100%;min-height:36px;padding:0;margin-top:6px;border:0;background:none;accent-color:#34634b}.audio-dialog>.wide{min-height:44px;margin-top:8px}.in-game .game-layout{display:block;flex:1;min-height:0}.in-game .play-area{height:100%;position:relative}.in-game .felt-table{position:absolute;inset:0 0 var(--dock-height);min-height:0;border:0;border-radius:0;padding:0;background:none;box-shadow:none;overflow:visible}.in-game .felt-table:before{inset:18px 14%;border:1px solid #a0ceb514;border-radius:50%}.in-game .felt-decoration{top:50%;opacity:.08;font-size:66px}.in-game .opponents{position:absolute;inset:0;display:block;pointer-events:none}.in-game .player-seat{position:absolute;min-width:0;gap:8px;padding:10px;border-radius:12px;background:#103b365c;pointer-events:auto;width:132px;flex-wrap:wrap;justify-content:center;text-align:center}.in-game .player-seat.active{background:#315c4680;border-color:#efd283;box-shadow:0 0 0 2px #edd28a18,0 0 22px #efd88e18}.in-game .player-seat.seat-left{left:22px;top:38%;transform:translateY(-50%)}.in-game .player-seat.seat-right{right:22px;top:38%;transform:translateY(-50%)}.in-game .player-seat.seat-top{top:10px;left:50%;transform:translate(-50%);width:auto;min-width:160px;flex-wrap:nowrap;text-align:left}.in-game .player-seat .avatar{display:grid;width:44px;height:44px;font-size:23px;border-radius:13px;border:2px solid #d8e0bd;background:linear-gradient(145deg,#f2deb2,#b4c89c);box-shadow:0 3px 8px #072c3430}.in-game .player-seat strong{font-size:12px;max-width:96px;font-weight:600}.in-game .player-seat p{font-size:10px;color:#e0e9ce}.in-game .player-seat p span{display:inline}.in-game .seat-status{font-size:10px;color:#afc9b7}.in-game .mini-deck{display:none}.in-game .table-center{position:absolute;inset:84px 170px 40px;min-height:0;gap:8px}.in-game .players-3 .table-center{top:24px}.in-game .turn-label{position:absolute;bottom:6px;left:50%;transform:translate(-50%);margin:0;padding:7px 14px;border-radius:24px;background:#103a3440;color:#d1e0d0;white-space:nowrap;font-size:12px}.in-game .your-turn{color:#ffe29b;background:#193d3290}.in-game .countdown{font-size:15px;color:#ffe6a5;border:0;padding:0;margin-left:4px}.in-game .countdown.urgent{color:#ffb5a1}.in-game .trick-points{position:absolute;left:170px;top:15px;margin:0;padding:5px 10px;font-size:11px;background:#10362f70}.in-game .play-caption{font-size:11px;color:#d5e6d4;margin-bottom:8px}.in-game .played-cards{flex-wrap:nowrap;gap:0;width:100%;--played-width: 48px;--played-step: clamp( 10px, calc( (100vw - 380px - var(--played-width)) / max(1, var(--played-count) - 1) ), 38px )}.in-game .played-cards .card{width:var(--played-width);margin-right:calc(var(--played-step) - var(--played-width));z-index:auto}.in-game .played-cards .card:last-child{margin-right:0}.in-game .empty-table{margin:0;font-size:11px}.in-game .empty-table>span{font-size:36px;margin-bottom:3px}.in-game .drawn-card{margin:0}.in-game .hand-dock{position:absolute;inset:auto 0 0;height:var(--dock-height);margin:0;padding:0 30px;border:0;border-radius:0;background:linear-gradient(0deg,#0e302ba0,#0e302b30 65%,transparent);display:grid;grid-template-rows:48px minmax(0,1fr) 24px}.in-game .hand-title{grid-row:3;font-size:12px;padding:0 6px}.in-game .hand-title small{color:#b7caba;font-size:10px;margin-left:12px}.in-game .my-score{color:#bacfae;font-size:11px}.in-game .my-score b{color:#ffe39c;font-size:14px}.in-game .action-bar{grid-row:1;display:flex;align-items:center;justify-content:center;gap:10px;border:0;margin:0;padding:0}.in-game .selection-count{position:absolute;left:36px;margin:0;max-width:155px;color:#d3dfc3;font-size:11px}.in-game .selection-count small{display:block;font-size:10px;color:#a4c6b2;margin-top:3px}.in-game .action-bar button{min-height:40px;min-width:68px;padding:8px 22px;font-size:14px;border-radius:10px;margin:0;font-weight:600;touch-action:manipulation}.in-game .action-bar .primary{color:#62411c;background:linear-gradient(#ffe6a4,#e9b85c);box-shadow:0 3px #9f7935,inset 0 1px #fff5d3;min-width:100px}.in-game .action-bar .primary:hover:not(:disabled){background:#ffe09b}.in-game .action-bar .secondary,.in-game .action-bar .text-button{background:linear-gradient(#608c7d,#3a6c5d);border:1px solid #7fa58b;color:#eff2de;box-shadow:0 2px #193f34}.in-game .action-bar .clear-selection{min-width:44px;font-size:11px;padding:8px;color:#cadbca}.in-game .action-bar button:disabled{opacity:.42}.in-game .table-error{position:absolute;z-index:8;top:calc(54px + env(safe-area-inset-top));left:50%;transform:translate(-50%);margin:0;width:max-content;max-width:70vw;padding:7px 14px}.in-game .dialog{color:#213c34;max-height:calc(var(--table-height, 100dvh) - 50px)}.in-game .modal-backdrop{height:var(--table-height, 100dvh);overflow:hidden}.in-game .game-sidebar{display:block;max-width:460px;background:#fffdf6;padding:30px}.rotate-notice{display:none}.hand-fan:not(.pool){--card-width: 76px;--card-height: 112px;padding:22px 6px 0;min-height:calc(var(--card-height) + 22px);width:100%;display:flex;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none}.hand-row{display:flex;justify-content:center}.hand-fan:not(.pool) .card{width:var(--card-width);height:var(--card-height);margin-right:calc(var(--step) - var(--card-width));z-index:calc(var(--index) + 1);transition:transform .12s,box-shadow .12s;border-radius:7px;touch-action:none}.hand-fan:not(.pool) .card:last-child{margin-right:0}.hand-fan:not(.pool) .card:hover:not(:disabled){transform:none;z-index:calc(var(--index) + 1)}.hand-fan:not(.pool) .card.selected,.hand-fan:not(.pool) .card.selected:hover:not(:disabled){transform:translateY(-18px);border-color:#d9b557;box-shadow:inset 0 0 0 2px #e4c16d,0 4px 9px #142f352e;z-index:calc(var(--index) + 1)}.hand-fan:not(.pool).dragging .card{transition:none}.hand-fan:not(.pool) .corner{top:6px;left:4px;font-size:22px}.hand-fan:not(.pool) .corner>span{font-size:18px;text-align:left}.hand-fan:not(.pool) .corner.bottom{display:none}.hand-fan:not(.pool) .pip{display:block;font-size:30px;left:68%}.hand-fan:not(.pool) .joker .corner{font-family:inherit}.hand-fan:not(.pool) .joker-name{left:4px;top:42px;transform:none;font-size:13px;writing-mode:vertical-rl}.hand-fan.pool{display:block}.hand-fan.pool .hand-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:20px 10px;justify-items:center}.in-game .hand-fan:not(.pool){grid-row:2;--card-width: 78px;--card-height: 112px}.in-game .bapi-dialog .dialog-actions{position:sticky;bottom:-1px;padding:12px 0 4px;background:#fffdf6;z-index:10}.in-game .recent-play{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);width:105px;pointer-events:none;text-align:center;color:#c4d8c8}.recent-caption{display:block;font-size:9px;white-space:nowrap;margin-bottom:4px}.recent-current .recent-caption{color:#ffe39d}.recent-cards{display:flex;justify-content:center;align-items:center}.in-game .recent-cards .card.small{width:28px;height:40px;margin-right:-5px;opacity:.88}.in-game .recent-cards .card.small .corner{font-size:11px;left:3px;top:3px}.in-game .recent-cards .card.small .corner>span{font-size:9px}.in-game .recent-cards .card.small .pip,.in-game .recent-cards .card.small .corner.bottom,.in-game .recent-cards .card.small .joker-name{display:none}.recent-more{margin-left:10px;color:#e2e4c6;font-size:18px}.pass-bubble{display:inline-block;padding:3px 13px;border-radius:16px;background:#113e3359;color:#d7dfc9;font-size:14px}.in-game .seat-top .recent-play{left:calc(100% + 12px);top:0;transform:none}.in-game .my-recent{top:auto;left:25%;bottom:4px;transform:translate(-50%)}@media(min-height:650px){.in-game{--card-width: 90px;--card-height: 132px;--dock-height: 238px}.in-game .hand-fan:not(.pool){--card-width: 90px;--card-height: 132px}.in-game .table-center{inset:100px 180px 60px}}@media(max-height:500px)and (orientation:landscape){.in-game{--card-width: 68px;--card-height: 96px;--dock-height: 178px}.game-toolbar{min-height:42px;padding:0 14px;gap:12px;font-size:11px}.table-brand{font-size:16px}.table-tools{gap:0}.table-tools button{min-height:40px}.in-game .hand-fan:not(.pool){--card-width: 68px;--card-height: 96px}.in-game .hand-dock{grid-template-rows:44px minmax(0,1fr) 18px;padding:0 24px}.in-game .hand-fan:not(.pool){padding-top:20px;min-height:116px}.in-game .player-seat{width:108px;padding:7px;gap:4px}.in-game .player-seat.seat-left{left:16px;top:40%}.in-game .player-seat.seat-right{right:16px;top:40%}.in-game .player-seat.seat-top{top:5px;min-width:150px;gap:7px;padding:5px 10px}.in-game .player-seat .avatar{width:34px;height:34px;font-size:19px}.in-game .player-seat strong{font-size:11px}.in-game .table-center{inset:58px 138px 32px}.in-game .players-3 .table-center{top:10px}.in-game .turn-label{padding:5px 10px;bottom:0;font-size:11px}.in-game .trick-points{left:138px;top:9px;font-size:10px}.in-game .last-play{width:100%}.in-game .play-caption{margin-bottom:5px;font-size:10px}.in-game .played-cards{--played-width: 42px;--played-step: clamp( 10px, calc( (100vw - 310px - var(--played-width)) / max(1, var(--played-count) - 1) ), 34px )}.in-game .played-cards .card.small{height:58px}.in-game .card.small .corner.bottom{display:none}.in-game .felt-decoration{font-size:42px}.in-game .selection-count{left:30px;font-size:10px;max-width:125px}.in-game .action-bar{gap:8px}.in-game .action-bar button{min-height:38px;min-width:64px;padding:7px 18px}.in-game .action-bar .clear-selection{min-width:42px;padding:7px}.in-game .action-bar .primary{min-width:90px}.in-game .hand-title{font-size:11px}.in-game .my-recent{bottom:0}.in-game .table-error{top:46px}.in-game .modal-backdrop{padding:12px}.in-game .dialog{padding:20px 24px;max-height:calc(var(--table-height, 100dvh) - 24px)}.in-game .dialog h2{font-size:23px}.in-game .dialog>p{margin:10px 0 14px}.in-game .dialog-actions{margin-top:14px}}@media(max-height:350px)and (orientation:landscape){.in-game{--card-width: 60px;--card-height: 82px;--dock-height: 154px}.game-toolbar{min-height:36px;gap:8px;padding:0 10px}.table-tools button{min-height:36px;min-width:40px}.table-connection{display:none}.table-tools{margin-left:auto}.table-mode{font-size:10px}.in-game .hand-fan:not(.pool){--card-width: 60px;--card-height: 82px;min-height:100px;padding-top:18px}.in-game .hand-dock{grid-template-rows:38px minmax(0,1fr) 16px;padding:0 18px}.in-game .hand-fan:not(.pool) .corner{font-size:20px}.in-game .hand-fan:not(.pool) .corner>span{font-size:16px}.in-game .action-bar button{min-height:34px;min-width:56px;padding:5px 14px;font-size:12px}.in-game .action-bar .primary{min-width:78px}.in-game .selection-count{left:24px;max-width:90px;font-size:9px}.in-game .player-seat{width:90px;padding:5px}.in-game .player-seat.seat-left{left:10px;top:35%}.in-game .player-seat.seat-right{right:10px;top:35%}.in-game .player-seat .avatar{width:28px;height:28px;font-size:16px}.in-game .player-seat.seat-top{top:3px;min-width:130px;padding:4px 8px}.in-game .player-seat p,.in-game .seat-status{font-size:9px}.in-game .table-center{inset:52px 110px 28px}.in-game .trick-points{left:110px;top:8px;padding:3px 8px}.in-game .played-cards{--played-width: 34px;--played-step: clamp( 9px, calc( (100vw - 240px - var(--played-width)) / max(1, var(--played-count) - 1) ), 28px )}.in-game .played-cards .card.small{height:48px}.in-game .played-cards .pip{font-size:18px}.in-game .turn-label{font-size:10px;padding:4px 8px}.in-game .recent-play{top:calc(100% + 3px);width:88px}.in-game .recent-cards .card.small{width:24px;height:32px}.in-game .recent-caption{font-size:8px;margin-bottom:2px}.in-game .my-recent{top:auto;bottom:0}.in-game .seat-top .recent-play{top:0;left:calc(100% + 8px)}.table-code{padding:5px;letter-spacing:1px}}@media(max-width:760px)and (orientation:landscape){.table-connection{display:none}.table-tools{margin-left:auto}.game-toolbar{gap:8px}.table-mode{font-size:10px}.table-tools button{min-width:40px}}@media(orientation:portrait)and (max-width:900px){.in-game .rotate-notice{position:fixed;inset:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;text-align:center;padding:30px;background:radial-gradient(ellipse at center,#306858,#123d37);color:#e7efda}.rotate-phone{font-size:70px;color:#e8cb7f;line-height:1}.rotate-notice h2{font-size:25px}.rotate-notice p{font-size:13px;color:#b5cdbd}.rotate-notice .primary{background:#edd08b;color:#4d4b2d;min-height:44px}}
