:root{--card-face:#fcfaf4;--card-edge:#d9d2c2;--card-ink:#1d1c1a;--suit-red:#c42b3c;--card-back:#8f1f30;--card-back-line:#b8475a;--card-focus:#e8b84a;--radius-sm:4px;--radius-card:8px;--shadow-card:0 1px 2px #00000040, 0 2px 6px #00000026;--shadow-lift:0 6px 16px #0000004d;--card-w-sm:56px;--card-w-md:84px;--card-w-lg:112px;--card-overlap:-40px;--font-display:"Fraunces", Georgia, "Times New Roman", serif}.hf-suit{fill:currentColor;flex:none;display:inline-block}.hf-red{color:var(--suit-red)}.hf-black{color:var(--card-ink)}.hf-card{--w:var(--card-w-md);--h:calc(var(--w) * 1.43);--fs:20px;--pip:34px;box-sizing:border-box;width:var(--w);height:var(--h);background:var(--card-face);border:1px solid var(--card-edge);border-radius:var(--radius-card);box-shadow:var(--shadow-card);font:inherit;text-align:left;-webkit-user-select:none;user-select:none;flex:none;padding:0;transition:transform .14s,box-shadow .14s,opacity .14s,filter .14s;position:relative}.hf-card-sm{--w:var(--card-w-sm);--fs:14px;--pip:22px;border-radius:var(--radius-sm)}.hf-card-lg{--w:var(--card-w-lg);--fs:26px;--pip:48px}button.hf-card{cursor:pointer}button.hf-card:disabled{cursor:not-allowed}button.hf-card:focus-visible{outline:3px solid var(--card-focus);outline-offset:2px}.hf-idx{flex-direction:column;align-items:center;gap:1px;line-height:1;display:flex;position:absolute}.hf-idx-tl{top:5px;left:5px}.hf-idx-br{bottom:5px;right:5px;transform:rotate(180deg)}.hf-rank{font-family:var(--font-display);font-weight:700;font-size:var(--fs);letter-spacing:-.02em;font-variant-numeric:lining-nums}.hf-idx .hf-suit{width:calc(var(--fs) * .7);height:calc(var(--fs) * .7)}.hf-pip{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.hf-pip .hf-suit{width:var(--pip);height:var(--pip)}.hf-pip-face{flex-direction:column;gap:2px}.hf-pip-face .hf-suit{width:calc(var(--pip) * .55);height:calc(var(--pip) * .55)}.hf-face-letter{font-family:var(--font-display);font-weight:600;font-size:calc(var(--pip) * 1.05);line-height:1}.hf-card-sm .hf-idx-br{display:none}.hf-card-sm .hf-pip{padding-top:10px}.hf-card.is-playable:hover,.hf-card.is-playable:focus-visible{box-shadow:var(--shadow-lift);transform:translateY(-10px)}.hf-card.is-selected{box-shadow:0 0 0 3px var(--card-focus), var(--shadow-lift);transform:translateY(-22px)}.hf-card.is-disabled{filter:saturate(.4)brightness(.82)}.hf-card.is-new{box-shadow:0 0 0 3px var(--card-focus), var(--shadow-card)}.hf-back{--w:var(--card-w-md);box-sizing:border-box;width:var(--w);height:calc(var(--w) * 1.43);border-radius:var(--radius-card);border:3px solid var(--card-face);box-shadow:var(--shadow-card);background-color:var(--card-back);background-image:repeating-linear-gradient(45deg, var(--card-back-line) 0 1.5px, transparent 1.5px 9px), repeating-linear-gradient(-45deg, var(--card-back-line) 0 1.5px, transparent 1.5px 9px);flex:none}.hf-back-sm{--w:var(--card-w-sm);border-radius:var(--radius-sm);border-width:2px}.hf-back-lg{--w:var(--card-w-lg)}.hf-back-xs{--w:34px;border-width:2px;border-radius:3px}.hf-hand{justify-content:center;align-items:flex-end;padding-top:24px;display:flex}.hf-hand>*+*{margin-left:var(--card-overlap)}.table-page{--card-w-md:clamp(44px, 8.5vw, 84px);--card-h:calc(var(--card-w-md) * 1.43);--card-overlap:calc(var(--card-w-md) * -.48);--trick-w:calc(var(--card-w-md) * 3.4);--trick-h:calc(var(--card-h) * 2.4);--seat-h:6.75rem;--line:1.5rem;grid-template-columns:minmax(0,1fr);grid-template-rows:2.75rem calc(var(--seat-h) + var(--trick-h) + var(--line) + 2.25rem + 2px) 2.75rem calc(var(--card-h) + 32px) 2.25rem;row-gap:.5rem;display:grid;position:relative}.table-page .hf-card-md{--fs:calc(var(--w) * .24);--pip:calc(var(--w) * .4)}.is-hidden{visibility:hidden}.table-loading,.table-notice-inline{margin:1rem 0}.table-notice-inline{color:#8a1c13;background:#fdecea;border-radius:4px;padding:.4rem .75rem}.table-header{grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:.5rem;display:grid}.table-header h1{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.25rem;overflow:hidden}.table-offline{color:#8a1c13;white-space:nowrap;font-size:.875rem}.table-leave{position:relative}.table-leave-button{font-weight:600}.table-leave-confirm{z-index:20;background:#fff;border:1px solid #bbb;border-radius:6px;flex-wrap:wrap;gap:.5rem;width:15rem;padding:.75rem;display:flex;position:absolute;top:calc(100% + .25rem);right:0;box-shadow:0 4px 14px #0003}.table-leave-confirm p{flex-basis:100%;margin:0}.table-board{grid-template-columns:minmax(0, 1fr) var(--trick-w) minmax(0, 1fr);grid-template-rows:var(--seat-h) calc(var(--trick-h) + var(--line));background:#f3f3f1;border:1px solid #ddd;border-radius:8px;grid-template-areas:".north.""west center east";place-items:center;gap:.75rem;padding:.75rem;display:grid;position:relative;overflow:hidden}.table-north{grid-area:north}.table-west{grid-area:west}.table-east{grid-area:east}.table-center{grid-area:center;grid-template-rows:var(--trick-h) var(--line);justify-items:center;display:grid}.table-opponent{box-sizing:border-box;width:min(100%,11rem);height:var(--seat-h);grid-template-rows:var(--line) 1.25rem 1.25rem 1fr;border:2px solid #0000;border-radius:8px;place-items:center;padding:.25rem;display:grid}.table-opponent.is-active,.table-self.is-active{border-color:#222}.table-seat-name,.table-seat-meta{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.table-seat-name{font-size:.9rem;font-weight:600}.table-seat-meta{color:#555;font-size:.8rem}.table-bot{color:#666;font-weight:400}.table-backs{justify-content:center;width:100%;display:flex;overflow:hidden}.table-backs>*+*{margin-left:-24px}.table-trick{width:var(--trick-w);height:var(--trick-h);position:relative}.table-trick.is-faded .table-trick-slot>.hf-card{opacity:.6}.table-trick-slot{position:absolute}.table-slot-south{bottom:0;left:50%;transform:translate(-50%)}.table-slot-north{top:0;left:50%;transform:translate(-50%)}.table-slot-west{top:50%;left:0;transform:translateY(-50%)}.table-slot-east{top:50%;right:0;transform:translateY(-50%)}.table-slot-empty{box-sizing:border-box;width:var(--card-w-md);height:var(--card-h);border-radius:var(--radius-card);border:1px dashed #d4d1c8}.table-pass-info{box-sizing:border-box;width:var(--trick-w);height:var(--trick-h);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;display:flex;overflow:hidden}.table-pass-info strong{font-size:1.1rem}.table-caption{height:var(--line);line-height:var(--line);color:#666;white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin:0;font-size:.875rem;overflow:hidden}.table-toast{z-index:5;color:#8a1c13;white-space:nowrap;background:#fdecea;border-radius:4px;margin:0;padding:.4rem .75rem;position:absolute;top:.5rem;left:50%;transform:translate(-50%)}.table-overlay{z-index:4;background:#fffffff7;border:1px solid #ccc;border-radius:8px;flex-direction:column;align-items:center;gap:.6rem;padding:1rem;display:flex;position:absolute;inset:.5rem;overflow:auto}.table-overlay h2{text-align:center;margin:0;font-size:1.15rem}.table-overlay-note{text-align:center;margin:0}.table-moon{color:#8a1c13;font-weight:600}.table-overlay-buttons{gap:.75rem;display:flex}.table-actions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;display:grid}.table-status{white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.table-pass-controls{white-space:nowrap;justify-content:flex-end;align-items:center;gap:.75rem;width:13rem;display:flex}.table-hand-row{justify-content:center;align-items:flex-end;display:flex;overflow:hidden}.table-hand-row .hf-hand{flex-wrap:nowrap;padding-top:28px}.table-self{box-sizing:border-box;white-space:nowrap;border:2px solid #0000;border-radius:999px;justify-self:center;align-items:center;gap:.75rem;max-width:100%;padding:0 .75rem;display:flex}.table-modal{z-index:30;background:#00000059;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.table-modal-panel{box-sizing:border-box;background:#fff;border-radius:8px;width:min(100%,40rem);max-height:85vh;padding:1rem;overflow:auto}.table-modal-header{justify-content:space-between;align-items:center;display:flex}.table-modal-header h2{margin:0;font-size:1.15rem}.table-modal-note{color:#555;margin:.5rem 0;font-size:.875rem}.table-score-scroll{max-width:100%;overflow-x:auto}.table-score{border-collapse:collapse;font-variant-numeric:tabular-nums}.table-score th,.table-score td{text-align:right;white-space:nowrap;border-bottom:1px solid #e3e3e3;padding:.25rem .75rem}.table-score th:first-child,.table-score td:first-child{text-align:left}.table-score tfoot th,.table-score tfoot td{border-top:2px solid #999;border-bottom:none;font-weight:700}.table-score .is-leader{background:#fff6d6}.table-leader-mark{font-size:.8rem;font-weight:400}
