:root{color-scheme:dark;--u: clamp(.62, calc(.16 + 1.04*min(100vh, 100vw * 1.5)/950px) , 1.58);--fan-r: 340;--fan-per-card: 4;--fan-flat: 0;--card-scale: 1;--card-w: calc(46px * var(--u) * var(--card-scale));--card-h: calc(65px * var(--u) * var(--card-scale));--bg: #0a0c0f;--panel: #15191f;--panel-2: #1c2128;--panel-3: #232a33;--line: #2b323c;--text: #f0e9da;--muted: #9aa1ac;--faint: #6b7280;--brass: #d8b66a;--brass-hi: #f1d99a;--brass-lo: #8a6d2f;--brass-glow: rgba(216, 182, 106, .35);--felt-hi: #2a7a47;--felt: #185c34;--felt-lo: #0c3a20;--felt-edge: #06241280;--good: #5ec27a;--bad: #e5675c;--team-ns: #e5675c;--team-ew: #5b8de8;--suit-S: #34548c;--suit-H: #c1322b;--suit-D: #c1842b;--suit-C: #2f7d4f;--red-suit: #c1322b;--black-suit: #14181d;--strain-NT: #2b2f36;--call-pass: #5cbf78;--call-dbl: #b0352f;--call-rdbl: #6b4bb2;--card-face: linear-gradient(176deg, #fbf8f0 0%, #efe9dc 100%)}@media (max-width: 1700px){:root{--fan-flat: 1;--card-scale: 1.4;--fan-r: 400}.compass .dir-S,.compass .dir-N{transform:translateY(0);width:calc(540px * var(--u))}}@media (max-width: 1366px){.compass .dir-S,.compass .dir-N{width:calc(460px * var(--u))}}*{box-sizing:border-box}:root{--font-sans: "Hanken Grotesk", "Noto Sans SC", system-ui, sans-serif;--font-serif: "Fraunces", "Noto Serif SC", "Times New Roman", serif}html,body{margin:0;box-sizing:border-box;color:var(--text);font-family:var(--font-sans);font-size:14.5px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;height:100dvh;overflow:hidden;background:radial-gradient(1100px 700px at 50% -8%,#1a2620 0%,transparent 60%),radial-gradient(900px 600px at 85% 110%,#1c1810 0%,transparent 55%),linear-gradient(180deg,var(--bg) 0%,#07090c 100%);background-attachment:fixed}html.root-fluid{font-size:clamp(12px,3.6vw,14.5px)}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}html.pwa-standalone,html.pwa-standalone body{height:100vh}@media (display-mode: standalone){html,body{height:100vh}}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input,textarea,[contenteditable=true],select{-webkit-user-select:text;user-select:text}::selection{background:var(--brass);color:#1a1407}#app{padding:.7rem 1rem;margin:0 auto;height:100%}#app:has(.entry),#app:has(.lobby),#app:has(.mobile-entry){overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}#app:has(.entry)::-webkit-scrollbar,#app:has(.lobby)::-webkit-scrollbar,#app:has(.mobile-entry)::-webkit-scrollbar{display:none}button{background:linear-gradient(180deg,var(--panel-3) 0%,var(--panel-2) 100%);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.45rem .85rem;cursor:pointer;font:inherit;font-weight:600;letter-spacing:.01em;transition:border-color .14s,transform 90ms,background .14s,box-shadow .14s}button:hover:not(:disabled){border-color:var(--brass-lo);background:linear-gradient(180deg,#2a323c,#20262e)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.3;cursor:not-allowed}.btn-brass{background:linear-gradient(180deg,var(--brass-hi) 0%,var(--brass) 55%,var(--brass-lo) 100%);color:#221802;border-color:#6b521f;box-shadow:0 1px #ffffff40 inset,0 4px 14px -6px var(--brass-glow)}input[type=text]{background:#0e1216;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;font:inherit;width:100%}input[type=text]:focus{outline:none;border-color:var(--brass-lo)}.entry{max-width:560px;margin:4rem auto 0}.entry .title{font-family:var(--font-serif);font-weight:900;font-size:2.8rem;letter-spacing:.14em;background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:.3rem}.entry .sub{color:var(--muted);margin-top:0}.name-avatar-field{position:relative;display:flex;align-items:center;gap:.5rem}.name-avatar-field input[type=text]{flex:1;min-width:0}.avatar-chip{flex-shrink:0;width:2.4rem;height:2.4rem;border-radius:8px;border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),var(--panel));font-size:1.4rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:border-color .14s,box-shadow .14s,transform .1s}.avatar-chip:hover{border-color:var(--brass-lo);box-shadow:0 0 0 3px var(--brass-glow)}.avatar-chip:active{transform:scale(.96)}.avatar-popover{position:absolute;top:calc(100% + .4rem);left:0;z-index:30;display:grid;grid-template-columns:repeat(8,2.1rem);gap:.3rem;padding:.5rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 28px -8px #0009;max-height:280px;overflow-y:auto}.avatar-option{width:2.1rem;height:2.1rem;border-radius:6px;border:1px solid transparent;background:transparent;font-size:1.25rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .1s,border-color .1s}.avatar-option:hover{background:#ffffff0d;border-color:var(--brass-lo)}.avatar-option.selected{background:#c4a0502e;border-color:var(--brass)}.entry-form{display:flex;flex-direction:column;gap:.8rem;margin-top:1.5rem}.entry-form label{display:flex;flex-direction:column;gap:.3rem}.entry-form .label-text{color:var(--muted);font-size:.9rem}.entry-buttons{display:flex;gap:.6rem;justify-content:flex-end;margin-top:.4rem}.btn-watch{background:linear-gradient(180deg,#2a3a52,#1a2438);border:1px solid #3a4a66;color:#cfd9ec}.btn-watch:hover{filter:brightness(1.15);box-shadow:0 4px 14px -4px #78a0dc66}.entry-tabs{display:flex;gap:.4rem;margin:1.2rem 0 1rem;border-bottom:1px solid var(--line)}.entry-tab{flex:1;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;padding:.55rem .6rem;color:var(--muted);font-weight:600;cursor:pointer;transition:color .14s,background .14s,border-color .14s}.entry-tab:hover{color:var(--text);background:#ffffff08}.entry-tab.active{color:var(--brass-hi);background:linear-gradient(180deg,#c4a0501a,#c4a05005);border-color:var(--line);border-bottom:1px solid var(--bg);margin-bottom:-1px}.active-rooms{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.6rem}.active-rooms-head{display:flex;align-items:center;gap:.6rem}.active-rooms-title{flex:1;font-family:var(--font-serif);font-weight:700;font-size:1.05rem;color:var(--brass-hi);letter-spacing:.03em}.active-rooms-refresh{padding:.25rem .55rem;font-size:.85rem}.active-rooms-error{background:#dc50501f;border:1px solid rgba(220,80,80,.4);color:#f0c0c0;padding:.4rem .6rem;border-radius:6px;font-size:.85rem}.active-rooms-hint{color:var(--muted);font-size:.9rem;font-style:italic}.active-rooms-list{display:flex;flex-direction:column;gap:.35rem;max-height:320px;overflow-y:auto}.active-room-row{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.6rem;padding:.5rem .75rem;background:var(--panel);border:1px solid var(--line);border-radius:10px}.active-room-row.kind-match{border-left:3px solid var(--brass-hi)}.active-room-code-badge{display:inline-flex;align-items:center;padding:.25rem .7rem;border-radius:999px;border:1px solid rgba(196,160,80,.45);background:#c4a0501f;font-family:ui-monospace,Roboto Mono,Menlo,monospace;font-weight:700;font-size:1rem;color:var(--brass-hi);letter-spacing:.05em;flex-shrink:0}.active-room-code-badge.kind-match{border-left:3px solid var(--brass-hi);padding-left:.55rem}.active-room-code-badge.kind-saved{border-color:#8caac866;background:#8caac81a;color:#b8cce0}.saved-match-row{border-color:#8caac833}.saved-source{background:#ffffff0a;padding:.1rem .4rem;border-radius:4px;font-family:ui-monospace,Roboto Mono,Menlo,monospace}.saved-matches{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.6rem}.saved-matches-head{display:flex;align-items:center;gap:.6rem}.saved-matches-title{flex:1;font-family:var(--font-serif);font-weight:700;font-size:1.05rem;color:#b8cce0;letter-spacing:.03em}.saved-matches-head-partial{margin-top:1.4rem;padding-top:.8rem;border-top:1px dashed rgba(216,182,106,.18)}.saved-matches-hint{margin:0;font-size:.82rem;color:var(--muted);line-height:1.4}.saved-matches-refresh{padding:.25rem .55rem;font-size:.85rem}.active-room-save{padding:.3rem .7rem;font-size:.85rem;white-space:nowrap}.active-room-meta{display:flex;gap:.5rem;align-items:center;font-size:.8rem;color:var(--muted);flex-shrink:0;white-space:nowrap}.active-room-board{background:#ffffff0d;padding:.1rem .4rem;border-radius:4px}.active-room-mobile-type{display:none}.active-room-mode{padding:.1rem .45rem;border-radius:4px;font-size:.78rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.active-room-mode.mode-4v4{background:#d8b66a24;border:1px solid rgba(216,182,106,.45);color:#e8c882f2}.active-room-mode.mode-tour{background:#6eaae624;border:1px solid rgba(110,170,230,.5);color:#aad2f5fa}.active-room-mode.mode-single{background:#b4c8dc14;border:1px solid rgba(180,200,220,.28);color:#c8d7ebd9}.tour-sb-totals{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.6rem}.thermo{--thermo-h: calc(11px * var(--u, 1));--thermo-bulb: calc(19px * var(--u, 1));--thermo-diamond: calc(17px * var(--u, 1));--thermo-min: 6%;display:flex;align-items:center;width:100%;max-width:calc(760px * var(--u, 1));margin:0 auto}.thermo .bulb{position:relative;flex:0 0 auto;width:var(--thermo-bulb);height:var(--thermo-bulb);border-radius:50%;z-index:2;overflow:hidden;box-shadow:inset 0 calc(1px * var(--u, 1)) calc(2px * var(--u, 1)) #ffffff8c,inset 0 calc(-3px * var(--u, 1)) calc(4px * var(--u, 1)) #0006,0 calc(1px * var(--u, 1)) calc(4px * var(--u, 1)) #00000080}.thermo .bulb:after{content:"";position:absolute;left:20%;top:12%;width:40%;height:30%;border-radius:50%;background:radial-gradient(circle,#ffffffe6,#fff0 70%);pointer-events:none}.thermo .bulb.ns{background:radial-gradient(circle at 38% 30%,#ffbcbc,#ff6e6e 45%,#b83a3a)}.thermo .bulb.ew{background:radial-gradient(circle at 38% 30%,#bcd2ff,#6ea1ff 45%,#3a5eb8)}.thermo .pipe{position:relative;flex:1 1 auto;min-width:0;height:var(--thermo-h);border-radius:999px;background:linear-gradient(180deg,#ffffff17,#fff0 45%),#00000080;border:1px solid rgba(212,168,90,.22);box-shadow:inset 0 calc(2px * var(--u, 1)) calc(4px * var(--u, 1)) #0000008c;margin:0 calc(var(--thermo-bulb) * -.34)}.thermo .fill{position:absolute;top:0;bottom:0;border-radius:999px;transition:width .5s cubic-bezier(.2,.7,.2,1)}.thermo .fill.ns{left:0;background:linear-gradient(180deg,#ffffff73,#fff0 42%),linear-gradient(90deg,#c83c3c8c,#ff7a7a 70%,#ff9a9a);box-shadow:0 0 calc(7px * var(--u, 1)) #ff6e6e80}.thermo .fill.ew{right:0;background:linear-gradient(180deg,#ffffff73,#fff0 42%),linear-gradient(90deg,#9ab4ff,#6ea1ff 30%,#3c64c88c);box-shadow:0 0 calc(7px * var(--u, 1)) #6ea1ff80}.thermo .diamond{position:absolute;left:50%;top:50%;width:var(--thermo-diamond);height:var(--thermo-diamond);transform:translate(-50%,-50%) rotate(45deg);border-radius:calc(3px * var(--u, 1));z-index:3;background:linear-gradient(135deg,#fff9,#fff0 42%),linear-gradient(135deg,#c8d0da,#7c8794);border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 0 calc(3px * var(--u, 1)) #ffffff80,0 0 calc(6px * var(--u, 1)) #00000080;transition:background .35s ease,box-shadow .35s ease}.thermo .diamond.ns{background:linear-gradient(135deg,#ffffffb3,#fff0 42%),linear-gradient(135deg,#ff9a9a,#d84a4a);box-shadow:inset 0 0 calc(3px * var(--u, 1)) #fff9,0 0 calc(10px * var(--u, 1)) #ff6e6eb3}.thermo .diamond.ew{background:linear-gradient(135deg,#ffffffb3,#fff0 42%),linear-gradient(135deg,#a9c4ff,#4a72d8);box-shadow:inset 0 0 calc(3px * var(--u, 1)) #fff9,0 0 calc(10px * var(--u, 1)) #6ea1ffb3}.thermo .diamond.tie{background:linear-gradient(135deg,#ffffffb3,#fff0 42%),linear-gradient(135deg,#d3b3ff,#8b5be0);box-shadow:inset 0 0 calc(3px * var(--u, 1)) #fff9,0 0 calc(10px * var(--u, 1)) #b98bffb3}.app-subheader{align-items:stretch}.app-subheader .sub-center{flex:1;align-items:stretch}.mh-tour-winner{padding:.15rem .55rem;border-radius:999px;border:1px solid;font-size:.9rem;font-weight:700}.mh-tour-winner.ns{color:#ff9696;border-color:#dc50508c;background:#dc50501f}.mh-tour-winner.ew{color:#96b4ff;border-color:#5082dc8c;background:#5082dc1f}.mh-tour-winner.tie{color:var(--muted);border-color:var(--line);background:#ffffff0a}.tour-sb-total{display:flex;flex-direction:column;align-items:center;padding:.4rem .5rem;background:#ffffff08;border:1px solid var(--line);border-radius:8px}.tour-sb-total.tour-sb-ns{border-color:#dc505073;background:#dc505014}.tour-sb-total.tour-sb-ew{border-color:#5082dc73;background:#5082dc14}.tour-sb-team{font-size:.75rem;letter-spacing:.05em;color:var(--muted)}.tour-sb-mp{font-family:var(--font-serif);font-weight:700;font-size:1.05rem;color:var(--text);font-variant-numeric:tabular-nums}.tour-sb-mp-cell{font-family:var(--font-serif);font-variant-numeric:tabular-nums}.tour-sb-mp-cell.pending{color:var(--muted);font-style:italic}.tour-sb-mp-ns{color:#ff8282f2;font-weight:700;font-variant-numeric:tabular-nums}.tour-sb-mp-ew{color:#82aafff2;font-weight:700;font-variant-numeric:tabular-nums}.tour-sb-mp-sep{color:var(--muted);padding:0 .2rem}.tour-sb-mp-pending{color:var(--muted);font-style:italic;text-align:center}.tour-sb-table{font-size:1rem}.tour-sb-table th,.tour-sb-table td{white-space:nowrap}.tour-sb-table tbody td{padding:.45rem}.tour-sb-table thead th{font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:700;text-align:left;padding:.25rem .4rem;border-bottom:1px solid var(--line)}.tour-sb-table .sb-result{font-variant-numeric:tabular-nums}.tour-sb-view{text-align:center;width:1%}.tour-sb-view-btn{padding:.1rem .3rem;font-size:.95rem;line-height:1;background:none;border:none;cursor:pointer;opacity:.72;transition:opacity .12s}.tour-sb-view-btn:hover{opacity:1}.tour-sb-row-clickable{cursor:pointer;transition:background .12s}.tour-sb-row-clickable:hover{background:#d8b66a1a}.tour-sb-row-clickable:active{background:#d8b66a2e}.tour-dist-boardmeta{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem .55rem;margin:.3rem 0;font-size:.9rem}.tour-dist-boardmeta .tdm-label{font-size:.9rem;color:var(--muted)}.tour-dist-boardmeta .tdm-mp{font-weight:700;font-variant-numeric:tabular-nums}.tour-dist-boardmeta .tdm-mp-ns{color:#ff8282f2}.tour-dist-boardmeta .tdm-mp-ew{color:#82aafff2}.tour-dist-boardmeta .tdm-mp-pending{color:var(--muted);font-style:italic}.tour-dist-dd-bar{display:flex;justify-content:center;margin:.5rem 0 .2rem}.tour-dist-dd-btn{padding:.4rem 1rem;font-size:.85rem;font-weight:700;background:#d8b66a24;border:1px solid rgba(216,182,106,.45);color:var(--brass-hi, #f1d99a);border-radius:8px;cursor:pointer;transition:background .12s,border-color .12s}.tour-dist-dd-btn:hover:not(:disabled){background:#d8b66a3d}.tour-dist-dd-btn:disabled{opacity:.6;cursor:default}.tour-dist-dd-loading{text-align:center;color:var(--muted);font-style:italic;margin:.6rem 0}.tour-dist-dd-error{text-align:center;color:#eb5757;margin:.6rem 0}.tour-dist-dd-wrap{margin:.2rem 0 .4rem}.tour-dist-dd-wrap .dd-grid-wrap{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:.6rem 1.1rem}.tour-dist-dd-title{text-align:center;font-size:.72rem;letter-spacing:.08em;font-weight:700;color:var(--muted);text-transform:uppercase;margin-bottom:.4rem}.tour-sb-detail-btn{padding:.15rem .45rem;font-size:.85rem;background:#ffffff0a;border:1px solid var(--line);border-radius:4px;cursor:pointer}.tour-sb-detail-btn:hover{background:#d8b66a2e;border-color:#d8b66a80}.tour-kick-wrap{padding:.5rem .25rem .25rem}.tour-kick-btn{width:100%;padding:.35rem .6rem;font-size:.82rem;background:#ffffff0a;border:1px solid var(--line);border-radius:6px;cursor:pointer;color:var(--fg);transition:background .15s,border-color .15s}.tour-kick-btn:hover:not(:disabled){background:#ffb45026;border-color:#ffb45080}.tour-kick-btn:disabled{opacity:.55;cursor:default}.tour-dist-overlay{box-sizing:border-box;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.tour-dist-overlay:not(.open){display:none!important}.tour-dist-sheet{width:min(720px,96vw);max-height:100%;overflow-y:auto;padding:1.4rem 1.6rem;scrollbar-width:none}.tour-dist-sheet::-webkit-scrollbar{display:none}.tour-dist-table{width:100%;border-collapse:collapse;margin-top:1rem;font-size:.92rem}.tour-dist-table th{text-align:left;padding:.4rem .6rem;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);font-weight:700}.tour-dist-table td{padding:.45rem .6rem;border-bottom:1px solid rgba(255,255,255,.04)}.tour-dist-row-human{background:linear-gradient(90deg,#d8b66a2e,#d8b66a0d)}.tour-dist-row-human td{font-weight:700;color:var(--brass)}.tour-dist-table-name{font-family:var(--font-serif)}.tour-dist-tricks,.tour-dist-score,.tour-dist-rank{font-variant-numeric:tabular-nums}.tour-dist-score.positive{color:#96dc96f2}.tour-dist-score.negative{color:#dc9696f2}.tour-dist-footer{margin-top:1.2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.tour-dist-summary{margin:0;color:var(--muted);font-size:.9rem;flex:1}.tour-dist-replay{text-align:center}.tour-dist-replay-btn{padding:.15rem .55rem;font-size:.95rem;background:#d8b66a1f;border:1px solid rgba(216,182,106,.45);border-radius:5px;color:var(--brass);cursor:pointer}.tour-dist-replay-btn:hover{background:linear-gradient(180deg,#6b5430,#3e3019);color:#f6dca0;border-color:var(--brass)}.tour-contract{font-family:var(--font-serif);display:inline-flex;align-items:center;gap:.45rem}.tour-contract.passed{color:var(--muted);font-style:italic}.tour-contract-body{display:inline-flex;align-items:center}.tour-contract .st-S{color:var(--suit-S);font-size:1.15em}.tour-contract .st-H{color:var(--suit-H);font-size:1.15em}.tour-contract .st-D{color:var(--suit-D);font-size:1.15em}.tour-contract .st-C{color:var(--suit-C);font-size:1.15em}.tour-contract .st-NT{font-size:.85em;color:var(--muted);margin-left:.05em}.tour-contract-decl{display:inline-flex;justify-content:center;align-items:center;min-width:1.3em;padding:0 .3em;border-radius:3px;font-family:var(--font-sans);font-weight:700;font-size:.85em;letter-spacing:.02em;color:#fff}.tour-contract-decl.ns{background:linear-gradient(180deg,#dc5050f2,#b43737f2);border:1px solid rgba(150,40,40,.85)}.tour-contract-decl.ew{background:linear-gradient(180deg,#5082dcf2,#3764b4f2);border:1px solid rgba(40,75,150,.85)}.tour-dist-tricks.positive{color:#96dc96f2;font-weight:700}.tour-dist-tricks.negative{color:#dc9696f2;font-weight:700}.active-room-board.waiting{background:#78c88c14;border:1px solid rgba(120,200,140,.5);color:#a0dcb4f2;padding:0 .35rem}.active-room-board.playing{background:#d99c461f;border:1px solid rgba(217,156,70,.55);color:#f0c882f2;padding:0 .35rem}.active-room-board.completed{background:#9682c81f;border:1px solid rgba(150,130,200,.5);color:#c3afe6f2;padding:0 .35rem}.active-room-seats{display:flex;gap:.25rem}.active-room-seat{width:1.75rem;height:1.75rem;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;line-height:1;background:#ffffff0a;border-radius:6px}.active-room-actions{display:flex;gap:.4rem;flex-shrink:0}.active-room-join,.active-room-close{padding:.3rem .7rem;font-size:.85rem;white-space:nowrap}.active-room-close{border-color:#dc505080;color:#f0c0c0}.active-room-close:hover{background:linear-gradient(180deg,#4a2530,#2a1820);filter:brightness(1.1)}.entry-error{margin:.6rem 0 .4rem;padding:.55rem .8rem;border-radius:8px;background:linear-gradient(180deg,#b43c3c2e,#b43c3c14);border:1px solid rgba(220,100,100,.35);color:#f7c8c8;font-size:.9rem}.entry-double-block{margin-top:.8rem;padding:.9rem 1rem 1rem;background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:.55rem}.entry-block-label{font-family:var(--font-serif);font-weight:700;font-size:1rem;color:var(--brass-hi)}.entry-block-hint{margin:0;color:var(--muted);font-size:.85rem}.entry-match-code{text-transform:uppercase;letter-spacing:.16em;font-family:monospace}.code-input-row{display:flex;align-items:stretch;gap:.4rem}.code-input-row input{flex:1}.btn-dice{flex:0 0 auto;width:2.4rem;padding:0;font-size:1.1rem;line-height:1;background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:8px;cursor:pointer;transition:border-color .12s,transform 90ms}.btn-dice:hover{border-color:var(--brass-lo)}.btn-dice:active{transform:rotate(-15deg)}.btn-match-create{background:linear-gradient(180deg,#5a3a8a,#3a2360);border:1px solid #4a3070;color:#e0d4f0;font-weight:700;align-self:flex-start}.btn-match-create:hover:not(:disabled){filter:brightness(1.15);box-shadow:0 4px 14px -4px #8c64c866}.entry-boards-row{display:flex;align-items:center;gap:.5rem;margin:.25rem 0}.entry-boards-label{font-size:.85rem;color:var(--text-dim);letter-spacing:.04em;min-width:3.5em}.entry-boards-btn{flex:0 0 auto;padding:.4rem .9rem;border-radius:6px;background:#1f1d1a;border:1px solid #3a352c;color:#aaa;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .12s ease}.entry-boards-btn:hover{border-color:var(--brass-lo);color:var(--brass-hi)}.entry-boards-btn.active{background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));border-color:var(--brass-hi);color:#1a1612;box-shadow:0 2px 8px -2px var(--brass-glow)}.lobby-end-row{margin-top:.75rem;text-align:center}.btn-end-match{background:linear-gradient(180deg,#5a2222,#3a1414);border:1px solid #6a2828;color:#f0c8c8;font-size:.85rem;font-weight:600;padding:.4rem 1rem;letter-spacing:.04em}.btn-end-match:hover{background:linear-gradient(180deg,#7a2a2a,#4a1818);color:#ffd8d8}.lobby{max-width:880px;margin:1.5rem auto 2.5rem;padding:0 1rem;display:flex;flex-direction:column;gap:1rem}.lobby-top{display:flex;align-items:center;gap:.6rem}.lobby-title{flex:1;font-family:var(--font-serif);font-weight:800;font-size:1.4rem;letter-spacing:.04em;color:var(--brass-hi);text-align:center}.lobby-status{padding:.3rem .6rem;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--panel);border:1px solid var(--line)}.lobby-status.status-open{color:#9cd29c;border-color:#78c87866}.lobby-status.status-connecting{color:var(--brass)}.lobby-status.status-closed{color:#e88;border-color:#dc787866}.lobby-hint{color:var(--muted);text-align:center;padding:2rem 0}.lobby-code-row{display:flex;align-items:center;gap:.6rem;justify-content:center;padding:.6rem;background:var(--panel);border:1px solid var(--line);border-radius:10px}.lobby-code-label{color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.14em}.lobby-code-box{font-family:monospace;font-size:1.3rem;font-weight:700;letter-spacing:.2em;padding:.3rem .7rem;background:linear-gradient(180deg,#1a2030,#10141c);border:1px solid var(--brass-lo);color:var(--brass-hi);border-radius:8px;cursor:pointer;-webkit-user-select:all;user-select:all}.lobby-code-box.copied{background:linear-gradient(180deg,#1a3a2a,#102018);border-color:#6fcf6f;color:#cfe9cf}.lobby-code-hint{color:var(--muted);font-size:.85rem}.lobby-tables{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.lobby-tables.lobby-tables-single{grid-template-columns:minmax(280px,480px);justify-content:center}@media (max-width: 720px){.lobby-tables,.lobby-tables.lobby-tables-single{grid-template-columns:1fr}.active-room-row{grid-template-columns:auto 1fr auto;grid-template-areas:"badge meta seats" "actions actions actions";row-gap:.5rem}.active-room-row>.active-room-code-badge{grid-area:badge}.active-room-row>.active-room-meta{grid-area:meta}.active-room-row>.active-room-seats{grid-area:seats}.active-room-row>.active-room-actions{grid-area:actions;justify-self:end}}.lobby-waiting{margin-top:1rem;padding:.7rem 1rem;background:linear-gradient(180deg,#08100b73,#040a078c);border:1px solid rgba(216,182,106,.16);border-radius:12px;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.lobby-waiting-label{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--brass);font-weight:700;white-space:nowrap}.lobby-waiting-list{display:flex;gap:.5rem;flex-wrap:wrap;flex:1}.lobby-waiting-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem .3rem .45rem;background:linear-gradient(180deg,#19201ad9,#0f1612e6);border:1px solid rgba(216,182,106,.22);border-radius:999px;font-size:.88rem;color:var(--text)}.lobby-waiting-chip.you{border-color:var(--brass);box-shadow:0 0 0 1px var(--brass-glow)}.lobby-waiting-emoji{font-size:1.05rem;line-height:1}.lobby-waiting-name{font-family:"Noto Serif SC",Fraunces,serif;font-weight:600}.lobby-table{position:relative;padding:1rem;border-radius:14px;background:radial-gradient(120% 90% at 50% 8%,var(--felt-hi) 0%,var(--felt) 38%,var(--felt-lo) 86%,var(--felt-edge) 100%);box-shadow:inset 0 0 0 1px #ffffff0a,inset 0 2px 28px #0006,inset 0 0 80px #0000004d,0 8px 24px -10px #0000008c;border:4px solid transparent;background-clip:padding-box}.lobby-table:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:18px;pointer-events:none;background:linear-gradient(140deg,#6b521f,#e3c478 18%,#8a6d2f,#f1d99a 62%,#5a4318 82%,#c9a458);z-index:-1}.lobby-seats{display:grid;grid-template-columns:minmax(140px,1fr) minmax(120px,1fr) minmax(140px,1fr);grid-template-rows:auto auto auto;grid-template-areas:".  seatN  ." "seatW  centre  seatE" ".  seatS  .";gap:.55rem;align-items:stretch}.lobby-seat-N{grid-area:seatN}.lobby-seat-W{grid-area:seatW}.lobby-seat-E{grid-area:seatE}.lobby-seat-S{grid-area:seatS}.lobby-table-centre{grid-area:centre;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:.6rem .4rem;color:var(--brass-hi)}.lobby-table-num{font-family:var(--font-serif);font-weight:800;font-size:1.3rem;letter-spacing:.04em;color:var(--brass-hi)}.lobby-table-sub{margin-top:.15rem;font-size:.7rem;letter-spacing:.22em;color:#e5c77a8c}.lobby-table-progress{margin-top:.5rem;padding:.2rem .55rem;border-radius:999px;background:linear-gradient(180deg,#281e0eb3,#140e06d9);border:1px solid rgba(216,182,106,.5);font-family:var(--font-sans);font-size:.82rem;font-weight:600;color:var(--brass-hi);display:inline-flex;align-items:baseline;gap:.18rem}.lobby-table-progress-label{font-size:.7rem;letter-spacing:.05em;color:#e5c77ab3;margin-right:.18rem}.lobby-table-progress b{font-family:var(--font-serif);font-weight:800;font-size:1.05rem}.lobby-table-progress-of{color:#e5c77a8c;font-weight:500}.btn-lobby-enter{margin-top:.8rem;width:100%;padding:.55rem .9rem;font-size:.95rem;font-weight:700;letter-spacing:.04em}.lobby-table-note{margin-top:.8rem;text-align:center;font-size:.82rem;color:var(--muted);letter-spacing:.04em}.lobby-table-legend{margin-top:.55rem;display:flex;flex-direction:column;gap:.15rem;font-size:.72rem;text-align:center}.lobby-legend-row{display:inline-block;padding:.1rem .45rem;border-radius:999px;background:#08120c8c}.lobby-legend-row b{font-family:var(--font-serif);font-weight:700;margin-right:.25rem}.lobby-legend-row.team-a{color:#f4cccc;box-shadow:inset 0 0 0 1px #e5675c59}.lobby-legend-row.team-b{color:#cfdaf0;box-shadow:inset 0 0 0 1px #5b8de859}.lobby-seat{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.55rem .6rem;border-radius:10px;background:#08120c8c;border:1px solid rgba(0,0,0,.5);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);min-height:70px;text-align:center}.lobby-seat.team-a{box-shadow:inset 0 0 0 1px #e5675c73}.lobby-seat.team-b{box-shadow:inset 0 0 0 1px #5b8de873}.lobby-seat.seat-draggable{cursor:grab}.lobby-seat.seat-draggable:active{cursor:grabbing}.lobby-seat.dnd-dragging{opacity:.45}.lobby-seat.dnd-legal{outline:2px dashed rgba(240,198,104,.85);outline-offset:-2px;background:#f0c6681a}.lobby-seat.dnd-illegal{opacity:.35;filter:saturate(.4)}.lobby-seat-letter{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;font-weight:700;font-family:var(--font-serif);background:var(--panel-2);color:var(--text)}.lobby-seat-letter.team-a{background:#c4464647;color:#f4cccc}.lobby-seat-letter.team-b{background:#466ec847;color:#cfdaf0}.lobby-seat-name{font-weight:600;word-break:break-word}.lobby-seat-name.you{color:var(--brass-hi);font-style:italic}.lobby-seat-hint{color:var(--muted);font-size:.85rem}.lobby-seat-ctrls{display:flex;gap:.3rem;flex-wrap:wrap}.btn-lobby-mini{font-size:.75rem;padding:.3rem .55rem}.btn-lobby-zero{background:linear-gradient(180deg,#4a3a72,#2e2549);border-color:#6b5ba0;color:#e8e0ff}.btn-lobby-zero:hover{background:linear-gradient(180deg,#5b4a8a,#3a2f5e)}.lobby-start-row{display:flex;align-items:center;gap:.8rem;justify-content:center;padding-top:.5rem}.lobby-fill-row{display:flex;align-items:center;gap:.6rem;justify-content:center;padding-top:.8rem;flex-wrap:wrap}.lobby-fill-label{font-size:.85rem;color:var(--muted);letter-spacing:.02em}.btn-fill-ben,.btn-fill-basic{padding:.42rem .95rem;font-size:.92rem;font-weight:700;letter-spacing:.02em;border-radius:8px;font-family:var(--font-sans)}.btn-fill-basic{background:linear-gradient(180deg,#506e9652,#283c5a6b);border:1px solid #4a5d77;color:#d4e0ed}.btn-fill-basic:hover{background:linear-gradient(180deg,#5b7da5,#355472);color:#fff;border-color:#2a4156}.lobby-ready{font-family:var(--font-serif);font-weight:700;color:var(--muted)}.lobby-ready.ready{color:#9cd29c}.btn-lobby-start{font-size:1.05rem;padding:.7rem 1.4rem}.lobby-team-note{margin:0;text-align:center;color:var(--muted);font-size:.85rem}.lobby-table-tour{border-color:#d8b66a59}.lobby-seat.team-mp .lobby-seat-letter,.lobby-seat-letter.team-mp{background:linear-gradient(180deg,#d8b66a,#a07e30);color:#1a1208;border-color:#c19952}.lobby-seat.team-opp .lobby-seat-letter,.lobby-seat-letter.team-opp{background:linear-gradient(180deg,#5a6470,#393f48);color:#d6dde7;border-color:#353a42}.tour-bot-strip{margin-top:1rem;padding:.8rem 1rem;background:linear-gradient(180deg,#140e0899,#0a0704b3);border:1px solid rgba(216,182,106,.2);border-radius:12px}.tour-bot-strip-label{display:inline;font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);font-weight:700}.tour-bot-summary{display:none;font-size:.85rem;color:var(--muted);margin-left:.5rem}.tour-bot-summary.done{color:#8de08d}.tour-bot-strip-header{display:flex;align-items:center;margin-bottom:.6rem}.tour-bot-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem;margin-top:.6rem}@media (max-width: 600px){.tour-bot-summary{display:inline}.tour-bot-grid,.lobby-fill-label{display:none}.lobby-fill-row{flex-wrap:nowrap}}.tour-bot-chip{display:flex;flex-direction:column;align-items:center;padding:.4rem .6rem;background:#ffffff0a;border:1px solid rgba(216,182,106,.18);border-radius:8px;gap:.2rem}.tour-bot-chip.done{border-color:#96d29680;background:#3c783c2e}.tour-bot-chip-num{font-size:.85rem;font-weight:700;color:var(--text);font-family:var(--font-serif)}.tour-bot-chip-hint{font-size:.72rem;color:var(--muted)}.tour-bot-chip-progress{font-size:.72rem;color:#c8d4e2;font-variant-numeric:tabular-nums}.tour-mp-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;background:linear-gradient(180deg,#d8b66a2e,#a07e3024);border:1px solid rgba(216,182,106,.4);border-radius:10px;font-family:var(--font-serif);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.tour-mp-chip-label{font-size:.72rem;letter-spacing:.08em;color:var(--brass);text-transform:uppercase}.tour-mp-chip-value{color:var(--text)}.tour-mp-chip-pct{color:var(--muted);font-size:.85rem}.pending-match-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:250;display:flex;align-items:center;justify-content:center;background:#040806c7;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.pending-match-sheet{width:min(560px,94vw);padding:1.4rem 1.6rem;background:linear-gradient(180deg,var(--panel-3) 0%,var(--panel-2) 100%);border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 60px -20px #000000b3}.pm-title{margin:0 0 .4rem;font-family:var(--font-serif);font-weight:700;font-size:1.25rem;color:var(--brass-hi)}.pm-sub{margin:0 0 1.2rem;color:var(--muted);font-size:.9rem}.pm-tables{display:flex;gap:.8rem;flex-wrap:wrap}.pm-code-row{display:flex;align-items:center;gap:.8rem;justify-content:center;margin:.5rem 0 1rem}.pm-table-code.big{font-size:1.6rem;letter-spacing:.25em;padding:.4rem .9rem;background:linear-gradient(180deg,#1a2030,#10141c);border:1px solid var(--brass-lo);color:var(--brass-hi);border-radius:8px;font-family:monospace;font-weight:700}.pm-table-card{flex:1;min-width:200px;display:flex;flex-direction:column;gap:.5rem;padding:.8rem;background:var(--panel);border:1px solid var(--line);border-radius:10px}.pm-table-label{font-family:var(--font-sans);font-weight:700;letter-spacing:.18em;text-transform:uppercase;font-size:.7rem;color:var(--muted)}.pm-table-code{font-family:monospace;font-size:1rem;font-weight:700;color:var(--brass-hi);word-break:break-all}.btn-copy{background:transparent;border:1px solid var(--line);color:var(--muted);font-size:.85rem}.btn-dismiss{margin-top:1rem;background:transparent;border:1px solid var(--line);color:var(--muted);display:block;margin-left:auto}.match-chip{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .7rem;background:linear-gradient(180deg,#2c1f4a,#1a132e);border:1px solid #4a3070;border-radius:999px;font-size:.85rem;margin-right:.5rem}.match-chip .mc-team{display:inline-flex;align-items:baseline;gap:.3rem}.match-chip .mc-team b{font-family:var(--font-serif);font-weight:700}.match-chip .mc-team.a b{color:var(--team-ns)}.match-chip .mc-team.b b{color:var(--team-ew)}.match-chip .mc-score{font-family:var(--font-serif);font-weight:700;font-variant-numeric:tabular-nums;color:var(--brass-hi);font-size:1rem}.match-chip .mc-team{position:relative}.match-chip .mc-delta{position:absolute;left:50%;bottom:100%;font-family:var(--font-serif);font-weight:800;font-size:1rem;font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;animation:mc-delta-float 1.3s cubic-bezier(.2,.7,.2,1) both;text-shadow:0 1px 3px rgba(0,0,0,.55)}.match-chip .mc-delta.team-a{color:var(--team-ns)}.match-chip .mc-delta.team-b{color:var(--team-ew)}@keyframes mc-delta-float{0%{opacity:0;transform:translate(-50%,8px) scale(.6)}18%{opacity:1;transform:translate(-50%,-2px) scale(1.25)}60%{opacity:1;transform:translate(-50%,-18px) scale(1)}to{opacity:0;transform:translate(-50%,-34px) scale(.9)}}.match-chip .mc-sep{color:var(--faint)}.match-chip .mc-progress{margin-left:.4rem;padding-left:.6rem;border-left:1px solid #3a2860;color:var(--muted);font-size:.78rem}.spectator-banner{display:flex!important;align-items:center;gap:.7rem;background:linear-gradient(180deg,#1d2638,#11151f);color:#b8c4dc;font-family:var(--font-serif);letter-spacing:.04em;font-size:.95rem}.spectator-icon{font-size:1.3rem;filter:drop-shadow(0 0 6px rgba(120,160,220,.4))}.spectator-text{color:var(--muted)}.app{display:grid;grid-template-columns:minmax(0,1fr) clamp(184px,19vw,256px);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"header  header" "compass sidebar" "action  action";column-gap:.7rem;row-gap:2px;height:100%}.app.history-page{display:block;height:100vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none}.app.history-page::-webkit-scrollbar{display:none}body.first-mount .app{animation:rise .6s cubic-bezier(.2,.7,.2,1) both}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.app>.app-header{grid-area:header}.app>.header{grid-area:header}.app>.compass{grid-area:compass}.app>.action{grid-area:action;margin-top:calc(.7rem - 2px)}.app>.sidebar{grid-area:sidebar;align-self:stretch;display:flex;flex-direction:column;gap:.7rem;min-height:0;padding-top:6px}#rotate-prompt{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;padding:2rem;text-align:center;background:radial-gradient(120% 90% at 50% 8%,#1a2620 0%,var(--bg) 60%,#07090c 100%);color:var(--text)}#rotate-prompt .rotate-icon{font-size:4.2rem;color:var(--brass);animation:rotateHint 2.4s ease-in-out infinite;filter:drop-shadow(0 0 18px var(--brass-glow))}@keyframes rotateHint{0%,to{transform:rotate(-15deg)}50%{transform:rotate(75deg)}}#rotate-prompt h1{font-family:var(--font-serif);font-weight:700;font-size:1.4rem;letter-spacing:.06em;margin:0}#rotate-prompt p{margin:0;color:var(--muted);font-size:.95rem;max-width:26ch;line-height:1.5}@media (orientation: portrait) and (max-width: 820px){body:has(#app .compass) #rotate-prompt{display:flex}body:has(#app .compass) #app{display:none}}@media (max-width: 600px){.game-tabs{display:none!important}.entry{margin-top:1.5rem;padding:0 1rem;max-width:100%}.entry .title{font-size:2.2rem}.entry .sub{font-size:.85rem}.entry-tabs{margin:1rem 0 .6rem}.entry-tab{padding:.75rem .3rem;font-size:.82rem;min-height:48px}input[type=text],.entry-match-code{font-size:16px;height:48px;padding:0 .9rem}.entry-boards-row{flex-wrap:wrap;gap:.4rem}.entry-boards-btn{min-height:44px;padding:.45rem 1.1rem;font-size:.9rem}.entry-buttons{flex-direction:column;gap:.5rem;margin-top:.75rem}.entry-buttons button{width:100%;min-height:50px;font-size:1rem;border-radius:10px}.entry-block-hint{font-size:.8rem}.active-rooms-list{max-height:none}.active-room-row{padding:.8rem .9rem;gap:.5rem}.active-room-actions{gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.active-room-actions button{min-height:42px;min-width:58px;padding:.4rem .75rem;font-size:.88rem}.saved-match-row{padding:.8rem .9rem}.saved-match-row .active-room-actions button{min-height:42px;min-width:52px}.active-rooms .active-rooms-head,.saved-matches>div:first-child{font-size:.95rem;margin-top:1.2rem}}@media (hover: none){.bid-cell:hover:not(.spent){transform:none;box-shadow:none}.bid-cell:active:not(.spent){transform:translateY(-1px);box-shadow:0 4px 10px -4px #00000080,0 0 0 2px var(--brass)}.pcard.clickable:hover{box-shadow:0 3px 7px -3px #0000008c,inset 0 0 0 1px #ffffff80}.pcard.clickable:active{box-shadow:0 12px 20px -8px #0009,0 0 0 1px var(--brass),0 0 16px -2px var(--brass-glow);z-index:100!important}}.app>.error-banner{grid-column:1 / -1}.header{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1.1rem;background:linear-gradient(180deg,var(--panel) 0%,#11151a 100%);border:1px solid var(--line);border-radius:12px}.header-left,.header-right{display:flex;gap:.55rem;flex-wrap:wrap;align-items:center}.header-center{display:flex;align-items:center;justify-content:center;flex:1;min-width:0}.brand{display:flex;flex-direction:column;line-height:1;margin-right:.4rem}.brand .wordmark{font-family:var(--font-serif);font-weight:900;font-size:1.45rem;letter-spacing:.14em;background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));-webkit-background-clip:text;background-clip:text;color:transparent}.brand .wordmark-sub{font-size:.66rem;letter-spacing:.42em;text-transform:uppercase;color:var(--faint);margin-top:.25rem}.tag{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .7rem;background:#0f1318;border:1px solid var(--line);border-radius:999px;font-size:.82rem;color:var(--muted)}.tag b{color:var(--text);font-weight:600}.tag.vul{border-color:#5a2b27;color:#f0a59d;background:#1f0f0d}.status{font-weight:600;display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem}.status:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.status-reconnect{background:linear-gradient(180deg,#4a1f1c,#2a0f0e);color:#f3b4b0;border:1px solid #6e201d;cursor:pointer;font-weight:700;letter-spacing:.04em}.status-reconnect:hover,.status-reconnect:active{background:linear-gradient(180deg,#6e2826,#4a1f1c);color:#fff}.status-reconnect.status-connecting{background:linear-gradient(180deg,#3a3320,#2a2517);color:#f1d99a;border-color:#6b521f;cursor:progress}.status-open{color:var(--good)}.status-connecting{color:var(--brass)}.status-closed{color:var(--bad)}.error-banner{background:linear-gradient(180deg,#3a1714,#2a100e);border:1px solid #6e2a24;color:#ffd9d4;padding:.55rem .9rem;border-radius:8px}.compass{position:relative;display:grid;grid-template-columns:minmax(120px,460px) minmax(248px,380px) minmax(120px,460px);grid-template-rows:auto auto auto;grid-template-areas:"seatW seatN  seatE" "seatW center seatE" "seatW seatS  seatE";gap:calc(clamp(4px,2vh,36px) * var(--u)) calc(clamp(10px,3vh,48px) * var(--u));padding:calc(clamp(.4rem,1.5vh,1.4rem) * var(--u)) calc(1.2rem * var(--u));height:100%;min-height:0;align-content:space-between;justify-content:center;border-radius:20px;background:radial-gradient(120% 90% at 50% 8%,var(--felt-hi) 0%,var(--felt) 38%,var(--felt-lo) 86%,var(--felt-edge) 100%);box-shadow:inset 0 0 0 1px #ffffff0a,inset 0 2px 40px #00000073,inset 0 0 120px #00000059;border:6px solid transparent;background-clip:padding-box}@media (min-width: 601px){.compass{container-type:size;--u: clamp(.62, calc(.16 + 1.04*min(100cqh, 100cqw / 1.5)/720px) , 1.58)}}.compass:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:14px;pointer-events:none;opacity:.5;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='120' height='120' filter='url(%23n)' opacity='0.5'/></svg>")}.compass:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:22px;pointer-events:none;background:linear-gradient(140deg,#6b521f,#e3c478 18%,#8a6d2f,#f1d99a 62%,#5a4318 82%,#c9a458);z-index:-1;box-shadow:0 16px 50px -18px #000c}.seat{position:relative;background:linear-gradient(180deg,#08100ba8,#040a07bd);border:1px solid rgba(255,255,255,.06);padding:calc(.4rem * var(--u)) calc(.6rem * var(--u));border-radius:12px;display:flex;flex-direction:column;gap:calc(.2rem * var(--u));align-items:center;box-shadow:0 10px 30px -16px #000000b3;transition:box-shadow .2s,border-color .2s,transform .2s}.seat-N,.seat-S{justify-self:center;width:max-content}.seat-W{justify-self:start;width:max-content}.seat-E{justify-self:end;width:max-content}.seat-N,.seat-S{display:grid;grid-template-columns:auto auto;column-gap:calc(.5rem * var(--u));align-items:center;justify-items:center}.seat-N>.seat-head,.seat-S>.seat-head{grid-row:1 / -1;grid-column:1;width:auto;max-width:calc(190px * var(--u))}.seat-N>*:not(.seat-head),.seat-S>*:not(.seat-head){grid-column:2}.seat-N{grid-area:seatN;align-self:center}.seat-W{grid-area:seatW;align-self:center}.seat-E{grid-area:seatE;align-self:center}.seat-S{grid-area:seatS;align-self:center}body.first-mount .seat-N{animation:rise .6s 80ms both}body.first-mount .seat-W,body.first-mount .seat-E{animation:rise .6s .16s both}body.first-mount .seat-S{animation:rise .6s .24s both}.seat.on-turn{border-color:var(--brass);padding-top:.75rem;box-shadow:0 0 0 1px var(--brass),0 0 30px -1px var(--brass-glow),0 10px 30px -16px #000000b3}.seat.on-turn:before{content:"to play";position:absolute;top:-9px;left:14px;z-index:6;display:inline-flex;align-items:center;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:#221802;font-weight:700;background:linear-gradient(180deg,var(--brass-hi),var(--brass));padding:.14rem .6rem .14rem 1.25rem;border-radius:999px}.seat.on-turn:after{content:"";position:absolute;top:-3px;left:23px;z-index:7;width:7px;height:7px;border-radius:50%;background:#2a7a47;will-change:transform,opacity;animation:turnDot 1.4s ease-in-out infinite}.seat.stop-locked{border-color:#c0403a;box-shadow:0 0 0 1px #c0403a,0 0 24px -2px #c0403a66,0 10px 30px -16px #000000b3;animation:none}.seat.stop-locked:before{display:none}.seat.stop-locked:after{display:none}.stop-badge{position:absolute;top:-9px;left:14px;z-index:7;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:#fff;font-weight:700;background:linear-gradient(180deg,#c0403a,#8f2a26);border:1px solid #6e201d;padding:.14rem .7rem;border-radius:999px;box-shadow:0 0 10px -2px #c0403a8c}@keyframes turnDot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.45}}.seat-head{display:flex;flex-direction:column;align-items:center;gap:calc(.3rem * var(--u));width:100%}.seat-portrait{position:relative;width:calc(72px * var(--u));aspect-ratio:1 / 1.05;border:1px solid rgba(212,168,90,.32);border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px #ffdcaa1a,inset 0 -8px 18px #00000080,0 6px 16px #00000073;background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(229,103,92,.35),transparent 70%),linear-gradient(180deg,#120a0cf2,#080406fa)}.seat-portrait.team-ew{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(91,141,232,.35),transparent 70%),linear-gradient(180deg,#0a0e18f2,#04060efa)}.seat-portrait.declarer{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(241,217,154,.45),transparent 70%),linear-gradient(180deg,#2d1e08f2,#140c04fa);border-color:#d8b66aa6}.seat-portrait.dummy{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(140,110,200,.3),transparent 70%),linear-gradient(180deg,#221c32f2,#100c1afa)}.seat-portrait:before,.seat-portrait:after{content:"";position:absolute;width:calc(10px * var(--u));height:calc(10px * var(--u));border:1px solid rgba(216,182,106,.85);pointer-events:none}.seat-portrait:before{top:3px;left:3px;border-right:none;border-bottom:none}.seat-portrait:after{bottom:3px;right:3px;border-left:none;border-top:none}.seat.on-turn .seat-portrait{border-color:var(--brass);box-shadow:inset 0 1px #ffdcaa26,inset 0 -8px 18px #00000080,0 0 0 2px var(--brass),0 0 14px -2px var(--brass-glow)}.seat-portrait-emoji{font-size:calc(2.6rem * var(--u));line-height:1;filter:drop-shadow(0 2px 5px rgba(0,0,0,.55))}.seat-portrait-corner{position:absolute;bottom:calc(4px * var(--u));right:calc(4px * var(--u));z-index:3;min-width:calc(16px * var(--u));padding:calc(1px * var(--u)) calc(5px * var(--u));background:linear-gradient(180deg,#281e0ef2,#0f0a04fa);border:1px solid rgba(216,182,106,.6);border-radius:999px;font-family:"Noto Serif SC",Fraunces,serif;font-weight:700;font-size:calc(.7rem * var(--u));color:var(--brass-hi);text-align:center;letter-spacing:.04em;line-height:1.1}.seat-nameplate{width:max-content;max-width:calc(190px * var(--u));padding:calc(2px * var(--u)) calc(8px * var(--u));background:linear-gradient(180deg,#ffffff0d,#0000002e),linear-gradient(90deg,#2d1e08eb,#483210eb);border:1px solid rgba(216,182,106,.35);border-top-color:#f1d99a66;border-radius:4px;text-align:center;color:var(--brass-hi);font-family:"Noto Serif SC",Fraunces,serif;font-weight:600;font-size:calc(.82rem * var(--u));letter-spacing:.02em;box-shadow:inset 0 1px #ffdcaa26,0 2px 6px #00000059;overflow:hidden}.seat-nameplate-text{display:block;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.1}.seat-nameplate.team-ns{background:linear-gradient(180deg,#ffffff0d,#0000002e),linear-gradient(90deg,#6e201deb,#a93f37eb);color:#fff}.seat-nameplate.team-ew{background:linear-gradient(180deg,#ffffff0d,#0000002e),linear-gradient(90deg,#1f3d80eb,#2e5cb2eb);color:#fff}.seat-nameplate.you{box-shadow:inset 0 1px #ffdcaa2e,inset 0 0 0 1px #f1d99a80,0 2px 6px #0006}.seat-nameplate.offline{opacity:.55}.seat-nameplate.offline .seat-nameplate-text{text-decoration:line-through}.seat-letter{font-family:var(--font-serif);font-weight:700;font-size:calc(.9rem * var(--u));width:calc(1.6rem * var(--u));height:calc(1.6rem * var(--u));display:inline-flex;align-items:center;justify-content:center;background:#0d1116;border:1px solid var(--line);border-radius:7px;letter-spacing:.04em}.seat-letter.team-ns{background:linear-gradient(180deg,#e5675c,#a93f37);color:#fff;border-color:#6e201d}.seat-letter.team-ew{background:linear-gradient(180deg,#5b8de8,#2e5cb2);color:#fff;border-color:#1f3d80}.seat-letter.declarer{background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));color:#221802;border-color:#6b521f}.seat-letter.dummy{background:linear-gradient(180deg,#3a3550,#28243a);color:#cfc7e8;border-color:#4a4368}.seat.on-turn .seat-letter{background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));color:#221802;border-color:#6b521f}.seat-name{color:var(--muted);font-size:calc(.92rem * var(--u));font-weight:500}.seat-name.team-ns{color:var(--team-ns)}.seat-name.team-ew{color:var(--team-ew)}.seat-name.you{font-weight:700}.seat-name.offline{text-decoration:line-through;opacity:.5}.seat-role{margin-left:auto;font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}.seat-role.is-declarer{color:var(--brass)}.seat-fallback{background:#4a3a14;color:#f1d99a;border-color:#6b521f;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;padding:.14rem .45rem}.seat-role.is-dummy{color:#b3a8e0}.seat-role.role-on-fan{position:absolute;left:50%;transform:translate(-50%);margin-left:0;white-space:nowrap;padding:calc(1px * var(--u)) calc(7px * var(--u));border-radius:6px;background:#08140c8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:4;pointer-events:none}.seat-role.role-on-fan.role-above{bottom:100%;margin-bottom:calc(5px * var(--u))}.seat-role.role-on-fan.role-below{top:100%;margin-top:calc(5px * var(--u))}.dou-seat-degraded,.dou-name-degraded{display:inline-block;background:#4a3a14;color:#f1d99a;border:1px solid #6b521f;border-radius:3px;font-size:.55rem;letter-spacing:.05em;padding:.08rem .32rem;margin-left:.35rem;vertical-align:middle;white-space:nowrap}.dou-name-degraded{font-size:.5rem;padding:.05rem .25rem;margin-left:.25rem}.seat-hcp{position:absolute;top:calc(.3rem * var(--u));right:calc(.4rem * var(--u));z-index:5;padding:.1rem .5rem}.seat-hcp+.seat-role{margin-left:.4rem}.btn-remove-bot{margin-left:auto;width:1.25rem;height:1.25rem;padding:0;border-radius:50%;background:#c0403a26;border:1px solid #6e201d;color:#f3b4b0;font-size:1rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.btn-remove-bot:hover{background:linear-gradient(180deg,#c0403a,#8f2a26);color:#fff}.seat-hcp+.btn-remove-bot,.seat-role+.btn-remove-bot{margin-left:.3rem}.btn-stand{margin-left:auto;width:1.25rem;height:1.25rem;padding:0;border-radius:50%;background:#b4b4b41f;border:1px solid var(--line);color:var(--muted);font-size:1rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.btn-stand:hover{background:linear-gradient(180deg,#4a4f56,#2c3038);color:var(--text);border-color:var(--brass-lo)}.seat-hcp+.btn-stand,.seat-role+.btn-stand{margin-left:.3rem}.seat-kick-row{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.3rem;justify-content:center}.btn-kick{padding:.2rem .55rem;border-radius:6px;font-size:.7rem;letter-spacing:.04em;font-weight:600;cursor:pointer;font-family:var(--font-sans);white-space:nowrap;line-height:1.1}.btn-kick-ben{background:linear-gradient(180deg,var(--brass-hi),var(--brass));border:1px solid #6b521f;color:#221802}.btn-kick-ben:hover{background:linear-gradient(180deg,#f4e0a8,var(--brass));border-color:#4d3a16}.btn-kick-basic{background:linear-gradient(180deg,#c8893f38,#784b1e52);border:1px solid #8a5a2f;color:#f1d99a}.btn-kick-basic:hover{background:linear-gradient(180deg,#c0813a,#8a5a2f);color:#fff;border-color:#6e441e}.btn-take-over{margin-top:.3rem;padding:.22rem .65rem;border-radius:6px;background:linear-gradient(180deg,#4f9e6c52,#2a69416b);border:1px solid #3f7a55;color:#d4f0db;font-size:.74rem;letter-spacing:.06em;font-weight:700;cursor:pointer;font-family:var(--font-sans);white-space:nowrap}.btn-take-over:hover{background:linear-gradient(180deg,#4f9e6c,#2a6941);color:#fff;border-color:#2a5a3a}.btn-undo{background:#785a3c2e;border:1px solid rgba(216,182,106,.4);color:var(--brass-hi)}.btn-undo:hover{background:#d8b66a38;border-color:var(--brass)}.seat-ctrls{display:flex;gap:.4rem;margin-top:.4rem}.seat-ctrls button{padding:.3rem .6rem;font-size:.82rem;font-weight:500}.hint{color:var(--muted);font-size:.9rem}.hand-fan{position:relative}.pcard{position:absolute;width:var(--card-w);height:var(--card-h);background:var(--card-face);color:var(--black-suit);border:1px solid #cfc7b4;border-radius:calc(6px * var(--u));font-family:var(--font-serif);font-weight:700;box-shadow:0 3px 7px -3px #0000008c,inset 0 0 0 1px #ffffff80;transition:transform .15s cubic-bezier(.2,.8,.25,1),box-shadow .15s}.pcard.suit-S{color:var(--suit-S)}.pcard.suit-H{color:var(--suit-H)}.pcard.suit-D{color:var(--suit-D)}.pcard.suit-C{color:var(--suit-C)}.pcard .idx{position:absolute;top:calc(2.5px * var(--u));left:calc(3px * var(--u));display:flex;flex-direction:column;align-items:center;line-height:1;gap:calc(1px * var(--u))}.pcard .idx .r{font-size:calc(15px * var(--u) * var(--card-scale))}.pcard .idx .s{font-size:calc(11px * var(--u) * var(--card-scale))}.pcard .idx .r.r-ten{letter-spacing:-.15em;padding-right:.12em}.pcard .idx.br{top:auto;left:auto;bottom:calc(2.5px * var(--u));right:calc(3px * var(--u));transform:rotate(180deg)}.pcard .pip{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:calc(26px * var(--u));line-height:1;opacity:1;pointer-events:none}.dir-N .pip,.dir-W .pip,.dir-E .pip{transform:translate(-50%,-50%) rotate(180deg)}.pcard.back{background:repeating-linear-gradient(45deg,transparent 0 5px,rgba(216,182,106,.12) 5px 6px),repeating-linear-gradient(-45deg,transparent 0 5px,rgba(216,182,106,.12) 5px 6px),linear-gradient(160deg,#20283a,#161a2c 60%,#20283a);border:1px solid #1a1f2c;box-shadow:inset 0 0 0 2px #d8b66a29,0 2px 5px -2px #00000080}.dir-S{width:calc(420px * var(--u));height:calc(100px * var(--u));transform:translateY(calc(-20px * var(--u)))}.dir-S .pcard{left:50%;top:50%;margin:calc(var(--card-h) / -2) 0 0 calc(var(--card-w) / -2);transform-origin:center center;transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg))}.dir-S .pcard.clickable{cursor:pointer}@media (hover: hover){.dir-S .pcard.clickable:hover{box-shadow:0 6px 14px -6px #0000008c,0 0 0 1px var(--brass),0 0 14px -4px var(--brass-glow);z-index:50!important}}.dir-N{width:calc(420px * var(--u));height:calc(100px * var(--u));transform:translateY(calc(12px * var(--u)))}.dir-N .pcard{left:50%;top:50%;margin:calc(var(--card-h) / -2) 0 0 calc(var(--card-w) / -2);transform-origin:center center;transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg))}.dir-N .pcard.clickable{cursor:pointer}@media (hover: hover){.dir-N .pcard.clickable:hover{box-shadow:0 -6px 14px -6px #0000008c,0 0 0 1px var(--brass),0 0 14px -4px var(--brass-glow);z-index:50!important}}.dir-W{width:calc(150px * var(--u));height:calc(400px * var(--u))}.dir-W .pcard{left:50%;top:50%;margin:calc(var(--card-h) / -2) 0 0 calc(var(--card-w) / -2);transform-origin:center center;transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg))}.dir-E{width:calc(150px * var(--u));height:calc(400px * var(--u))}.dir-E .pcard{left:50%;top:50%;margin:calc(var(--card-h) / -2) 0 0 calc(var(--card-w) / -2);transform-origin:center center;transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg))}.pcard.disabled{background:linear-gradient(176deg,#c9c3b3,#b4ad9c);color:#6f6a5d;border-color:#aaa291;box-shadow:0 2px 5px -3px #00000080,inset 0 0 0 1px #ffffff47;cursor:not-allowed}.pcard.disabled.suit-S{color:#6b7589}.pcard.disabled.suit-H{color:#a86f6a}.pcard.disabled.suit-D{color:#a8895f}.pcard.disabled.suit-C{color:#6a8a73}.pcard.selected{z-index:150!important;box-shadow:0 16px 28px -6px #000000b3,0 0 0 2px var(--brass-hi),0 0 28px -2px var(--brass-glow)!important;outline:none}.dir-S .pcard.selected{transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg)) translateY(calc(-14px * var(--u)))!important}.dir-N .pcard.selected{transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg)) translateY(calc(14px * var(--u)))!important}.dir-W .pcard.selected{transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg)) translate(calc(14px * var(--u)))!important}.dir-E .pcard.selected{transform:translate(calc(var(--tx) * var(--u)),calc(var(--ty) * var(--u))) rotate(var(--rot, 0deg)) translate(calc(-14px * var(--u)))!important}.btn-confirm-play{font-size:1rem;font-weight:700;padding:.55rem 1rem;display:inline-flex;align-items:center;gap:.25rem;letter-spacing:.02em}.btn-confirm-play .st-S{color:var(--suit-S);font-size:1.15em;line-height:1}.btn-confirm-play .st-H{color:var(--suit-H);font-size:1.15em;line-height:1}.btn-confirm-play .st-D{color:var(--suit-D);font-size:1.15em;line-height:1}.btn-confirm-play .st-C{color:var(--suit-C);font-size:1.15em;line-height:1}.btn-cancel-play{font-size:.95rem;padding:.5rem .7rem;background:#2a1818;color:#d8a8a8;border:1px solid #4a2828}.btn-cancel-play:hover{background:#3a2020;color:#fcc}.center{grid-area:center;position:relative;min-height:0;border-radius:14px;padding:.9rem;display:flex;flex-direction:column;align-items:center;justify-content:center}body.first-mount .center{animation:rise .6s .32s both}.phase-label{font-family:var(--font-serif);font-weight:600;font-size:1.05rem;margin:0 0 .1rem;letter-spacing:.02em}.phase-hint{color:var(--muted);margin:0 0 .4rem;font-size:.86rem}.center>.phase-label,.last-trick-overlay>.phase-label{font-size:calc(1.5rem * var(--u));margin-bottom:calc(32px * var(--u))}.center>.phase-hint{margin-bottom:calc(20px * var(--u))}.trick{display:grid;grid-template-columns:var(--card-w) var(--card-w) var(--card-w);grid-template-rows:var(--card-h) auto var(--card-h);grid-template-areas:"tW  tN  tE" "tW  tC  tE" "tW  tS  tE";gap:calc(14px * var(--u)) calc(34px * var(--u));padding:calc(20px * var(--u)) calc(34px * var(--u));background:radial-gradient(60% 60% at 50% 50%,rgba(0,0,0,.4),rgba(0,0,0,.16) 65%,transparent 100%)}.trick-center{grid-area:tC;align-self:center;justify-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25));font-family:var(--font-serif)}.trick-center .tc-num{font-weight:700;font-size:calc(42px * var(--u));font-variant-numeric:tabular-nums;letter-spacing:-.02em;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:calc(64px * var(--u));height:calc(64px * var(--u));border:calc(2.5px * var(--u)) solid var(--brass, #b0863d);border-radius:50%;background:#08120c80}.trick-center-peekable{cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.trick-center-peekable:active .tc-num{border-color:var(--brass-hi, #d8b66a)}.trick-center .tc-lbl{font-family:var(--font-sans);font-weight:700;letter-spacing:.22em;text-transform:uppercase;font-size:calc(.62rem * var(--u));color:var(--muted);margin-top:calc(2px * var(--u))}.trick-center:after{content:"";display:block;height:calc(.62rem * var(--u) + 2px * var(--u))}.trick-center.suit-S{color:#8fa3d0}.trick-center.suit-H{color:#d98b84}.trick-center.suit-D{color:#d9b07a}.trick-center.suit-C{color:#84bd99}.trick-center.nt{color:var(--brass-hi)}.trick-N{grid-area:tN}.trick-E{grid-area:tE;align-self:center}.trick-S{grid-area:tS}.trick-W{grid-area:tW;align-self:center}.trick-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.18rem;overflow:visible}.trick-pcard{position:relative;left:auto;top:auto;margin:0;width:var(--card-w);height:var(--card-h);flex:none}body.first-mount .trick-pcard{animation:deal .28s cubic-bezier(.2,.8,.25,1) both}body.first-mount .trick-N .trick-pcard{animation-delay:0ms}body.first-mount .trick-E .trick-pcard{animation-delay:90ms}body.first-mount .trick-S .trick-pcard{animation-delay:.18s}body.first-mount .trick-W .trick-pcard{animation-delay:.27s}@keyframes deal{0%{opacity:0;transform:translateY(8px) scale(.92) rotate(-3deg)}}.trick-pcard.just-played{animation:trick-slide-in .26s cubic-bezier(.2,.75,.3,1) both}.trick-pcard.just-played.from-top{--slide-x: 0;--slide-y: -110%}.trick-pcard.just-played.from-bottom{--slide-x: 0;--slide-y: 110%}.trick-pcard.just-played.from-left{--slide-x: -110%;--slide-y: 0}.trick-pcard.just-played.from-right{--slide-x: 110%;--slide-y: 0}@keyframes trick-slide-in{0%{opacity:0;transform:translate(var(--slide-x, 0),var(--slide-y, 0)) scale(.9)}to{opacity:1;transform:translate(0) scale(1)}}.pcard.trump{background:linear-gradient(176deg,#fdf6dc,#f0d99a);border-color:var(--brass);box-shadow:0 3px 7px -3px #0000008c,0 0 0 2px var(--brass),0 0 12px -2px var(--brass-glow)}.pcard.honor:before,.pcard.honor:after{content:"★";position:absolute;font-size:calc(9px * var(--u));line-height:1;color:var(--brass);text-shadow:0 0 4px var(--brass-glow);pointer-events:none}.pcard.honor:before{top:calc(2.5px * var(--u));right:calc(3px * var(--u))}.pcard.honor:after{bottom:calc(2.5px * var(--u));left:calc(3px * var(--u))}.last-trick-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#0d1e14eb,#08120cf7);border-radius:12px;opacity:0;visibility:hidden;transition:opacity .14s ease;pointer-events:none}.last-trick-overlay.active{opacity:1;visibility:visible}.trick.trick-peek-hidden{visibility:hidden}.trick-empty{width:var(--card-w);height:var(--card-h);flex:none;border-radius:calc(6px * var(--u));border:1px dashed rgba(255,255,255,.14)}.trick-empty.awaiting{position:relative;border-color:var(--brass);box-shadow:0 0 14px -2px var(--brass-glow)}.trick-empty.awaiting:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:0 0 22px 1px var(--brass-glow);opacity:0;pointer-events:none;animation:awaitGlow 1.6s ease-in-out infinite}@keyframes awaitGlow{50%{opacity:1}}.trick-seat-letter{color:var(--muted);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}.trick-seat-letter.lead{color:var(--brass)}.tricks-won{display:flex;gap:calc(8px * var(--u));align-items:center;white-space:nowrap}.tricks-won-claimable{cursor:pointer;padding:calc(2px * var(--u)) calc(6px * var(--u));border-radius:calc(6px * var(--u));border:1px solid rgba(216,182,106,.3);-webkit-tap-highlight-color:rgba(216,182,106,.25)}.tricks-won-claimable:hover{border-color:#d8b66a99;background:#d8b66a14}.tricks-won-claimable:active{background:#d8b66a29}.trick-track-end{color:var(--muted);font-size:calc(.8rem * var(--u));letter-spacing:.06em}.trick-track-end b{color:var(--text);font-family:var(--font-serif);font-size:calc(.95rem * var(--u))}.trick-track-end.ns b{color:var(--team-ns)}.trick-track-end.ew b{color:var(--team-ew)}.trick-bar{display:inline-flex;gap:calc(4px * var(--u))}.trick-bar i{position:relative;width:calc(16px * var(--u));height:calc(21px * var(--u));border-radius:calc(3px * var(--u));background:#ffffff17;border:1px solid rgba(255,255,255,.08)}.trick-bar i.ns{background:linear-gradient(180deg,#e5675c,#a93f37);border-color:#6e201d;box-shadow:0 0 5px -1px #e5675c8c}.trick-bar i.ew{background:linear-gradient(180deg,#5b8de8,#2e5cb2);border-color:#1f3d80;box-shadow:0 0 5px -1px #5b8de88c}.trick-bar i.goal:after{content:"";position:absolute;top:calc(-5px * var(--u));left:50%;transform:translate(-50%);border-left:calc(4px * var(--u)) solid transparent;border-right:calc(4px * var(--u)) solid transparent;border-top:calc(5px * var(--u)) solid var(--brass)}.trick-bar i.goal{border-color:var(--brass);box-shadow:0 0 6px -1px var(--brass-glow)}.result-banner{display:flex;flex-direction:column;align-items:center;gap:.4rem;text-align:center;padding:calc(22px * var(--u)) calc(40px * var(--u));background:radial-gradient(60% 60% at 50% 50%,rgba(0,0,0,.4),rgba(0,0,0,.16) 65%,transparent 100%)}.result-contract{font-family:var(--font-serif);font-size:2rem;font-weight:700;letter-spacing:.04em}.result-outcome{color:var(--muted);font-size:.92rem}.result-score{font-family:var(--font-serif);font-size:1.7rem;font-weight:700;margin-top:.1rem}.result-score.pos.ns,.result-score.pos.team-a{color:var(--team-ns)}.result-score.pos.ew,.result-score.pos.team-b{color:var(--team-ew)}.btn-summary{margin-top:.6rem;padding:.55rem 1.2rem;background:linear-gradient(180deg,#2a3a52,#1a2438);border:1px solid #3a4a66;color:#cfd9ec;font-weight:700;letter-spacing:.04em;border-radius:9px;cursor:pointer;transition:filter .12s,box-shadow .12s}.btn-summary:hover{filter:brightness(1.15);box-shadow:0 4px 14px -4px #78a0dc66}.ben-warming{color:var(--brass-hi);font-weight:600;animation:ben-warming-pulse 1.6s ease-in-out infinite}@keyframes ben-warming-pulse{0%,to{opacity:.55}50%{opacity:1}}.btn-discard{background:linear-gradient(180deg,#4a2a2a,#2c1818);border:1px solid #6b3a3a;color:#f0c8c8;font-weight:600}.btn-discard:hover{filter:brightness(1.18);box-shadow:0 4px 14px -4px #c4505066}.btn-claim{background:linear-gradient(180deg,#523a16,#2e2010);border:1px solid #6b521f;color:#f0dcaa;font-weight:700}.btn-claim:hover{filter:brightness(1.18);box-shadow:0 4px 14px -4px #c4a05080}.claim-sheet{width:min(440px,92vw)}.claim-body{display:flex;flex-direction:column;gap:.7rem}.claim-context{margin:0;color:var(--muted);font-size:.92rem;text-align:center}.claim-vote-list{display:flex;flex-direction:column;gap:.5rem}.claim-vote-row{display:flex;align-items:center;gap:.6rem;padding:.5rem .7rem;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:#ffffff08}.claim-vote-seat{flex-shrink:0;line-height:1;font-family:var(--font-serif);font-weight:700;font-size:1.05rem;color:#241d0c;background:linear-gradient(180deg,var(--brass-hi),var(--brass));border-radius:8px;padding:.14em .46em;box-shadow:inset 0 1px #ffffff47}.claim-vote-name{flex:1 1 auto;min-width:0;font-family:var(--font-serif);font-weight:600;font-size:1rem;color:var(--text);overflow-wrap:anywhere}.claim-vote-status{flex-shrink:0;font-size:.86rem;font-weight:600;color:var(--muted)}.claim-vote-row.agreed{border-color:var(--brass, #b0863d)}.claim-vote-row.agreed .claim-vote-status{color:var(--brass-hi, #d8b66a)}.claim-num-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.4rem;margin-top:.4rem}.claim-num{font-family:var(--font-serif);font-weight:700;font-size:1.05rem;padding:.5rem 0}.claim-dial{--ring-r: 78px;--slot-step: 20deg;--ring-rot: calc(-1 * var(--goal-i) * var(--slot-step));position:relative;width:220px;height:220px;margin:.4rem auto;touch-action:none}.claim-dial .gear-body{position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:50%;transform:rotate(var(--ring-rot));background:radial-gradient(circle at 50% 34%,#969ca6,#626873 42%,#40454e 72%,#2a2e35);box-shadow:inset 0 2px 7px #ffffff4d,inset 0 -9px 18px #0000009e,0 4px 14px #0009}.claim-dial .gear-body:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;background:repeating-conic-gradient(from calc(var(--slot-step) / -4),#8b929c 0deg calc(var(--slot-step) / 2),#363b43 calc(var(--slot-step) / 2) var(--slot-step));-webkit-mask:radial-gradient(closest-side,transparent 80%,#000 82%);mask:radial-gradient(closest-side,transparent 80%,#000 82%);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}.claim-dial .slot{position:absolute;top:50%;left:50%;width:27px;height:17px;margin:-8.5px -13.5px;border-radius:5px;background:#333;border:1px solid rgba(0,0,0,.55);box-shadow:inset 0 1px #ffffff8c,inset 0 -2px 4px #0006;transform:rotate(calc(var(--i) * var(--slot-step) + var(--ring-rot))) translateY(calc(-1 * var(--ring-r)))}.claim-dial .slot.deep-ns{background:linear-gradient(180deg,#d5483a,#9c2c22)}.claim-dial .slot.light-ns{background:linear-gradient(180deg,#f2b7af,#d98a80)}.claim-dial .slot.light-ew{background:linear-gradient(180deg,#bcd2f6,#8fb0e6)}.claim-dial .slot.deep-ew{background:linear-gradient(180deg,#4172c6,#244f96)}.claim-dial .gear-marker{position:absolute;top:50%;left:50%;width:11px;height:34px;margin:-17px -5.5px;border-radius:5px;background:linear-gradient(180deg,#ffe9a6,#e9c35f 38%,#b9862c);border:1px solid #8a5f1c;box-shadow:inset 0 1px #ffffffbf,inset 0 -3px 5px #00000059,0 0 9px 2px #f0be5abf,0 2px 5px #0000008c;transform:rotate(calc(var(--marker-i) * var(--slot-step) + var(--ring-rot))) translateY(calc(-1 * var(--ring-r)));transition:transform 90ms ease-out;z-index:5}.claim-dial .dial-center{position:absolute;top:50%;left:50%;width:118px;height:118px;margin:-59px;border-radius:50%;background:radial-gradient(circle at 50% 34%,#565c66,#363b43 52%,#1e2127);border:2px solid #6b7079;box-shadow:inset 0 2px 6px #ffffff4d,inset 0 -8px 14px #0009,0 2px 8px #0000008c;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.claim-dial .dial-center:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border-radius:50%;border:1px solid rgba(255,255,255,.1);box-shadow:inset 0 0 8px #00000080;pointer-events:none}.dial-contract{font-family:var(--font-sans);font-weight:800;font-size:2.1rem;color:#f0efe4;line-height:1;display:inline-flex;align-items:baseline;gap:.04em}.dial-contract .st-S{color:#7aa2e8}.dial-contract .st-H{color:#ef7066}.dial-contract .st-D{color:#f0b060}.dial-contract .st-C{color:#66c98a}.dial-contract .st-NT{color:#dfe4ea;font-size:.66em;margin-left:.05em}.dial-result{font-family:var(--font-sans);font-weight:800;font-size:1.15rem;line-height:1}.dial-result.made{color:#6fcf97}.dial-result.down{color:#eb5757}.claim-confirm{display:block;margin:.2rem auto 0;min-width:9rem}.claim-dial.claim-dial-readonly{pointer-events:none;cursor:default}.claim-vote-actions{display:flex;gap:.6rem;margin-top:.3rem}.claim-vote-actions>button{flex:1 1 0;min-width:0}.claim-banner{position:fixed;left:50%;bottom:4.5rem;transform:translate(-50%);z-index:180;display:inline-flex;align-items:center;gap:.7rem;flex-wrap:wrap;padding:.6rem 1rem;background:linear-gradient(180deg,#3a2c10,#1f170a);border:1px solid #6b521f;border-radius:999px;color:#f0dcaa;font-weight:600;box-shadow:0 12px 32px -10px #000000a6}.claim-banner .claim-text{font-family:var(--font-sans)}.claim-banner .claim-result{color:var(--brass-hi);font-family:var(--font-serif);font-weight:800}.claim-banner .claim-waiting{color:var(--muted);font-size:.85rem}.btn-claim-accept{padding:.35rem .9rem;background:linear-gradient(180deg,#2a6a40,#163d24);border:1px solid #4b8c5c;color:#d8f0dd;font-weight:700;border-radius:999px}.btn-claim-accept:hover{filter:brightness(1.18)}.btn-claim-reject{padding:.35rem .9rem;background:linear-gradient(180deg,#6a2a2a,#3d1616);border:1px solid #8c4b4b;color:#f0d8d8;font-weight:700;border-radius:999px}.btn-claim-reject:hover{filter:brightness(1.18)}.board-popup{z-index:220;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;font-family:var(--font-serif);font-weight:700;color:#fff;box-shadow:0 24px 64px -18px #000000d9,0 0 0 1px #ffffff0a;border-radius:18px}.board-popup.bp-team-a{background:linear-gradient(180deg,#d04e46f7,#a03030f7);border:1px solid rgba(255,200,200,.45)}.board-popup.bp-team-b{background:linear-gradient(180deg,#487adcf7,#2854a8f7);border:1px solid rgba(200,220,255,.45)}.board-popup.bp-team-tie{background:linear-gradient(180deg,#323840f7,#222830f7);color:var(--text);border:1px solid var(--line)}.bp-side-cell{display:flex;flex-direction:column;align-items:center;gap:.25rem}.bp-side-label{font-family:var(--font-sans);font-weight:700;font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;opacity:.85}.bp-side-score{font-family:var(--font-serif);font-weight:800;font-variant-numeric:tabular-nums;line-height:1}.bp-side-score.neutral{color:#fff9}.bp-side-score.team-a{color:#5a1010;text-shadow:0 1px 0 rgba(255,220,220,.25)}.bp-side-score.team-b{color:#0e2e6d;text-shadow:0 1px 0 rgba(220,230,255,.25)}.bp-center-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;padding:0 1rem}.bp-imp-num{font-family:var(--font-serif);font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:#fff;position:relative}.bp-imp-num.tie{color:#ffffffb3}.bp-imp-label{font-family:var(--font-sans);font-weight:800;font-size:1.4rem;letter-spacing:.22em;text-transform:uppercase;opacity:.95;margin-top:.35rem}.bp-imp-gold{background:linear-gradient(180deg,#ffe89a,#f0c44c 45%,#b58220);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 18px rgba(240,196,76,.55)}.bp-imp-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,#fff0 35%,#ffffffe6,#fff0 65%);-webkit-background-clip:text;background-clip:text;color:transparent;pointer-events:none;background-size:220% 100%;animation:bp-shimmer 1.6s ease-in-out infinite}@keyframes bp-shimmer{0%{background-position:180% 0}to{background-position:-80% 0}}.board-popup-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:460px;padding:1.6rem 2.6rem;gap:1.4rem;animation:bp-center-pop 5s cubic-bezier(.2,.7,.2,1) both}.board-popup-center .bp-side-score{font-size:2rem}.board-popup-center .bp-imp-num{font-size:5.2rem}.board-popup-center .bp-imp-num:not(.bp-imp-gold){text-shadow:0 2px 14px rgba(0,0,0,.35)}@keyframes bp-center-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}4%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}10%{transform:translate(-50%,-50%) scale(1)}90%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.95)}}.board-popup-corner{position:fixed;bottom:1.2rem;right:1.2rem;padding:.55rem 1rem;gap:.55rem;border-radius:14px;animation:bp-corner-slide 5s cubic-bezier(.2,.7,.2,1) both}.board-popup-corner .bp-side-score{font-family:Hanken Grotesk,Inter,sans-serif;font-weight:800;font-size:1.4rem}.board-popup-corner .bp-imp-num{font-size:2.1rem}.board-popup-corner .bp-center-cell{padding:0 .55rem}@keyframes bp-corner-slide{0%{opacity:0;transform:translate(140%)}5%{opacity:1;transform:translate(0)}95%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(140%)}}.btn-dd{padding:.55rem 1.2rem;background:linear-gradient(180deg,#4a3a1c,#2e220e);border:1px solid #6b521f;color:#f0dcaa;font-weight:700;letter-spacing:.04em;border-radius:9px;cursor:pointer;transition:filter .12s,box-shadow .12s}.btn-dd:hover{filter:brightness(1.18);box-shadow:0 4px 14px -4px #c4a05080}.result-btn-row{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:dense;gap:.5rem;justify-items:stretch;align-content:start;margin-top:.6rem}.result-btn-row .btn-summary{margin-top:0}.result-nav-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem;justify-content:center;align-items:center}.result-nav-row button{flex:1 1 auto;margin-top:0;padding:.5rem .7rem;font-size:.88rem;font-weight:700;border-radius:8px;cursor:pointer;white-space:nowrap}.result-nav-row .hint{flex-basis:100%;text-align:center;margin:.1rem 0 0}.center-cta{display:flex;flex-direction:column;align-items:center;gap:calc(.6rem * var(--u, 1));width:100%;max-width:calc(300px * var(--u, 1))}.center-cta button{cursor:pointer;white-space:nowrap;border-radius:10px;font-weight:700}.center-cta button:first-child{width:100%;padding:calc(.72rem * var(--u, 1)) 1rem;font-size:calc(1.15rem * var(--u, 1));letter-spacing:.05em}.center-cta button:not(:first-child){padding:.42rem 1.2rem;font-size:.9rem}.center-cta .hint{text-align:center;color:var(--muted);font-size:.86rem;margin:0}.center-cta .hint.ben-warming{color:var(--brass-hi)}.result-btn-row .btn-summary,.result-btn-row .btn-dd,.result-btn-row .btn-review,.result-btn-row .btn-fav{padding:.42rem .5rem!important;font-size:.82rem!important;font-weight:700!important;letter-spacing:.02em!important;border-radius:8px!important;cursor:pointer;transition:filter .12s,box-shadow .12s;white-space:nowrap;min-width:0}.btn-fav{background:linear-gradient(180deg,#3a2f1a,#241d10);border:1px solid #5a4a26;color:#eadcaa}.btn-fav:hover{filter:brightness(1.15);box-shadow:0 4px 14px -4px #c4a05059}.dd-sheet{width:min(880px,94vw)}.dd-row{display:flex;gap:1.2rem;align-items:flex-start;flex-wrap:wrap}.dd-row-left{flex:0 1 auto;min-width:0}.dd-row-right{flex:1 1 360px;min-width:280px;padding-left:1rem;border-left:1px solid var(--line)}@media (max-width: 720px){.dd-sheet{width:min(520px,94vw)}.dd-row{flex-direction:column}.dd-row-right{border-left:none;padding-left:0;padding-top:.8rem;border-top:1px solid var(--line)}}.dd-body{display:flex;flex-direction:column;gap:1rem;align-items:center}.dd-grid-wrap{display:flex;flex-direction:column;gap:.7rem;align-items:center}.dd-grid{border-collapse:collapse;font-variant-numeric:tabular-nums;font-family:var(--font-serif)}.dd-grid th,.dd-grid td{padding:.4rem .7rem;text-align:center;border:1px solid var(--line);font-weight:600}.dd-grid .dd-corner{border-color:transparent}.dd-grid .dd-strain{background:var(--panel-2);font-size:1rem}.dd-grid .dd-seat{font-family:var(--font-serif);font-weight:800;font-size:1rem;background:var(--panel-2)}.dd-grid .dd-seat.team-ns{color:var(--team-ns)}.dd-grid .dd-seat.team-ew{color:var(--team-ew)}.dd-grid .dd-cell{background:var(--panel);color:var(--muted);font-size:.95rem}.dd-grid .dd-cell-pos{color:var(--text)}.dd-grid .dd-cell-game{background:linear-gradient(180deg,#c4a0502e,#c4a05014);color:var(--brass-hi)}.dd-grid .dd-cell-slam{background:linear-gradient(180deg,#c4a05059,#c4a0502e);color:#fff;font-weight:800}.dd-par{display:flex;flex-direction:column;gap:.4rem;align-items:center;padding-top:.6rem;border-top:1px dashed var(--line);width:100%;text-align:center}.dd-par-title{font-family:var(--font-sans);font-weight:700;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.dd-par-score{font-family:var(--font-serif);font-weight:800;font-size:1.1rem;white-space:nowrap}.dd-par-row{white-space:nowrap}.dd-par-score.ns,.dd-par-score.team-a{color:var(--team-ns)}.dd-par-score.ew,.dd-par-score.team-b{color:var(--team-ew)}.dd-par-row .st-S{color:var(--suit-S);font-size:1.05em}.dd-par-row .st-H{color:var(--suit-H);font-size:1.05em}.dd-par-row .st-D{color:var(--suit-D);font-size:1.05em}.dd-par-row .st-C{color:var(--suit-C);font-size:1.05em}.dd-par-row .st-NT{font-size:.9em;margin-left:.05em}.dd-par-row .dbl-mark{font-family:var(--font-serif);font-weight:800;margin:0 .05em 0 .18em}.dd-par-row .dbl-mark.x{color:var(--brass)}.dd-par-row .dbl-mark.xx{color:var(--brass-hi);font-weight:900;letter-spacing:-.05em}.dd-par-row .decl{font-family:var(--font-serif);font-weight:700}.dd-par-row .decl.ns,.dd-par-row .decl.team-a{color:var(--team-ns)}.dd-par-row .decl.ew,.dd-par-row .decl.team-b{color:var(--team-ew)}.dd-par-tricks{width:100%;margin-top:.15rem;color:var(--muted);font-size:.88rem}.dd-compare{display:flex;gap:1.2rem;align-items:flex-start;margin-top:.8rem;flex-wrap:wrap}.dd-compare>.dd-par{flex:1 1 0;min-width:0;margin-top:0}.dd-actual{padding-right:.7rem}.dd-compare>.dd-par.dd-actual+.dd-par{border-left:1px solid var(--line);padding-left:.7rem}.dd-par-list{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--muted)}.dd-par-row .lv{font-family:var(--font-serif);font-weight:700;color:var(--text)}.replay-dd{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:.7rem .9rem .9rem;display:flex;flex-direction:column;gap:.5rem}.replay-dd-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.replay-dd h3{margin:0;font-family:var(--font-serif);font-weight:700;font-size:.95rem;color:var(--brass-hi);letter-spacing:.04em}.replay-dd-expand{background:transparent;border:1px solid var(--line);color:var(--muted);width:1.6rem;height:1.6rem;border-radius:4px;font-size:1rem;line-height:1;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}.replay-dd-expand:hover{color:var(--brass-hi);border-color:var(--brass)}.replay-dd .hint{color:var(--muted);font-size:.78rem;margin:0}.replay-dd .btn-dd{align-self:flex-start;padding:.35rem .7rem;font-size:.82rem}.replay-dd .replay-dd-error{color:#f7c8c8;background:#b43c3c2e;border:1px solid rgba(220,100,100,.35);border-radius:8px;padding:.5rem .7rem;font-size:.82rem;margin:0}.replay-dd .dd-grid{font-size:.78rem}.replay-dd .dd-grid th,.replay-dd .dd-grid td{padding:.25rem .45rem}.sayc-sheet{width:min(760px,95vw);max-height:90vh;display:flex;flex-direction:column;padding-bottom:.4rem}.sayc-modal .summary-head{margin-bottom:.6rem}.summary-modal .sayc-sheet-frame{width:98vw;max-width:1800px;height:min(94vh,100%);max-height:100%;padding:.8rem .8rem .4rem}.sayc-iframe{flex:1;width:100%;border:1px solid var(--line);border-radius:10px;background:var(--bg);display:block}@media (max-width: 540px){.summary-modal .sayc-sheet-frame{width:98vw;padding:.6rem .5rem .3rem}}.sayc-tabs{display:flex;flex-wrap:wrap;gap:.3rem;padding:.2rem 0 .6rem;border-bottom:1px solid var(--line);margin:0 -.2rem .4rem}.sayc-tab{font-family:var(--font-sans);font-size:.82rem;font-weight:600;padding:.4rem .75rem;border-radius:8px 8px 0 0;background:transparent;color:var(--muted);border:1px solid transparent;border-bottom:none;cursor:pointer;transition:color .12s ease,background .12s ease,border-color .12s ease;position:relative}.sayc-tab:hover{color:var(--text);background:#ffffff0a}.sayc-tab-active{color:var(--brass-hi);background:var(--panel);border-color:var(--line)}.sayc-tab-active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--panel)}.sayc-body{display:flex;flex-direction:column;gap:0;overflow-y:auto;padding:.2rem .2rem .8rem;flex:1 1 auto;min-height:0}.sayc-page{display:flex;flex-direction:column;gap:.9rem}.sayc-page-title{margin:0;font-family:var(--font-serif);font-weight:700;font-size:1.18rem;letter-spacing:.02em;color:var(--brass-hi)}.sayc-page-intro{margin:0;font-size:.9rem;color:var(--muted);line-height:1.55;padding:.5rem .7rem;background:#ffffff08;border-left:2px solid var(--brass-lo);border-radius:0 6px 6px 0}.sayc-quick{display:flex;flex-direction:column;gap:.3rem}.sayc-quick-label{font-family:var(--font-sans);font-weight:700;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.sayc-block{display:flex;flex-direction:column;gap:.4rem;padding-top:.6rem;border-top:1px dashed var(--line)}.sayc-block-heading{margin:0;font-family:var(--font-serif);font-weight:700;font-size:1rem;letter-spacing:.02em;color:var(--text)}.sayc-para{margin:0;font-size:.9rem;line-height:1.6;color:var(--text)}.sayc-bullet{display:flex;gap:.5rem;align-items:flex-start;font-size:.88rem;line-height:1.55;color:var(--text);padding-left:.4rem}.sayc-bullet-dot{color:var(--brass-hi);font-weight:700;flex:0 0 auto}.sayc-table{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:.88rem;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.sayc-block .sayc-table{margin-top:.2rem}.sayc-table tr{border-bottom:1px solid rgba(255,255,255,.05)}.sayc-table tr:last-child{border-bottom:none}.sayc-table td{padding:.45rem .7rem;vertical-align:top;line-height:1.5}.sayc-bid{font-family:var(--font-serif);font-weight:700;color:var(--text);white-space:nowrap;width:1%;background:#ffffff06;border-right:1px solid rgba(255,255,255,.05)}.sayc-bid .st-S{color:var(--suit-S);font-size:1.05em}.sayc-bid .st-H{color:var(--suit-H);font-size:1.05em}.sayc-bid .st-D{color:var(--suit-D);font-size:1.05em}.sayc-bid .st-C{color:var(--suit-C);font-size:1.05em}.sayc-bid .st-NT{font-size:.9em;color:var(--muted)}.sayc-meaning{color:var(--text)}.sayc-meaning .st-S{color:var(--suit-S)}.sayc-meaning .st-H{color:var(--suit-H)}.sayc-meaning .st-D{color:var(--suit-D)}.sayc-meaning .st-C{color:var(--suit-C)}.sayc-para .st-S,.sayc-bullet .st-S{color:var(--suit-S)}.sayc-para .st-H,.sayc-bullet .st-H{color:var(--suit-H)}.sayc-para .st-D,.sayc-bullet .st-D{color:var(--suit-D)}.sayc-para .st-C,.sayc-bullet .st-C{color:var(--suit-C)}@media (max-width: 540px){.sayc-sheet{width:97vw;padding:1rem .8rem .6rem}.sayc-tab{font-size:.74rem;padding:.3rem .55rem}.sayc-page-title{font-size:1.05rem}.sayc-page-intro{font-size:.82rem;padding:.4rem .55rem}.sayc-table{font-size:.8rem}.sayc-table td{padding:.35rem .5rem}.sayc-para,.sayc-bullet{font-size:.82rem}.sayc-block-heading{font-size:.92rem}}.summary-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;box-sizing:border-box;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex;align-items:center;justify-content:center;background:#040806bd;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .16s ease}.summary-modal.open{opacity:1;visibility:visible}.summary-sheet{width:min(720px,92vw);max-height:86vh;overflow-y:auto;background:linear-gradient(180deg,var(--panel-3) 0%,var(--panel-2) 100%);border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 80px -20px #000c;padding:1.2rem 1.6rem 1.4rem}.summary-head{display:flex;align-items:center;gap:.8rem;margin-bottom:.8rem}.summary-head h3{margin:0;flex:1;font-family:var(--font-serif);font-weight:700;font-size:1.15rem;letter-spacing:.02em;color:var(--text)}.summary-close{width:2rem;height:2rem;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#0d1116;border:1px solid var(--line);color:var(--muted);font-size:1.3rem;line-height:1;cursor:pointer;padding:0}.summary-close:hover{color:var(--text);border-color:var(--brass-lo)}.summary-body{font-family:var(--font-sans);font-size:.96rem;line-height:1.6;color:var(--text)}.summary-body h2,.summary-body h3,.summary-body h4{font-family:var(--font-serif);margin:1rem 0 .4rem;color:var(--brass-hi);letter-spacing:.02em}.summary-body h3{font-size:1.05rem}.summary-body p{margin:.5rem 0}.summary-body ul{padding-left:1.4rem;margin:.4rem 0}.summary-body li{margin:.2rem 0}.summary-body strong{color:var(--brass-hi)}.summary-body code{background:#ffffff0f;padding:0 .3rem;border-radius:4px;font-family:Hanken Grotesk,monospace}.summary-loading{color:var(--muted);font-style:italic}.summary-loading-sub{font-size:.82rem;opacity:.7;margin-top:.3rem}.summary-error{color:var(--bad);font-family:monospace;font-size:.85rem;white-space:pre-wrap}.bid-bubble{--tile: #6b727c;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.08em;min-width:1.55em;box-sizing:border-box;font-family:var(--font-sans);font-weight:800;font-size:1rem;color:#fff;line-height:1;padding:.3em;border-radius:.42em;background:linear-gradient(180deg,var(--tile) 0%,color-mix(in srgb,var(--tile) 84%,#000) 100%);border:1px solid color-mix(in srgb,var(--tile) 48%,#000);box-shadow:inset 0 -2px 4px #0000004d,0 3px 7px -3px #000000a6;text-shadow:0 1px 1px rgba(0,0,0,.4);overflow:hidden}.bid-bubble:before{content:"";position:absolute;left:0;right:0;top:0;height:50%;background:linear-gradient(180deg,#ffffff29,#ffffff05);pointer-events:none}.bid-bubble>*{position:relative;z-index:1}.bid-bubble.suit-S{--tile: var(--suit-S)}.bid-bubble.suit-H{--tile: var(--suit-H)}.bid-bubble.suit-D{--tile: var(--suit-D)}.bid-bubble.suit-C{--tile: var(--suit-C)}.bid-bubble.strain-NT{--tile: var(--strain-NT)}.bid-log{position:absolute;display:flex;gap:calc(5px * var(--u));z-index:5}.bid-log .bid-bubble{font-size:calc(.9rem * var(--u));padding:0;white-space:nowrap;width:calc(34px * var(--u));height:calc(34px * var(--u));border-radius:calc(9px * var(--u));gap:calc(1px * var(--u))}.dir-log-S{bottom:100%;right:calc(12px * var(--u));margin-bottom:calc(7px * var(--u));flex-direction:row-reverse}.dir-log-N{top:100%;left:calc(12px * var(--u));margin-top:calc(7px * var(--u));flex-direction:row}.dir-log-N .bid-bubble{transform:rotate(180deg)}.dir-log-W{left:100%;bottom:calc(12px * var(--u));margin-left:calc(-3px * var(--u));flex-direction:column-reverse}.dir-log-W .bid-bubble{transform:rotate(90deg);margin:calc(8px * var(--u)) 0}.dir-log-E{right:100%;top:calc(12px * var(--u));margin-right:calc(-3px * var(--u));flex-direction:column}.dir-log-E .bid-bubble{transform:rotate(-90deg);margin:calc(8px * var(--u)) 0}.bid-bubble.pass{--tile: var(--call-pass)}.bid-bubble.dbl{--tile: var(--call-dbl)}.bid-bubble.rdbl{--tile: var(--call-rdbl)}.bid-bubble.pass,.bid-bubble.dbl,.bid-bubble.rdbl{letter-spacing:.05em}.bid-bubble.pass{text-transform:uppercase;font-family:"Manrope",var(--font-sans),sans-serif;font-weight:800;letter-spacing:.02em}.bid-bubble .call-word{display:inline-block;font-size:1.34em}.bid-bubble.pass .call-word{transform:rotate(-10deg);font-size:.82em}.bid-bubble:not(.pass):not(.dbl):not(.rdbl){--split: calc(50% - 2px * var(--u, 1));display:grid;grid-template-columns:var(--split) minmax(0,1fr);padding:0;background:linear-gradient(90deg,color-mix(in srgb,var(--tile) 82%,#fff) 0 var(--split),color-mix(in srgb,var(--tile) 84%,#000) var(--split) 100%)}.bid-bubble .lv{place-self:center}.bid-bubble .st-S,.bid-bubble .st-H,.bid-bubble .st-D,.bid-bubble .st-C,.bid-bubble .st-NT{align-self:center;justify-self:start;margin-left:calc(2px * var(--u, 1))}.bid-bubble .lv{font-size:1.28em;font-weight:900;text-shadow:none;color:color-mix(in srgb,var(--tile) 40%,#000)}.bid-bubble .st-S,.bid-bubble .st-H,.bid-bubble .st-D,.bid-bubble .st-C{color:#fff;font-size:1.69em;line-height:1}.bid-bubble .st-NT{color:color-mix(in srgb,var(--tile) 78%,#000);background:#fff;border-radius:50%;font-size:.82em;font-weight:800;letter-spacing:.01em;text-shadow:none;width:2em;height:2em;display:inline-flex;align-items:center;justify-content:center;transform:rotate(-10deg)}.auction-log{background:linear-gradient(180deg,var(--panel) 0%,#11151a 100%);border:1px solid var(--line);padding:.9rem 1rem;border-radius:12px}body.first-mount .auction-log{animation:rise .6s .2s both}.auction-log h3{margin:0 0 .7rem;font-size:.72rem;color:var(--faint);font-weight:700;letter-spacing:.28em;text-transform:uppercase;display:flex;align-items:center;gap:.5rem}.auction-log h3:after{content:"";flex:1;height:1px;background:var(--line)}.auction-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.25rem .3rem;font-family:var(--font-serif);font-size:.93rem;text-align:center}.auction-head{color:var(--faint);font-size:.72rem;font-family:var(--font-sans);letter-spacing:.1em;padding-bottom:.4rem;margin-bottom:.2rem;border-bottom:1px solid var(--line)}.auction-cell{padding:.22rem 0;border-radius:5px;color:var(--text);position:relative}.auction-cell.pass{color:var(--faint)}.auction-cell.bid-S{color:var(--suit-S)}.auction-cell.bid-H{color:var(--suit-H)}.auction-cell.bid-D{color:var(--suit-D)}.auction-cell.bid-C{color:var(--suit-C)}.auction-cell.final{background:#d8b66a24;color:var(--brass-hi);box-shadow:inset 0 0 0 1px var(--brass-lo)}.auction-cell .st{font-size:1.25em;line-height:1;margin-left:.12em}.auction-cell .st.st-NT{font-size:.9em;margin-left:.1em}.auction-cell.has-explain,.bid-bubble.has-explain{cursor:help}.auction-cell.has-explain{text-decoration:underline dotted var(--faint);text-underline-offset:2px}.bid-bubble.has-explain{box-shadow:0 0 0 1px #d4af3759 inset}.auction-explain-popover{position:fixed;z-index:60;max-width:260px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:.55rem .7rem;box-shadow:0 4px 14px #00000059;font-size:1.05rem;line-height:1.4;color:var(--text);pointer-events:auto;--suit-S: #9bb8e6;--suit-H: #ff7066;--suit-D: #f0b060;--suit-C: #5fc080}.auction-explain-title{font-size:1.1rem}.auction-explain-meta{font-size:.85rem}.auction-explain-title{font-family:var(--font-serif);color:var(--brass-hi);margin-bottom:.3rem}.auction-explain-dist{display:flex;flex-wrap:wrap;gap:.4rem .55rem;margin-bottom:.3rem;align-items:center;line-height:1.4}.dist-chip{display:inline-flex;align-items:center;gap:.2rem;white-space:nowrap;line-height:1}.dist-chip.suit-S{color:var(--suit-S)}.dist-chip.suit-H{color:var(--suit-H)}.dist-chip.suit-D{color:var(--suit-D)}.dist-chip.suit-C{color:var(--suit-C)}.suit-glyph{font-size:1em;line-height:1;display:inline-block}.suit-glyph.suit-S{color:var(--suit-S)}.suit-glyph.suit-H{color:var(--suit-H)}.suit-glyph.suit-D{color:var(--suit-D)}.suit-glyph.suit-C{color:var(--suit-C)}.auction-explain-meta{color:var(--muted)}.btn-review{background:linear-gradient(180deg,#2a3f60,#1c2a40);color:var(--text);border:1px solid #3a567f;padding:.45rem .9rem;border-radius:6px;font-size:.85rem;cursor:pointer}.btn-review:hover{background:linear-gradient(180deg,#324a72,#233454)}.review-sheet{max-width:560px;--suit-S: #9bb8e6;--suit-H: #ff7066;--suit-D: #f0b060;--suit-C: #5fc080}.review-pending{color:var(--brass);font-size:.9rem;margin:0 0 .8rem;padding:.4rem .6rem;background:#d4af3714;border-left:3px solid var(--brass);border-radius:0 4px 4px 0}.review-empty{color:var(--muted);font-style:italic}.review-seat{margin-bottom:1.1rem;padding-bottom:.8rem;border-bottom:1px solid var(--line)}.review-seat:last-child{border-bottom:none;margin-bottom:0}.review-seat-title{font-family:var(--font-serif);font-size:1.05rem;color:var(--brass-hi);margin:0 0 .4rem}.review-summary{margin:0 0 .6rem;font-size:.95rem;color:var(--text)}.review-loss{font-family:var(--font-serif);font-size:1.1rem;color:#ff7066;margin:0 .15rem}.review-mistakes{list-style:none;padding:0;margin:0}.review-mistakes li{padding:.4rem 0;border-bottom:1px dotted rgba(255,255,255,.06);font-size:.9rem;display:flex;flex-wrap:wrap;align-items:center;gap:.2rem}.review-mistakes li:last-child{border-bottom:none}.review-gap{color:#ff7066;font-family:var(--font-serif)}.review-perfect{color:#5fc080;font-size:.9rem;margin:.3rem 0 0}.review-card-chip{display:inline-flex;align-items:center;gap:.1rem;padding:.05rem .3rem;background:#ffffff0d;border-radius:4px;font-weight:600;line-height:1.4}.review-card-chip.suit-S{color:var(--suit-S)}.review-card-chip.suit-H{color:var(--suit-H)}.review-card-chip.suit-D{color:var(--suit-D)}.review-card-chip.suit-C{color:var(--suit-C)}.dd-trajectory-title{margin:0 0 .3rem;font-family:var(--font-serif);color:var(--brass-hi);font-size:1rem}.dd-trajectory-sub{margin:0 0 .7rem;font-size:.78rem;color:var(--muted);line-height:1.4}.dd-trajectory-svg{width:100%;max-width:420px;display:block}.dd-trajectory-band{fill:#ffffff06}.dd-trajectory-hit{fill:transparent;cursor:pointer}.dd-trajectory-hit:hover{fill:#ffffff0f}.rt-mark{display:inline-block;margin-left:.4rem;padding:0 .25rem;font-size:.72rem;font-family:var(--font-sans);font-weight:700;border-radius:3px;cursor:help}.rt-mark.rt-neutral{color:var(--muted);opacity:.55}.rt-mark.rt-good{color:#5fc080;background:#5fc0801f}.rt-mark.rt-bad{color:#ff7066;background:#ff706626}.dd-trajectory-grid{stroke:var(--line);stroke-width:.5;stroke-dasharray:2 3}.dd-trajectory-axis{fill:var(--muted);font-size:9px;font-family:var(--font-sans)}.dd-trajectory-projected{fill:none;stroke:var(--brass);stroke-width:2}.dd-trajectory-dot{fill:var(--brass)}.dd-trajectory-actual{fill:none;stroke:var(--muted);stroke-width:1.5;stroke-dasharray:3 3}.dd-trajectory-legend{display:flex;gap:1.2rem;margin-top:.5rem;font-size:.78rem;color:var(--muted)}.dd-trajectory-legend-item{display:inline-flex;align-items:center;gap:.35rem}.dd-trajectory-swatch{display:inline-block;width:18px;height:2px}.dd-trajectory-swatch.proj{background:var(--brass)}.dd-trajectory-swatch.actual{background:linear-gradient(to right,var(--muted) 50%,transparent 50%);background-size:6px 100%;height:2px}.auction-final b .st{font-size:1.2em;line-height:1;margin-left:.1em}.auction-final b .st.st-NT{font-size:.9em;margin-left:.08em}.auction-final{margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line);font-size:.86rem;color:var(--muted)}.auction-final b{font-family:var(--font-serif);color:var(--brass-hi);font-size:1.05rem}.scoreboard{background:linear-gradient(180deg,var(--panel) 0%,#11151a 100%);border:1px solid var(--line);padding:.9rem 1rem;border-radius:12px;min-height:0;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;cursor:grab}.scoreboard::-webkit-scrollbar{display:none;width:0;height:0}.scoreboard.dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.scoreboard h3{margin:0 0 .7rem;font-size:.72rem;color:var(--faint);font-weight:700;letter-spacing:.28em;text-transform:uppercase;display:flex;align-items:center;gap:.5rem}.scoreboard h3:after{content:"";flex:1;height:1px;background:var(--line)}.scoreboard-table{width:100%;border-collapse:collapse;font-family:var(--font-serif);font-size:.88rem}.scoreboard-table td{padding:.18rem .25rem;border-top:1px solid rgba(255,255,255,.04)}.scoreboard-table tr:first-child td{border-top:none}.scoreboard-table tr.empty td{color:var(--faint)}.sb-num{color:var(--muted);font-family:var(--font-sans);font-size:.78rem;text-align:right;width:1.6rem;padding-right:.45rem!important}.sb-contract{text-align:left;white-space:nowrap;color:var(--text)}.sb-contract.passed{color:var(--faint);font-style:italic}.sb-contract .lv{font-weight:700}.sb-contract .st-S{color:var(--suit-S);font-size:1.15em}.sb-contract .st-H{color:var(--suit-H);font-size:1.15em}.sb-contract .st-D{color:var(--suit-D);font-size:1.15em}.sb-contract .st-C{color:var(--suit-C);font-size:1.15em}.sb-contract .st-NT{font-size:.85em;color:var(--muted)}.sb-result{font-family:var(--font-sans);font-size:.82rem;text-align:center;color:var(--muted);width:2rem}.sb-result.made{color:var(--good)}.sb-result.down{color:var(--bad)}.sb-score{font-family:var(--font-serif);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.sb-score.ns{color:var(--team-ns)}.sb-score.ew{color:var(--team-ew)}.scoreboard-totals{position:sticky;bottom:0;z-index:2;margin:.6rem -1rem -.9rem;padding:.6rem 1rem .9rem;background:linear-gradient(180deg,#11151a 0%,var(--panel) 100%);border-top:1px solid var(--line);text-align:center;font-family:var(--font-serif);font-weight:700;color:var(--muted)}.sb-total.ns{color:var(--team-ns)}.sb-total.ew{color:var(--team-ew)}.history-table-match thead .mh-table{font-family:var(--font-serif);font-weight:700;font-size:.85rem;letter-spacing:.08em;color:var(--brass-hi);border-bottom:2px solid rgba(229,199,122,.4);text-align:center}.history-table-match thead .mh-spacer{border-bottom:none}.history-table-match thead .mh-imp{color:var(--brass-hi);font-weight:700;text-align:center}.history-table-match tr td:nth-child(3),.history-table-match tr td:nth-child(7),.history-table-match tr td:nth-child(11),.history-table-match tr th:nth-child(3),.history-table-match tr th:nth-child(7){border-right:1px solid var(--line)}.history-table-match .hist-empty{color:var(--faint);text-align:center}.history-table-match .hist-imp{text-align:center}.history-table-match td.hist-clickable{cursor:pointer;transition:background .12s}.history-table-match tr:hover td.hist-clickable{background:#c4a0500f}.history-table-match td.hist-clickable:active{background:#c4a0502e}.history-table-match--mobile{width:100%;table-layout:fixed}.history-table-match--mobile th.mh-table{font-size:.72rem;letter-spacing:.08em}.history-table-match--mobile th.mh-num,.history-table-match--mobile td.mh-num{width:32px;text-align:center;vertical-align:middle;padding:5px 2px}.mh-num-n{font-weight:700;font-size:.9rem;line-height:1.1;color:var(--fg)}.mh-num-dealer{font-size:1rem;font-weight:700;color:var(--fg);line-height:1.3}.mh-num-vul{line-height:1}.mh-num-vul .vul-tag{font-size:.72rem;padding:1px 4px}.history-table-match--mobile th.mh-imp,.history-table-match--mobile td.hist-imp{width:68px}.mh-score-cell{text-align:center;vertical-align:middle;padding:7px 2px;color:var(--muted);font-size:.82rem}.mh-score-val{font-weight:700;font-size:.85rem}.mh-score-val.team-a{color:#ee6c7a}.mh-score-val.team-b{color:#6da8ff}.history-table-match--mobile td:nth-child(2),.history-table-match--mobile th:nth-child(2){border-right:1px solid var(--line)}.history-table-match--mobile tr.history-row{cursor:pointer;transition:background .1s}.history-table-match--mobile tr.history-row:active,.history-table-match--mobile tr.mh-row-expanded{background:#c4a05014}.mh-detail-row{display:none}.mh-detail-row.mh-detail-open{display:table-row}.mh-detail-td{padding:6px 4px 10px;background:#ffffff08;border-top:1px solid var(--line);border-bottom:2px solid var(--line);vertical-align:top}.mh-detail-td1{text-align:center}.mh-detail-td4{display:flex;flex-direction:column;gap:4px;align-items:stretch}.mh-detail-tname{display:none!important}.mh-dc-contract{font-family:var(--font-serif);font-weight:600;font-size:.9rem;line-height:1.2}.mh-dc-contract .lv{font-weight:700}.mh-dc-contract .st-S{color:var(--suit-S);font-weight:700}.mh-dc-contract .st-H{color:var(--suit-H);font-weight:700}.mh-dc-contract .st-D{color:var(--suit-D);font-weight:700}.mh-dc-contract .st-C{color:var(--suit-C);font-weight:700}.mh-dc-contract .st-NT{font-weight:700}.mh-detail-line2{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:2px}.mh-dc-decl{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;width:1.5em;height:1.5em;border-radius:3px;color:#fff;flex-shrink:0}.mh-dc-decl.team-a{background:var(--team-ns)}.mh-dc-decl.team-b{background:var(--team-ew)}.mh-dc-decl.team-ns{background:var(--team-ns)}.mh-dc-decl.team-ew{background:var(--team-ew)}.mh-dc-res{font-size:.85rem;font-weight:600}.mh-dc-res.made{color:var(--ok)}.mh-dc-res.down{color:var(--err)}.mh-detail-pending{font-size:.78rem;color:var(--faint)}.mh-replay-btn{font-size:.65rem;padding:3px 4px;background:#c4a0501f;border:1px solid rgba(196,160,80,.35);border-radius:4px;color:var(--brass-hi);cursor:pointer;white-space:nowrap;text-align:center;width:100%}.history-totals-match .history-total-side.team-a{background:linear-gradient(180deg,#e5675c40,#b43c3c2e);box-shadow:inset 0 0 0 1px #e5675c80}.history-totals-match .history-total-side.team-a .history-total-label,.history-totals-match .history-total-side.team-a .history-total-value{color:var(--team-ns)}.history-totals-match .history-total-side.team-b{background:linear-gradient(180deg,#5b8de840,#3c64b42e);box-shadow:inset 0 0 0 1px #5b8de880}.history-totals-match .history-total-side.team-b .history-total-label,.history-totals-match .history-total-side.team-b .history-total-value{color:var(--team-ew)}.imp-pill{display:inline-block;padding:.18rem .6rem;border-radius:999px;font-family:var(--font-serif);font-weight:800;font-size:.92rem;min-width:2.4rem;text-align:center;font-variant-numeric:tabular-nums}.imp-pill.team-a{background:linear-gradient(180deg,#e5675c66,#b43c3c4d);color:#ffd9d4;box-shadow:inset 0 0 0 1px #e5675c99}.imp-pill.team-b{background:linear-gradient(180deg,#5b8de866,#3c64b44d);color:#d9e3f5;box-shadow:inset 0 0 0 1px #5b8de899}.imp-pill.push{background:var(--panel-3);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}.history-hint{margin:1rem 0 0;color:var(--muted);font-size:.85rem;text-align:center}.action{background:linear-gradient(180deg,var(--panel) 0%,#11151a 100%);border:1px solid var(--line);padding:.85rem 1.1rem;border-radius:12px;display:flex;align-items:center;flex-wrap:wrap;gap:.8rem;min-height:58px}.action:empty{display:none!important}body.first-mount .action{animation:rise .6s .36s both}.action>.hint{font-size:.98rem}.action .lead-in{font-family:var(--font-serif);font-weight:600;color:var(--text);font-size:1rem}.action-spacer{flex:1}.bidding-box{display:flex;flex-direction:column;align-items:center;gap:calc(.4rem * var(--u));width:100%}.bid-grid{display:flex;flex-direction:column;gap:calc(.28rem * var(--u));width:100%;max-width:calc(330px * var(--u))}.bid-dial-row{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--bid-gap);align-items:center}.bid-dial{position:relative;height:var(--bid-dial-h);overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;scrollbar-width:none;perspective:calc(var(--bid-row-h) * 7);perspective-origin:center center}.bid-dial::-webkit-scrollbar{display:none}.bid-dial-row{position:relative;z-index:1;height:var(--bid-row-h);flex:0 0 var(--bid-row-h);transform-origin:center center;backface-visibility:hidden;will-change:transform,opacity}.bid-dial-row.pad{pointer-events:none}.bid-dial-row.pad:last-child{height:calc(var(--bid-row-h) * 1.4);flex-basis:calc(var(--bid-row-h) * 1.4)}.bid-cell{display:flex;align-items:center;justify-content:center;gap:.05em;height:var(--bid-row-h);border-radius:5px;background:#ffffffeb;border:1px solid rgba(0,0,0,.15);font-family:var(--font-serif);font-weight:700;font-size:calc(.95rem * var(--u));pointer-events:none;cursor:pointer;transition:box-shadow .12s,filter .12s}.bid-dial-row.is-center .bid-cell:not(.spent){pointer-events:auto}.bid-cell .lv{color:#14181d}.bid-cell.col-S .st{color:var(--suit-S);font-size:1.3em}.bid-cell.col-H .st{color:var(--suit-H);font-size:1.3em}.bid-cell.col-D .st{color:var(--suit-D);font-size:1.3em}.bid-cell.col-C .st{color:var(--suit-C);font-size:1.3em}.bid-cell.col-N .st{color:#41474f;font-size:.95em}.bid-dial-row.is-center .bid-cell:not(.spent):hover{box-shadow:0 6px 14px -6px #0009,0 0 0 2px var(--brass);z-index:2}.bid-cell.spent{opacity:.28;cursor:not-allowed;filter:grayscale(.5)}.bid-cell.last{box-shadow:0 0 0 2px var(--brass),0 0 12px -2px var(--brass-glow)}.bid-dial-row.is-center{z-index:3}.bid-dial-row.is-center .bid-cell{height:calc(var(--bid-row-h) * 1.4);box-shadow:0 4px 12px -4px #0000008c}.bid-dial-row.is-center .bid-cell{font-size:calc(1.15rem * var(--u))}.bid-wheel-wrap{display:flex;align-items:center;justify-content:center;gap:calc(.5rem * var(--u));width:100%;--bid-row-h: calc(30px * var(--u));--bid-gap: calc(.26rem * var(--u));--bid-rows: 3;--bid-dial-h: calc(var(--bid-row-h) * (var(--bid-rows) + .4))}.bid-spin-btns{display:flex;flex-direction:column;height:var(--bid-dial-h);justify-content:space-between}.bid-spin-btn{width:calc(34px * var(--u));height:var(--bid-row-h);display:flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:9px;background:#ffffff0d;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#f1d99ab3;font-size:calc(.9rem * var(--u));line-height:1;cursor:pointer;transition:background .12s,color .12s,transform 80ms}.bid-spin-btn:hover{background:#ffffff1f;color:var(--brass-hi)}.bid-spin-btn:active{transform:scale(.9)}.bid-alert-btn{height:calc(var(--bid-row-h) * .95);border-radius:8px;font-weight:800;font-size:calc(1.15rem * var(--u))}.bid-alert-btn.armed{background:var(--alert, #e08a2b);color:#1b1206;box-shadow:0 0 0 1px #e08a2b99,0 0 12px -2px #e08a2bcc}.bid-alert-btn.armed:hover{background:#f0992f;color:#1b1206}.bid-extras{display:flex;gap:.45rem;flex-wrap:wrap}.bid-extras>button{padding:.34rem 1.1rem;font-weight:800;letter-spacing:.06em;border-radius:10px;border:1px solid rgba(255,255,255,.14);color:#f3efe4;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#ffffff0f;transition:background .12s,border-color .12s,color .12s,box-shadow .12s,transform 80ms}.bid-extras>button:active:not(:disabled){transform:scale(.95)}.bid-extras>button:disabled{opacity:.4;cursor:not-allowed}.bid-extras .btn-pass{padding:.34rem 1.6rem;background:#2a7a474d;border-color:#78dca059;color:#eafff0}.bid-extras .btn-pass:hover:not(:disabled){background:#308a5273;border-color:#78dca099}.bid-extras .btn-dbl{font-family:var(--font-sans);background:#c0403a4d;border-color:#f08c8766;color:#ffecea}.bid-extras .btn-dbl:hover:not(:disabled){background:#d24a4373;border-color:#f08c87b3}.bid-extras .btn-rdbl{background:#7c5cc44d;border-color:#b496eb66}.bid-extras .btn-rdbl:hover:not(:disabled){background:#8d6cd673;border-color:#b496ebb3}.bid-extras .btn-stop{font-family:var(--font-sans);letter-spacing:.08em}.bid-extras .btn-stop:hover{border-color:#c0403ab3;color:#f3b4b0}.bid-extras .btn-stop.armed{background:#c0403a8c;border-color:#f08c87b3;color:#fff;box-shadow:0 0 12px -2px #c0403ab3}.bid-extras .btn-alert{font-family:var(--font-sans);letter-spacing:.08em;background:#d2821e47;border-color:#f0be6e66;color:#ffe6c2}.bid-confirm-modal{position:fixed;z-index:230;background:linear-gradient(180deg,#0e2f22,#072019);border:1px solid rgba(70,200,130,.35);border-radius:14px;box-shadow:0 14px 34px -8px #000000bf;padding:.4rem .5rem .5rem;display:flex;flex-direction:column;gap:.35rem;color:#f0efe4;overflow:hidden;box-sizing:border-box;font-family:var(--font-sans, system-ui)}.bid-confirm-banner{display:flex;align-items:center;gap:.6rem;padding:.35rem .6rem .35rem .4rem;background:linear-gradient(180deg,#2fb265,#1a8c47);border-radius:8px;box-shadow:inset 0 -2px #00000026,0 2px 6px -2px #00000080}.bid-confirm-title{flex:1;font-family:var(--font-serif, serif);font-weight:800;letter-spacing:.04em;color:#fff;font-size:.95rem;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.25)}.bid-confirm-badge{display:inline-flex;align-items:center;gap:.08rem;min-width:2.2rem;min-height:2rem;padding:.15rem .35rem;background:linear-gradient(180deg,#fff,#f4ecdc);border:2px solid #c0403a;border-radius:6px;box-shadow:0 2px 4px -1px #0006;font-family:var(--font-serif, serif);font-weight:800;font-size:1.05rem;line-height:1}.bid-confirm-badge .bcb-level{color:#14181d}.bid-confirm-badge.col-S .bcb-strain{color:var(--suit-S, #2848a0)}.bid-confirm-badge.col-H .bcb-strain{color:var(--suit-H, #c0403a)}.bid-confirm-badge.col-D .bcb-strain{color:var(--suit-D, #e0803a)}.bid-confirm-badge.col-C .bcb-strain{color:var(--suit-C, #2a8a4d)}.bid-confirm-badge.col-N .bcb-strain{color:#41474f;font-size:.85rem}.bid-confirm-badge.is-dbl,.bid-confirm-badge.is-rdbl,.bid-confirm-badge.is-pass{padding:.15rem .5rem}.bid-confirm-badge.is-dbl .bcb-strain{color:#c0403a}.bid-confirm-badge.is-rdbl .bcb-strain{color:#7c5cc4}.bid-confirm-badge.is-pass .bcb-strain{color:#2a8a4d;font-size:.8rem;letter-spacing:.08em}.bid-score-block{flex:0 0 auto;background:#0000003d;border:1px solid rgba(70,200,130,.2);border-radius:8px;padding:.28rem .45rem .35rem}.bid-score-title{text-align:center;font-size:.6rem;letter-spacing:.12em;font-weight:700;color:#9fb3a8;text-transform:uppercase;margin-bottom:.28rem}.bid-score-grid{display:grid;grid-template-columns:auto 1fr 1fr 1fr;gap:.14rem .35rem;align-items:center}.bsg-head{font-size:.58rem;color:#8fa89c;text-align:center;font-weight:600}.bsg-rowhead{font-size:.66rem;color:#cfe0d6;font-weight:700;white-space:nowrap}.bsg-cell{font-family:var(--font-serif, serif);font-size:.86rem;font-weight:800;color:#f0efe4;text-align:center}.bsg-rowhead.cur,.bsg-cell.cur{color:#f5d99a}.bsg-cell.cur{text-shadow:0 0 8px rgba(245,217,154,.35)}.pass-score-block{flex:0 0 auto}.pass-score-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}.pass-score-track::-webkit-scrollbar{display:none}.pass-score-page{flex:0 0 100%;scroll-snap-align:start;box-sizing:border-box;background:#0000003d;border:1px solid rgba(200,80,70,.22);border-radius:8px;padding:.28rem .45rem .35rem}.pass-score-page-title{text-align:center;font-size:.6rem;letter-spacing:.12em;font-weight:700;color:#d9a59c;text-transform:uppercase;margin-bottom:.28rem}.pass-score-grid{display:grid;grid-template-columns:auto 1fr 1fr 1fr;gap:.14rem .35rem;align-items:center}.psg-head{font-size:.58rem;color:#c69a94;text-align:center;font-weight:600}.psg-rowhead{font-size:.64rem;color:#e6cfca;font-weight:700;white-space:nowrap}.psg-cell{font-family:var(--font-serif, serif);font-size:.84rem;font-weight:800;color:#f0b0a8;text-align:center}.pass-score-dots{display:flex;justify-content:center;gap:.32rem;margin-top:.28rem}.psd-dot{width:5px;height:5px;border-radius:50%;background:#ffffff40;transition:background .15s}.psd-dot.active{background:#d9a59c}.bid-confirm-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:.3rem;padding:.1rem .05rem;overflow-y:auto;font-size:.78rem}.bid-confirm-details{display:flex;flex-direction:column;gap:.3rem}.bcd-title{font-family:var(--font-serif, serif);font-weight:800;color:#f5d99a;font-size:.95rem;letter-spacing:.02em;padding:.05rem .1rem}.bcd-title .suit-glyph{display:inline-block;margin:0 .05em}.bcd-section{text-align:center;font-size:.65rem;letter-spacing:.14em;font-weight:700;color:#b5c9be;text-transform:uppercase;position:relative;margin:.15rem 0 0}.bcd-section:before,.bcd-section:after{content:"";position:absolute;top:50%;border-top:1px dotted rgba(181,201,190,.4);width:20%}.bcd-section:before{left:4%}.bcd-section:after{right:4%}.bcd-suits{display:grid;grid-template-columns:1fr 1fr;gap:.18rem .5rem}.bcd-suit-row{display:flex;align-items:stretch;gap:.4rem;min-height:1.5rem}.bcd-suit-tab{flex:0 0 auto;width:2rem;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.05rem;font-weight:800;border-radius:4px;clip-path:polygon(0 0,100% 0,100% 55%,88% 100%,0 100%);box-shadow:inset 0 -2px #00000026}.bcd-suit-tab.suit-S{background:linear-gradient(180deg,#2f7ad8,#1e5aa8)}.bcd-suit-tab.suit-H{background:linear-gradient(180deg,#e04a70,#b53257)}.bcd-suit-tab.suit-D{background:linear-gradient(180deg,#f2a338,#d07d18)}.bcd-suit-tab.suit-C{background:linear-gradient(180deg,#40b558,#2a8a3e)}.bcd-suit-desc{flex:1;display:flex;align-items:center;color:#f0efe4;font-size:.82rem}.bcd-notes{display:flex;justify-content:center;align-items:center;gap:.55rem;flex-wrap:wrap;padding:.15rem .2rem 0;text-align:center}.bcd-note-col{display:flex;flex-direction:column;align-items:center;line-height:1.1}.bcd-note-value{font-family:var(--font-serif, serif);font-weight:800;font-size:.95rem;color:#f0efe4}.bcd-note-label{font-size:.62rem;letter-spacing:.1em;color:#b5c9be;text-transform:uppercase;margin-top:.1rem}.bcd-flags{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:center;padding:.1rem .2rem 0}.bcd-flag{background:#d8b66a2e;border:1px solid rgba(216,182,106,.5);color:#f5d99a;border-radius:999px;padding:.08rem .5rem;font-size:.65rem;letter-spacing:.06em;font-weight:700}.bid-confirm-footer{display:flex;gap:.5rem;align-items:center;padding-top:.15rem}.bid-confirm-back{flex:0 0 auto;width:2.5rem;height:2.5rem;background:radial-gradient(circle at 30% 30%,#d6473f,#a12822);border:2px solid #f2b6b1;color:#fff;border-radius:50%;font-weight:800;font-size:1.1rem;line-height:1;cursor:pointer;box-shadow:0 3px 6px -1px #00000080}.bid-confirm-back:active{transform:translateY(1px)}.bid-confirm-ok{flex:1 1 auto;height:2.5rem;background:linear-gradient(180deg,#4dc0d8,#2a97b3);border:2px solid #a8e0ee;color:#fff;border-radius:999px;font-family:var(--font-serif, serif);font-weight:800;font-size:.95rem;letter-spacing:.04em;padding:0 .8rem;cursor:pointer;box-shadow:0 3px 6px -1px #00000080,inset 0 -2px #00000026;text-shadow:0 1px 0 rgba(0,0,0,.25)}.bid-confirm-ok:active{transform:translateY(1px)}.bid-extras .btn-alert:hover{border-color:#f0be6eb3;color:#fff2d8}.bid-extras .btn-alert.armed{background:#d2821e8c;border-color:#f0be6eb3;color:#fff;box-shadow:0 0 12px -2px #f0be6e99}.bid-log .bid-bubble{position:relative}.bid-bubble.alerted,.bid-bubble.alerted .st-S,.bid-bubble.alerted .st-H,.bid-bubble.alerted .st-D,.bid-bubble.alerted .st-C{color:#ffd23a}.bid-bubble.alerted .st-NT{background:#ffd23a}.auction-cell.alerted:after{content:"";display:inline-block;vertical-align:super;width:5px;height:5px;margin-left:2px;border-radius:50%;background:#f0941f;box-shadow:0 0 4px -1px #f0941fe6}.bidding-box{position:relative}.bid-lock{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(8px * var(--u));background:#0a100cc7;border-radius:12px}.bidding-box.locked .bid-grid,.bidding-box.locked .bid-extras{filter:grayscale(.7) brightness(.6);pointer-events:none}.bid-lock-ring{width:calc(46px * var(--u));height:calc(46px * var(--u));border-radius:50%;border:calc(4px * var(--u)) solid rgba(255,255,255,.14);border-top-color:#c0403a;animation:bidLockSpin 1s linear infinite,bidLockCount 10s linear forwards}@keyframes bidLockSpin{to{transform:rotate(360deg)}}@keyframes bidLockCount{0%{border-top-color:#c0403a}to{border-top-color:#ffffff24}}.bid-lock-text{font-family:var(--font-sans);font-weight:800;letter-spacing:.12em;color:#f3b4b0;font-size:calc(.85rem * var(--u))}.history-sheet{max-width:1080px;margin:1rem auto 2rem;padding:clamp(.6rem,2.6vw,1.4rem) clamp(.55rem,2.6vw,1.6rem) clamp(.7rem,2.6vw,1.6rem);background:linear-gradient(180deg,var(--panel-3) 0%,var(--panel-2) 100%);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 36px #00000059,inset 0 1px #ffffff0a}.history-titlebar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.6rem;margin-bottom:1.2rem}.history-titlebar>h2.history-title{margin:0;text-align:center;font-family:var(--font-serif);font-weight:700;font-size:1.55rem;letter-spacing:.02em;color:var(--text)}.history-empty{margin:2rem 0;text-align:center;color:var(--muted);font-style:italic}.history-totals{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-bottom:1.4rem}.history-total-side{display:flex;flex-direction:column;align-items:center;padding:.7rem 1rem .85rem;background:var(--panel);border:1px solid var(--line);border-radius:11px;position:relative;overflow:hidden}.history-total-side:before{content:"";position:absolute;inset:0 0 auto 0;height:3px}.history-total-side.ns:before{background:var(--team-ns)}.history-total-side.ew:before{background:var(--team-ew)}.history-total-label{font-family:var(--font-sans);font-weight:700;letter-spacing:.18em;font-size:.78rem;color:var(--muted);text-transform:uppercase}.history-total-value{margin-top:.15rem;font-family:var(--font-serif);font-weight:700;font-size:2.1rem;line-height:1;font-variant-numeric:tabular-nums}.history-total-side.ns .history-total-value{color:var(--team-ns)}.history-total-side.ew .history-total-value{color:var(--team-ew)}.history-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--line);border-radius:11px;overflow:hidden;font-family:var(--font-sans)}.history-table thead th{font-weight:700;text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;color:var(--muted);text-align:center;padding:.7rem .4rem .55rem;background:#0000002e;border-bottom:1px solid var(--line)}.history-table tbody td{padding:.55rem .4rem;text-align:center;border-bottom:1px solid rgba(255,255,255,.04);font-size:.95rem;vertical-align:middle}.history-table tbody tr:last-child td{border-bottom:none}.history-table tbody tr.history-row:not(.empty){cursor:pointer;transition:background-color .12s ease}.history-table tbody tr.history-row:not(.empty):hover{background:#d8b66a14}.history-table tbody tr.empty td{color:var(--faint)}.history-sheet{container-type:inline-size}.history-table{table-layout:fixed;width:100%}.history-table tbody td{font-size:clamp(9px,4.4cqw,15px)}.history-table thead th{font-size:clamp(7px,2.9cqw,11px);letter-spacing:.06em}.history-table th,.history-table td{padding-left:2px;padding-right:2px}.hcol-num{width:7%}.hcol-dealer,.hcol-vuln{width:14%}.hcol-result{width:13%}.hcol-score{width:12%}.hcol-replay{width:8%}.history-table .hist-vuln,.history-table .hist-contract{white-space:nowrap}.hist-num{font-family:var(--font-serif);font-weight:700;font-size:1.05rem;color:var(--muted);width:3rem}.history-row:not(.empty) .hist-num{color:var(--text)}.hist-dealer{width:4rem}.dealer-letter{display:inline-block;min-width:1.6rem;padding:.12rem .4rem;border-radius:6px;font-family:var(--font-serif);font-weight:700;color:#fff;background:var(--panel-2)}.dealer-letter.team-ns{background:var(--team-ns)}.dealer-letter.team-ew{background:var(--team-ew)}.hist-vuln{width:4.5rem}.vul-tag{display:inline-block;min-width:2.2rem;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.vul-tag.vul-none{color:var(--faint);background:transparent;letter-spacing:0}.vul-tag.vul-ns{color:#fff;background:#c87038}.vul-tag.vul-ew{color:#fff;background:#7f56a8}.vul-tag.vul-both{color:#fff;background:linear-gradient(90deg,#c87038,#c87038 50%,#7f56a8 50%,#7f56a8)}.hist-contract{font-family:var(--font-serif);font-weight:600;font-size:1rem;letter-spacing:.01em}.hist-contract .lv{font-weight:700}.hist-contract .st-S{color:var(--suit-S);font-weight:700}.hist-contract .st-H{color:var(--suit-H);font-weight:700}.hist-contract .st-D{color:var(--suit-D);font-weight:700}.hist-contract .st-C{color:var(--suit-C);font-weight:700}.hist-contract .st-NT{font-weight:700;letter-spacing:.02em}.hist-contract .decl{display:inline-block;min-width:1.3rem;padding:.05rem .35rem;margin-left:.15rem;border-radius:5px;font-family:var(--font-serif);font-weight:700;color:#fff;font-size:.92rem}.hist-contract .decl.team-ns{background:var(--team-ns)}.hist-contract .decl.team-ew{background:var(--team-ew)}.hist-contract .decl.team-a{background:var(--team-ns)}.hist-contract .decl.team-b{background:var(--team-ew)}.hist-contract.passed{color:var(--muted);font-style:italic}.hist-contract.empty{color:var(--faint)}.hist-result{width:4rem;font-family:var(--font-serif);font-weight:700;font-variant-numeric:tabular-nums}.hist-result.made{color:var(--good)}.hist-result.down{color:var(--bad)}.hist-score{width:5.5rem;font-family:var(--font-serif);font-weight:700;font-size:1.05rem;font-variant-numeric:tabular-nums}.hist-score.ns{color:var(--team-ns)}.hist-score.ew{color:var(--team-ew)}.hist-score.team-a{color:var(--team-ns)}.hist-score.team-b{color:var(--team-ew)}.history-row.empty .hist-score,.history-row .hist-score:empty,.hist-score:not(.ns):not(.ew):not(.team-a):not(.team-b){color:var(--faint)}.hist-replay{width:2.2rem;color:var(--brass);font-size:.85rem}.history-row.empty .hist-replay{color:transparent}.replay-app{display:grid;grid-template-columns:minmax(0,1fr) 256px;grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-areas:"header  header" "banner  banner" "compass sidebar" "ctrl    ctrl";gap:.5rem;height:100%}.replay-app>.app-header{grid-area:header}.replay-app>.header{grid-area:header}.replay-app>.replay-banner{grid-area:banner}.replay-app>.compass{grid-area:compass}.replay-app>.sidebar{grid-area:sidebar;align-self:stretch;display:flex;flex-direction:column;gap:.7rem;min-height:0;overflow-y:auto;padding-right:2px}.replay-app>.sidebar::-webkit-scrollbar{width:6px}.replay-app>.sidebar::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.replay-app>.replay-ctrl{grid-area:ctrl}.replay-app>.error-banner{grid-column:1 / -1}.replay-banner{display:flex;align-items:baseline;gap:.55rem;padding:.3rem .95rem;background:linear-gradient(180deg,var(--panel-3) 0%,var(--panel-2) 100%);border:1px solid var(--line);border-radius:9px;font-family:var(--font-serif);font-size:.95rem;line-height:1.25}.rb-label{font-family:var(--font-sans);font-weight:700;letter-spacing:.16em;font-size:.72rem;color:var(--muted);text-transform:uppercase}.rb-num{font-weight:700;color:var(--text);font-size:1.05rem;font-variant-numeric:tabular-nums}.rb-sep{color:var(--faint);margin:0 .1rem}.rb-contract{font-weight:700;letter-spacing:.01em;display:inline-flex;align-items:baseline;gap:.05rem}.rb-contract.passed{color:var(--muted);font-style:italic}.rb-contract .st-S{color:var(--suit-S)}.rb-contract .st-H{color:var(--suit-H)}.rb-contract .st-D{color:var(--suit-D)}.rb-contract .st-C{color:var(--suit-C)}.rb-contract .st-NT{letter-spacing:.02em}.rb-contract .decl{display:inline-block;min-width:1.2rem;padding:.02rem .35rem;margin-left:.3rem;border-radius:5px;color:#fff;font-size:.85rem}.rb-contract .decl.team-ns{background:var(--team-ns)}.rb-contract .decl.team-ew{background:var(--team-ew)}.rb-result{font-weight:700;font-variant-numeric:tabular-nums}.rb-result.made{color:var(--good)}.rb-result.down{color:var(--bad)}.rb-score{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:1rem}.rb-score.ns{color:var(--team-ns)}.rb-score.ew{color:var(--team-ew)}.rb-score.flat{color:var(--muted);font-style:italic;font-weight:600}.rb-menu-btn{margin-left:auto;flex:none;border:1px solid var(--line);background:#ffffff0d;color:var(--text);border-radius:8px;padding:.02rem .5rem;font-size:1.1rem;line-height:1.3;letter-spacing:.08em;cursor:pointer}.rb-menu-btn:active{background:#ffffff21}.rb-menu{position:fixed;z-index:200;min-width:9.5rem;display:flex;flex-direction:column;gap:.12rem;padding:.3rem;background:var(--panel);border:1px solid var(--line);border-radius:11px;box-shadow:0 10px 30px -6px #0009}.rb-menu-item{text-align:left;white-space:nowrap;border:none;background:transparent;color:var(--text);font-size:.95rem;font-weight:600;letter-spacing:.02em;padding:.5rem .6rem;border-radius:7px;cursor:pointer}.rb-menu-item:active{background:#ffffff1a}.replay-timeline{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:.7rem .85rem .5rem;display:flex;flex-direction:column;flex:0 0 auto}.replay-timeline>h3{margin:0 0 .5rem;font-family:var(--font-serif);font-weight:700;font-size:1rem;letter-spacing:.04em;color:var(--text)}.rt-empty{margin:.4rem 0 .2rem;color:var(--muted);font-style:italic;font-size:.86rem}.rt-list{display:flex;flex-direction:column;overflow-y:visible;gap:1px;margin:0 -.4rem;padding:0 .4rem}.rt-list::-webkit-scrollbar{width:6px}.rt-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.rt-row{display:grid;grid-template-columns:1.7rem 1fr;align-items:center;gap:.5rem;padding:.25rem .45rem;border-radius:6px;cursor:pointer;font-family:var(--font-sans);font-size:.86rem;color:var(--text);transition:background-color .1s ease}.rt-row:hover{background:#ffffff0a}.rt-row.active{background:#d8b66a29;box-shadow:inset 2px 0 0 var(--brass)}.rt-row.rt-deal,.rt-row.rt-start{color:var(--muted);font-style:italic}.rt-idx{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-size:.78rem;color:var(--faint);text-align:right}.rt-row.active .rt-idx{color:var(--brass);font-weight:700}.rt-body{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:.18rem}.rt-seat{display:inline-block;min-width:1.15rem;padding:0 .3rem;border-radius:4px;font-family:var(--font-serif);font-weight:700;color:#fff;font-size:.78rem;text-align:center}.rt-seat.team-ns{background:var(--team-ns)}.rt-seat.team-ew{background:var(--team-ew)}.rt-call{font-family:var(--font-serif);font-weight:700}.rt-call.pass{color:var(--muted);font-weight:600}.rt-call.dbl{color:var(--brass-hi)}.rt-call .st-S{color:var(--suit-S)}.rt-call .st-H{color:var(--suit-H)}.rt-call .st-D{color:var(--suit-D)}.rt-call .st-C{color:var(--suit-C)}.rt-call .st-NT{letter-spacing:.02em}.rt-card{font-family:var(--font-serif);font-weight:700}.rt-card .r-ten{letter-spacing:-.08em}.rt-card.st-S{color:var(--suit-S)}.rt-card.st-H{color:var(--suit-H)}.rt-card.st-D{color:var(--suit-D)}.rt-card.st-C{color:var(--suit-C)}.replay-back-btn{white-space:nowrap}.replay-ctrl{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.7rem;background:linear-gradient(180deg,var(--panel-3) 0%,var(--panel-2) 100%);border:1px solid var(--line);border-radius:11px;padding:.55rem .85rem;box-shadow:0 6px 18px #00000038}.replay-nav{display:flex;gap:.25rem;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:.18rem}.replay-nav button{padding:.2rem .55rem;background:transparent;border:none;color:var(--text);font-size:.95rem;border-radius:5px;cursor:pointer;font-family:var(--font-sans)}.replay-nav button:hover{background:#d8b66a24;color:var(--brass-hi)}.replay-slider{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:var(--panel);border:1px solid var(--line);border-radius:999px;outline:none}.replay-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--brass);border:2px solid var(--panel);box-shadow:0 0 0 1px var(--brass-lo);cursor:pointer}.replay-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--brass);border:2px solid var(--panel);box-shadow:0 0 0 1px var(--brass-lo);cursor:pointer}.replay-step{font-family:var(--font-serif);font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);letter-spacing:.04em;min-width:4rem;text-align:right}.score-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;box-sizing:border-box;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex;align-items:center;justify-content:center;background:#040806bd;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .16s ease}.score-modal.open{opacity:1;visibility:visible}.score-sheet{width:min(880px,94vw);max-height:min(92vh,100%);overflow:auto;background:linear-gradient(180deg,#12281b,#0c1c13);border:1px solid var(--brass-lo);border-radius:16px;box-shadow:0 30px 80px -20px #000c;padding:1.2rem 1.4rem 1.5rem}.score-sheet-head{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem}.score-sheet-head h3{margin:0;font-family:var(--font-serif);font-weight:600;font-size:1.3rem;color:var(--text);letter-spacing:.02em}.score-vul{color:var(--muted);font-size:.82rem;margin-left:.2rem}.score-vul b{color:var(--brass-hi);font-family:var(--font-serif)}.score-close{margin-left:auto;width:2rem;height:2rem;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#0d1116;border:1px solid var(--line);color:var(--muted);font-size:1.3rem;line-height:1;cursor:pointer;padding:0}.score-close:hover{color:var(--text);border-color:var(--brass-lo)}.seat-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:220;display:flex;align-items:center;justify-content:center;background:#040806bd;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .16s ease}.seat-modal.open{opacity:1;visibility:visible}.seat-modal-sheet{position:relative;width:min(320px,88vw);background:linear-gradient(180deg,#12281b,#0c1c13);border:1px solid var(--brass-lo);border-radius:16px;box-shadow:0 30px 80px -20px #000c;padding:1.4rem 1.4rem 1.5rem;display:flex;flex-direction:column;align-items:center;text-align:center}.seat-modal-title{font-family:var(--font-serif, serif);font-size:1.2rem;font-weight:800;letter-spacing:.1em;line-height:1.2;color:var(--brass-hi);text-shadow:0 1px 2px rgba(0,0,0,.55);width:100%;padding-bottom:.6rem;margin-bottom:1rem;border-bottom:1px solid var(--brass-lo)}.seat-modal-close{position:absolute;top:.6rem;right:.6rem;width:2rem;height:2rem;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#0d1116;border:1px solid var(--line);color:var(--muted);font-size:1.3rem;line-height:1;cursor:pointer;padding:0}.seat-modal-close:hover{color:var(--text);border-color:var(--brass-lo)}.seat-modal-avatar{width:4.6rem;height:4.6rem;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:2.6rem;line-height:1;background:radial-gradient(circle at 50% 35%,#1c3a28,#0c1c13);border:1px solid var(--brass-lo);box-shadow:inset 0 1px #ffffff0f}.seat-modal-avatar.clickable{cursor:pointer;position:relative}.seat-modal-avatar.clickable:after{content:"";position:absolute;right:-3px;bottom:-3px;width:1.1rem;height:1.1rem;border-radius:50%;background:linear-gradient(180deg,var(--brass-hi, #f1d99a),var(--brass, #d8b66a));border:1.5px solid #0c1c13}.seat-modal-namerow{margin-top:.7rem;max-width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem}.seat-modal-dir{flex-shrink:0;line-height:1;font-family:var(--font-serif);font-weight:700;font-size:1.15rem;color:#241d0c;background:linear-gradient(180deg,var(--brass-hi),var(--brass));border-radius:8px;padding:.14em .44em;box-shadow:inset 0 1px #ffffff47}.seat-modal-name{min-width:0;font-family:var(--font-serif);font-weight:600;font-size:1.15rem;color:var(--text);letter-spacing:.01em;overflow-wrap:anywhere}.seat-modal-sub{margin-top:.25rem;color:var(--muted);font-size:.82rem}.seat-modal-avatars{display:grid;grid-template-columns:repeat(6,1fr);gap:.35rem;width:100%;margin:.5rem 0 .1rem}.seat-modal-avatar-opt{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:1.25rem;line-height:1;padding:0;background:#0d1116;border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:border-color .12s ease,background .12s ease,transform .12s ease}.seat-modal-avatar-opt:hover{border-color:var(--brass-lo)}.seat-modal-avatar-opt:active{transform:scale(.94)}.seat-modal-avatar-opt.selected{border-color:var(--brass);background:#c4a0502e}.seat-modal-actions{margin-top:1.1rem;width:100%;display:flex;flex-direction:column;gap:.5rem}.seat-modal-btn{width:100%;padding:.62rem .8rem;border-radius:10px;cursor:pointer;background:#0f1a13;border:1px solid var(--line);color:var(--text);font-family:var(--font-serif);font-size:.95rem;letter-spacing:.01em;transition:border-color .12s ease,background .12s ease}.seat-modal-btn:hover{border-color:var(--brass-lo);background:#14251a}.seat-modal-btn.primary{background:linear-gradient(180deg,#3a2f13,#241d0c);border-color:var(--brass);color:var(--brass-hi)}.seat-modal-btn.primary:hover{border-color:var(--brass-hi)}.seat-modal-btn.danger{color:#e6a3a3;border-color:#b4464680}.seat-modal-btn.danger:hover{color:#f2c0c0;border-color:#d25a5acc;background:#241416}.score-selector{display:grid;grid-template-columns:repeat(5,1fr);gap:.3rem;margin-bottom:1.1rem}.score-bid-cell{display:inline-flex;align-items:center;justify-content:center;gap:.12rem;padding:.3rem 0;border-radius:7px;cursor:pointer;background:linear-gradient(180deg,#fbfaf5,#ece7da);color:#14181d;border:1px solid #cfc7b4;font-family:var(--font-serif);font-weight:700;font-size:.92rem}.score-bid-cell .st-NT{font-size:.7em;vertical-align:super;color:#41474f}.score-bid-cell.col-S .st{color:var(--suit-S);font-size:1.2em}.score-bid-cell.col-H .st{color:var(--suit-H);font-size:1.2em}.score-bid-cell.col-D .st{color:var(--suit-D);font-size:1.2em}.score-bid-cell.col-C .st{color:var(--suit-C);font-size:1.2em}.score-bid-cell:hover{box-shadow:0 0 0 1px var(--brass)}.score-bid-cell.selected{background:linear-gradient(180deg,var(--brass-hi),var(--brass));border-color:#6b521f;box-shadow:0 0 14px -3px var(--brass-glow)}.score-card{border:1px solid var(--line);border-radius:12px;overflow:hidden}.score-card-head,.score-col-head,.score-row{display:grid;grid-template-columns:1.1fr repeat(6,1fr)}.score-card-head{background:#00000040}.score-side-label{text-align:center;padding:.4rem 0;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700}.score-side-label.ns{color:var(--brass-hi);border-right:1px solid var(--line);grid-column:2 / 5}.score-side-label.ew{color:#9aa3ad;grid-column:5 / 8}.score-col-head{background:#0000002e;border-top:1px solid var(--line)}.score-col-head>div{padding:.32rem 0;text-align:center;font-size:.74rem;color:var(--muted)}.score-res-head{font-weight:700}.score-sub.ns{color:#d9bd84}.score-sub.ew{color:#9aa3ad}.score-sub.ns:first-of-type{border-left:1px solid var(--line)}.score-row{border-top:1px solid rgba(255,255,255,.05)}.score-row:nth-child(2n){background:#ffffff05}.score-res{text-align:center;padding:.3rem 0;font-weight:700;color:var(--text);font-family:var(--font-serif)}.score-res.made .score-tricks{color:#6fae87}.score-res.down .score-tricks{color:#c98b86}.score-val{text-align:center;padding:.3rem 0;font-size:.86rem;color:var(--muted)}.score-val.ns{color:#cdb988}.score-val.ew{color:#aab2bb}.score-val.ns:first-of-type{border-left:1px solid var(--line)}.app-header{display:grid;grid-template-columns:minmax(0,1fr) 256px;grid-template-rows:auto auto;grid-template-areas:"match  actions" "sub    meta";column-gap:.7rem;row-gap:18px;align-items:end;padding-bottom:0;line-height:1}.app-header>.match-header{grid-area:match;min-width:0}.app-header>.mh-actions{grid-area:actions}.app-header>.app-subheader{grid-area:sub;min-width:0}.app-header>.header-meta{grid-area:meta}.match-header{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:52px}.match-header:after{content:"";position:absolute;left:8%;right:8%;bottom:-10px;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(212,168,90,.35) 30%,rgba(245,215,140,.6) 50%,rgba(212,168,90,.35) 70%,transparent 100%)}.mh-team{display:flex;align-items:center;height:100%;padding:0 24px;gap:14px}.mh-team-left{background:linear-gradient(90deg,#d93b3b66,#d93b3b0d);border-left:2px solid #d93b3b;justify-content:flex-end;clip-path:polygon(0 0,100% 0,calc(100% - 16px) 100%,0 100%)}.mh-team-right{background:linear-gradient(270deg,#3b6fd966,#3b6fd90d);border-right:2px solid #3b6fd9;justify-content:flex-start;clip-path:polygon(16px 0,100% 0,100% 100%,0 100%)}.mh-team-name{font-size:1.05rem;font-weight:700;color:var(--text);letter-spacing:.04em}.mh-team-score{font-family:var(--font-serif);font-weight:800;font-size:1.6rem;line-height:1;font-variant-numeric:tabular-nums}.mh-team-left .mh-team-score{color:#ff6e6e}.mh-team-right .mh-team-score{color:#6ea1ff}.mh-center{display:flex;flex-direction:column;align-items:center;padding:0 22px;gap:2px}.mh-board-tag{font-size:.72rem;color:var(--muted);letter-spacing:.18em;text-transform:uppercase}.mh-match-score{font-family:var(--font-serif);font-weight:800;font-size:1.5rem;color:var(--brass-hi);letter-spacing:.04em;line-height:1;font-variant-numeric:tabular-nums}.mh-match-score-mono{font-size:1.1rem;letter-spacing:.15em}.mh-ms-dash{color:var(--brass);margin:0 10px;font-weight:400}.mh-actions{display:flex;align-items:center;justify-content:flex-end;gap:.4rem;flex-wrap:wrap}.mh-icon-btn{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);color:var(--text);padding:.35rem .7rem;border-radius:6px;cursor:pointer;font-size:.85rem;font-family:var(--font-body, inherit);white-space:nowrap;transition:border-color .14s,color .14s}.mh-icon-btn:hover{border-color:var(--brass-lo);color:var(--brass-hi)}.mh-voice-btn.voice-active{border-color:#3f9e63;box-shadow:0 0 0 1px #3f9e638c,0 0 10px -2px #3f9e6399}.mh-voice-btn.voice-off{opacity:.5}.mh-voice-btn.voice-connecting{animation:voice-pulse 1s ease-in-out infinite}.mh-voice-btn.voice-err{border-color:#b0352f}@keyframes voice-pulse{50%{border-color:#3f9e63;box-shadow:0 0 10px -1px #3f9e63b3}}.compass .bid-avatar.voice-speaking{border-color:#4ade80!important;box-shadow:0 0 0 1px #4ade80,0 0 10px -1px #4ade80bf!important}.compass .bid-avatar.voice-muted{border-color:#ef4444!important;box-shadow:0 0 0 1px #ef44448c!important}.mh-status{font-size:.8rem;padding:.25rem .55rem;border-radius:999px;background:#ffffff0a;color:var(--muted);border:1px solid var(--line)}.mh-status.mh-status-open{color:#7fd29a;border-color:#7fd29a66}.mh-status.mh-status-connecting{color:var(--brass-hi);border-color:#d8b66a66}.mh-status.mh-status-closed{color:#ff6e6e;border-color:#ff6e6e66;cursor:pointer}.app-subheader{display:flex;justify-content:center;align-items:center;gap:1.6rem}.app-subheader:empty{display:none}.app-subheader .sub-center{display:flex;flex-direction:column;gap:.4rem;align-items:center}.app-subheader .sub-center:empty{display:none}.header-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;justify-content:flex-end}.header-meta:empty{display:none}.be-swiper{width:100%;max-width:200px;margin-left:auto;margin-right:auto;overflow:hidden;position:relative}.be-track{display:flex;align-items:stretch;transition:transform .22s cubic-bezier(.2,.8,.25,1)}.be-page{box-sizing:border-box;padding:2px 4px}.be-page-awards{overflow-y:auto;overscroll-behavior-y:contain}.be-page-scores,.be-page-btns{overflow-y:hidden}.be-page-awards::-webkit-scrollbar{width:0;display:none}.be-tag{display:flex;align-items:center;gap:3px;flex:0 0 auto}.be-dir{font-size:.62rem;font-weight:800;line-height:1;padding:1px 4px;border-radius:4px;letter-spacing:.04em;min-width:1.15em;text-align:center;box-sizing:content-box}.be-row{display:flex;align-items:center;gap:6px;padding:2px 4px;min-height:26px}.be-page-awards .be-row{align-items:flex-start}.be-page-awards .be-row+.be-row{border-top:1px solid rgba(255,255,255,.12);margin-top:3px;padding-top:6px}.be-av{font-size:1rem;line-height:1;flex:0 0 auto;cursor:pointer;background:transparent;border:none;padding:0}.be-chips{display:flex;flex-wrap:wrap;gap:3px;flex:1;min-width:0;justify-content:flex-start}.be-chip{font-size:.7rem;font-weight:700;padding:1px 6px;border-radius:999px;cursor:pointer;border:1px solid transparent;white-space:nowrap}.be-chip.be-honor{background:linear-gradient(180deg,#d8b66a4d,#b0863d38);border-color:var(--brass, #b0863d);color:#f6ecd2}.be-chip.be-egg{background:#82a8ff29;border-color:#82a8ff80;color:#cfe0ff}.be-chip.be-fail{background:#ffffff0d;border-color:#ffffff2e;color:#b9b2a6}.be-chip.be-fail:before{content:"💥 "}.be-score-parts{flex:1;min-width:0;text-align:left;font-size:.72rem;color:var(--text);font-variant-numeric:tabular-nums}.be-score-total{margin-left:auto;font-size:.9rem;font-weight:800;color:var(--brass-hi, #d8b66a);font-variant-numeric:tabular-nums}.be-score-dim{flex:1;font-size:.72rem;color:var(--muted)}.be-empty{font-size:.76rem;color:var(--muted);text-align:center;padding:.7rem 0}.be-dots{display:flex;justify-content:center;gap:5px;padding:3px 0 1px}.be-dot{width:5px;height:5px;border-radius:50%;padding:0;cursor:pointer;border:none;background:#ffffff38}.be-dot.on{background:var(--brass-hi, #d8b66a)}.mvp-row{display:flex;align-items:center;gap:.4rem;width:100%;box-sizing:border-box;padding:4px 8px;margin-bottom:3px;border-radius:8px;background:linear-gradient(90deg,#d8b66a38,#d8b66a0f);border:1px solid var(--brass-hi)}.mvp-tag{font-size:.62rem;font-weight:800;letter-spacing:.08em;color:#1b1b1b;background:linear-gradient(180deg,#ffe07a,#c9a227);padding:2px 6px;border-radius:999px}.mvp-avg{margin-left:auto;font-size:.85rem;font-weight:800;color:var(--brass-hi);font-variant-numeric:tabular-nums}.rb-menu-awards{display:flex;flex-direction:column;gap:3px;padding:4px 8px 6px}.rb-mvp{display:flex;align-items:center;gap:.35rem;margin-bottom:2px;padding:3px 6px;border-radius:7px;background:linear-gradient(90deg,#d8b66a38,#d8b66a0d);border:1px solid var(--brass-hi)}.rb-mvp-seat{font-size:.66rem;font-weight:800;color:var(--muted)}.rb-mvp-name{font-size:.78rem;font-weight:700;color:var(--text)}.rb-award{display:flex;align-items:center;gap:.35rem;padding:1px 2px}.rb-award-seat{font-size:.62rem;font-weight:800;color:var(--muted);min-width:1.1em;text-align:center}.rb-award .aw-name{font-size:.76rem}.rb-menu-sep{height:1px;background:var(--line);margin:2px 0}.result-mvp{display:flex;align-items:center;justify-content:center;gap:.45rem;margin:.5rem auto .2rem;padding:5px 12px;width:fit-content;border-radius:999px;background:linear-gradient(90deg,#d8b66a3d,#d8b66a14);border:1px solid var(--brass-hi)}.result-mvp-seat{font-size:.68rem;font-weight:800;color:var(--muted)}.result-mvp-name{font-size:.9rem;font-weight:800;color:var(--text)}.heat-hi{color:#ffd76a}.heat-good{color:#b9e8c4}.heat-mid{color:var(--text)}.heat-low{color:#ffb27a}.heat-bad{color:#ff8a8a}.hist-tabs{display:flex;gap:4px;padding:0 .6rem .5rem}.hist-tab{flex:1;font-size:.76rem;font-weight:700;line-height:1;cursor:pointer;padding:7px 4px;border-radius:8px;color:var(--muted);background:transparent;border:1px solid var(--line)}.hist-tab:hover{color:var(--text)}.hist-tab.on{color:var(--brass-hi);border-color:var(--brass-hi);background:#d8b66a24}.ratings-wrap{padding:0 .6rem 1rem;overflow-x:auto}.ratings-table{width:100%;border-collapse:collapse}.ratings-table th{padding:4px 2px;font-weight:700}.ratings-table .rg-avatar{font-size:1.15rem;line-height:1;margin-bottom:3px}.ratings-table .rg-avatar.clickable{cursor:pointer}.ratings-table .rg-avatar.clickable:active{transform:scale(.9)}.ratings-table .rg-name{font-size:.74rem;font-weight:700;color:var(--brass-hi);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ratings-table .rg-seat{font-size:.6rem;font-weight:500;color:var(--muted);margin-top:1px}.ratings-table td{padding:2px;text-align:center}.rg-num{font-family:var(--font-serif);font-size:.92rem;font-weight:700;color:var(--brass-hi);font-variant-numeric:tabular-nums;width:2em}.rg-avg-row .rg-num{font-size:.8rem}.ratings-table .rg-seat.team-ns .rg-seat-letter{color:var(--team-ns)}.ratings-table .rg-seat.team-ew .rg-seat-letter{color:var(--team-ew)}.ratings-table .rg-seat-letter{font-weight:800}.ratings-table th.rg-you,.ratings-table td.rg-you{background:#d8b66a17;box-shadow:inset 1px 0 0 var(--brass-lo),inset -1px 0 0 var(--brass-lo)}.ratings-table th.rg-you{box-shadow:inset 1px 1px 0 var(--brass-lo),inset -1px 0 0 var(--brass-lo)}.ratings-table th.rg-you .rg-name{color:#fff}.rg-cell{width:100%;font-size:.82rem;font-weight:700;cursor:pointer;font-variant-numeric:tabular-nums;padding:4px 2px;border-radius:6px;background:#ffffff0a;border:1px solid transparent}.rg-cell:hover{border-color:var(--line)}.rg-none{font-size:.7rem;color:var(--muted)}.rg-avg-row td{padding-top:7px;border-top:2px solid var(--brass)}.rg-avg{font-size:.9rem;font-weight:800;font-variant-numeric:tabular-nums}.rd-total{font-size:2.2rem;font-weight:800;text-align:center;margin:.2rem 0 .6rem;font-variant-numeric:tabular-nums}.ratings-table{table-layout:fixed}.ratings-table th{width:auto}.ratings-table .rt-num{width:1.8em}.game-tabs{display:flex;gap:.4rem;margin:0 0 1rem;border-bottom:1px solid var(--line)}.entry-voice{display:flex;align-items:center;justify-content:center;gap:.5rem;margin:0 0 1rem}.entry-voice-label{font-size:.85rem;color:var(--muted);letter-spacing:.03em}.mob-entry-voice{margin:.2rem 0 .9rem}.game-tab{flex:1;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;padding:.55rem .6rem;color:var(--muted);font-weight:700;letter-spacing:.05em;cursor:pointer;transition:color .14s,background .14s,border-color .14s}.game-tab:hover{color:var(--text);background:#ffffff08}.game-tab.active{color:var(--brass-hi);background:linear-gradient(180deg,#c4a05024,#c4a0500a);border-color:var(--line);border-bottom:1px solid var(--bg);margin-bottom:-1px}.entry-profile-btn{font-size:.85rem}.mob-profile-row{margin-bottom:.9rem}.profile-avatar-big{display:block;margin:.2rem auto .5rem;font-size:2.6rem;line-height:1;cursor:pointer;background:#ffffff0a;border:1px solid var(--line);border-radius:14px;padding:8px 12px}.profile-avatar-big:hover{border-color:var(--brass-hi);background:#d8b66a1f}.profile-name-wrap{display:flex;align-items:center;justify-content:center;gap:.4rem;min-width:0;margin-bottom:.9rem}.profile-name-text{font-size:1.15rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:8em}.profile-name-edit{font-size:.85rem;line-height:1;cursor:pointer;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:6px;padding:3px 5px}.profile-name-edit:hover{color:var(--brass-hi);border-color:var(--brass-hi)}.profile-uuid{align-self:stretch;margin:-.5rem 0 .9rem;padding:5px 8px;cursor:pointer;font-family:var(--font-mono, ui-monospace, monospace);font-size:.62rem;line-height:1.4;letter-spacing:.01em;word-break:break-all;color:var(--muted);background:#ffffff08;border:1px solid var(--line);border-radius:8px}.profile-uuid:hover{color:var(--text);border-color:var(--brass-lo)}.profile-uuid:active{background:#ffffff0f}.profile-switch-hint{align-self:stretch;text-align:left;margin:.2rem 0 .7rem;font-size:.74rem;line-height:1.55;color:var(--muted)}.profile-uuid-input{font-family:var(--font-mono, ui-monospace, monospace);font-size:.8rem}.seat-modal-sheet>.stats-block,.rd-sheet>.rd-metric,.rd-sheet>.aw-row,.profile-sheet .profile-entry,.profile-sheet .profile-back-row,.profile-sheet .profile-edit-actions,.profile-sheet .profile-avatar-picker{align-self:stretch}.profile-sheet .profile-entry,.profile-sheet .profile-back-row,.rd-sheet>.rd-metric,.rd-sheet>.aw-row{text-align:left}.rd-metric{margin:.6rem 0 0}.rd-metric-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.rd-metric-k{font-size:.82rem;font-weight:600;color:var(--muted)}.rd-metric-v{font-size:1.05rem;font-weight:800;font-variant-numeric:tabular-nums}.rd-bar{position:relative;height:7px;border-radius:999px;background:#ffffff14}.rd-bar-fill{position:absolute;left:0;top:0;height:100%;border-radius:999px;background:currentColor;opacity:.5}.rd-bar-pointer{position:absolute;top:50%;width:11px;height:11px;border-radius:50%;background:currentColor;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #0c1c13}.rd-metric-sub{margin-top:6px;font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.rd-divider{align-self:stretch;height:1px;background:var(--brass-lo);opacity:.5;margin:.95rem 0 .15rem}.rd-sheet .aw-row{padding:.4rem .55rem;margin:.45rem 0 0;border-radius:8px}.rd-sheet .aw-name{font-size:.8rem}.rd-sheet .aw-kind{font-size:.58rem}.rd-sheet .aw-desc{margin-top:2px;font-size:.68rem;line-height:1.4}.profile-entry{display:flex;align-items:center;gap:.6rem;padding:.65rem .8rem;margin-bottom:.5rem;background:#ffffff0a;border:1px solid var(--line);border-radius:12px;cursor:pointer}.profile-entry:active{background:#ffffff12}.profile-entry-label{font-weight:700;color:var(--text);flex:1}.profile-entry-meta{font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums}.profile-back-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.7rem}.profile-back{font-size:1.2rem;line-height:1;cursor:pointer;color:var(--text);background:#ffffff0d;border:1px solid var(--line);border-radius:8px;padding:2px 9px}.profile-back:hover{border-color:var(--brass-hi);color:var(--brass-hi)}.profile-back-title{font-weight:700;color:var(--text)}.profile-edit-actions{display:flex;gap:.5rem;margin-top:.2rem}.profile-edit-actions>button{flex:1}.profile-name-input{width:100%;box-sizing:border-box;text-align:center;margin:.4rem 0 .6rem;padding:.5rem;background:#00000059;color:var(--text);border:1px solid var(--line);border-radius:8px;font-size:1rem}.profile-avatar-picker{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;max-height:132px;overflow-y:auto;margin-bottom:.6rem}.profile-avatar-opt{font-size:1.1rem;line-height:1;padding:3px 5px;cursor:pointer;background:transparent;border:1px solid transparent;border-radius:6px}.profile-avatar-opt.active{border-color:var(--brass-hi);background:#d8b66a29}.stats-block{display:flex;flex-direction:column;gap:2px;margin:.3rem 0}.stats-row{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;padding:3px 6px;border-radius:5px;background:#ffffff08}.stats-k{font-size:.76rem;color:var(--muted)}.stats-v{font-size:.82rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.stats-empty{font-size:.78rem;color:var(--muted);text-align:center;padding:.5rem}.award-cabinet,.ach-list{align-self:stretch;max-height:46vh;overflow-y:auto;text-align:left}.award-cabinet::-webkit-scrollbar,.ach-list::-webkit-scrollbar{width:0;display:none}.aw-page{align-self:stretch;display:flex;flex-direction:column;min-height:0}.aw-sortbar{display:flex;gap:4px;margin-bottom:.5rem;flex:0 0 auto}.aw-sort{font-size:.68rem;font-weight:600;line-height:1;cursor:pointer;padding:4px 9px;border-radius:999px;color:var(--muted);background:transparent;border:1px solid var(--line)}.aw-sort:hover{color:var(--text)}.aw-sort.on{color:#1b1b1b;font-weight:800;border-color:var(--brass-hi);background:linear-gradient(180deg,#ffe07a,#c9a227)}.aw-row{padding:.5rem .6rem .55rem;margin-bottom:.4rem;border-radius:9px;border:1px solid var(--line);border-left-width:2px;background:#ffffff09}.aw-row.kind-honor{border-left-color:var(--brass-hi)}.aw-row.kind-egg{border-left-color:#78b4ff}.aw-row.kind-fail{border-left-color:#ff7878}.aw-top{display:flex;align-items:baseline;gap:.4rem}.aw-name{font-size:.88rem;font-weight:700;letter-spacing:.02em}.kind-honor .aw-name{color:var(--brass-hi)}.kind-egg .aw-name{color:#9ecbff}.kind-fail .aw-name{color:#ff9a9a}.aw-count{font-size:.72rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;opacity:.9}.aw-kind{font-size:.62rem;font-weight:700;line-height:1;padding:2px 5px;border-radius:999px}.aw-kind.kind-honor{color:#f0d089;background:#d8b66a2e}.aw-kind.kind-egg{color:#9ecbff;background:#78b4ff29}.aw-kind.kind-fail{color:#ff9a9a;background:#ff787829}.aw-date{margin-left:auto;font-size:.68rem;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}.aw-desc{margin-top:3px;font-size:.72rem;font-weight:400;line-height:1.5;color:var(--muted)}.ach-list{display:flex;flex-direction:column;gap:.45rem}.ach-row{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:10px;background:#ffffff0a;border:1px solid var(--line)}.ach-row.locked{opacity:.5}.ach-badge{flex:0 0 auto;line-height:0}.ach-badge svg{width:30px;height:36px;display:block;filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}.ach-badge .m-rib-l{fill:#c0392b}.ach-badge .m-rib-r{fill:#2f6fb0}.ach-badge .m-rim{fill:var(--m-lo)}.ach-badge .m-disc{fill:var(--m-mid)}.ach-badge .m-star{fill:var(--m-hi)}.ach-badge .m-star2{fill:var(--m-lo);opacity:.35}.ach-badge.tier-bronze{--m-hi:#f4c088;--m-mid:#d88b3f;--m-lo:#8a5320}.ach-badge.tier-silver{--m-hi:#ffffff;--m-mid:#cdd2d8;--m-lo:#848a92}.ach-badge.tier-gold{--m-hi:#fff0b0;--m-mid:#ffcf47;--m-lo:#a9800f}.ach-badge.tier-platinum{--m-hi:#e9f0fc;--m-mid:#9db9e6;--m-lo:#556fa6}.ach-badge.tier-diamond{--m-hi:#ddfff6;--m-mid:#5fdec8;--m-lo:#1f9b86}.ach-badge.tier-none{--m-hi:rgba(220,230,224,.5);--m-mid:rgba(200,210,205,.13);--m-lo:rgba(200,210,205,.22)}.ach-badge.tier-none .m-rib-l,.ach-badge.tier-none .m-rib-r{fill:#c8d2cd29}.ach-badge.tier-none .m-star2{opacity:0}.ach-mid{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.ach-top{display:flex;align-items:baseline;gap:8px}.ach-name{font-size:.9rem;font-weight:700;color:var(--text)}.ach-tname{margin-left:auto;font-size:.78rem;font-weight:700;letter-spacing:.04em;color:var(--faint)}.ach-tname.tier-bronze{color:#e0a56b}.ach-tname.tier-silver{color:#cfd6dd}.ach-tname.tier-gold{color:#ffd75e}.ach-tname.tier-platinum{color:#a9c2ee}.ach-tname.tier-diamond{color:#5fdec8}.ach-goal{font-size:.78rem;color:var(--muted)}.ach-goal b{color:var(--text);font-weight:800;font-variant-numeric:tabular-nums}.ach-barline{display:flex;align-items:center;gap:9px}.ach-bar{flex:1;height:6px;border-radius:3px;background:#ffffff14;overflow:hidden}.ach-bar-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--brass-lo),var(--brass-hi))}.ach-tally{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.ach-row.maxed{border-color:#ffcf4773;background:linear-gradient(100deg,#ffcf4717,#ffcf4705);animation:achShine 2.6s ease-in-out infinite}.ach-row.maxed .ach-bar-fill{background:linear-gradient(90deg,#e7c266,#fff2c4,#e7c266)}@keyframes achShine{0%,to{box-shadow:0 0 0 1px #ffcf471a,0 0 14px -5px #ffcf4766}50%{box-shadow:0 0 0 1px #ffcf4733,0 0 26px -3px #ffcf47b3}}@media (prefers-reduced-motion: reduce){.ach-row.maxed{animation:none}}.peer-swiper{align-self:stretch;display:flex;flex-direction:column;margin-top:.2rem}.peer-tabs{display:flex;gap:4px;margin-bottom:.5rem;flex:0 0 auto}.peer-tab{flex:1;font-size:.7rem;font-weight:700;line-height:1;cursor:pointer;padding:5px 4px;border-radius:7px;color:var(--muted);background:transparent;border:1px solid var(--line)}.peer-tab:hover{color:var(--text)}.peer-tab.on{color:var(--brass-hi);border-color:var(--brass-hi);background:#d8b66a24}.peer-view{position:relative;overflow:hidden;height:42vh;max-height:340px}.peer-track{display:flex;height:100%;transition:transform .22s cubic-bezier(.2,.8,.25,1)}.peer-page{box-sizing:border-box;height:100%;overflow-y:auto;overscroll-behavior-y:contain}.peer-page::-webkit-scrollbar{width:0;display:none}.peer-page .award-cabinet,.peer-page .ach-list{max-height:none;overflow:visible}.peer-page .aw-page{min-height:0}.rd-metric-click{cursor:pointer}.rd-metric-click .rd-metric-head:after{content:"▾";margin-left:.35em;opacity:.5;font-size:.8em}.rd-drill{margin-top:.5em;padding:.5em .6em;border-radius:8px;background:#7f7f7f14;font-size:.82em;line-height:1.5}.rd-drill-empty{opacity:.6}.rd-drill-line{opacity:.85}.rd-drill-row{display:flex;gap:.5em;align-items:baseline;padding:.1em 0}.rd-drill-t{opacity:.6;min-width:3.2em}.rd-drill-card{font-weight:600;min-width:2.4em}.rd-drill-d.pos{color:#2e9e5b}.rd-drill-d.neg{color:#d15b5b}.rd-drill-role{opacity:.55}.rd-drill-best{margin-left:auto;opacity:.8}.rd-drill-row{font-size:.72em}.rd-drill-hand{font-size:.85em;font-weight:600;padding:0 .35em;border-radius:4px}.rd-drill-hand.decl{color:#b06a1e;background:#c8822824}.rd-drill-hand.dummy{color:#4a80c0;background:#4a80c024}.rd-hist{display:flex;align-items:flex-end;gap:2px;height:64px;padding-top:.3em}.rd-hist-col{flex:1 1 0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative;min-width:3px}.rd-hist-bar{width:78%;border-radius:2px 2px 0 0;min-height:1px}.rd-hist-bar.neg{background:#d15b5b}.rd-hist-bar.pos{background:#2e9e5b}.rd-hist-bar.par{outline:1px solid rgba(127,127,127,.5)}.rd-hist-x{position:absolute;bottom:-1.1em;font-size:.62em;opacity:.55}.rd-sheet{max-height:85vh;overflow-y:auto;overscroll-behavior:contain}.rd-hist{margin-bottom:1.3em}.mahjong-app{position:relative;display:grid;grid-template-columns:minmax(0,1fr) clamp(260px,22vw,560px);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"topbar  topbar" "play    sidebar";column-gap:14px;row-gap:12px;height:100vh;max-height:100vh;overflow:hidden;padding:.9rem 1.2rem 1.2rem;box-sizing:border-box;background:radial-gradient(ellipse 70% 35% at 50% -10%,rgba(245,200,118,.1) 0%,transparent 65%),linear-gradient(180deg,#1a0f0a,#0d0604 65%,#02040a)}.mahjong-app>.mahjong-topbar{grid-area:topbar}.mahjong-app>.mahjong-play-area{grid-area:play}.mahjong-app>.mahjong-sidebar{grid-area:sidebar}.mahjong-app .mahjong-topbar{grid-template-columns:minmax(0,1fr) clamp(260px,22vw,560px)}.mahjong-topbar{grid-area:topbar}.mahjong-play-area{display:flex;min-height:0;border-radius:12px;overflow:hidden;background:#0d0604;border:1px solid #4a2c1a}.mahjong-frame{flex:1;border:0;width:100%;background:#0d0604}.mahjong-lobby-presence{margin:.6rem auto 0;max-width:520px;display:flex;flex-direction:column;align-items:center;gap:.45rem}.mahjong-presence-label{font-size:.85rem;letter-spacing:.05em;color:#c69749}.mahjong-presence-empty{font-size:.8rem;color:#7a6038;font-style:italic}.mahjong-presence-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem}.mahjong-presence-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;background:#ffffff0d;border:1px solid #4a2c1a;border-radius:999px;font-size:.85rem;color:#e8d4a0}.mahjong-presence-chip.you{border-color:var(--brass, #c69749);background:#c497492e;color:#f1d99a}.mahjong-title-row{display:flex;align-items:center;justify-content:center;gap:.55rem}.mahjong-meta-chip{font-size:.74rem;font-weight:600;padding:.08rem .5rem;border-radius:999px;border:1px solid #4a2c1a;background:#ffffff0a;white-space:nowrap;letter-spacing:.04em}.mahjong-meta-chip.round{color:#c69749}.mahjong-meta-chip.dealer{color:#f1d99a;border-color:#c4974980;background:#c497491f}.mahjong-sidebar{display:flex;flex-direction:column;gap:.7rem;min-height:0;overflow-y:auto}.mahjong-side-card{background:linear-gradient(180deg,#281810d9,#140c08d9);border:1px solid #4a2c1a;border-radius:10px;padding:.75rem .9rem;display:flex;flex-direction:column;gap:.45rem}.mahjong-side-h3{margin:0 0 .25rem;font-family:ZCOOL XiaoWei,Fraunces,serif;font-weight:700;font-size:.95rem;letter-spacing:.08em;color:#c69749}.mahjong-side-seat{display:flex;align-items:center;gap:.5rem;padding:.3rem .45rem;background:#ffffff08;border-radius:6px;font-size:.9rem}.mahjong-side-seat-wind{width:1.6rem;height:1.6rem;display:inline-flex;align-items:center;justify-content:center;background:#c4a0502e;color:#f1d99a;border-radius:50%;font-weight:700;font-family:"Noto Serif SC",Songti SC,serif}.mahjong-side-seat-name{color:#e8d4a0}.mahjong-side-seat-empty{color:#6b5a3a;font-style:italic}.mahjong-side-row{display:flex;justify-content:space-between;font-size:.85rem}.mahjong-side-k{color:#9a7a4a}.mahjong-side-v{color:#e8d4a0;font-family:ui-monospace,Roboto Mono,monospace}.mahjong-side-note{margin:.3rem 0 0;font-size:.78rem;color:#7a6038;font-style:italic;line-height:1.5}.mahjong-leaderboard{display:flex;flex-direction:column;gap:.28rem}.mahjong-leader-row{display:grid;grid-template-columns:1.4rem 1.6rem 1fr auto;align-items:center;gap:.5rem;padding:.32rem .5rem;background:#ffffff08;border-radius:6px;font-size:.9rem}.mahjong-leader-rank{color:#9a7a4a;font-family:ui-monospace,Roboto Mono,monospace;font-size:.8rem;text-align:center}.mahjong-leader-wind{width:1.6rem;height:1.6rem;display:inline-flex;align-items:center;justify-content:center;background:#c4a0502e;color:#f1d99a;border-radius:50%;font-weight:700;font-family:"Noto Serif SC",Songti SC,serif;font-size:.85rem}.mahjong-leader-name{color:#e8d4a0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mahjong-leader-name.empty{color:#6b5a3a;font-style:italic}.mahjong-leader-score{color:#f1d99a;font-family:ui-monospace,Roboto Mono,monospace;font-weight:700;font-size:.95rem;min-width:2.5rem;text-align:right}.mahjong-leader-score.positive{color:#8de57d}.mahjong-leader-score.negative{color:#e87a7a}.mahjong-score-note{margin-top:.35rem;font-size:.7rem;color:#d4a85a8c;font-style:italic;letter-spacing:.04em}.mahjong-score-table td.num{font-family:ui-monospace,Roboto Mono,monospace}.mahjong-launcher{gap:.6rem;align-items:stretch}.dou-lobby-tables.single{grid-template-columns:minmax(0,1fr)}.dou-lobby-tables.double{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.dou-lobby-tables.double .lobby-seats{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}.dou-match-status-chip{align-self:center;margin:0 0 .8rem;padding:.45rem 1.1rem;border-radius:999px;font-size:.95rem;font-weight:600;letter-spacing:.04em;text-align:center}.dou-match-status-chip.playing{background:#d99c461f;border:1px solid rgba(217,156,70,.55);color:#f0c882fa}.dou-match-status-chip.completed{background:#78c88c1a;border:1px solid rgba(120,200,140,.5);color:#a0dcb4fa}.dou-match-status-chip.liju-break{background:#c1995c2e;border:1px solid rgba(212,168,90,.6);color:#f0d296}.dou-liju-break-banner{position:relative;margin:0 0 1rem;padding:1.5rem 1.8rem 1.6rem;background:radial-gradient(ellipse 80% 55% at 50% 0%,rgba(255,222,130,.08),transparent 70%),linear-gradient(180deg,#261a0cf0,#160e06f5);border:1px solid transparent;border-radius:14px;box-shadow:0 6px 24px #00000073;display:flex;flex-direction:column;align-items:center;gap:.7rem}.dou-liju-break-banner:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:18px;pointer-events:none;background:linear-gradient(140deg,#6b521f,#e3c478 18%,#8a6d2f,#f1d99a 62%,#5a4318 82%,#c9a458);z-index:-1}.dou-liju-break-title{font-family:var(--font-serif);font-weight:800;font-size:1.4rem;color:var(--dou-gold-bright);letter-spacing:.04em;text-shadow:0 0 14px rgba(240,198,104,.4)}.dou-liju-break-winner{font-family:var(--font-serif);font-weight:700;font-size:1.15rem;letter-spacing:.03em;display:flex;align-items:baseline;gap:.4rem}.dou-liju-break-winner-name.team-a{color:#ee6c7a}.dou-liju-break-winner-name.team-b{color:#6da8ff}.dou-liju-break-winner-gap{font-variant-numeric:tabular-nums}.dou-liju-break-winner-gap.team-a{color:#ee6c7a}.dou-liju-break-winner-gap.team-b{color:#6da8ff}.dou-liju-break-winner-tag{font-family:var(--dou-font-ui);font-size:.75rem;padding:.15rem .45rem;border-radius:999px;background:#d4a85a26;border:1px solid rgba(212,168,90,.5);color:#e8c890f2;font-weight:500;letter-spacing:.04em;margin-left:.4rem}.dou-liju-break-tally{display:flex;align-items:baseline;gap:.6rem;margin-top:.2rem;flex-wrap:wrap;justify-content:center}.dou-liju-break-tally-cell{font-family:var(--font-serif);font-weight:700;font-size:1.05rem}.dou-liju-break-tally-cell.red{color:#ee6c7a}.dou-liju-break-tally-cell.blue{color:#6da8ff}.dou-liju-break-tally-sep{color:#d4a85a8c}.dou-liju-break-tally-target{font-size:.78rem;color:#b8a070d9;letter-spacing:.08em;margin-left:.5rem}.dou-liju-break-cta{font-size:1.1rem!important;padding:.7rem 1.8rem!important}.dou-liju-break-stats{font-size:.95rem!important;padding:.6rem 1.3rem!important}.dou-liju-break-actions{display:flex;gap:.8rem;align-items:center;margin-top:.5rem;flex-wrap:wrap;justify-content:center}.dou-liju-break-titlerow{display:flex;flex-direction:column;align-items:center;gap:.25rem}.dou-liju-break-subtitle{font-family:var(--font-serif);font-weight:600;font-size:1rem;letter-spacing:.04em;font-variant-numeric:tabular-nums}.dou-liju-break-subtitle.team-a{color:#ee6c7a}.dou-liju-break-subtitle.team-b{color:#6da8ff}.dou-liju-break-series{display:flex;align-items:baseline;gap:1rem;margin-top:.4rem}.dou-liju-break-series-cell{font-family:var(--font-serif);font-weight:800;font-size:2.5rem;font-variant-numeric:tabular-nums;line-height:1}.dou-liju-break-series-cell.red{color:#ee6c7a}.dou-liju-break-series-cell.blue{color:#6da8ff}.dou-liju-break-series-vs{font-family:var(--font-serif);font-weight:700;font-size:2rem;color:var(--dou-ink-mute);letter-spacing:0;line-height:1;transform:translateY(-.25rem)}.dou-liju-break-target{font-size:.78rem;color:#b8a070d9;letter-spacing:.08em;margin-top:-.1rem}.dou-liju-break-table{width:100%;max-width:880px;border-collapse:separate;border-spacing:0;margin-top:.8rem;font-variant-numeric:tabular-nums}.dou-liju-break-table th,.dou-liju-break-table td{padding:.55rem .8rem;text-align:center;border-bottom:1px solid rgba(212,168,90,.15);font-family:var(--font-serif);font-weight:700}.dou-liju-break-table thead tr th{font-weight:500;font-size:.95rem;color:var(--dou-ink-mute);border-bottom:1px solid rgba(212,168,90,.35);padding:.5rem .6rem}.dou-liju-break-table th.just-done{color:var(--dou-gold-bright);font-weight:700}.dou-liju-break-table th.dou-liju-break-team{text-align:left;font-size:1.1rem;padding-right:1rem}.dou-liju-break-team.team-a{color:#ee6c7a}.dou-liju-break-team.team-b{color:#6da8ff}.dou-liju-break-table-cell{font-size:2rem!important;line-height:1;font-weight:800;font-variant-numeric:tabular-nums;min-width:3.2rem}.dou-liju-break-table-cell.winner.team-a{background:linear-gradient(180deg,#d94656,#a82b3a);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}.dou-liju-break-table-cell.winner.team-b{background:linear-gradient(180deg,#4e7fd6,#2c5cad);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}.dou-liju-break-table-cell.loser.team-a{color:#ee6c7ab3}.dou-liju-break-table-cell.loser.team-b{color:#6da8ffb3}.dou-liju-break-table td.empty{color:var(--dou-ink-dim);font-size:1.6rem}.dou-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:1000;display:flex;align-items:center;justify-content:center;padding:2rem}.dou-modal-card{background:linear-gradient(180deg,#1e160cfa,#120c06fc);border:1px solid rgba(212,168,90,.55);border-radius:.7rem;box-shadow:0 12px 40px #0009;max-width:900px;width:100%;max-height:90vh;overflow-y:auto;padding:1.4rem 1.6rem}.dou-modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;border-bottom:1px solid rgba(212,168,90,.25);padding-bottom:.7rem}.dou-modal-title{font-family:var(--font-serif);font-weight:800;font-size:1.2rem;color:var(--dou-gold-bright)}.dou-modal-close{font-size:1.4rem!important;width:2.2rem;height:2.2rem;padding:0!important;line-height:1}.dou-modal-tabs{display:flex;gap:.4rem;margin-bottom:1rem}.dou-modal-tab{font-size:.92rem!important;padding:.4rem .9rem!important}.dou-modal-tab.active{background:#d4a85a33!important;border-color:#f0c668b3!important;color:var(--dou-gold-bright)!important}.dou-modal-empty{padding:2rem;text-align:center;color:var(--dou-ink-mute);font-style:italic}.dou-modal-liju-bar{display:flex;gap:.4rem;margin-bottom:1rem;flex-wrap:wrap}.dou-modal-liju-pill{font-size:.85rem!important;padding:.3rem .8rem!important}.dou-modal-liju-pill.active{background:#d4a85a2e!important;border-color:#f0c668a6!important;color:var(--dou-gold-bright)!important}.dou-stats-players-table{width:100%;border-collapse:collapse;font-family:var(--font-serif);font-variant-numeric:tabular-nums}.dou-stats-players-table th,.dou-stats-players-table td{padding:.55rem .7rem;text-align:center;border-bottom:1px solid rgba(212,168,90,.18)}.dou-stats-players-table thead tr th,.dou-stats-players-table tr:first-child th{color:var(--dou-ink-mute);font-weight:500;font-size:.85rem;letter-spacing:.06em}.dou-stats-players-table td:first-child,.dou-stats-players-table th:first-child{text-align:left;padding-left:.4rem}.dou-stats-player-name-cell{font-size:1rem;font-weight:700;letter-spacing:.02em}.dou-stats-player-name-cell.team-a{color:#ee6c7a}.dou-stats-player-name-cell.team-b{color:#6da8ff}.dou-stats-player-rate-cell{font-size:1.1rem;font-weight:700;color:var(--dou-ink);line-height:1.15}.dou-stats-player-rate-cell .rate-pct{font-size:1.1rem;font-weight:700}.dou-stats-player-rate-cell .rate-count{font-size:.7rem;font-weight:500;letter-spacing:.05em;color:var(--dou-ink-mute);margin-top:.1rem}.dou-stats-players-table .max-col{background:linear-gradient(180deg,#f0c668bf,#d4a85a8c);color:#fff!important;box-shadow:inset 0 0 0 1px #f0c668b3}.dou-stats-players-table .max-col .rate-pct,.dou-stats-players-table .max-col .rate-count{color:#fff}.dou-stats-player-cell{display:flex;flex-direction:column;gap:.1rem;line-height:1.1}.dou-stats-player-name{font-size:1rem;font-weight:700;color:var(--dou-ink)}.dou-stats-player-pos{font-size:.7rem;letter-spacing:.1em;color:var(--dou-ink-mute)}.dou-stats-player-num{font-size:1.1rem;font-weight:700}.dou-stats-player-num.pos{color:#ee6c7a}.dou-stats-player-num.neg{color:#6da8ff}.dou-stats-player-num.zero{color:var(--dou-ink-mute)}.dou-stats-player-num.neutral{color:var(--dou-ink)}.dou-stats-player-rate{font-size:.95rem;color:var(--dou-ink);letter-spacing:.02em}.dou-stats-table-wrap{overflow-x:auto;margin-bottom:0}.dou-stats-table{table-layout:fixed;border-collapse:collapse;width:100%;min-width:600px;font-variant-numeric:tabular-nums}.dou-stats-table th,.dou-stats-table td{padding:.4rem .45rem;text-align:center;border:1px solid rgba(212,168,90,.2);font-family:var(--font-serif);font-weight:600;font-size:.95rem}.dou-stats-table thead tr th{color:var(--dou-ink-mute);font-weight:500;font-size:.8rem}.dou-stats-table-label{width:80px;box-sizing:border-box;text-align:center;font-size:.9rem!important;white-space:nowrap;letter-spacing:.06em;padding-left:.4rem!important;padding-right:.4rem!important}.dou-stats-table thead tr th:first-child{width:80px;box-sizing:border-box;text-align:center;padding-left:.4rem;padding-right:.4rem}.dou-stats-table-label.table-1,.dou-stats-table-label.table-2,.dou-stats-table-label.net-label{color:var(--dou-gold-bright)}.dou-stats-cell.team-a{color:#ee6c7a}.dou-stats-cell.team-b{color:#6da8ff}.dou-stats-cell.neutral{color:var(--dou-ink-mute)}.dou-stats-cell.passed-out{color:#b8a0708c;font-style:italic}.dou-stats-cell.clickable{cursor:pointer;transition:background .12s ease}.dou-stats-cell.clickable:hover{background:#d4a85a1f}.dou-stats-cell.net-cell{font-weight:800}.dou-stats-cell.net-cell.team-a{background:#ee6c7a2e}.dou-stats-cell.net-cell.team-b{background:#6da8ff2e}.dou-stats-cell.net-cell.tie{color:var(--dou-ink-mute)}.dou-stats-chart-wrap{display:flex;width:100%;min-width:600px;margin-top:0;height:200px}.dou-stats-chart-yaxis{width:80px;box-sizing:border-box;flex-shrink:0;position:relative;border-top:1px solid rgba(212,168,90,.2)}.dou-stats-chart-yaxis-label{position:absolute;right:8px;transform:translateY(-50%);font-family:var(--dou-font-ui);color:#b8a070d9;font-size:11px;font-variant-numeric:tabular-nums}.dou-stats-chart-plot{flex:1;min-width:0}.dou-stats-chart{width:100%;height:100%;display:block}.dou-stats-chart .axis-grid{stroke:#d4a85a2e;stroke-width:1}.dou-stats-chart .axis-mid{stroke:#d4a85a80;stroke-width:1}.dou-stats-chart .axis-label{font-family:var(--dou-font-ui);fill:#b8a070d9;font-size:11px}.dou-stats-chart-red{fill:#ee6c7a59;stroke:none}.dou-stats-chart-blue{fill:#6da8ff59;stroke:none}.dou-stats-chart-line{fill:none;stroke:#f0c66899;stroke-width:2}.dou-stats-cell.net-cell.clickable{cursor:pointer}.dou-stats-cell.net-cell.selected{outline:2px solid var(--dou-gold-bright);outline-offset:-2px;box-shadow:inset 0 0 0 2px #f0c6682e}.dou-stats-hand-detail{margin-top:1rem;padding:.8rem .9rem;background:#d4a85a0d;border:1px solid rgba(212,168,90,.25);border-radius:.45rem}.dou-stats-hand-detail-title{font-family:var(--font-serif);font-weight:600;font-size:.95rem;color:var(--dou-gold-bright);letter-spacing:.05em;margin-bottom:.6rem;text-align:center}.dou-stats-hand-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.dou-stats-hand-detail-card{background:#00000047;border:1px solid rgba(212,168,90,.22);border-radius:.4rem;padding:.55rem .7rem}.dou-stats-hand-detail-card-head{font-family:var(--dou-font-ui);color:var(--dou-gold-bright);font-weight:600;font-size:.85rem;letter-spacing:.08em;text-align:center;margin-bottom:.4rem;padding-bottom:.3rem;border-bottom:1px solid rgba(212,168,90,.2)}.dou-stats-hand-detail-row{display:flex;justify-content:space-between;align-items:baseline;padding:.18rem 0;font-family:var(--font-serif);font-size:.9rem}.dou-stats-hand-detail-key{color:var(--dou-ink-mute);font-size:.8rem;letter-spacing:.06em}.dou-stats-hand-detail-val{color:var(--dou-ink);font-variant-numeric:tabular-nums;font-weight:600}.dou-stats-hand-detail-seat{display:inline-block;background:#d4a85a2e;color:var(--dou-gold-bright);border:1px solid rgba(212,168,90,.35);border-radius:.25rem;padding:.05rem .4rem;font-size:.8rem;margin-right:.4rem}.dou-stats-hand-detail-seat.team-a{background:#ee6c7a38;color:#ffd6dc;border-color:#ee6c7a8c}.dou-stats-hand-detail-seat.team-b{background:#6da8ff38;color:#d6e8ff;border-color:#6da8ff8c}.dou-stats-hand-detail-name{color:var(--dou-ink);font-weight:600}.dou-stats-hand-detail-score-row{margin-top:.3rem;padding-top:.3rem;border-top:1px dashed rgba(212,168,90,.25)}.dou-stats-hand-detail-score-row.team-a .dou-stats-hand-detail-score{color:#ee6c7a}.dou-stats-hand-detail-score-row.team-b .dou-stats-hand-detail-score{color:#6da8ff}.dou-stats-hand-detail-score{font-weight:800;font-size:1rem}.dou-stats-hand-detail-empty,.dou-stats-hand-detail-passed{color:#b8a070b3;font-style:italic;font-size:.85rem;text-align:center;padding:.6rem 0}.dou-stats-hand-detail-net{margin-top:.6rem;padding:.45rem .7rem;border-radius:.35rem;display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-serif);font-weight:700}.dou-stats-hand-detail-net.team-a{background:#ee6c7a29;color:#ee6c7a}.dou-stats-hand-detail-net.team-b{background:#6da8ff29;color:#6da8ff}.dou-stats-hand-detail-net.tie{background:#d4a85a14;color:var(--dou-ink-mute)}.dou-stats-hand-detail-net-key{font-size:.85rem;letter-spacing:.06em;opacity:.8}.dou-stats-hand-detail-net-val{font-size:1.05rem;font-variant-numeric:tabular-nums}.dou-stats-fenchayuan-wrap{display:flex;flex-direction:column;gap:1rem;padding:.4rem 0}.dou-stats-fc-section{display:flex;flex-direction:column;gap:.3rem}.dou-stats-fc-section-head{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-serif);letter-spacing:.06em;padding-bottom:.25rem;border-bottom:1px solid rgba(212,168,90,.25);margin-bottom:.25rem}.dou-stats-fc-section-title{color:var(--dou-gold-bright);font-size:.95rem;font-weight:700}.dou-stats-fc-section-sub{color:var(--dou-ink-mute);font-size:.8rem;font-variant-numeric:tabular-nums}.dou-stats-fc-row{display:grid;grid-template-columns:38px 1fr 80px 1fr 38px;align-items:stretch;border-radius:.35rem;overflow:hidden;min-height:44px}.dou-stats-fc-badge{display:flex;align-items:center;justify-content:center;font-family:var(--dou-font-ui);font-size:.85rem;font-weight:600;letter-spacing:.05em;background:#0000008c;color:#dcc8a0d9}.dou-stats-fc-badge.team-a{color:#ffd6dc}.dou-stats-fc-badge.team-b{color:#d6e8ff}.dou-stats-fc-block{display:flex;align-items:center;padding:.45rem .7rem;font-family:var(--font-serif);font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:transparent}.dou-stats-fc-block.left{justify-content:flex-end;text-align:right}.dou-stats-fc-block.right{justify-content:flex-start;text-align:left}.dou-stats-fc-block.team-a{color:#ee6c7a}.dou-stats-fc-block.team-b{color:#6da8ff}.dou-stats-fc-block.team-a.winner{background:linear-gradient(to right,#ee6c7a73,#ee6c7ac7);color:#fff;font-weight:700}.dou-stats-fc-block.right.team-a.winner{background:linear-gradient(to left,#ee6c7a73,#ee6c7ac7)}.dou-stats-fc-block.team-b.winner{background:linear-gradient(to right,#6da8ff73,#6da8ffc7);color:#fff;font-weight:700}.dou-stats-fc-block.right.team-b.winner{background:linear-gradient(to left,#6da8ff73,#6da8ffc7)}.dou-stats-fc-block.faded{opacity:.45}.dou-stats-fc-badge.team-a.winner{background:#ee6c7a80;color:#fff}.dou-stats-fc-badge.team-b.winner{background:#6da8ff80;color:#fff}.dou-stats-fc-center{background:#0009;color:var(--dou-gold-bright);font-family:var(--font-serif);font-weight:800;font-size:1.25rem;font-variant-numeric:tabular-nums;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.dou-stats-fc-center.faded{color:#b8a07080}.dou-stats-fc-center-sub{font-size:.65rem;font-weight:400;letter-spacing:.06em;color:var(--dou-ink-mute);margin-top:.25rem}.dou-stats-fc-team-row{display:flex;justify-content:space-between;align-items:baseline;padding:.55rem .9rem;border-radius:.35rem;font-family:var(--font-serif);font-weight:600;background:transparent;min-height:38px}.dou-stats-fc-team-row.team-a{color:#ee6c7a}.dou-stats-fc-team-row.team-b{color:#6da8ff}.dou-stats-fc-team-row.team-a.winner{background:linear-gradient(to right,#ee6c7a73,#ee6c7ac7);color:#fff;font-weight:700}.dou-stats-fc-team-row.team-b.winner{background:linear-gradient(to right,#6da8ff73,#6da8ffc7);color:#fff;font-weight:700}.dou-stats-fc-team-row.faded{opacity:.5}.dou-stats-fc-team-row-label{font-size:.9rem;letter-spacing:.05em}.dou-stats-fc-team-row-val{font-size:1.1rem;font-variant-numeric:tabular-nums;font-weight:700}.dou-stats-fc-summary{display:flex;flex-direction:column;gap:.3rem;margin-top:.4rem;padding-top:.5rem;border-top:1px dashed rgba(212,168,90,.25)}.dou-stats-fc-summary-line{display:flex;justify-content:space-between;align-items:baseline;padding:.4rem .7rem;border-radius:.3rem;font-family:var(--font-serif)}.dou-stats-fc-summary-line.team-a{background:#ee6c7a24;color:#ee6c7a}.dou-stats-fc-summary-line.team-b{background:#6da8ff24;color:#6da8ff}.dou-stats-fc-summary-line.tie{background:#d4a85a0f;color:var(--dou-ink-mute)}.dou-stats-fc-summary-key{font-size:.85rem;letter-spacing:.05em;opacity:.85}.dou-stats-fc-summary-val{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums}.dou-lobby-table-footer{margin-top:.8rem;padding:.6rem .8rem;display:flex;align-items:center;justify-content:space-between;gap:.8rem;background:#0a08058c;border-top:1px solid rgba(193,153,92,.25);border-radius:.4rem}.dou-lobby-table-footer.table-1{border-left:3px solid #d94646}.dou-lobby-table-footer.table-2{border-left:3px solid #4682d9}.dou-lobby-table-footer-hand{font-size:.95rem;color:#d8c08a;font-weight:600}.dou-lobby-table-footer-enter{white-space:nowrap}.dou-lobby-tables.single .lobby-table{min-height:460px;padding:1.6rem}.dou-lobby-tables.single .lobby-seats{grid-template-rows:minmax(120px,1fr) minmax(120px,1fr) minmax(120px,1fr);gap:1rem;height:100%}.dou-lobby-tables.single .lobby-seat{justify-content:center;height:100%}.lobby-seat-letter.neutral{background:linear-gradient(180deg,#5a4318,#3a2a10);color:var(--brass-hi);border-color:var(--brass)}.lobby-seat.neutral{border-color:#d4a85a4d}.entry-tab.disabled,.entry-tab[disabled]{opacity:.45;cursor:not-allowed;text-decoration:line-through}.entry-tab.disabled:hover{background:transparent;color:var(--muted)}:root{--dou-bg: #050811;--dou-ink: #f0eee8;--dou-ink-mute: #a3a8b8;--dou-ink-dim: #5a6072;--dou-gold: #d4a85a;--dou-gold-bright: #f0c668;--dou-cyan: #2bb6c0;--dou-cyan-bright: #5dd5dd;--dou-cyan-deep: #134a52;--dou-orange: #e0863a;--dou-orange-bright: #ff9f5e;--dou-orange-deep: #663a18;--dou-blue: var(--dou-cyan);--dou-blue-bright: var(--dou-cyan-bright);--dou-blue-deep: var(--dou-cyan-deep);--dou-red: var(--dou-orange);--dou-red-bright: var(--dou-orange-bright);--dou-red-deep: var(--dou-orange-deep);--dou-landlord: #e63946;--dou-card-face: linear-gradient(176deg, #fbf8f0 0%, #efe9dc 100%);--dou-card-border: #cfc7b4;--dou-card-red: #c1322b;--dou-card-black: #14181d;--dou-font-card: "Bodoni Moda", "Noto Serif SC", Georgia, serif;--dou-font-display: "Cormorant Garamond", "Noto Serif SC", Georgia, serif;--dou-font-num: "Manrope", "Inter", sans-serif;--dou-font-ui: "Inter", "Noto Sans SC", sans-serif;--dou-font-name: "Noto Serif SC", "Cormorant Garamond", serif}.dou-app{--dou-u: 1;position:relative;display:grid;grid-template-columns:minmax(0,1fr) clamp(150px,22vw,360px);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"topbar  topbar" "play    sidebar" "action  action";column-gap:14px;row-gap:14px;height:100vh;max-height:100vh;padding:1rem clamp(8px,1.4vw,24px) 1.4rem;box-sizing:border-box;background:radial-gradient(ellipse 70% 35% at 50% -10%,rgba(245,200,118,.1) 0%,transparent 65%),radial-gradient(ellipse 80% 50% at 50% 15%,rgba(60,80,130,.35) 0%,transparent 65%),radial-gradient(ellipse 40% 70% at 0% 50%,rgba(200,130,70,.06) 0%,transparent 50%),radial-gradient(ellipse 40% 70% at 100% 50%,rgba(70,110,200,.06) 0%,transparent 50%),radial-gradient(ellipse 100% 50% at 50% 110%,rgba(0,0,0,.5) 0%,transparent 60%),linear-gradient(180deg,#0a0e1c,#060914 55%,#02040a);color:var(--dou-ink);font-family:var(--dou-font-ui);overflow:hidden}.dou-app:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.dou-app:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;background:linear-gradient(105deg,rgba(255,220,170,.045) 0%,transparent 18%),linear-gradient(255deg,rgba(180,200,255,.045) 0%,transparent 18%)}.dou-app>.dou-topbar{grid-area:topbar;z-index:5}.dou-app>.dou-play-area{grid-area:play;z-index:5}.dou-app>.dou-sidebar{grid-area:sidebar;z-index:5;display:flex;flex-direction:column;gap:.7rem;min-height:0;overflow-y:auto}.dou-app>.dou-action-panel{grid-area:action;z-index:5}.dou-app.teamside{grid-template-columns:minmax(0,1fr) clamp(150px,18vw,360px)}.dou-app.teamside>.dou-topbar{grid-template-columns:minmax(0,1fr) clamp(150px,18vw,360px)}.dou-play-area>*{--dou-u: min(1.52, calc(100cqi/1500px) );--dou-hu: min(1.52, calc(100cqi/1000px) );--dou-zu: min(1.52, calc(100cqi/1154px) );--dou-nu: min(1.52, calc(100cqi/1364px) )}.dou-topbar{display:grid;grid-template-columns:minmax(0,1fr) clamp(150px,22vw,360px);grid-template-rows:auto auto;grid-template-areas:"match    actions" "sub      meta";column-gap:14px;row-gap:14px;align-items:end}.dou-topbar>.dou-match-bar{grid-area:match}.dou-topbar>.dou-top-actions{grid-area:actions}.dou-topbar>.dou-sub-bar{grid-area:sub}.dou-topbar>.dou-meta-bar{grid-area:meta}.dou-match-bar{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:52px}.dou-match-bar:after{content:"";position:absolute;left:8%;right:8%;bottom:-14px;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(212,168,90,.35) 30%,rgba(245,215,140,.6) 50%,rgba(212,168,90,.35) 70%,transparent 100%)}.dou-sub-bar{display:flex;align-items:center;justify-content:center;gap:1.4rem;padding-top:14px;min-height:50px}.dou-score-entry{display:inline-flex;align-items:baseline;gap:1.2rem;font-family:var(--dou-font-ui);background:transparent;border:0;padding:0;box-shadow:none}.dou-score-entry .seat{font-family:var(--dou-font-name);font-size:1.05rem;color:var(--dou-ink-mute);letter-spacing:.04em}.dou-score-entry .score{font-family:var(--dou-font-num);font-size:1.25rem;font-weight:800;color:var(--dou-ink);letter-spacing:.01em}.dou-score-entry .score.win{color:var(--dou-gold-bright)}.dou-score-entry .score.lose{color:#dc6464f2}.dou-score-entry.team-a .seat{color:var(--dou-cyan-bright)}.dou-score-entry.team-b .seat{color:var(--dou-orange-bright)}.dou-team-progress{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto minmax(0,1fr) auto auto;align-items:center;gap:.6rem;width:100%;max-width:760px}.dou-team-progress-label{font-family:var(--dou-font-name);font-weight:700;font-size:1rem;letter-spacing:.04em}.dou-team-progress-label.left{color:var(--dou-cyan-bright)}.dou-team-progress-label.right{color:var(--dou-orange-bright)}.dou-team-progress-score{font-family:var(--font-serif);font-weight:800;font-size:1.2rem;font-variant-numeric:tabular-nums}.dou-team-progress-score.left{color:var(--dou-cyan-bright)}.dou-team-progress-score.right{color:var(--dou-orange-bright)}.dou-team-progress-bar{position:relative;height:12px;background:#00000073;border:1px solid rgba(212,168,90,.25);border-radius:999px;overflow:hidden;box-shadow:inset 0 2px 4px #00000080}.dou-team-progress-bar .fill{position:absolute;top:0;bottom:0;border-radius:999px;transition:width .4s cubic-bezier(.2,.7,.2,1)}.dou-team-progress-bar.left .fill{right:0;background:linear-gradient(90deg,rgba(43,182,192,.25),var(--dou-cyan-bright));box-shadow:0 0 8px #5dd5dd73}.dou-team-progress-bar.right .fill{left:0;background:linear-gradient(90deg,var(--dou-orange-bright),rgba(224,134,58,.25));box-shadow:0 0 8px #ff9f5e73}.dou-team-progress-target{font-family:var(--dou-font-num);font-weight:800;font-size:1.1rem;color:var(--dou-gold-bright);text-shadow:0 0 8px rgba(240,198,104,.4);padding:0 .4rem;letter-spacing:.04em}.dou-team-progress.fourv4.minimal{display:flex;align-items:center;justify-content:center;gap:1rem}.dou-team-progress.fourv4 .dou-team-progress-score.left{color:#ee6c7a}.dou-team-progress.fourv4 .dou-team-progress-score.right{color:#6da8ff}.dou-team-progress.fourv4 .dou-team-progress-score.lead{text-shadow:0 0 10px currentColor}.dou-team-progress.fourv4 .dou-team-progress-score.trail{opacity:.55}.dou-team-progress.fourv4 .dou-team-progress-score{font-family:var(--font-serif);font-weight:800;font-size:1.4rem;min-width:2rem;text-align:center;font-variant-numeric:tabular-nums}.dou-score-divider{display:inline-block;width:1px;height:1.3em;background:linear-gradient(to bottom,transparent 0%,rgba(212,168,90,.45) 35%,rgba(245,215,140,.7) 50%,rgba(212,168,90,.45) 65%,transparent 100%);align-self:center}.dou-meta-bar{display:flex;align-items:center;justify-content:flex-end;padding-top:14px;min-height:50px;gap:.5rem}.dou-team-cell{display:flex;align-items:center;height:100%;padding:0 24px;gap:14px}.dou-team-cell.left{background:linear-gradient(90deg,#2bb6c066,#2bb6c00d);border-left:2px solid var(--dou-cyan);justify-content:flex-end;clip-path:polygon(0 0,100% 0,calc(100% - 16px) 100%,0 100%)}.dou-team-cell.right{background:linear-gradient(270deg,#e0863a66,#e0863a0d);border-right:2px solid var(--dou-orange);justify-content:flex-start;clip-path:polygon(16px 0,100% 0,100% 100%,0 100%)}.dou-team-cell.left.neutral{background:linear-gradient(90deg,#d4a85a59,#d4a85a0d);border-left:2px solid var(--dou-gold)}.dou-team-cell.right.neutral{background:linear-gradient(270deg,#d4a85a59,#d4a85a0d);border-right:2px solid var(--dou-gold)}.dou-team-cell.left.fourv4{background:linear-gradient(90deg,#ee6c7a66,#ee6c7a0d);border-left:2px solid #ee6c7a}.dou-team-cell.right.fourv4{background:linear-gradient(270deg,#6da8ff66,#6da8ff0d);border-right:2px solid #6da8ff}.dou-team-name{font-size:1.05rem;font-weight:700;letter-spacing:.04em}.dou-team-score{font-family:var(--dou-font-num);font-weight:800;font-size:1.6rem;line-height:1}.dou-team-cell.left .dou-team-score{color:var(--dou-cyan-bright)}.dou-team-cell.right .dou-team-score{color:var(--dou-orange-bright)}.dou-team-cell.left.fourv4 .dou-team-score{color:#ee6c7a}.dou-team-cell.right.fourv4 .dou-team-score{color:#6da8ff}.dou-team-cell.left.fourv4 .dou-team-name{color:#ee6c7a}.dou-team-cell.right.fourv4 .dou-team-name{color:#6da8ff}.dou-team-stars{display:inline-flex;align-items:center;gap:4px;line-height:1}.dou-team-star{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6));transition:filter .4s ease,transform .4s cubic-bezier(.2,.7,.2,1)}.dou-team-star svg{width:100%;height:100%;display:block}.dou-team-star.lit{transform:scale(1.1)}.dou-team-stars.team-a .dou-team-star.lit{filter:drop-shadow(0 0 4px rgba(93,213,221,.75)) drop-shadow(0 0 10px rgba(93,213,221,.55))}.dou-team-stars.team-b .dou-team-star.lit{filter:drop-shadow(0 0 4px rgba(255,159,94,.75)) drop-shadow(0 0 10px rgba(255,159,94,.55))}.dou-center-cell{display:flex;flex-direction:column;align-items:center;padding:0 22px;gap:2px}.dou-board-tag{font-size:.72rem;color:var(--dou-ink-mute);letter-spacing:.18em}.dou-match-score{font-family:var(--dou-font-num);font-weight:800;font-size:1.5rem;color:var(--dou-gold-bright);letter-spacing:.04em;line-height:1}.dou-match-score .dash{color:var(--dou-gold);margin:0 10px;font-weight:400}.dou-match-score .blue{color:var(--dou-blue-bright)}.dou-match-score .red{color:var(--dou-red-bright)}.dou-top-actions{display:flex;gap:.4rem;padding-left:.5rem}.dou-top-actions .dou-tb-btn{background:linear-gradient(180deg,#ffffff0d,#0000001f);border:1px solid rgba(212,168,90,.3);color:var(--dou-ink);padding:6px 12px;border-radius:6px;font-size:.82rem;cursor:pointer;font-family:var(--dou-font-ui)}.dou-top-actions .dou-tb-btn:hover{border-color:var(--dou-gold-bright);color:var(--dou-gold-bright)}.dou-play-area{position:relative;container-type:inline-size;display:grid;grid-template-columns:auto minmax(60px,auto) minmax(0,1fr) minmax(60px,auto) auto;grid-template-rows:auto auto minmax(40px,1fr) auto;grid-template-areas:"tl-frame  tl-hand   dipai     tr-hand   tr-frame" "tl-frame  tl-zone   .         tr-zone   tr-frame" ".         bl-zone   bl-zone   bl-zone   ." "bl-frame  hand-area hand-area hand-area br-frame";column-gap:calc(20px * var(--dou-u));row-gap:calc(14px * var(--dou-u));min-height:0;padding:calc(36px * var(--dou-u)) calc(44px * var(--dou-u));border-radius:20px;border:6px solid transparent;background:radial-gradient(120% 90% at 50% 8%,#2c4a90,#1a2e60 38%,#0c1c40 86%,#07142e) padding-box,linear-gradient(140deg,#6b521f,#e3c478 18%,#8a6d2f,#f1d99a 62%,#5a4318 82%,#c9a458) border-box;box-shadow:inset 0 0 0 1px #ffffff0d,inset 0 2px 40px #00000073,inset 0 0 120px #00000059,0 16px 50px -18px #000c}.dou-play-area:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:14px;pointer-events:none;opacity:.45;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='120' height='120' filter='url(%23n)' opacity='0.5'/></svg>")}.dou-dipai{position:absolute;top:calc(36px * var(--dou-u));left:50%;transform:translate(-50%);align-self:start;display:flex;gap:calc(8px * var(--dou-u));padding:calc(10px * var(--dou-u)) calc(14px * var(--dou-u));z-index:10;background:linear-gradient(180deg,#ffdcaa0f,#0000002e),linear-gradient(180deg,#28324bb3,#0f1220bf);border:1px solid rgba(212,168,90,.45);border-top-color:#ffdcaa8c;border-radius:5px;box-shadow:inset 0 1px #ffdcaa33,inset 0 -1px #00000059,0 6px 18px #00000080}.dou-mini-card{width:calc(60px * var(--dou-u));height:calc(84px * var(--dou-u));background:var(--dou-card-face);border:1px solid var(--dou-card-border);border-radius:4px;font-family:var(--dou-font-card);font-weight:700;font-size:calc(1.85rem * var(--dou-u));color:var(--dou-card-black);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(3px * var(--dou-u));line-height:1;box-shadow:0 3px 7px #00000080,inset 0 0 0 1px #ffffff80;transition:filter .4s ease,opacity .4s ease}.dou-mini-card.red{color:var(--dou-card-red)}.dou-mini-card .s{font-size:calc(1.3rem * var(--dou-u))}.dou-mini-card.played{filter:grayscale(1) brightness(.55);opacity:.7}@keyframes dou-dipai-reveal{0%{opacity:0;transform:translateY(-30px) scale(.85)}60%{opacity:1;transform:translateY(4px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.dou-dipai.fresh{animation:dou-dipai-reveal .7s cubic-bezier(.2,.7,.2,1) both}.dou-dipai.fresh .dou-mini-card{animation:dou-mini-pop .6s cubic-bezier(.2,.7,.2,1) both}.dou-dipai.fresh .dou-mini-card:nth-child(1){animation-delay:.1s}.dou-dipai.fresh .dou-mini-card:nth-child(2){animation-delay:.2s}.dou-dipai.fresh .dou-mini-card:nth-child(3){animation-delay:.3s}@keyframes dou-mini-pop{0%{opacity:0;transform:scale(.5) rotate(-8deg)}60%{opacity:1;transform:scale(1.05) rotate(2deg)}to{opacity:1;transform:scale(1) rotate(0)}}.dou-pframe{position:relative;width:calc(150px * var(--dou-u));z-index:6}.dou-pframe.tl{grid-area:tl-frame;justify-self:start;align-self:start;margin-top:calc(6px * var(--dou-u))}.dou-pframe.tr{grid-area:tr-frame;justify-self:end;align-self:start;margin-top:calc(6px * var(--dou-u))}.dou-pframe.bl{grid-area:bl-frame;justify-self:start;align-self:end;margin-left:calc(28px * var(--dou-u));margin-bottom:calc(6px * var(--dou-u))}.dou-pframe.br{grid-area:br-frame;justify-self:end;align-self:end;width:calc(104px * var(--dou-u));margin-right:calc(28px * var(--dou-u));margin-bottom:calc(6px * var(--dou-u));transform:translateY(calc(-142px * var(--dou-hu)));opacity:.6}.dou-avatar{width:100%;aspect-ratio:1 / 1.1;background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(43,182,192,.4),transparent 70%),linear-gradient(180deg,#123237f2,#081619fa);border:1px solid rgba(212,168,90,.32);border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffdcaa1a,inset 0 -10px 24px #00000080,0 10px 28px #0000008c;display:flex;align-items:center;justify-content:center}.dou-avatar.red{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(224,134,58,.35),transparent 70%),linear-gradient(180deg,#3c2612f2,#160e06fa)}.dou-avatar.neutral{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(212,168,90,.3),transparent 70%),linear-gradient(180deg,#2d2618f2,#141008fa)}.dou-avatar:before,.dou-avatar:after{content:"";position:absolute;width:calc(14px * var(--dou-u));height:calc(14px * var(--dou-u));border:1px solid rgba(212,168,90,.85);pointer-events:none}.dou-avatar:before{top:calc(3px * var(--dou-u));left:calc(3px * var(--dou-u));border-right:none;border-bottom:none}.dou-avatar:after{bottom:calc(3px * var(--dou-u));right:calc(3px * var(--dou-u));border-left:none;border-top:none}.dou-initial{font-family:var(--dou-font-card);font-weight:700;font-size:calc(4.3rem * var(--dou-u));color:#6ea1ff52;line-height:1;letter-spacing:-.03em;font-style:italic}.dou-avatar.red .dou-initial{color:#ff6e6e52}.dou-avatar.neutral .dou-initial{color:#f0c66866}.dou-pframe.br .dou-initial{font-size:calc(2.6rem * var(--dou-u))}.dou-avatar-emoji{font-size:calc(5.4rem * var(--dou-u));line-height:1;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}.dou-pframe.br .dou-avatar-emoji{font-size:calc(3.1rem * var(--dou-u))}.dou-name{margin-top:6px;padding:calc(6px * var(--dou-u)) calc(10px * var(--dou-u));background:linear-gradient(180deg,#ffffff14,#00000026),linear-gradient(90deg,var(--dou-blue-deep),var(--dou-blue));color:var(--dou-ink);border-radius:4px;border:1px solid rgba(212,168,90,.3);border-top-color:#ffdcaa66;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:.3rem;min-width:0;box-shadow:inset 0 1px #ffdcaa2e,inset 0 -1px #0000004d,0 4px 12px #00000073}.dou-name-text{font-family:var(--dou-font-name);font-weight:600;font-size:calc(1.3rem * var(--dou-nu));letter-spacing:.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto}.dou-seat-corner{position:absolute;bottom:calc(10px * var(--dou-u));right:calc(10px * var(--dou-u));z-index:3;min-width:calc(20px * var(--dou-u));padding:calc(2px * var(--dou-u)) calc(7px * var(--dou-u));background:linear-gradient(180deg,#281e0ee6,#0f0a04f2);border:1px solid rgba(212,168,90,.55);border-radius:999px;font-family:var(--dou-font-name);font-weight:700;font-size:calc(1.5rem * var(--dou-u));color:var(--dou-gold-bright);text-align:center;letter-spacing:.03em;line-height:1.1;box-shadow:0 2px 6px #00000080}.dou-name.red{background:linear-gradient(180deg,#ffffff14,#00000026),linear-gradient(90deg,var(--dou-red-deep),var(--dou-red))}.dou-app.fourv4 .dou-avatar{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(238,108,122,.45),transparent 70%),linear-gradient(180deg,#371218f2,#16080cfa)}.dou-app.fourv4 .dou-avatar.red{background:radial-gradient(ellipse 95% 55% at 50% 0%,rgba(109,168,255,.4),transparent 70%),linear-gradient(180deg,#12243cf2,#080e19fa)}.dou-app.fourv4 .dou-avatar .dou-initial{color:#ee6c7a52}.dou-app.fourv4 .dou-avatar.red .dou-initial{color:#6da8ff52}.dou-app.fourv4 .dou-name{background:linear-gradient(180deg,#ffffff14,#00000026),linear-gradient(90deg,#6e2229,#b53643)}.dou-app.fourv4 .dou-name.red{background:linear-gradient(180deg,#ffffff14,#00000026),linear-gradient(90deg,#1e3f72,#4173c5)}.dou-name.neutral{background:linear-gradient(180deg,#ffffff14,#00000026),linear-gradient(90deg,#5a4318,#b88a3a)}.dou-pframe.br .dou-name{padding:calc(4px * var(--dou-u)) calc(6px * var(--dou-u))}.dou-pframe.br .dou-name-text{font-size:calc(1.02rem * var(--dou-nu));white-space:normal;text-overflow:clip;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.dou-pframe.br .dou-seat-corner{font-size:calc(1.25rem * var(--dou-u));padding:calc(1px * var(--dou-u)) calc(5px * var(--dou-u))}.dou-pframe.spec .dou-avatar{border-style:dashed;opacity:.7}.dou-watch-dot{position:absolute;top:-8px;right:-8px;width:22px;height:22px;background:var(--dou-gold-bright);color:var(--dou-bg);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.78rem;border:2px solid var(--dou-bg);box-shadow:0 2px 6px #00000080;z-index:2}.dou-lord-badge{position:absolute;top:calc(-20px * var(--dou-u));left:50%;transform:translate(calc(-50% + 8px * var(--dou-u)));background:linear-gradient(180deg,var(--dou-landlord),#a02530);color:#fff;padding:calc(6px * var(--dou-u)) calc(18px * var(--dou-u)) calc(6px * var(--dou-u)) calc(36px * var(--dou-u));border-radius:100px;font-family:var(--dou-font-num);font-weight:800;font-size:calc(1.15rem * var(--dou-u));letter-spacing:.04em;box-shadow:0 5px 18px #e6394699;z-index:10;border:1px solid var(--dou-gold-bright);white-space:nowrap}.dou-lord-badge:before{content:"";position:absolute;left:calc(5px * var(--dou-u));top:50%;transform:translateY(-50%);box-sizing:border-box;width:calc(26px * var(--dou-u));height:calc(26px * var(--dou-u));background:radial-gradient(circle at 30% 30%,#fde68a,#d97706 70%);border-radius:50%;border:1px solid var(--dou-gold-bright)}.dou-lord-badge:after{content:"★";position:absolute;left:calc(5px * var(--dou-u));top:50%;transform:translateY(-50%);box-sizing:border-box;width:calc(26px * var(--dou-u));height:calc(26px * var(--dou-u));display:flex;align-items:center;justify-content:center;font-size:calc(1rem * var(--dou-u));color:#7a3c00;line-height:1}.dou-avatar.turn{box-shadow:0 0 0 2px var(--dou-gold-bright),0 0 24px #f0c6688c,0 6px 18px #00000080;animation:dou-turn-pulse 1.8s ease-in-out infinite}@keyframes dou-turn-pulse{0%,to{box-shadow:0 0 0 2px var(--dou-gold-bright),0 0 18px #f0c66866,0 6px 18px #00000080}50%{box-shadow:0 0 0 2px var(--dou-gold-bright),0 0 30px #f0c668b3,0 6px 18px #00000080}}.dou-pcard{background:var(--dou-card-face);color:var(--dou-card-black);border-radius:5px;border:1px solid var(--dou-card-border);box-shadow:0 4px 10px -2px #0000008c,inset 0 0 0 1px #ffffff80;font-family:var(--dou-font-card);font-weight:700;-webkit-user-select:none;user-select:none;position:relative;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-start;padding:calc(4px * var(--dou-u)) calc(6px * var(--dou-u))}.dou-pcard.red{color:var(--dou-card-red)}.dou-pcard .corner{display:flex;flex-direction:column;align-items:center}.dou-pcard .rk{font-size:1.65rem;line-height:1}.dou-pcard .rk.r10{letter-spacing:-.12em}.dou-pcard .su{font-size:1rem;line-height:1;margin-top:3px}.dou-pcard.last .big-suit{position:absolute;bottom:calc(14px * var(--dou-u));right:calc(14px * var(--dou-u));font-size:2.3rem;line-height:1;opacity:.95}.dou-pcard.last .big-suit.joker{font-size:1.9rem}.dou-hand-row{display:flex;z-index:5}.dou-hand-row.opp-tl{grid-area:tl-hand;align-self:start;justify-self:start;margin-top:10px;margin-left:10px}.dou-hand-row.opp-tr{grid-area:tr-hand;align-self:start;justify-self:end;justify-content:flex-end;margin-top:10px;margin-right:10px}.dou-opp-cards .dou-pcard{width:calc(44px * var(--dou-u));height:calc(64px * var(--dou-u));margin-left:calc(-22px * var(--dou-u));padding:3px 4px}.dou-opp-cards .dou-pcard:first-child{margin-left:0}.dou-opp-cards .dou-pcard .rk{font-size:calc(1.15rem * var(--dou-u))}.dou-opp-cards .dou-pcard .su{font-size:calc(.72rem * var(--dou-u));margin-top:2px}.dou-opp-cards .dou-pcard .corner{width:calc(17px * var(--dou-u));margin-left:-2px}.dou-opp-cards .dou-pcard.last .big-suit{font-size:calc(1.7rem * var(--dou-u));bottom:calc(10px * var(--dou-u));right:calc(10px * var(--dou-u))}.dou-card-back{width:calc(70px * var(--dou-u));height:calc(102px * var(--dou-u));border-radius:6px;background:radial-gradient(ellipse 90% 45% at 50% 0%,rgba(255,220,170,.1) 0%,transparent 65%),linear-gradient(165deg,#2c3a6a,#1a2342);border:1px solid rgba(212,168,90,.5);display:flex;align-items:center;justify-content:center;font-family:var(--dou-font-num);font-weight:800;font-size:calc(2.3rem * var(--dou-u));color:var(--dou-gold-bright);letter-spacing:-.02em;position:relative;box-shadow:inset 0 1px #ffdcaa33,inset 0 -1px #0006,0 5px 14px #0000008c}.dou-card-back:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border:1px solid rgba(212,168,90,.32);border-radius:3px;pointer-events:none}.dou-hand-row.you{justify-content:center}.dou-your-cards .dou-pcard{width:calc(84px * var(--dou-hu));height:calc(122px * var(--dou-hu));margin-left:calc(-43px * var(--dou-hu));cursor:pointer;transition:transform .16s ease,background .12s ease,border-color .12s ease,box-shadow .16s ease;padding:calc(5px * var(--dou-hu)) calc(7px * var(--dou-hu))}.dou-your-cards .dou-pcard:first-child{margin-left:0}.dou-your-cards .dou-pcard:hover{background:linear-gradient(176deg,#fff6e0,#f4dfb6);border-color:#b8965a}.dou-your-cards .dou-pcard.selected{transform:translateY(calc(-19px * var(--dou-hu)));box-shadow:0 10px 22px #d4a85a8c,inset 0 0 0 1px #fff9;border-color:var(--dou-gold-bright)}.dou-your-cards .dou-pcard.bomb-glow{animation:dou-bomb-glow 3s cubic-bezier(.25,.9,.35,1) 1;animation-fill-mode:backwards;position:relative}.dou-your-cards .dou-pcard.bomb-glow:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;z-index:-1;animation:dou-bomb-glow-halo 3s cubic-bezier(.25,.9,.35,1) 1;animation-fill-mode:backwards;animation-delay:inherit}.dou-your-cards .dou-pcard.bomb-glow:has(+.dou-pcard:not(.bomb-glow)):before{clip-path:inset(-200px calc(36px * var(--dou-u)) -200px -200px)}@keyframes dou-bomb-glow{0%{border-color:#d4a85ad9;transform:translateY(0)}18%{border-color:#ffe8a0;transform:translateY(calc(-3px * var(--dou-u)))}50%{border-color:#ffe8a0;transform:translateY(calc(-3px * var(--dou-u)))}85%{border-color:#d4a85af2;transform:translateY(0)}to{border-color:#d4a85ad9;transform:translateY(0)}}@keyframes dou-bomb-glow-halo{0%{box-shadow:0 0 #ffde8200,0 0 #ffc85000}18%{box-shadow:0 0 22px 6px #ffde82d9,0 0 38px 14px #ffb43c8c}50%{box-shadow:0 0 28px 10px #ffde82bf,0 0 50px 18px #ffb43c73}85%{box-shadow:0 0 12px 4px #ffde8266,0 0 24px 10px #ffb43c33}to{box-shadow:0 0 #ffde8200,0 0 #ffb43c00}}.dou-your-cards .dou-pcard .rk{font-size:calc(1.98rem * var(--dou-hu))}.dou-your-cards .dou-pcard .su{font-size:calc(1.2rem * var(--dou-hu));margin-top:4px}.dou-your-cards .dou-pcard .corner{width:calc(29px * var(--dou-hu));margin-left:-3px}.dou-your-cards .dou-pcard.last .big-suit{font-size:calc(3.05rem * var(--dou-hu));bottom:calc(19px * var(--dou-hu));right:calc(15px * var(--dou-hu))}.dou-play-zone{display:flex;align-items:center;z-index:6;min-height:70px}.dou-play-zone.boom-bomb,.dou-play-zone.boom-rocket{animation:dou-boom-shake .9s cubic-bezier(.34,1.56,.64,1) 1;animation-fill-mode:backwards;transform-origin:center center;position:relative}.dou-play-zone.boom-bomb:after,.dou-play-zone.boom-rocket:after{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);z-index:-1;animation:dou-boom-flash .9s cubic-bezier(.2,.8,.2,1) 1;animation-fill-mode:backwards;animation-delay:inherit}.dou-play-zone.boom-bomb:after{background:radial-gradient(circle,rgba(255,200,80,.95) 0%,rgba(255,140,40,.6) 35%,transparent 70%);box-shadow:0 0 #ffb43ce6}.dou-play-zone.boom-rocket:after{background:radial-gradient(circle,rgba(255,230,255,.95) 0%,rgba(255,80,180,.7) 35%,transparent 70%);box-shadow:0 0 #ff64c8e6}@keyframes dou-boom-shake{0%{transform:scale(.6) rotate(-2deg)}18%{transform:scale(1.18) rotate(2deg)}32%{transform:scale(.96) rotate(-1.5deg)}46%{transform:scale(1.06) rotate(1.5deg)}60%{transform:scale(.99) rotate(-1deg)}75%{transform:scale(1.02) rotate(.5deg)}to{transform:scale(1) rotate(0)}}@keyframes dou-boom-flash{0%{width:8px;height:8px;opacity:0}10%{width:80px;height:80px;opacity:1}60%{width:260px;height:260px;opacity:.6}to{width:380px;height:380px;opacity:0}}.dou-play-zone .dou-pcard{width:calc(70px * var(--dou-zu));height:calc(102px * var(--dou-zu));margin-left:calc(-36px * var(--dou-zu));padding:calc(5px * var(--dou-zu)) calc(7px * var(--dou-zu))}.dou-play-zone .dou-pcard:first-child{margin-left:0}.dou-play-zone .dou-pcard .rk{font-size:calc(1.65rem * var(--dou-zu))}.dou-play-zone .dou-pcard .su{font-size:calc(1rem * var(--dou-zu));margin-top:4px}.dou-play-zone .dou-pcard .corner{width:calc(24px * var(--dou-zu));margin-left:-3px}.dou-play-zone .dou-pcard.last .big-suit{font-size:calc(2.55rem * var(--dou-zu));bottom:calc(16px * var(--dou-zu));right:calc(12.5px * var(--dou-zu))}.dou-play-zone .pass{font-family:var(--dou-font-name);font-weight:500;font-size:1.5rem;color:#fff6;letter-spacing:.04em;padding:8px 4px}.dou-play-zone.zone-tl{grid-area:tl-zone;align-self:start;justify-self:start;margin-left:10px}.dou-play-zone.zone-tr{grid-area:tr-zone;align-self:start;justify-self:end;margin-right:10px}.dou-play-zone.zone-bl{grid-area:bl-zone;align-self:end;justify-self:center;margin-bottom:calc(8px * var(--dou-u))}.dou-hand-area{grid-area:hand-area;display:grid;grid-template-rows:calc(52px * var(--dou-u)) 1fr;row-gap:calc(28px * var(--dou-u));align-items:end;justify-items:center;min-width:0}.dou-hand-controls-slot{display:flex;align-items:center;justify-content:center;min-height:calc(52px * var(--dou-u))}.dou-hand-actions{display:flex;gap:14px;align-items:center;justify-content:center}.dou-combo-label{display:inline-block;background:linear-gradient(180deg,#3c6e4673,#1e4628a6);color:#d8f0d4;border:1px solid rgba(160,220,170,.5);border-radius:999px;font-family:var(--dou-font-name, "Fraunces", serif);font-size:.88rem;letter-spacing:.05em;padding:.25rem .75rem;-webkit-user-select:none;user-select:none}.dou-combo-label.invalid{background:linear-gradient(180deg,#6e323280,#461919b3);color:#f3c8c4;border-color:#dc8c8280}.dou-your-cards .dou-pcard{-webkit-user-select:none;user-select:none;touch-action:none}.dou-action-panel{background:linear-gradient(180deg,#141928d9,#0a0e1ceb);border:1px solid rgba(212,168,90,.22);padding:.7rem 1rem;border-radius:12px;display:flex;align-items:center;flex-wrap:wrap;gap:.9rem;min-height:58px}.dou-action-panel .hint{color:var(--dou-ink-mute);font-size:.95rem;font-family:var(--dou-font-ui)}.dou-action-panel .hint.warn{color:#f0a59df2}.dou-action-panel .spacer{flex:1}.dou-spectator-tag{font-family:var(--dou-font-ui);font-size:.95rem;color:var(--dou-cyan-bright, #5dd5dd);letter-spacing:.04em;padding:.15rem .6rem;border:1px solid rgba(93,213,221,.45);border-radius:999px;background:#5dd5dd1a}.dou-spectator-hint{color:var(--dou-ink-mute);font-size:.9rem;font-family:var(--dou-font-ui)}.dou-spectator-sit{border-color:#5dd5dd99!important;color:var(--dou-cyan-bright, #5dd5dd)!important}.dou-bid-bar{display:flex;gap:14px;z-index:9}.dou-bid-btn{position:relative;background:linear-gradient(180deg,#ffffff0d,#ffffff04 45%,#0000001f);color:#f0ebdceb;border:1px solid rgba(212,168,90,.32);border-radius:calc(14px * var(--dou-u));padding:max(9px,calc(12px * var(--dou-u))) max(20px,calc(30px * var(--dou-u)));font-family:var(--dou-font-name);font-size:max(.9rem,calc(1.1rem * var(--dou-u)));font-weight:600;letter-spacing:.18em;cursor:pointer;transition:all .25s cubic-bezier(.2,.7,.3,1);backdrop-filter:blur(24px) saturate(125%);-webkit-backdrop-filter:blur(24px) saturate(125%);box-shadow:inset 0 1px #ffdcaa2e,inset 0 -1px #0006,0 6px 18px #00000073;min-width:max(76px,calc(96px * var(--dou-u)))}.dou-bid-btn:before{content:"";position:absolute;top:1px;left:14%;right:14%;height:1px;background:linear-gradient(90deg,transparent,rgba(245,220,170,.5) 50%,transparent);pointer-events:none}.dou-bid-btn:hover:not(:disabled){background:linear-gradient(180deg,#d4a85a38,#d4a85a0f 60%,#00000014);border-color:#f5d78ca6;color:var(--dou-gold-bright);transform:translateY(-1.5px);box-shadow:inset 0 1px #ffe6b466,inset 0 0 0 1px #d4a85a24,inset 0 -1px #0000004d,0 9px 24px #d4a85a4d}.dou-bid-btn:disabled{background:#ffffff03;color:#ffffff24;border-color:#ffffff0d;cursor:not-allowed;box-shadow:inset 0 1px #ffffff05;-webkit-backdrop-filter:none;backdrop-filter:none}.dou-bid-btn:disabled:before{display:none}.dou-bid-result{color:var(--dou-gold-bright);font-family:var(--dou-font-display);font-size:2.6rem;font-weight:600;letter-spacing:.01em;z-index:7;white-space:nowrap;text-shadow:0 1px 0 rgba(0,0,0,.5),0 2px 14px rgba(0,0,0,.65),0 0 28px rgba(240,198,104,.28)}.dou-bid-result.pass{color:#dcd7c88c;font-size:2rem;font-weight:500;text-shadow:0 1px 0 rgba(0,0,0,.5),0 2px 8px rgba(0,0,0,.5)}.dou-bid-result.non-bidder{color:#dcd7c84d;font-size:1.5rem;font-weight:500;letter-spacing:.08em;text-shadow:0 1px 0 rgba(0,0,0,.5)}.dou-bid-result.at-tl{grid-area:tl-zone;align-self:start;justify-self:start;margin-left:10px}.dou-bid-result.at-tr{grid-area:tr-zone;align-self:start;justify-self:end;margin-right:10px}.dou-bid-result.at-bl{grid-area:bl-zone;align-self:end;justify-self:center;margin-bottom:calc(8px * var(--dou-u))}.dou-btn{position:relative;background:linear-gradient(180deg,#f5d690 0%,var(--dou-gold-bright) 35%,var(--dou-gold) 70%,#8a6c2e 100%);color:#1a1407;border:1px solid rgba(245,220,170,.5);padding:11px 28px;border-radius:10px;font-family:var(--dou-font-ui);font-weight:700;font-size:.95rem;cursor:pointer;letter-spacing:.08em;box-shadow:inset 0 1px #fff8dc8c,inset 0 -1px #0000002e,0 6px 18px #d4a85a6b,0 2px 4px #0000004d;transition:all .2s ease}.dou-btn:hover:not(:disabled){transform:translateY(-1.5px);box-shadow:inset 0 1px #fffae6b3,inset 0 -1px #0000002e,0 9px 24px #d4a85a8c,0 2px 4px #0000004d}.dou-btn.ghost{background:linear-gradient(180deg,#ffffff0d,#ffffff03);color:#f0ebdcc7;border:1px solid rgba(212,168,90,.3);backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);box-shadow:inset 0 1px #ffdcaa26,inset 0 -1px #0000004d,0 5px 14px #00000059}.dou-btn.ghost:hover:not(:disabled){color:var(--dou-gold-bright);border-color:#f5d78c8c;transform:translateY(-1px)}.dou-btn:disabled{background:#ffffff08;color:var(--dou-ink-dim);cursor:not-allowed;border-color:#ffffff0f;box-shadow:inset 0 1px #ffffff0a}.dou-done-banner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:linear-gradient(180deg,#1c2232f7,#0a0c18fa);border:1px solid rgba(212,168,90,.7);border-radius:16px;padding:2rem 2.5rem;min-width:520px;max-width:90%;text-align:center;z-index:20;box-shadow:0 30px 80px #000000bf,inset 0 1px #ffdcaa2e;display:flex;flex-direction:column;gap:1.3rem}.dou-done-headline{display:flex;flex-direction:column;gap:.4rem;align-items:center}.dou-done-title{font-family:var(--dou-font-card);font-weight:800;font-size:2.4rem;letter-spacing:.1em;line-height:1}.dou-done-title.lord{color:var(--dou-landlord);text-shadow:0 0 24px rgba(230,57,70,.55)}.dou-done-title.farmer{color:var(--dou-gold-bright);text-shadow:0 0 24px rgba(240,198,104,.55)}.dou-done-title.passed-out{color:#b8a070f2;text-shadow:0 0 18px rgba(184,160,112,.35)}.dou-history-table td.passed-out,.dou-history-table td.passed-out.lord,.dou-history-table td.passed-out.score-cell,.dou-history-table td.lord.passed-out,.dou-score-chip.neutral.passed-out{color:#b8a070bf;font-style:italic}.dou-done-sub{font-family:var(--dou-font-name);font-size:1rem;color:var(--dou-ink-mute);letter-spacing:.04em}.dou-done-breakdown{display:flex;align-items:center;justify-content:center;gap:1.5rem}.dou-done-stat{display:flex;flex-direction:column;gap:.25rem;align-items:center}.dou-done-stat .label{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dou-ink-dim)}.dou-done-stat .value{font-family:var(--dou-font-num);font-weight:800;font-size:2.4rem;color:var(--dou-ink);line-height:1}.dou-done-stat .value.total{color:var(--dou-gold-bright);font-size:3rem;text-shadow:0 0 14px rgba(240,198,104,.4)}.dou-done-stat .value.total.team-a{color:var(--dou-cyan-bright);text-shadow:0 0 14px rgba(93,213,221,.5)}.dou-done-stat .value.total.team-b{color:var(--dou-orange-bright);text-shadow:0 0 14px rgba(255,159,94,.5)}.dou-done-stat .value.total.match-team-a{color:#ee6c7a;text-shadow:0 0 14px rgba(238,108,122,.5)}.dou-done-stat .value.total.match-team-b{color:#6da8ff;text-shadow:0 0 14px rgba(109,168,255,.5)}.dou-done-x{font-family:var(--dou-font-display);font-weight:600;font-size:2rem;color:var(--dou-ink-dim);align-self:end;padding-bottom:.35rem}.dou-done-factors{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.dou-done-factor{background:#d4a85a26;border:1px solid rgba(212,168,90,.5);color:var(--dou-gold-bright);font-family:var(--dou-font-ui);font-size:.85rem;font-weight:600;padding:.32rem .8rem;border-radius:999px;letter-spacing:.04em}.dou-done-seats{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:.8rem;margin-top:.4rem}.dou-done-seat{background:#00000059;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:.7rem .6rem;display:flex;flex-direction:column;gap:.4rem;align-items:center}.dou-done-seat .name{font-family:var(--dou-font-name);font-size:.9rem;color:var(--dou-ink-mute);letter-spacing:.03em}.dou-done-seat .delta{font-family:var(--dou-font-num);font-weight:800;font-size:1.4rem;line-height:1}.dou-done-seat .delta.win{color:var(--dou-gold-bright)}.dou-done-seat .delta.lose{color:#dc6464f2}.dou-done-seat .delta.zero{color:var(--dou-ink-dim)}.dou-done-next{align-self:center;font-size:1.1rem!important;padding:.7rem 2.2rem!important}.dou-done-waiting,.dou-action-waiting{align-self:center;margin-top:.4rem;padding:.45rem 1.4rem;border-radius:999px;background:#d4a85a14;border:1px solid rgba(212,168,90,.3);color:#e8c890e6;font-size:.95rem;letter-spacing:.05em;animation:dou-done-waiting-pulse 1.8s ease-in-out infinite}@keyframes dou-done-waiting-pulse{0%,to{opacity:.7}50%{opacity:1}}.dou-done-pair{align-self:stretch;margin-top:.4rem;padding-top:.9rem;border-top:1px solid rgba(212,168,90,.18);display:flex;flex-direction:column;align-items:center;gap:.6rem}.dou-done-pair-heading{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dou-ink-dim)}.dou-done-pair-pending{font-size:.95rem;letter-spacing:.05em;color:#d4a85ab3;font-style:italic}.dou-done-pair-grid{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1.8rem;margin-top:.3rem}.dou-done-pair-cell{display:flex;flex-direction:column;align-items:center;gap:.25rem}.dou-done-pair-cell-label{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dou-ink-dim)}.dou-done-pair-cell-value{font-family:var(--font-serif);font-weight:800;font-size:1.6rem;line-height:1;font-variant-numeric:tabular-nums}.dou-done-pair-cell-value.team-a{color:#ee6c7a}.dou-done-pair-cell-value.team-b{color:#6da8ff}.dou-done-pair-cell-value.neutral{color:var(--dou-ink-mute)}.dou-done-pair-centre{display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:5rem}.dou-done-pair-centre-label{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dou-ink-dim)}.dou-done-pair-centre-value{font-family:var(--font-serif);font-weight:800;font-size:3rem;line-height:1;font-variant-numeric:tabular-nums}.dou-done-pair-centre.winner-a .dou-done-pair-centre-value{color:#ee6c7a;text-shadow:0 0 14px rgba(238,108,122,.45)}.dou-done-pair-centre.winner-b .dou-done-pair-centre-value{color:#6da8ff;text-shadow:0 0 14px rgba(109,168,255,.45)}.dou-done-pair-centre.winner-tie .dou-done-pair-centre-value{color:var(--dou-gold-bright);text-shadow:0 0 14px rgba(240,198,104,.4)}.dou-done-pair-centre-tie{font-family:var(--font-serif);font-weight:700;font-size:1.8rem;line-height:1;color:var(--dou-gold-bright);text-shadow:0 0 14px rgba(240,198,104,.4);letter-spacing:.04em}.dou-side-card{background:linear-gradient(180deg,#141928d9,#080a16eb);border:1px solid rgba(212,168,90,.22);border-radius:10px;padding:.8rem .9rem}.dou-history-page,.dou-replay-page{max-width:980px;margin:0 auto;padding:1.5rem 1.5rem 4rem;color:var(--dou-ink);font-family:var(--dou-font-ui);height:100vh;max-height:100vh;overflow-y:auto;box-sizing:border-box}.dou-history-page:has(.dou-history-sheet-match){max-width:1400px}.dou-history-tabs{display:flex;gap:.4rem;margin-bottom:1rem;flex-wrap:wrap;justify-content:center}.dou-history-tab{padding:.4rem 1rem;border:1px solid rgba(212,168,90,.28);background:#00000052;color:var(--dou-ink-mute);font-family:var(--dou-font-ui);font-size:.9rem;letter-spacing:.06em;border-radius:999px;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.dou-history-tab:hover{background:#d4a85a1a;color:var(--dou-gold-bright)}.dou-history-tab.active{background:#d4a85a33;border-color:var(--dou-gold-bright);color:var(--dou-gold-bright);font-weight:700}.dou-history-tab.winner-red{border-color:#ee6c7a73}.dou-history-tab.winner-blue{border-color:#6da8ff73}.dou-history-tab.active.winner-red{background:#ee6c7a2e;color:#ee6c7a}.dou-history-tab.active.winner-blue{background:#6da8ff2e;color:#6da8ff}.dou-history-tab-empty{color:var(--dou-ink-mute);font-size:.85rem;padding:.4rem}.dou-score-popup{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;z-index:50;pointer-events:none;background:linear-gradient(180deg,#141928f2,#080c19fa);border:1px solid rgba(212,168,90,.5);border-radius:14px;box-shadow:0 14px 40px #0009;color:var(--dou-ink);font-family:var(--dou-font-ui);white-space:nowrap;max-width:calc(100vw - 2rem);box-sizing:border-box}.dou-play-area{position:relative}.dou-score-popup.center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:380px;padding:1rem 1.6rem;gap:1rem;animation:dspCenterPop 4.5s cubic-bezier(.2,.7,.2,1) both}.dou-score-popup.corner{position:fixed;bottom:1.2rem;right:1.2rem;padding:.55rem .9rem;gap:.6rem;border-radius:12px;animation:dspCornerSlide 2.5s cubic-bezier(.2,.7,.2,1) both}.dou-score-popup .dsp-side{display:flex;flex-direction:column;align-items:center;gap:.2rem;min-width:3rem}.dou-score-popup .dsp-side-label{font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dou-ink-mute)}.dou-score-popup .dsp-side-label.team-a{color:#ee6c7a}.dou-score-popup .dsp-side-label.team-b{color:#6da8ff}.dou-score-popup .dsp-side-label.neutral{color:var(--dou-ink-mute)}.dou-score-popup .dsp-side-score{font-family:var(--dou-font-num);font-weight:800;line-height:1}.dou-score-popup .dsp-side-score.team-a{color:#ee6c7a}.dou-score-popup .dsp-side-score.team-b{color:#6da8ff}.dou-score-popup .dsp-side-score.neutral{color:var(--dou-ink-mute)}.dou-score-popup.center .dsp-side-score{font-size:1.6rem}.dou-score-popup.corner .dsp-side-score{font-size:1.2rem}.dou-score-popup .dsp-center{display:flex;flex-direction:column;align-items:center;padding:0 .7rem}.dou-score-popup .dsp-num{font-family:var(--dou-font-num);font-weight:800;line-height:1;text-shadow:0 2px 14px rgba(0,0,0,.35)}.dou-score-popup.center .dsp-num{font-size:3.6rem}.dou-score-popup.corner .dsp-num{font-size:1.8rem}.dou-score-popup .dsp-label{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--dou-ink-mute);margin-top:.3rem}.dou-score-popup.dsp-team-a .dsp-num{color:#ee6c7a}.dou-score-popup.dsp-team-b .dsp-num{color:#6da8ff}.dou-score-popup.dsp-team-tie .dsp-num,.dou-score-popup .dsp-num.dsp-tie{color:var(--dou-gold-bright)}@keyframes dspCenterPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}4%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}10%{transform:translate(-50%,-50%) scale(1)}90%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.95)}}@keyframes dspCornerSlide{0%{opacity:0;transform:translate(140%)}6%{opacity:1;transform:translate(0)}94%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(140%)}}.dou-game-boundary>td{padding:.4rem!important;text-align:center!important;background:#d4a85a0f;border-top:1px solid rgba(212,168,90,.35)!important;border-bottom:1px solid rgba(212,168,90,.35)!important;font-size:.78rem;letter-spacing:.12em;color:var(--dou-ink-mute);font-family:var(--dou-font-ui)}.dou-game-boundary .gb-num{color:var(--dou-gold-bright);font-weight:700}.dou-game-boundary .gb-team.team-red{color:#ee6c7a;font-weight:700}.dou-game-boundary .gb-team.team-blue{color:#6da8ff;font-weight:700}.dou-game-boundary .gb-range{font-family:var(--dou-font-num);color:var(--dou-ink-dim)}.dou-history-titlebar{display:flex;align-items:center;gap:.8rem;margin-bottom:.8rem}.dou-history-title{flex:1;margin:0;text-align:center;font-family:"Noto Serif SC",Fraunces,serif;font-size:1.4rem;color:var(--dou-gold-bright);letter-spacing:.06em}.dou-history-context{margin-bottom:.8rem;text-align:center}.dou-history-context-label{display:inline-block;padding:.25rem .75rem;border:1px solid rgba(212,168,90,.35);border-radius:999px;font-family:var(--dou-font-num);font-size:.85rem;color:var(--dou-ink-mute);letter-spacing:.06em}.dou-history-loading,.dou-history-empty{text-align:center;padding:2rem 0;color:var(--dou-ink-mute);font-size:1rem}.dou-history-totals{display:flex;gap:.8rem;justify-content:center;margin-bottom:1.2rem}.dou-history-total-side{flex:1 1 0;padding:.8rem 1rem;background:linear-gradient(180deg,#141928d9,#080a16eb);border:1px solid rgba(212,168,90,.22);border-radius:10px;text-align:center}.dou-history-total-side.a{border-color:#2bb6c073}.dou-history-total-side.b{border-color:#e0863a73}.dou-history-total-side.a.fourv4{border-color:#ee6c7a8c}.dou-history-total-side.b.fourv4{border-color:#6da8ff8c}.dou-history-total-label{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dou-ink-mute)}.dou-history-total-value{font-family:var(--dou-font-num);font-size:1.6rem;font-weight:800;color:var(--dou-gold-bright);margin-top:.2rem}.dou-history-total-value.win{color:var(--dou-gold-bright)}.dou-history-total-value.lose{color:#dc6464d9}.dou-history-total-side.a .dou-history-total-value{color:var(--dou-cyan-bright, #5dd5dd)}.dou-history-total-side.b .dou-history-total-value{color:var(--dou-orange-bright, #ff9f5e)}.dou-history-total-side.a.fourv4 .dou-history-total-value{color:#ee6c7a}.dou-history-total-side.b.fourv4 .dou-history-total-value{color:#6da8ff}.dou-history-total-games{margin-top:.4rem;font-size:.75rem;letter-spacing:.1em;color:var(--dou-ink-mute);font-family:var(--dou-font-num)}.dou-app.fourv4 .dou-score-chip.team-a,.dou-history-page.fourv4 .dou-score-chip.team-a{background:#ee6c7a38;color:#ee6c7a;border-color:#ee6c7a8c}.dou-app.fourv4 .dou-score-chip.team-b,.dou-history-page.fourv4 .dou-score-chip.team-b{background:#6da8ff38;color:#6da8ff;border-color:#6da8ff8c}.dou-history-page.fourv4 .dou-history-table td.lord.lord-cyan{color:#ee6c7a}.dou-history-page.fourv4 .dou-history-table td.lord.lord-orange{color:#6da8ff}.dou-history-table{width:100%;border-collapse:collapse;font-family:var(--dou-font-num);font-size:.95rem}.dou-history-table th,.dou-history-table td{padding:.55rem .4rem;text-align:center;border-bottom:1px solid rgba(255,255,255,.06)}.dou-history-table th{font-size:.7rem;letter-spacing:.14em;color:var(--dou-ink-dim);text-transform:uppercase;font-weight:500}.dou-history-table td.hist-num{color:var(--dou-ink-dim);width:3rem}.dou-history-table td.lord{font-weight:700}.dou-history-table td.lord.lord-gold{color:#f0c870}.dou-history-table td.lord.lord-cyan{color:#5dd5dd}.dou-history-table td.lord.lord-orange{color:#ff9f5e}.dou-history-table td.lord.lord-red{color:#ee6c7a}.dou-history-table td.lord.lord-blue{color:#6da8ff}.dou-history-table td.score-cell.indiv.win{color:var(--dou-gold-bright);font-weight:700}.dou-history-table td.score-cell.indiv.lose{color:#dc6464d9;font-weight:700}.dou-history-table td.hist-time{color:var(--dou-ink-mute);font-size:.85rem;white-space:nowrap}.dou-history-table td.hist-go{color:var(--dou-gold-bright);font-size:.85rem;letter-spacing:.06em;white-space:nowrap}.dou-history-row{cursor:pointer;transition:background .15s ease}.dou-history-row:hover{background:#d4a85a14}.dou-history-sheet-match{width:100%;overflow-x:auto}.dou-history-table-match th.mh-table{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:#d4a85ab3;padding-top:.4rem;padding-bottom:.2rem}.dou-history-table-match th.mh-table-a{border-bottom:2px solid rgba(238,108,122,.4)}.dou-history-table-match th.mh-table-b{border-bottom:2px solid rgba(109,168,255,.4)}.dou-history-table-match td.clickable{cursor:pointer}.dou-history-table-match td.hist-imp{white-space:nowrap}.dou-history-table-match .imp-pill{display:inline-flex;align-items:center;justify-content:center;font-family:var(--dou-font-num);font-weight:800;font-size:.85rem;padding:.18rem .55rem;border-radius:999px;letter-spacing:.02em;border:1px solid transparent}.dou-history-table-match .imp-pill.team-a{background:#ee6c7a38;color:#ee6c7a;border-color:#ee6c7a8c}.dou-history-table-match .imp-pill.team-b{background:#6da8ff38;color:#6da8ff;border-color:#6da8ff8c}.dou-history-table-match .imp-pill.push{background:#d4a85a29;color:var(--dou-gold-bright);border-color:#d4a85a73}.dou-history-hint{margin-top:.8rem;text-align:center;font-size:.8rem;color:var(--dou-ink-dim);letter-spacing:.04em}.dou-replay-meta{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;margin:1rem 0}.dou-replay-meta-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;background:#1419288c;border:1px solid rgba(212,168,90,.22);border-radius:999px}.dou-replay-meta-label{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--dou-ink-mute)}.dou-replay-meta-value{font-family:var(--dou-font-num);font-weight:700;color:var(--dou-gold-bright)}.dou-replay-app>.dou-replay-sidebar{grid-area:sidebar;display:flex;flex-direction:column;gap:.7rem;min-height:0;overflow-y:auto;padding-right:4px}.dou-replay-app>.dou-replay-ctrl{grid-area:action}.dou-replay-topbar .dou-sub-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem}.dou-replay-topbar .dou-sub-bar>.dou-replay-pos-chip{justify-self:center}.dou-replay-sub-score{font-family:var(--font-serif);font-weight:800;font-size:1.6rem;font-variant-numeric:tabular-nums;letter-spacing:.02em}.dou-replay-sub-score.red{color:#ee6c7a;text-shadow:0 0 12px rgba(238,108,122,.4);text-align:right}.dou-replay-sub-score.blue{color:#6da8ff;text-shadow:0 0 12px rgba(109,168,255,.4);text-align:left}.dou-replay-pos-chip{display:inline-block;padding:.18rem .6rem;font-size:.85rem;color:var(--dou-gold-bright);border:1px solid rgba(212,168,90,.35);border-radius:999px;background:#d4a85a14;font-family:var(--dou-font-num)}.dou-replay-bid-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.dou-replay-bid-item{display:flex;align-items:center;gap:.5rem;padding:.25rem .45rem;border-radius:6px;background:#0000002e;font-size:.85rem}.dou-replay-bid-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.75rem}.dou-replay-bid-column{display:flex;flex-direction:column;gap:.18rem;min-width:0}.dou-replay-bid-col-title{color:#b8a070d9;font-size:.72rem;font-weight:500;letter-spacing:.06em;padding-bottom:.22rem;border-bottom:1px solid rgba(212,168,90,.2);margin-bottom:.15rem}.dou-replay-bid-col-empty{color:#b8a07066;font-style:italic;font-size:.78rem;text-align:center;padding:.7rem 0}.dou-replay-bid-row{display:flex;justify-content:space-between;align-items:center;padding:.25rem .1rem;font-size:.85rem;border-bottom:1px solid rgba(212,168,90,.08)}.dou-replay-bid-row:last-child{border-bottom:none}.dou-replay-bid-row-name{color:var(--dou-ink);font-family:var(--font-serif);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dou-replay-bid-row-val{font-variant-numeric:tabular-nums;font-weight:700}.dou-replay-bid-empty{color:#b8a07066}.dou-replay-bid-wait{color:#b8a070b3;font-style:italic;font-weight:500}.dou-replay-pair-grid{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.dou-replay-pair-box{background:#00000040;border:1px solid rgba(212,168,90,.18);border-radius:.4rem;padding:.4rem .55rem}.dou-replay-pair-head{font-family:var(--dou-font-ui);color:var(--dou-gold-bright);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-align:center;padding-bottom:.25rem;margin-bottom:.25rem;border-bottom:1px solid rgba(212,168,90,.18)}.dou-replay-pair-row{display:flex;justify-content:space-between;align-items:baseline;padding:.14rem 0;font-family:var(--font-serif);font-size:.8rem}.dou-replay-pair-key{color:var(--dou-ink-mute);font-size:.72rem;letter-spacing:.05em}.dou-replay-pair-val{color:var(--dou-ink);font-variant-numeric:tabular-nums;font-weight:600}.dou-replay-pair-seat{display:inline-block;background:#d4a85a2e;color:var(--dou-gold-bright);border:1px solid rgba(212,168,90,.35);border-radius:.22rem;padding:.02rem .32rem;font-size:.7rem;margin-right:.3rem}.dou-replay-pair-seat.team-a{background:#ee6c7a38;color:#ffd6dc;border-color:#ee6c7a8c}.dou-replay-pair-seat.team-b{background:#6da8ff38;color:#d6e8ff;border-color:#6da8ff8c}.dou-replay-pair-name{font-weight:600}.dou-replay-pair-result{margin-top:.25rem;padding-top:.25rem;border-top:1px dashed rgba(212,168,90,.22)}.dou-replay-pair-result.winner-a .dou-replay-pair-val{color:#ee6c7a}.dou-replay-pair-result.winner-b .dou-replay-pair-val{color:#6da8ff}.dou-replay-pair-passed,.dou-replay-pair-empty{color:#b8a0708c;font-style:italic;font-size:.75rem;text-align:center;padding:.5rem 0}.dou-replay-app>.dou-replay-ctrl{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.7rem;background:linear-gradient(180deg,#141928d9,#0a0e1ceb);border:1px solid rgba(212,168,90,.22);border-radius:11px;padding:.55rem .85rem;box-shadow:0 6px 18px #00000038;min-height:58px}.dou-replay-nav{display:flex;gap:.25rem;background:#00000052;border:1px solid rgba(212,168,90,.18);border-radius:8px;padding:.2rem}.dou-replay-nav button{padding:.25rem .6rem;background:transparent;border:none;color:var(--dou-ink);font-size:1rem;border-radius:5px;cursor:pointer;font-family:var(--dou-font-ui);line-height:1}.dou-replay-nav button:hover{background:#d4a85a2e;color:var(--dou-gold-bright)}.dou-replay-slider{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:#00000073;border:1px solid rgba(212,168,90,.22);border-radius:999px;outline:none}.dou-replay-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--dou-gold-bright, #f0c870);border:2px solid rgba(20,25,40,.92);box-shadow:0 0 0 1px #d4a85a99;cursor:pointer}.dou-replay-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--dou-gold-bright, #f0c870);border:2px solid rgba(20,25,40,.92);box-shadow:0 0 0 1px #d4a85a99;cursor:pointer}.dou-replay-slider:disabled{opacity:.4}.dou-replay-step{font-family:var(--dou-font-num);font-weight:700;font-variant-numeric:tabular-nums;color:var(--dou-ink-mute);letter-spacing:.04em;min-width:4.5rem;text-align:right;font-size:.95rem}.dou-replay-hands{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem;margin-bottom:1.2rem}.dou-replay-hand{padding:.7rem .9rem;background:linear-gradient(180deg,#141928d9,#080a16eb);border:1px solid rgba(212,168,90,.22);border-radius:10px}.dou-replay-hand-label{font-size:.8rem;letter-spacing:.12em;color:var(--dou-ink-dim);margin-bottom:.4rem}.dou-replay-hand-label.lord{color:var(--dou-gold-bright);font-weight:700}.dou-replay-hand-row{display:flex;flex-wrap:wrap;gap:.25rem}.dou-replay-hand-empty{color:var(--dou-ink-dim);font-style:italic;font-size:.85rem}.dou-replay-card{display:inline-flex;align-items:center;padding:.15rem .4rem;font-family:var(--dou-font-num);font-size:.95rem;font-weight:600;background:#ffffff0d;border:1px solid rgba(212,168,90,.18);border-radius:4px;color:var(--dou-ink);white-space:nowrap}.dou-replay-log{padding:.9rem 1rem;background:linear-gradient(180deg,#14192899,#080a16bf);border:1px solid rgba(212,168,90,.18);border-radius:10px}.dou-replay-log-title{margin:0 0 .6rem;font-size:.85rem;letter-spacing:.18em;text-transform:uppercase;color:#d4a85ab3}.dou-replay-log-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.3rem;max-height:22rem;overflow-y:auto}.dou-replay-log-item{display:flex;align-items:center;gap:.6rem;padding:.35rem .55rem;border-radius:6px;cursor:pointer;transition:background .12s ease}.dou-replay-log-item:hover{background:#d4a85a14}.dou-replay-log-item.current{background:#d4a85a2e;outline:1px solid rgba(212,168,90,.5)}.dou-replay-log-item.future{opacity:.45}.dou-replay-log-seat{min-width:6rem;color:var(--dou-ink-dim);font-size:.85rem}.dou-replay-log-combo{display:inline-block;padding:.05rem .4rem;font-size:.75rem;color:var(--dou-gold-bright);border:1px solid rgba(212,168,90,.4);border-radius:999px}.dou-replay-log-pass{color:var(--dou-ink-mute);font-style:italic}.dou-replay-log-cards{display:inline-flex;flex-wrap:wrap;gap:.2rem}.dou-side-card h3{margin:0 0 .7rem;font-size:.85rem;letter-spacing:.28em;text-transform:uppercase;color:#d4a85abf;font-weight:600;display:flex;align-items:center;gap:.5rem}.dou-side-card h3:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(212,168,90,.35),transparent)}.dou-score-table{width:100%;border-collapse:collapse;font-family:var(--dou-font-num);font-size:.95rem;table-layout:fixed}.dou-score-table th,.dou-score-table td{padding:.32rem .25rem;text-align:center;border-bottom:1px solid rgba(255,255,255,.05);overflow:hidden;text-overflow:ellipsis}.dou-score-table th{font-size:.75rem;letter-spacing:.12em;color:var(--dou-ink-dim);text-transform:uppercase;font-weight:500}.dou-score-table td.num{color:var(--dou-ink-dim);font-size:.85rem}.dou-score-table td.lord{color:var(--dou-landlord);font-weight:700}.dou-score-table td.lord.lord-gold{color:#f0c870}.dou-score-table td.lord.lord-cyan{color:#5dd5dd}.dou-score-table td.lord.lord-orange{color:#ff9f5e}.dou-score-table td.lord.lord-red{color:#ee6c7a}.dou-score-table td.lord.lord-blue{color:#6da8ff}.dou-score-table td.win{color:var(--dou-gold-bright)}.dou-score-table td.lose{color:#dc6464d9}.dou-score-table tr.empty td{color:#ffffff1f}.dou-score-table tr:last-child td{border-bottom:none}.dou-score-table tfoot td{border-top:1px solid rgba(212,168,90,.35);border-bottom:none;padding-top:.5rem;font-weight:700;font-size:1.05rem;color:var(--dou-gold-bright)}.dou-score-chip{display:inline-flex;align-items:center;justify-content:center;font-family:var(--dou-font-num);font-weight:800;font-size:.9rem;padding:.18rem .55rem;border-radius:999px;letter-spacing:.02em;border:1px solid transparent}.dou-score-chip.team-a{background:#2bb6c038;color:var(--dou-cyan-bright);border-color:#2bb6c08c}.dou-score-chip.team-b{background:#e0863a38;color:var(--dou-orange-bright);border-color:#e0863a8c}.dou-score-chip.neutral{background:#d4a85a2e;color:var(--dou-gold-bright);border-color:#d4a85a80}.dou-score-table td.score-cell{padding:.22rem .2rem}.dou-score-table.indiv{font-size:.85rem}.dou-score-table.indiv th,.dou-score-table.indiv td{padding:.3rem .18rem}.dou-score-table.indiv th{font-size:.65rem;letter-spacing:.05em;text-transform:none}.dou-score-table td.score-cell.indiv{font-weight:700;font-family:var(--dou-font-num);font-size:.9rem}.dou-score-table td.score-cell.indiv.win{color:var(--dou-gold-bright)}.dou-score-table td.score-cell.indiv.lose{color:#dc6464d9}.minigame-hub{max-width:800px;margin:0 auto;padding:1.5rem}.minigame-hub-top{display:flex;justify-content:flex-start;margin-bottom:.5rem}.mg-card-actions{display:flex;flex-direction:column;gap:.5rem;width:100%;margin-top:.5rem}.mg-card-actions .mg-card-enter{width:100%}.mg-card-join-row{display:flex;gap:.35rem}.mg-card-join-input{flex:1;min-width:0;padding:.4rem .6rem;border-radius:4px;border:1px solid rgba(184,134,11,.35);background:#00000040;color:#f1e5c2;font-family:inherit;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.mg-card-join-input:focus{outline:none;border-color:#b8860bbf;background:#00000059}.mg-card-join-btn{flex:0 0 auto}.mg-active-rooms{max-width:800px;margin:1.5rem auto 0;padding:0 1.5rem}.minigame-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-top:1.5rem}.minigame-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:1.2rem 1rem;background:linear-gradient(180deg,var(--panel-3),var(--panel-2));border:1px solid var(--line);border-radius:14px;gap:.4rem}.minigame-card.disabled{opacity:.5}.mg-card-emoji{font-size:2.4rem}.mg-card-title{font-family:var(--font-serif);font-weight:700;font-size:1.2rem;color:var(--text)}.mg-card-sub{font-size:.85rem;color:var(--muted)}.mg-card-players{font-size:.78rem;color:var(--brass);letter-spacing:.04em}.mg-card-enter{margin-top:.7rem;padding:.5rem 1.2rem;font-size:1rem}.mg-card-coming{margin-top:.7rem;font-size:.85rem;color:var(--muted);font-style:italic}.q-screen{max-width:760px;margin:0 auto;padding:1rem 1.2rem 2rem;display:flex;flex-direction:column;gap:.8rem}.q-topbar{display:flex;align-items:center;gap:.7rem}.q-title{flex:1;font-family:var(--font-serif);font-weight:700;font-size:1.1rem;color:var(--brass)}.q-status{font-size:.78rem;color:var(--muted);padding:.1rem .5rem;border:1px solid var(--line);border-radius:999px}.q-status.status-open{color:#9cd29c;border-color:#96d29666}.q-roomcode{font-family:monospace;background:#d8b66a29;border:1px solid rgba(216,182,106,.45);padding:.1rem .55rem;border-radius:5px;color:var(--brass);cursor:pointer}.q-error{padding:.5rem .8rem;background:#dc50501f;border:1px solid rgba(220,80,80,.45);border-radius:6px;color:#f0c0c0}.q-hint{color:var(--muted)}.q-lobby-status{text-align:center;color:var(--muted);font-size:.92rem;padding:.3rem 0}.q-compass{display:grid;grid-template-columns:1fr minmax(200px,1.3fr) 1fr;grid-template-rows:auto auto auto;gap:.7rem;align-items:stretch;justify-items:stretch;margin:.8rem auto;max-width:720px}.q-compass-n{grid-row:1;grid-column:2}.q-compass-w{grid-row:2;grid-column:1}.q-compass-centre{grid-row:2;grid-column:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:linear-gradient(135deg,#2a3a26,#1a2a18);border:1px solid #444a3a;border-radius:12px;padding:1rem;gap:.25rem}.q-compass-name{font-size:2rem}.q-compass-sub{font-family:Fraunces,serif;font-weight:700;color:var(--brass)}.q-compass-meta{font-size:.8rem;color:var(--muted);letter-spacing:.04em}.q-compass-e{grid-row:2;grid-column:3}.q-compass-s{grid-row:3;grid-column:2}.q-compass-seat{padding:.7rem .8rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;gap:.4rem;border-left:4px solid var(--line)}.q-compass-seat.closed{opacity:.55;border-style:dashed;background:#7878780a}.q-compass-seat.q-pawn-S{border-left-color:#d85a4a}.q-compass-seat.q-pawn-N{border-left-color:#4a6fd8}.q-compass-seat.q-pawn-W{border-left-color:#4ad88a}.q-compass-seat.q-pawn-E{border-left-color:#d8c44a}.q-seat-close-btn{padding:.22rem .5rem;font-size:.72rem;background:#8c8c8c14;border:1px dashed rgba(180,180,180,.4);border-radius:5px;color:var(--muted);cursor:pointer}.q-seat-close-btn:hover{color:var(--text);background:#dc50501f;border-color:#dc505073}.q-ready.ready{color:#9cd29c}@media (max-width: 600px){.q-compass{grid-template-columns:1fr;grid-template-rows:repeat(5,auto);max-width:100%}.q-compass-n{grid-row:1;grid-column:1}.q-compass-w{grid-row:2;grid-column:1}.q-compass-centre{grid-row:3;grid-column:1}.q-compass-e{grid-row:4;grid-column:1}.q-compass-s{grid-row:5;grid-column:1}}.q-seat-card{padding:.8rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;gap:.4rem;border-left:4px solid var(--line)}.q-seat-card.q-pawn-S{border-left-color:#d85a4a}.q-seat-card.q-pawn-N{border-left-color:#4a6fd8}.q-seat-card.q-pawn-W{border-left-color:#4ad88a}.q-seat-card.q-pawn-E{border-left-color:#d8c44a}.q-seat-label{font-weight:700;font-size:.95rem;color:var(--text)}.q-seat-occupant{color:var(--text);font-size:.9rem}.q-seat-occupant.empty{color:var(--muted);font-style:italic}.q-seat-difficulty{font-size:.78rem;color:var(--muted)}.q-seat-action{align-self:flex-start;padding:.2rem .6rem;font-size:.78rem}.q-seat-ctrls{display:flex;flex-direction:column;gap:.45rem}.q-seat-sit{padding:.35rem .75rem;font-size:.85rem}.q-seat-bot-row{display:flex;gap:.3rem;flex-wrap:wrap}.q-seat-bot-btn{padding:.22rem .5rem;font-size:.72rem;border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-radius:5px;cursor:pointer}.q-seat-bot-btn.q-bot-easy{border-color:#78c87880}.q-seat-bot-btn.q-bot-medium{border-color:#d8b66a80}.q-seat-bot-btn.q-bot-hard{border-color:#dc646480}.q-start-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding-top:.4rem}.q-ready{font-size:.9rem;color:var(--muted)}.q-start-btn{padding:.6rem 1.4rem;font-size:1.05rem}.q-end-btn{align-self:flex-start;padding:.35rem .8rem;font-size:.85rem;background:#dc505014;border:1px solid rgba(220,80,80,.45);color:#f0c0c0;border-radius:6px;cursor:pointer}.q-player-strip{display:flex;gap:.6rem;flex-wrap:wrap}.q-player-tag{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .65rem;background:var(--panel);border:1px solid var(--line);border-radius:999px;font-size:.85rem}.q-player-tag.on-turn{box-shadow:0 0 0 2px #d8b66a8c}.q-player-tag.winner{background:linear-gradient(180deg,#5b4622,#3a2c14);color:#f6dca0}.q-player-dot{display:inline-block;width:.9rem;height:.9rem;border-radius:50%;background:#888}.q-player-tag.q-pawn-S .q-player-dot{background:#d85a4a}.q-player-tag.q-pawn-N .q-player-dot{background:#4a6fd8}.q-player-tag.q-pawn-W .q-player-dot{background:#4ad88a}.q-player-tag.q-pawn-E .q-player-dot{background:#d8c44a}.q-player-walls{color:var(--muted);font-variant-numeric:tabular-nums}.q-turn-banner{padding:.45rem .8rem;border-radius:6px;font-size:.9rem;background:#ffffff0d;color:var(--muted)}.q-turn-banner.you-turn{background:#78c8781f;border:1px solid rgba(120,200,120,.4);color:#9cd29c}.q-winner-banner{padding:.7rem 1rem;border-radius:8px;background:linear-gradient(180deg,#d8b66a38,#a07e302e);border:1px solid var(--brass);color:#f6dca0;font-family:var(--font-serif);font-weight:700;text-align:center}.q-board{--cell: 52px;--gap: 13px;display:grid;grid-template-columns:var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell);grid-template-rows:var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell) var(--gap) var(--cell);background:linear-gradient(135deg,#2a3a26,#1a2a18);padding:.6rem;border-radius:12px;border:1px solid #444a3a;align-self:center;position:relative}@media (max-width: 600px){.q-board{--cell: 36px;--gap: 9px;padding:.4rem}}.q-cell{background:#ffffff0a;border-radius:4px;position:relative;display:flex;align-items:center;justify-content:center}.q-cell.legal{background:#78c87838;cursor:pointer;outline:2px dashed rgba(120,200,120,.5);outline-offset:-3px}.q-cell.legal:hover{background:#78c87873}.q-pawn{width:70%;height:70%;border-radius:50%;border:2px solid rgba(255,255,255,.5);box-shadow:0 2px 4px #00000080;position:relative}.q-pawn.q-pawn-S{background:radial-gradient(circle at 30% 30%,#ff8060,#c0382e)}.q-pawn.q-pawn-N{background:radial-gradient(circle at 30% 30%,#7090ff,#2a4ec0)}.q-pawn.q-pawn-W{background:radial-gradient(circle at 30% 30%,#80f0a0,#2ec060)}.q-pawn.q-pawn-E{background:radial-gradient(circle at 30% 30%,#ffe070,#c0a020)}.q-pawn.mine{box-shadow:0 0 0 3px var(--brass),0 2px 4px #0009}.q-pawn.q-pawn-S:after,.q-pawn.q-pawn-N:after,.q-pawn.q-pawn-W:after,.q-pawn.q-pawn-E:after{content:"";position:absolute;width:0;height:0;filter:drop-shadow(0 1px 1px rgba(0,0,0,.55))}.q-pawn.q-pawn-S:after{top:3px;left:50%;transform:translate(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:7px solid rgba(255,255,255,.92)}.q-pawn.q-pawn-N:after{bottom:3px;left:50%;transform:translate(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid rgba(255,255,255,.92)}.q-pawn.q-pawn-W:after{right:3px;top:50%;transform:translateY(-50%);border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:7px solid rgba(255,255,255,.92)}.q-pawn.q-pawn-E:after{left:3px;top:50%;transform:translateY(-50%);border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:7px solid rgba(255,255,255,.92)}@media (max-width: 600px){.q-pawn.q-pawn-S:after{border-left-width:4px;border-right-width:4px;border-bottom-width:5px;top:2px}.q-pawn.q-pawn-N:after{border-left-width:4px;border-right-width:4px;border-top-width:5px;bottom:2px}.q-pawn.q-pawn-W:after{border-top-width:4px;border-bottom-width:4px;border-left-width:5px;right:2px}.q-pawn.q-pawn-E:after{border-top-width:4px;border-bottom-width:4px;border-right-width:5px;left:2px}}.q-wallslot{background:#d8b66a1f;border-radius:3px;cursor:pointer;position:relative}.q-wallslot:hover{background:#d8b66a66}.q-wallslot.legal{cursor:pointer}.q-wallslot.legal:hover{background:#d8b66a66}.q-wallslot:hover:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:3px;opacity:.5;pointer-events:none;background:linear-gradient(180deg,#b8b8b8,#707070)}.q-board[data-viewer-seat=S] .q-wallslot:hover:before{background:linear-gradient(180deg,#ff8060,#b03222)}.q-board[data-viewer-seat=N] .q-wallslot:hover:before{background:linear-gradient(180deg,#7090ff,#2240b0)}.q-board[data-viewer-seat=W] .q-wallslot:hover:before{background:linear-gradient(180deg,#80f0a0,#20a050)}.q-board[data-viewer-seat=E] .q-wallslot:hover:before{background:linear-gradient(180deg,#ffe070,#a08020)}.q-wall{background:linear-gradient(180deg,#b8b8b8,#707070);border:1px solid #4a4a4a;border-radius:3px;box-shadow:0 1px 3px #0006;pointer-events:none;z-index:5}.q-wall.q-wall-by-S{background:linear-gradient(180deg,#ff8060,#b03222);border-color:#8a2418}.q-wall.q-wall-by-N{background:linear-gradient(180deg,#7090ff,#2240b0);border-color:#182c8a}.q-wall.q-wall-by-W{background:linear-gradient(180deg,#80f0a0,#20a050);border-color:#186030}.q-wall.q-wall-by-E{background:linear-gradient(180deg,#ffe070,#a08020);border-color:#6a5018}.q-wall-preview{opacity:.45}.q-player-tag.viewer{border-color:var(--brass);box-shadow:inset 0 0 0 1px #d8b66a80}.q-player-walls.zero{opacity:.45;text-decoration:line-through}.q-turn-banner.you-turn{display:flex;flex-direction:column;gap:.15rem}.q-banner-main{font-weight:700;font-size:1rem}.q-banner-walls{font-size:.85rem;opacity:.85}.q-actions{display:flex;gap:.6rem;align-self:center;padding-top:.5rem}.dou-3v3-tables{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-top:.8rem}.dou-3v3-table{background:#00000038;border:1px solid rgba(212,168,90,.18);border-radius:8px;padding:.7rem .85rem}.dou-3v3-table-human{border-color:#ee6c7a52}.dou-3v3-table-ai{border-color:#6da8ff52}.dou-3v3-seat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin-top:.5rem}.dou-3v3-seat{background:#1419288c;border:1px solid rgba(212,168,90,.22);border-radius:6px;padding:.5rem;min-height:80px;display:flex;flex-direction:column;gap:.4rem}.dou-3v3-seat-ai{opacity:.85}.dou-3v3-liju-card{background:linear-gradient(180deg,#28233ca6,#0f0c19d9);border:1px solid rgba(212,168,90,.35);border-radius:10px;padding:.9rem 1rem;margin:.7rem 0;box-shadow:0 6px 22px #00000052}.dou-3v3-liju-title{font-family:Fraunces,serif;font-weight:700;color:var(--dou-gold-bright);font-size:1.1rem;margin-bottom:.7rem;text-align:center}.dou-3v3-totals-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-bottom:.7rem}.dou-3v3-totals-cell{background:#00000052;border:1px solid rgba(212,168,90,.2);border-radius:7px;padding:.55rem .5rem;text-align:center}.dou-3v3-totals-cell.place-1{border-color:#f5c876b3;background:linear-gradient(180deg,#f5c87626,#0000004d)}.dou-3v3-totals-cell.place-2{border-color:#d4a85a73}.dou-3v3-totals-name{font-size:.85rem;color:var(--dou-ink-mute, #b8a070);margin-bottom:.2rem}.dou-3v3-totals-pts{font-family:Fraunces,serif;font-weight:800;font-size:1.8rem;color:var(--dou-gold-bright)}.dou-3v3-totals-pts-label{font-size:.65rem;opacity:.6}.dou-3v3-liju-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.85rem;margin-bottom:.7rem}.dou-3v3-liju-table th,.dou-3v3-liju-table td{padding:.32rem .4rem;text-align:center;border-bottom:1px solid rgba(212,168,90,.12)}.dou-3v3-liju-table th{color:var(--dou-ink-mute, #b8a070);font-weight:500;font-size:.72rem}.dou-3v3-delta.pos{color:#6fdc88}.dou-3v3-delta.neg{color:#ee6c7a}.dou-3v3-pts{font-weight:700;color:var(--dou-gold-bright)}.dou-3v3-liju-cta{display:flex;justify-content:center;gap:.6rem;margin-top:.3rem}.dou-undo-btn{background:linear-gradient(180deg,#7882a5d9,#505a82d9)!important;border-color:#b4c3dc8c!important;color:#f4f7ff!important}.dou-undo-btn:hover{background:linear-gradient(180deg,#8794bceb,#5f6e9eeb)!important}.sj-entry,.sj-lobby,.sj-play{max-width:980px;margin:0 auto;padding:1.2rem 1.6rem 3rem;color:var(--dou-ink, #d6c89c);font-family:var(--dou-font-ui, "Inter", sans-serif)}.sj-title{font-family:Fraunces,serif;font-weight:800;color:var(--dou-gold-bright, #f5c876);margin:0 0 .4rem}.sj-entry-hint,.sj-hint{color:#d4a85ab3;font-size:.92rem;margin:.3rem 0}.sj-entry-row{display:flex;gap:.7rem;align-items:center;margin:1rem 0}.sj-entry-code{flex:1;padding:.5rem .8rem;font-family:var(--dou-font-num, monospace);background:#00000052;border:1px solid rgba(212,168,90,.32);border-radius:6px;color:var(--dou-gold-bright);letter-spacing:.15em;text-transform:uppercase}.sj-exit{margin-top:1.5rem}.sj-error{background:#dc50502e;border:1px solid rgba(220,80,80,.45);color:#ffb8b8;padding:.5rem .8rem;border-radius:6px;margin:.6rem 0}.sj-lobby-top{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem}.sj-lobby-title{flex:1;font-family:Fraunces,serif;font-weight:700;font-size:1.2rem;color:var(--dou-gold-bright)}.sj-lobby-status{padding:.2rem .6rem;border-radius:999px;font-size:.78rem;background:#00000052}.sj-code-row{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;padding:.6rem .8rem;background:#00000038;border:1px solid rgba(212,168,90,.18);border-radius:8px;margin-bottom:1rem}.sj-code-label{color:#d4a85ab3;font-size:.85rem}.sj-code-box{font-family:var(--dou-font-num, monospace);font-weight:700;color:var(--dou-gold-bright);letter-spacing:.15em;padding:.2rem .6rem;background:#00000052;border-radius:4px}.sj-team-levels{margin-left:auto;color:#d4a85ad9;font-size:.88rem}.sj-seat-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,auto);grid-template-areas:". n ." "w c e" ". s .";gap:.7rem;max-width:600px;margin:1rem auto}.sj-seat-n{grid-area:n}.sj-seat-e{grid-area:e}.sj-seat-s{grid-area:s}.sj-seat-w{grid-area:w}.sj-seat{background:#1419288c;border:1px solid rgba(212,168,90,.22);border-radius:8px;padding:.6rem;min-height:100px;display:flex;flex-direction:column;gap:.4rem;align-items:center}.sj-seat-letter{font-family:Fraunces,serif;font-weight:800;font-size:1.2rem;color:var(--dou-gold-bright)}.sj-seat-name{font-weight:600;text-align:center}.sj-tiny{padding:.2rem .55rem!important;font-size:.78rem!important}.sj-start-row{display:flex;align-items:center;gap:.8rem;justify-content:center;margin-top:1rem}.sj-play-top{display:flex;align-items:center;gap:.7rem;margin-bottom:.8rem;padding:.6rem .8rem;background:#00000038;border:1px solid rgba(212,168,90,.18);border-radius:8px}.sj-play-info{flex:1;font-family:Fraunces,serif;font-weight:600;color:var(--dou-gold-bright)}.sj-play-score{font-variant-numeric:tabular-nums;font-weight:700;color:var(--dou-gold-bright)}.sj-phase-title{font-family:Fraunces,serif;font-weight:700;color:var(--dou-gold-bright);margin:.4rem 0}.sj-phase-hint{padding:.5rem .7rem;background:#d4a85a14;border-radius:6px;margin:.5rem 0}.sj-decl-buttons{display:flex;gap:.6rem;margin:.5rem 0;flex-wrap:wrap}.sj-hand-area{margin-top:1rem;padding:.7rem;background:#00000038;border:1px solid rgba(212,168,90,.18);border-radius:8px}.sj-hand-cards{display:flex;flex-wrap:wrap;gap:.2rem;justify-content:center}.sj-hand-empty{text-align:center;color:#d4a85a80;padding:1rem}.sj-card{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:42px;height:62px;background:linear-gradient(180deg,#fbf8f0,#efe9dc);border:1px solid #cfc7b4;border-radius:5px;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:Fraunces,serif;font-weight:700;transition:transform .1s ease,box-shadow .1s ease}.sj-card:hover{transform:translateY(-3px);box-shadow:0 4px 12px #0000004d}.sj-card-selected{transform:translateY(-12px);box-shadow:0 6px 18px #f5c87666;border-color:var(--dou-gold-bright, #f5c876)}.sj-card-small{width:30px;height:44px}.sj-card-red{color:#c1322b}.sj-card-black{color:#14181d}.sj-card-joker{color:#b6841c;background:linear-gradient(180deg,#fff4d4,#f0d480)}.sj-card-rank{font-size:.85rem;line-height:1}.sj-card-small .sj-card-rank{font-size:.65rem}.sj-card-suit{font-size:1.05rem;line-height:1}.sj-card-small .sj-card-suit{font-size:.85rem}.sj-replay{padding:.8rem;max-width:760px;margin:0 auto}.sj-replay-nav{display:flex;align-items:center;justify-content:center;gap:.8rem;margin:.5rem 0 .9rem}.sj-replay-counter{color:#d4a85a;font-weight:600;min-width:7rem;text-align:center}.sj-replay-banner{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.6rem .8rem;background:#14281e80;border:1px solid rgba(212,168,90,.25);border-radius:8px;margin-bottom:.8rem}.sj-replay-banner>span{font-size:.92rem;color:#e8d8b0}.sj-replay-trump{font-weight:700}.sj-replay-kitty{display:flex;align-items:center;gap:.5rem;margin-bottom:.7rem}.sj-replay-label{color:#d4a85acc;font-size:.85rem}.sj-replay-cards{display:inline-flex;gap:2px;flex-wrap:wrap}.sj-replay-tricks{display:flex;flex-direction:column;gap:4px}.sj-replay-trick{display:flex;align-items:center;gap:.5rem;padding:3px 6px;border-radius:6px;background:#ffffff08}.sj-replay-trick:nth-child(odd){background:#ffffff0d}.sj-replay-tnum{color:#d4a85a99;font-size:.75rem;min-width:1.4rem;text-align:right}.sj-replay-play{display:inline-flex;align-items:center;gap:3px;opacity:.85}.sj-replay-play.sj-replay-win{opacity:1;outline:1px solid rgba(120,220,150,.5);border-radius:5px;padding:1px 2px}.sj-replay-pseat{color:#d4a85a;font-size:.7rem;min-width:.9rem}.sj-replay-tpts{margin-left:auto;color:#7ddc96;font-weight:700;font-size:.85rem}.sj-trick-area{padding:.7rem;background:radial-gradient(ellipse at center,#14281e99,#0a0f14b3);border:1px solid rgba(212,168,90,.22);border-radius:10px;margin:.7rem 0;min-height:180px}.sj-trick-ring{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-areas:". n ." "w . e" ". s .";gap:.4rem;align-items:center;justify-items:center}.sj-trick-n{grid-area:n}.sj-trick-e{grid-area:e}.sj-trick-s{grid-area:s}.sj-trick-w{grid-area:w}.sj-trick-play{display:flex;flex-direction:column;align-items:center;gap:.2rem}.sj-trick-seat{font-family:Fraunces,serif;font-weight:700;color:var(--dou-gold-bright);font-size:.85rem}.sj-trick-cards{display:flex;gap:.15rem}.sj-trick-result{text-align:center;margin-top:.5rem;color:var(--dou-gold-bright);font-family:Fraunces,serif;font-weight:700}.sj-seats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin-top:.7rem}.sj-seat-info{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:#00000038;border:1px solid rgba(212,168,90,.18);border-radius:6px;font-size:.85rem}.sj-seat-info-active{border-color:var(--dou-gold-bright, #f5c876);box-shadow:0 0 8px #f5c87666}.sj-seat-info-declarer{background:linear-gradient(180deg,#f5c8762e,#00000038)}.sj-seat-letter-mini{font-family:Fraunces,serif;font-weight:800;color:var(--dou-gold-bright)}.sj-seat-name-mini{flex:1}.sj-seat-count{font-variant-numeric:tabular-nums;color:#d4a85ab3}.sj-done-panel{padding:1rem;background:linear-gradient(180deg,#28233ca6,#0f0c19d9);border:1px solid rgba(212,168,90,.35);border-radius:10px;margin:.7rem 0}.sj-done-line{margin:.3rem 0}.sj-done-winner{font-family:Fraunces,serif;font-weight:800;font-size:1.2rem;color:var(--dou-gold-bright);margin:.6rem 0;text-align:center}.sj-kitty-reveal{display:flex;gap:.3rem;align-items:center;flex-wrap:wrap;margin:.6rem 0}.sj-kitty-label{color:#d4a85ab3;font-size:.85rem}.sj-loading{text-align:center;padding:2rem;color:#d4a85a99}.dou-3v3-liju-loading{text-align:center;font-family:var(--dou-font-ui);color:var(--dou-gold-bright);padding:1.2rem;animation:dou-3v3-loading-pulse 1.4s ease-in-out infinite}@keyframes dou-3v3-loading-pulse{0%,to{opacity:.55}50%{opacity:1}}.dou-your-turn-prompt{display:inline-flex;align-items:center;gap:.4rem;font-family:Fraunces,serif;font-weight:800;font-size:1.15rem;color:#1a1408;background:linear-gradient(180deg,#f6cf6f,#e0a83e 60%,#b6841c);border:1px solid rgba(255,220,140,.85);border-radius:999px;padding:.5rem 1.2rem;letter-spacing:.08em;text-shadow:0 1px 0 rgba(255,240,200,.6);box-shadow:0 0 #f5c876a6,0 6px 22px #b4822866,inset 0 1px #fff0c88c;animation:dou-your-turn-pulse 1.4s ease-in-out infinite}@keyframes dou-your-turn-pulse{0%,to{box-shadow:0 0 #f5c87699,0 6px 22px #b4822866,inset 0 1px #fff0c88c;transform:scale(1)}50%{box-shadow:0 0 0 14px #f5c87600,0 8px 28px #dca03c8c,inset 0 1px #fff0c8b3;transform:scale(1.04)}}.gd-mode-row{display:flex;gap:10px;justify-content:center;margin:12px 0;flex-wrap:wrap}.gd-level-banner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}.gd-deal-no{font-weight:700;color:#f5d89a}.gd-cur-level{padding:2px 8px;border-radius:999px;background:#f5c8762e;color:#ffe9bf;font-weight:700}.gd-team-level{padding:2px 8px;border-radius:6px;background:#ffffff12}.gd-team-attacking{background:#78c87840;box-shadow:0 0 0 1px #78dc7880 inset;font-weight:700}.gd-card-wild{box-shadow:0 0 0 2px #e0b400,0 4px 10px #e0b40080!important;position:relative}.gd-wild-tag{position:absolute;top:1px;right:2px;font-size:9px;color:#b8860b;font-weight:800}.gd-pass-tag{color:#b0b0b0;font-style:italic;font-size:12px}.gd-tribute-panel,.gd-done-panel{background:#00000038;border-radius:10px;padding:12px 14px;margin:10px 0}.gd-tribute-line,.gd-done-line{font-size:14px;margin:4px 0;color:#ece6d6}.gd-tribute-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.gd-your-turn{color:#ffe27a!important;font-weight:800;animation:gd-turn-pulse 1.1s ease-in-out infinite}@keyframes gd-turn-pulse{0%,to{opacity:1}50%{opacity:.55}}.gd-finish-order{display:flex;flex-direction:column;gap:4px;margin:8px 0}.gd-finish-row{display:flex;gap:10px;align-items:center}.gd-finish-rank{min-width:42px;padding:1px 6px;border-radius:6px;background:#f5c87633;color:#ffe9bf;font-weight:700;text-align:center;font-size:12px}.gd-finish-name{color:#f3eddd}.gd-seat-rank{margin-left:6px;padding:0 5px;border-radius:5px;background:#f5c87638;color:#ffe9bf;font-size:11px;font-weight:700}.gd-home-section{margin:16px 0;text-align:left}.gd-home-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.gd-home-title{font-weight:700;color:#f5d89a;font-size:15px}.gd-home-hint{color:#9a937f;font-size:13px;padding:6px 0}.gd-home-list{display:flex;flex-direction:column;gap:8px}.gd-home-row{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#00000038;border-radius:10px;padding:10px 12px}.gd-home-info{display:flex;flex-direction:column;gap:2px;min-width:0}.gd-home-code{font-weight:700;color:#ffe9bf;letter-spacing:1px}.gd-home-meta{font-size:12px;color:#d8d0bd}.gd-home-seats{font-size:12px;color:#9fb89f}.mobile-entry{padding:1.5rem 1rem 120px;min-height:100vh;box-sizing:border-box;position:relative}.ptr-indicator{position:absolute;top:-42px;left:0;right:0;height:34px;display:flex;align-items:center;justify-content:center;gap:.4rem;color:var(--muted);font-size:.82rem;pointer-events:none}.ptr-spinner{display:inline-block;transition:transform .18s ease}.ptr-indicator.ready .ptr-spinner{transform:rotate(180deg)}.ptr-indicator.ready{color:var(--brass)}.mob-entry-title{font-family:var(--font-serif);font-weight:900;font-size:2.4rem;letter-spacing:.14em;background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));-webkit-background-clip:text;background-clip:text;color:transparent;margin:0 0 1.5rem}.mob-back-btn{display:inline-flex;align-items:center;gap:.3rem;background:#ffffff12;border:1px solid rgba(255,255,255,.12);border-radius:20px;color:var(--text);font-size:.9rem;font-weight:600;padding:.4rem .9rem;cursor:pointer;margin-bottom:1rem}.mob-back-btn:active{background:#ffffff24}.mob-step-title{font-family:var(--font-serif);font-size:1.4rem;font-weight:700;color:var(--text);margin:0 0 1.2rem}.mob-game-grid{display:flex;flex-direction:column;gap:.9rem}.mob-game-card{display:flex;flex-direction:column;align-items:center;padding:1.4rem 1rem;border-radius:16px;background:linear-gradient(180deg,#d8b66a1f,#d8b66a0a);border:1.5px solid rgba(216,182,106,.35);cursor:pointer;transition:background .15s,border-color .15s;gap:.3rem}.mob-game-card-primary:active{background:#d8b66a38}.mob-game-card-dim{background:#ffffff08;border-color:#ffffff1a;opacity:.55;cursor:default;padding:1rem}.mob-game-row{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem}.mob-game-icon{font-size:2rem}.mob-game-card-primary .mob-game-icon{font-size:3rem}.mob-game-name{font-weight:700;font-size:1.1rem;color:var(--text)}.mob-game-card-primary .mob-game-name{font-size:1.4rem}.mob-game-sub{font-size:.75rem;color:var(--muted)}.mob-mode-list{display:flex;flex-direction:column;gap:.75rem}.mob-mode-card{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.2rem;border-radius:14px;background:#ffffff0a;border:1px solid var(--line);cursor:pointer;transition:background .12s,border-color .12s;gap:.8rem}.mob-mode-card:active{background:#d8b66a1a;border-color:#d8b66a66}.mob-mode-card-left{display:flex;align-items:center;gap:1rem}.mob-mode-icon{font-size:1.8rem}.mob-mode-text{display:flex;flex-direction:column;gap:.2rem}.mob-mode-name{font-weight:700;font-size:1rem;color:var(--text)}.mob-mode-sub{font-size:.78rem;color:var(--muted)}.mob-mode-arrow{font-size:1.5rem;color:var(--muted)}.mob-lobby-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.mob-lobby-header .mob-back-btn{margin-bottom:0}.mob-lobby-mode{font-size:.9rem;font-weight:700;color:var(--brass-hi)}.mob-form-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-radius:16px;overflow:hidden;margin-bottom:1.2rem}.mob-form-row{display:flex;align-items:center;gap:.75rem;padding:0 1rem;min-height:52px;border-bottom:1px solid rgba(255,255,255,.07)}.mob-form-row:last-of-type{border-bottom:none}.mob-form-label{font-size:.88rem;color:var(--muted);white-space:nowrap;flex-shrink:0;min-width:2.8rem}.mob-form-input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:1rem;padding:0;min-height:52px}.mob-form-input::placeholder{color:#ffffff40}.mob-form-row .code-input-row{flex:1;align-items:center;gap:.5rem;min-width:0}.mob-form-row .code-input-row .mob-form-input{min-height:40px}.mob-form-row .btn-dice{flex:0 0 auto;align-self:center;width:40px;height:34px;font-size:1.05rem}.mob-boards-row{display:flex;gap:.5rem;flex:1;padding:8px 0}.mob-boards-btn{flex:1;min-height:36px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;color:var(--muted);font-size:.9rem;cursor:pointer}.mob-boards-btn.active{background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));border-color:transparent;color:#1a1612;font-weight:700}.mob-join-btn{display:block;width:calc(100% - 2rem);margin:0 1rem 1rem;min-height:52px;font-size:1.05rem;border-radius:12px;cursor:pointer;border:none}.mob-active-list{display:flex;flex-direction:column;gap:.6rem;margin-top:.4rem}.mob-active-list .active-room-row{display:flex!important;flex-direction:row;align-items:center;gap:.5rem;padding:.2rem .75rem;min-height:36px;background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-left:none!important;border-radius:12px}.mob-active-list .active-room-row .active-room-code-badge{border-left:none!important;padding:.1rem .5rem!important;flex-shrink:0;align-self:center;font-size:.9rem}.mob-active-list .active-room-row .active-room-meta{flex:1;display:flex;flex-wrap:nowrap;align-items:center;gap:.35rem;overflow:hidden;align-self:center}.mob-active-list .active-room-row .active-room-mode,.mob-active-list .active-room-row .active-room-seats{display:none!important}.mob-active-list .active-room-row .active-room-actions{display:flex;gap:.3rem;flex-shrink:0;align-self:center}.mob-active-list .active-room-row .active-room-actions button{width:36px;height:36px;min-width:36px;min-height:36px;border-radius:7px;padding:0;font-size:0;line-height:1}.mob-active-list .active-room-row .active-room-actions .active-room-join:after{content:"▶";font-size:1rem}.mob-active-list .active-room-row .active-room-actions .active-room-save:after{content:"💾";font-size:.95rem}.mob-active-list .active-room-row .active-room-actions .active-room-close:after{content:"✕";font-size:1rem}.mobile-entry .saved-matches{margin-top:0;padding-top:0;border-top:none}.mobile-entry .saved-matches .active-rooms-list{display:flex;flex-direction:column;gap:.6rem;margin-top:.4rem}.mobile-entry .saved-matches .active-room-row{display:flex!important;flex-direction:row;align-items:center;gap:.5rem;padding:.3rem .75rem;min-height:44px;background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-left:none!important;border-radius:12px}.mobile-entry .saved-matches .active-room-row .active-room-code-badge{border-left:none!important;padding:.1rem .5rem!important;flex-shrink:0;align-self:center;font-size:.9rem}.mobile-entry .saved-matches .active-room-row .active-room-meta{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.05rem;overflow:hidden;align-self:center}.mobile-entry .saved-matches .active-room-row .active-room-meta .active-room-board{display:none}.mobile-entry .saved-matches .active-room-row .active-room-meta .active-room-mobile-type{display:inline;font-size:.88rem;white-space:nowrap}.mobile-entry .saved-matches .active-room-row .active-room-meta .active-room-age{font-size:.74rem;color:var(--muted);white-space:nowrap}.mobile-entry .saved-matches .active-room-row .active-room-seats{display:none!important}.mobile-entry .saved-matches .saved-matches-head{margin-top:.4rem}.mobile-entry .saved-matches .saved-matches-title{font-size:.85rem}.mobile-entry .saved-matches .active-room-row .active-room-actions{display:flex;gap:.3rem;flex-shrink:0;align-self:center}.mobile-entry .saved-matches .active-room-row .active-room-actions button{width:30px;height:30px;border-radius:7px;padding:0;font-size:0;line-height:1}.mobile-entry .saved-matches .active-room-row .active-room-actions .active-room-join:after{content:"▶";font-size:1rem}.mobile-entry .saved-matches .active-room-row .active-room-actions .active-room-close:after{content:"✕";font-size:1rem}.mob-section-label{font-size:.78rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:.8rem 0 .4rem}.mob-history-bar{position:fixed;bottom:0;left:0;right:0;padding:.6rem 1rem .75rem;background:var(--bg);border-top:1px solid var(--line);z-index:100}.mob-history-btn{display:block;width:100%;min-height:48px;border-radius:12px;border:none;background:#ffffff1a;color:var(--text);font-size:1rem;cursor:pointer;font-weight:600}.mob-history-btn:active{background:#ffffff2e}.gd-home-acts{display:flex;gap:6px;flex-shrink:0}@media (max-width: 600px){.lobby-tables{display:flex!important;flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:1rem;margin:0 -.5rem;padding:0 .5rem .6rem;scrollbar-width:none}.lobby-tables::-webkit-scrollbar{display:none}.lobby-table{flex:0 0 calc(100% - 1.5rem);scroll-snap-align:start;min-width:0;padding:.6rem;box-sizing:border-box}.lobby-seats{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto auto;grid-template-areas:"centre centre" "seatN  seatE" "seatW  seatS";gap:.4rem}.lobby-table-centre{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:.3rem .6rem;padding:.3rem .2rem}.lobby-table-num{font-size:1.05rem}.lobby-table-sub,.lobby-table-legend{display:none}.lobby-seat{padding:.4rem .45rem;gap:.25rem}.lobby-seat-name{font-size:.85rem}.lobby-seat-ctrls{flex-direction:column;gap:.25rem}.lobby-seat-ctrls .btn-lobby-mini:not(.btn-brass){display:none}.btn-lobby-enter{font-size:.9rem;padding:.55rem 1rem}}@media (orientation: portrait) and (max-width: 600px){body:has(#app .compass) #rotate-prompt{display:none!important}body:has(#app .compass) #app{display:grid!important;padding:4px 6px;max-width:100vw!important;width:100vw!important;overflow-x:hidden!important;box-sizing:border-box!important}.app{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto 1fr auto!important;grid-template-areas:"header" "compass" "action"!important;row-gap:2px!important;column-gap:0!important;height:100%!important;max-width:100vw!important;overflow-x:hidden!important}html,body{overflow-x:hidden!important}.app>.sidebar{display:none!important}.compass{grid-template-columns:56px minmax(0,1fr) 56px!important;grid-template-rows:auto 1fr auto!important;grid-template-areas:"seatN seatN seatN" "seatW center seatE" "seatS seatS seatS"!important;gap:3px 3px!important;padding:4px 3px!important;align-content:space-between!important}.seat-N{grid-area:seatN!important;justify-self:stretch!important}.seat-S{grid-area:seatS!important;justify-self:stretch!important}.seat-W{grid-area:seatW!important}.seat-E{grid-area:seatE!important}.compass.phase-auction .seat-N .hand-fan,.compass.phase-auction .seat-W .hand-fan,.compass.phase-auction .seat-E .hand-fan{display:none!important}.compass.phase-play .seat-W .hand-count,.compass.phase-play .seat-E .hand-count,.compass:is(.phase-done,.reveal-all) .seat-W .hand-count,.compass:is(.phase-done,.reveal-all) .seat-E .hand-count{display:none!important}.compass.phase-play .seat-W .hand-fan.hidden,.compass.phase-play .seat-E .hand-fan.hidden,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden),.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden){display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:center!important;position:static!important;width:auto!important;height:auto!important;padding:0!important;gap:0!important;overflow:visible!important;margin:0!important}.compass:is(.phase-play,.phase-done,.reveal-all){overflow:hidden!important}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W,.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E{width:max-content!important;max-width:none!important;padding:calc(var(--sw) * .38) 5px!important}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W{transform:translate(-41%)!important}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E{transform:translate(41%)!important}.trick.is-drop-active{background:radial-gradient(60% 60% at 50% 50%,rgba(212,168,90,.35),rgba(212,168,90,.1) 65%,transparent 100%);outline:2px dashed rgba(212,168,90,.55);outline-offset:-6px}.pcard.drag-preview{border-radius:5px!important;box-shadow:0 8px 24px #0000008c!important;transition:none!important}.pcard.dragging-source{opacity:.25!important}.pcard.drag-preview.is-over-drop{box-shadow:0 0 0 2px var(--brass, #b0863d),0 8px 24px #0009!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan.hidden .pcard.back,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan.hidden .pcard.back{display:block!important;position:static!important;left:auto!important;top:auto!important;transform:none!important;width:calc(var(--sw) * 1.5)!important;height:var(--sw)!important;margin:0!important;margin-top:calc(var(--sw) * -.4)!important;border-radius:4px!important;box-shadow:0 2px 3px -1px #0000008c!important;flex-shrink:0!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan.hidden .pcard.back:first-of-type,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan.hidden .pcard.back:first-of-type{margin-top:0!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard{display:block!important;position:relative!important;left:auto!important;top:auto!important;width:var(--sw)!important;height:calc(var(--sw) * 1.5)!important;margin-top:calc(var(--sw) * -.9)!important;margin-right:calc(var(--sw) * .25)!important;margin-bottom:0!important;margin-left:calc(var(--sw) * .25)!important;border-radius:4px!important;box-shadow:0 2px 3px -1px #0000008c!important;flex-shrink:0!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard .idx.br,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard .pip,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard .idx.br,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard .pip{display:none!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard .idx .r,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard .idx .r{font-size:clamp(9px,calc(var(--sw) * .32),18px)!important;line-height:1!important;padding:0!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard .idx .s,.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard .idx .s{font-size:clamp(8px,calc(var(--sw) * .28),16px)!important;line-height:1!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden){padding-top:calc(var(--sw) * .9)!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard{transform:rotate(90deg)!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden) .pcard:first-child{margin-top:calc(var(--sw) * -.9)!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden){flex-direction:column-reverse!important;padding-top:calc(var(--sw) * .9)!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard{transform:rotate(-90deg)!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden) .pcard:last-child{margin-top:calc(var(--sw) * -.9)!important}.compass:is(.phase-done,.reveal-all,.phase-play) .seat-W .hand-fan:not(.hidden),.compass:is(.phase-done,.reveal-all,.phase-play) .seat-E .hand-fan:not(.hidden){margin-top:calc(var(--sw) * -.25)!important;margin-bottom:calc(var(--sw) * -.25)!important}.compass.phase-play:not(.reveal-all) .seat-W .hand-fan.hidden .pcard .idx,.compass.phase-play:not(.reveal-all) .seat-E .hand-fan.hidden .pcard .idx,.compass.phase-play:not(.reveal-all) .seat-W .hand-fan.hidden .pcard .pip,.compass.phase-play:not(.reveal-all) .seat-E .hand-fan.hidden .pcard .pip{display:none!important}.compass.phase-play:not(.reveal-all) .seat-W .hand-fan.hidden .pcard.honor:before,.compass.phase-play:not(.reveal-all) .seat-W .hand-fan.hidden .pcard.honor:after,.compass.phase-play:not(.reveal-all) .seat-E .hand-fan.hidden .pcard.honor:before,.compass.phase-play:not(.reveal-all) .seat-E .hand-fan.hidden .pcard.honor:after{display:none!important}.compass .seat-W,.compass .seat-E{overflow:hidden!important;max-width:100%!important}.compass.phase-auction .seat-N .hand-fan.hidden{display:none!important}.seat-W,.seat-E{min-width:0!important;min-height:0!important;padding:2px!important;justify-content:center!important;align-items:center!important}.seat-W .seat-portrait,.seat-E .seat-portrait{width:44px!important;font-size:.7rem}.seat-W .seat-nameplate,.seat-E .seat-nameplate,.seat-W .seat-tags,.seat-E .seat-tags{display:none!important}.seat-N,.seat-S{min-width:0!important;min-height:0!important;width:100%!important;padding:2px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;column-gap:0!important}.seat-N>*:not(.seat-head),.seat-S>*:not(.seat-head){grid-column:auto!important}.seat-N .hand-fan,.seat-S .hand-fan{position:static!important;width:auto!important;height:auto!important;transform:none!important;display:flex!important;gap:2px!important;flex-wrap:nowrap!important;justify-content:center!important}.seat-N .pcard,.seat-S .pcard{position:static!important;transform:none!important;margin:0!important;width:22px!important;height:30px!important;border-radius:3px!important;border:1px solid #cfc7b4!important;box-shadow:none!important}.seat-head{display:none!important}.seat.on-turn:before,.seat.on-turn:after{display:none!important}.header,.app-header{padding:.2rem .4rem!important;gap:.3rem!important}.brand .wordmark-sub{display:none!important}.tag{font-size:.65rem!important}.status{font-size:.55rem!important}.mh-team-name{display:none!important}.app-header{grid-template-areas:"match match" "meta  actions" "sub   sub"!important;grid-template-columns:minmax(0,1fr) auto!important;grid-template-rows:auto auto auto!important;row-gap:14px!important;column-gap:.5rem!important;align-items:center!important;max-width:100%!important;min-width:0!important;overflow-x:hidden!important}.app-header>*{min-width:0!important}.app-header>.mh-actions{justify-content:flex-end!important;flex-wrap:nowrap!important}.app-header>.header-meta{flex-wrap:nowrap!important;justify-content:flex-start!important;overflow:hidden!important}.mh-icon-btn{padding:.2rem .4rem!important;font-size:1rem!important}.action{margin-top:2px!important}}@media (orientation: portrait) and (max-width: 600px){.compass{--slot-size: clamp(23px, calc((100vw - 179px) / 7 * 1.15), 41px)}.compass.phase-auction .bid-area{display:flex!important;align-items:center!important;gap:calc(var(--slot-size) * .35)!important}.compass.phase-auction .seat-head{display:none}.compass.phase-auction .bid-avatar{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--slot-size);height:var(--slot-size);font-size:calc(var(--slot-size) * .75);border-radius:5px;background:#ffffff0f}.compass.phase-auction .bid-area .bid-log{position:static!important;flex:0 0 auto!important}.compass.phase-auction .bid-area .bid-log .bid-bubble{transform:none}.compass.phase-auction .bid-area-N .bid-log,.compass.phase-auction .bid-area-S .bid-log{width:calc(6 * var(--slot-size) + 5 * 3px)!important;overflow-x:auto!important}.compass.phase-auction .bid-area-W .bid-log,.compass.phase-auction .bid-area-E .bid-log{max-height:calc(6 * var(--slot-size) + 5 * 3px)!important}.compass.phase-auction .bid-area-N{flex-direction:row!important}.compass.phase-auction .bid-area-S{flex-direction:row-reverse!important}.compass.phase-auction .bid-area-W{flex-direction:column-reverse!important}.compass.phase-auction .bid-area-E{flex-direction:column!important}.compass.phase-auction .player{display:flex;align-items:center}.compass.phase-auction .player.dir-N,.compass.phase-auction .player.dir-E,.compass.phase-auction .player.dir-W{width:fit-content;height:fit-content}.compass.phase-auction .player.dir-N{grid-area:seatN!important;justify-self:center;align-self:start;flex-direction:column-reverse}.compass.phase-auction .player.dir-E{grid-area:seatE!important;justify-self:end;align-self:center;flex-direction:row}.compass.phase-auction .player.dir-W{grid-area:seatW!important;justify-self:start;align-self:center;flex-direction:row-reverse}.compass.phase-auction .player.dir-S{grid-area:seatS!important;justify-self:stretch;align-self:center;height:fit-content;flex-direction:column;gap:calc(var(--slot-size) * .4)}.compass.phase-auction .player>.seat{flex-shrink:0}.compass.phase-auction .player .bid-area{background:linear-gradient(180deg,#08100b8c,#040a079e);border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:3px 6px}.compass.phase-auction .player .bid-area.is-dealer{background:linear-gradient(180deg,#ced3de4d,#969eac33);border-color:#d2d7e161}.compass.phase-auction .player.on-turn .bid-area{border-color:var(--brass, #d8b66a);box-shadow:0 0 0 1px var(--brass, #d8b66a),0 0 16px -2px var(--brass-glow, rgba(216,182,106,.35))}.compass.phase-auction .seat.on-turn{border-color:#ffffff0f;box-shadow:none;animation:none}.compass.phase-auction .seat-N .hand-fan{display:none}.seat-name-tooltip{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:#0a120eeb;color:var(--fg);font-size:.75rem;white-space:nowrap;padding:3px 8px;border-radius:5px;border:1px solid var(--line);pointer-events:none;z-index:100}.compass .bid-log{position:static;display:flex;flex-wrap:nowrap;gap:3px;padding:2px;left:unset;right:unset;top:unset;bottom:unset;transform:none;margin:0}.compass.phase-auction .bid-area .bid-log{position:static;flex:0 0 auto}.compass.phase-auction .bid-area-N .bid-log{flex-direction:row;width:calc(6 * var(--slot-size) + 5 * 3px);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.compass.phase-auction .bid-area-S .bid-log{flex-direction:row-reverse;width:calc(6 * var(--slot-size) + 5 * 3px);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.compass.phase-auction .bid-area-W .bid-log{flex-direction:column-reverse;max-height:calc(6 * var(--slot-size) + 5 * 3px);overflow-y:auto;overflow-x:hidden;scrollbar-width:none}.compass.phase-auction .bid-area-E .bid-log{flex-direction:column;max-height:calc(6 * var(--slot-size) + 5 * 3px);overflow-y:auto;overflow-x:hidden;scrollbar-width:none}.compass.phase-auction .bid-area .bid-log::-webkit-scrollbar{display:none}.compass .bid-area-W .bid-log .bid-bubble,.compass .bid-area-E .bid-log .bid-bubble{transform:none;margin:0}.compass .seat-S{z-index:10}.compass .bid-log .bid-bubble{cursor:pointer;-webkit-tap-highlight-color:rgba(216,182,106,.25)}.compass .bid-slot-empty{display:block!important;width:var(--slot-size);height:var(--slot-size);border-radius:5px;background:#00000059;border:1px solid rgba(255,255,255,.08);flex-shrink:0}:is(.compass,.seat-modal-sheet) .portrait-auction-table{--pat-w: min(92vw, calc(330px * var(--u)));--pat-cell-w: calc((var(--pat-w) - 8px - 15px) / 6);--pat-row-h: clamp(13px, 2.7cqh, 22px);display:flex!important;flex-direction:column;flex-shrink:0!important;align-items:flex-start;gap:2px;padding:3px 4px;margin-bottom:.4rem;background:#00000047;border:1px solid rgba(216,182,106,.25);border-radius:6px;width:100%;max-width:calc(330px * var(--u));font-family:var(--font-serif);box-sizing:border-box;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;touch-action:pan-x;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}:is(.compass,.seat-modal-sheet) .portrait-auction-table::-webkit-scrollbar{display:none;width:0;height:0}:is(.compass,.seat-modal-sheet) .pat-row{display:flex;flex-wrap:nowrap;width:max-content;align-items:center;gap:3px;min-height:var(--pat-row-h)}:is(.compass,.seat-modal-sheet) .pat-label{position:sticky;left:0;z-index:2;flex:0 0 auto;width:var(--pat-cell-w);display:flex;align-items:center;justify-content:center;height:var(--pat-row-h);background:linear-gradient(180deg,var(--brass-hi, #d8b66a),var(--brass, #b0863d));border:1px solid var(--brass, #b0863d);border-radius:3px;color:#1a1206;font-size:calc(var(--pat-row-h) * .6);font-weight:800;letter-spacing:.04em;text-align:center;box-shadow:inset 0 -1px #00000026,3px 0 4px -1px #0000008c}:is(.compass,.seat-modal-sheet) .pat-track{display:contents}:is(.compass,.seat-modal-sheet) .pat-cell{position:relative;flex:0 0 auto;width:var(--pat-cell-w);height:var(--pat-row-h);display:inline-flex;align-items:center;justify-content:center;gap:.1em;font-size:calc(var(--pat-row-h) * .62);font-weight:700;color:#f0efe4;background:transparent;border:1px solid rgba(216,182,106,.22);border-radius:2px;min-width:0}:is(.compass,.seat-modal-sheet) .pat-cell.empty{border-color:#d8b66a14}:is(.compass,.seat-modal-sheet) .pat-cell .st{font-size:1em;margin-left:.05em}:is(.compass,.seat-modal-sheet) .pat-cell.pass{color:#a8dcb8}:is(.compass,.seat-modal-sheet) .pat-cell.dbl{color:#ff8a90}:is(.compass,.seat-modal-sheet) .pat-cell.rdbl{color:#cbb4f5}:is(.compass,.seat-modal-sheet) .pat-cell.bid-S{color:#82a8ff}:is(.compass,.seat-modal-sheet) .pat-cell.bid-H{color:#ff8a90}:is(.compass,.seat-modal-sheet) .pat-cell.bid-D{color:#ffb56a}:is(.compass,.seat-modal-sheet) .pat-cell.bid-C{color:#7ed99a}:is(.compass,.seat-modal-sheet) .pat-cell.bid-N{color:#eaeaea}:is(.compass,.seat-modal-sheet) .pat-cell.alerted:after{content:"";position:absolute;top:1px;right:1px;width:5px;height:5px;border-radius:50%;background:#f0b060;box-shadow:0 0 3px -1px #f0b060e6}:is(.compass,.seat-modal-sheet) .pat-cell.final{box-shadow:inset 0 0 0 1px var(--brass, #b0863d)}.compass .bid-log .bid-bubble{width:var(--slot-size)!important;height:var(--slot-size)!important;min-width:0!important;padding:0!important;font-size:calc(var(--slot-size) * .42)!important;border-radius:calc(var(--slot-size) * .265)!important;flex-shrink:0!important}.compass.phase-auction .bid-grid{display:flex!important}.compass.phase-auction .bid-extras{display:flex!important;flex-wrap:nowrap!important;gap:.28rem!important;justify-content:center!important;align-items:stretch!important;margin-top:.3rem!important;width:100%!important;max-width:calc(330px * var(--u))!important}.compass.phase-auction .bid-extras>button{flex:1 1 0!important;min-width:0!important;padding:.34rem 0!important;font-size:.75rem!important;letter-spacing:.04em!important;white-space:nowrap!important}.compass.phase-auction .bid-spin-btns,.compass.phase-auction .mobile-bid-bar{display:none!important}.compass.phase-auction .bid-wheel-wrap{--bid-row-h: 28px}.compass.phase-auction .bid-dial{overflow:hidden!important;height:auto!important}.compass.phase-auction .bid-dial-row.pad{display:none!important}.compass.phase-auction .bid-dial-row{height:28px!important;flex:0 0 28px!important;transform:none!important;pointer-events:auto!important}.compass.phase-auction .bid-cell{height:28px!important;pointer-events:auto!important;font-size:.8rem!important}.compass.phase-auction .bid-dial-row.is-center .bid-cell{height:28px!important;font-size:.8rem!important;box-shadow:none!important}.compass{--sw: calc((92vw - 22px) / 8.2)}.compass:is(.phase-play,.phase-done){container-type:size;--sw: min(calc((92vw - 22px) / 8.2), 5.4cqh);--card-w: calc(var(--sw) * 1.36);--card-h: calc(var(--sw) * 1.92);--slot-size: clamp(20px, calc(var(--sw) * .914), 41px);--pat-w: min(92vw, calc(var(--sw) * 6.96))}@container (max-height: 520px){.center:has(.pat-chip)>.portrait-auction-table{display:none!important}}@container (min-height: 520.01px){.pat-chip{display:none!important}}.pat-chip{display:inline-flex;align-items:center;gap:4px;align-self:center;margin:0 auto 2px;padding:3px 9px;border-radius:999px;border:1px solid var(--line);background:#00000047;color:var(--brass-hi);font-size:clamp(10px,2.2cqh,13px);font-weight:700;line-height:1;cursor:pointer}.pat-chip-icon{font-size:.9em}.pat-chip:active{background:#00000073}.seat-modal-sheet .portrait-auction-table{--pat-w: min(78vw, 320px);--pat-cell-w: calc((min(78vw, 320px) - 8px - 15px) / 6);--pat-row-h: 24px;flex-direction:row;justify-content:center;align-items:flex-start;gap:5px;width:max-content;max-width:100%;margin:0 auto;overflow-x:visible;touch-action:auto}.seat-modal-sheet .pat-row{flex-direction:column;width:auto;align-items:stretch;gap:3px}.seat-modal-sheet .pat-label{position:static;width:auto;min-width:var(--pat-cell-w);box-shadow:inset 0 -1px #00000026}.seat-modal-sheet .pat-cell{width:auto;min-width:var(--pat-cell-w)}.compass:is(.phase-play,.phase-done) .trick-pcard .pip{font-size:calc(var(--sw) * .548)!important}.compass:is(.phase-play,.phase-done) .trick-pcard .idx .r{font-size:calc(var(--sw) * .443)!important}.compass:is(.phase-play,.phase-done) .trick-pcard .idx .s{font-size:calc(var(--sw) * .325)!important}.compass .hand-fan.dir-S{position:static!important;display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;overflow:visible!important;height:auto!important;width:auto!important;transform:none!important;justify-content:center!important;padding:6px 0 8px!important;gap:0!important}.compass .hand-fan.dir-S .pcard{position:static!important;transform:none!important;width:var(--sw)!important;height:calc(var(--sw) * 1.5)!important;margin-right:calc(var(--sw) * -.4)!important;flex-shrink:0!important;border-radius:5px!important;font-size:clamp(.65rem,calc(var(--sw) * .25),1.1rem)!important;box-shadow:1px 2px 5px #0000008c!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;line-height:1!important}.compass .hand-fan.dir-S .pcard:last-child{margin-right:0!important}.compass .hand-fan.dir-S .pcard .pip,.compass .hand-fan.dir-S .pcard .idx.br{display:none!important}.compass .hand-fan.dir-S .pcard .idx{position:static!important;transform:none!important;flex-direction:column!important;align-items:center!important;gap:0!important;padding:2px 0 0 3px!important;margin:0!important}.compass .hand-fan.dir-S .pcard .idx .r{font-size:clamp(9px,calc(var(--sw) * .32),18px)!important;line-height:1!important;padding:0!important}.compass .hand-fan.dir-S .pcard .idx .s{font-size:clamp(8px,calc(var(--sw) * .28),16px)!important;line-height:1!important}.compass .hand-fan.dir-S .pcard.honor:before,.compass .hand-fan.dir-S .pcard.honor:after{display:none!important}.compass:is(.phase-play,.phase-done,.reveal-all) .player{display:flex;align-items:center;position:relative}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-E,.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-W{width:fit-content;height:fit-content}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-N{grid-area:seatN!important;justify-self:stretch;align-self:start;flex-direction:column-reverse}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-E{grid-area:seatE!important;justify-self:end;align-self:center;flex-direction:row}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-W{grid-area:seatW!important;justify-self:start;align-self:center;flex-direction:row-reverse}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-S{grid-area:seatS!important;justify-self:stretch;align-self:center;flex-direction:column}.compass:is(.phase-play,.phase-done,.reveal-all) .player>.seat{flex-shrink:0}.compass:is(.phase-auction,.phase-play,.phase-done,.reveal-all) .player.dir-N,.compass:is(.phase-auction,.phase-play,.phase-done,.reveal-all) .player.dir-S{max-width:100%;min-width:0;height:fit-content}.compass.phase-play .player.dir-N .hand-count{display:none!important}.compass.phase-play .player.dir-N .seat-N .hand-fan{gap:0!important}.compass.phase-play .player.dir-N .seat-N .pcard.back{width:var(--sw)!important;height:calc(var(--sw) * 1.5)!important;margin-right:calc(var(--sw) * -.4)!important;border-radius:5px!important}.compass.phase-play .player.dir-N .seat-N .pcard.back:last-of-type{margin-right:0!important}.compass:is(.phase-play,.phase-done,.reveal-all) .player .bid-avatar{cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--slot-size);height:var(--slot-size);font-size:calc(var(--slot-size) * .7);border-radius:5px;background:#ffffff0f}.bid-avatar.is-disconnected{filter:grayscale(1);opacity:.5}.compass .bid-avatar{border:1px solid rgba(206,211,222,.38)!important;box-sizing:border-box!important}.compass .bid-avatar.team-ns{background:linear-gradient(155deg,#9c2c2699,#4a1410c7)!important}.compass .bid-avatar.team-ew{background:linear-gradient(155deg,#2e4a8a99,#142040c7)!important}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-N .seat-chip-row{margin:4px 0}.compass:is(.phase-play,.phase-done,.reveal-all) .player.dir-S .seat-chip-row{order:-1;margin:4px 0}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W,.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E{padding-top:calc(var(--sw) * .38 + var(--slot-size) + 6px)!important}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W .bid-avatar,.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E .bid-avatar{position:absolute;top:5px;z-index:20;transform:translate(-50%)}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W .bid-avatar{left:66.5%}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E .bid-avatar{left:33.5%}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W:not(:has(.pcard)),.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E:not(:has(.pcard)){min-width:calc(var(--slot-size) + 14px)!important;padding:6px!important;transform:none!important}.compass:is(.phase-play,.phase-done,.reveal-all) .seat-W:not(:has(.pcard)) .bid-avatar,.compass:is(.phase-play,.phase-done,.reveal-all) .seat-E:not(:has(.pcard)) .bid-avatar{position:static!important;left:auto!important;top:auto!important;transform:none!important}.compass.phase-play .seat.on-turn{border-color:var(--brass-hi, #d8b66a)!important;box-shadow:0 0 0 1px var(--brass, #b0863d),0 0 14px #d8b66a80!important;animation:none!important}.compass.phase-play .bid-log,.compass:is(.phase-done,.reveal-all) .bid-log{display:none!important}.compass.phase-play .seat-role,.compass:is(.phase-done,.reveal-all) .seat-role{display:none!important}.replay-app{grid-template-columns:minmax(0,1fr)!important;grid-template-areas:"header" "banner" "compass" "ctrl"!important}.replay-app>.sidebar{display:none!important}.replay-ctrl .replay-history-btn{display:none!important}.compass .seat-S .seat-hcp-portrait,.compass .seat-N .seat-dummy-portrait,.compass .seat-S .seat-dummy-portrait,.compass:is(.reveal-all,.phase-done) .seat-hcp-portrait{display:inline-flex!important;align-items:center;justify-content:center;align-self:center;margin-top:-6px;padding:1px 10px;font-family:var(--font-sans, sans-serif);font-weight:700;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brass-hi, #d8b66a);background:transparent;border:1px solid var(--brass, #b0863d);border-radius:999px}.compass .seat-chip-row{display:flex;flex-direction:row;align-self:center;gap:6px;margin-top:-6px}.compass .seat-chip-row .seat-hcp-portrait,.compass .seat-chip-row .seat-dummy-portrait{margin-top:0}.compass:is(.reveal-all,.phase-done) .seat-W{padding:calc(var(--sw) * .38 + var(--slot-size) + 6px) 30px calc(var(--sw) * .38) 5px!important}.compass:is(.reveal-all,.phase-done) .seat-E{padding:calc(var(--sw) * .38 + var(--slot-size) + 6px) 5px calc(var(--sw) * .38) 30px!important}.compass:is(.reveal-all,.phase-done) .seat-W .seat-chip-row,.compass:is(.reveal-all,.phase-done) .seat-E .seat-chip-row{position:absolute!important;top:50%;margin:0!important;z-index:30;transform-origin:center center}.compass:is(.reveal-all,.phase-done) .seat-W .seat-chip-row{right:-14px;transform:translateY(-50%) rotate(90deg)}.compass:is(.reveal-all,.phase-done) .seat-E .seat-chip-row{left:-14px;transform:translateY(-50%) rotate(-90deg)}.compass:is(.reveal-all,.phase-play,.phase-done) .center{justify-content:space-between!important;gap:.6rem}.compass:is(.reveal-all,.phase-play,.phase-done) .center .trick,.compass:is(.reveal-all,.phase-play,.phase-done) .center .result-banner{margin-top:auto!important}.compass:is(.phase-play,.phase-done) .center{justify-content:center!important}.compass.phase-play .center .trick,.compass.phase-done .center .result-banner{margin-top:0!important}.compass.phase-done .result-contract{font-size:clamp(.8rem,2.6cqh,1.35rem)!important}.compass.phase-done .result-outcome{font-size:clamp(.58rem,1.5cqh,.78rem)!important}.compass.phase-done .result-score{font-size:clamp(.72rem,2cqh,1.15rem)!important;margin-top:0!important}.compass.phase-done .result-banner{gap:2px!important}.compass.phase-done .be-row{min-height:clamp(15px,2.5cqh,23px)!important}.compass.phase-done .be-name,.compass.phase-done .be-score-parts{font-size:clamp(.58rem,1.45cqh,.76rem)!important}.compass.phase-done .result-nav-row{margin-top:.6rem!important}.compass.phase-done .result-nav-row button{padding:.42rem .5rem!important;font-size:.82rem!important}.compass.phase-done .portrait-auction-table{margin-bottom:.1rem!important}.last-trick-overlay{background:none!important}.compass .hand-fan.phantom{visibility:hidden}.compass .hand-fan.phantom .hand-count,.board-popup,.board-popup-corner,.board-popup-center{display:none!important}}
