:root{ --cream:#FAF7EF; --ink:#22201B; --gold:#C9A24B; --ghost-bd:#C9C3B2; --input-bd:#D8D2C2; --muted:#6E6A5E; --red:#A8322C; }
*{box-sizing:border-box}
body{margin:0;background:linear-gradient(#1F5732,#143B22 55%,#081D10);background-attachment:fixed;color:var(--ink);
  font-family:Georgia,"Times New Roman",Times,serif;
  padding:max(10px,env(safe-area-inset-top)) 12px calc(24px + env(safe-area-inset-bottom));}
.wrap{max-width:560px;margin:0 auto}
@media(min-width:680px){.wrap{max-width:660px}}
.masthead{display:flex;justify-content:space-between;align-items:flex-start;padding:6px 0 10px;color:var(--cream)}
.masthead h1{margin:0;font-size:2rem}
.masthead .sub{font-family:ui-monospace,Menlo,monospace;font-size:.62rem;letter-spacing:.18em;color:var(--gold)}
.mast-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.panel{background:var(--cream);color:var(--ink);border-radius:14px;padding:16px;margin-bottom:12px;box-shadow:0 10px 24px rgba(0,0,0,0.4)}
.panel h2{margin:.2rem 0 .5rem;font-size:1.1rem}
.panel.center{text-align:center}
label{display:block;font-size:14px;font-weight:700;margin:14px 0 6px}
input,textarea{width:100%;padding:10px 12px;border:1.5px solid var(--input-bd);border-radius:9px;font:inherit;font-size:15px;background:#fff}
input.code{width:6.5rem;text-transform:uppercase;letter-spacing:.2em;text-align:center}
.joinrow{display:flex;gap:8px;align-items:center}
.joinrow textarea{flex:1;resize:none}
.segrow{display:flex;gap:6px;margin:6px 0;flex-wrap:wrap}
.seg{flex:1;min-width:44px;padding:8px 10px;border-radius:9px;border:1.5px solid var(--ghost-bd);background:transparent;color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
.seg.on{background:var(--gold);border-color:var(--gold);font-weight:700}
.seg.strain{font-size:17px}
.seg.redsuit{color:var(--red)}
.seg:disabled{opacity:.35;cursor:default}
.primary{display:block;width:100%;padding:10px 16px;margin:14px 0 2px;border:none;border-radius:10px;background:var(--ink);color:var(--cream);font:inherit;font-size:15px;font-weight:600;cursor:pointer}
.primary:disabled{opacity:.4}
.ghost{padding:8px 14px;border-radius:9px;border:1.5px solid var(--ghost-bd);background:transparent;color:var(--ink);font:inherit;font-size:13px;cursor:pointer}
.masthead .ghost{border-color:rgba(250,247,239,.5);color:var(--cream)}
.check{display:flex;gap:.6rem;align-items:flex-start;font-weight:400;margin:14px 0;font-size:14px;line-height:1.5}
.check input{width:auto;margin-top:.25rem}
.hint{color:var(--muted);font-size:12px;line-height:1.5}
.rules{margin-top:0;font-size:14px;line-height:1.5}
.err{color:var(--red);font-weight:600;font-size:14px}
.tag{display:inline-block;background:#E7DFC9;color:#6b5f3c;font-family:ui-monospace,Menlo,monospace;font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;padding:.2rem .5rem;border-radius:4px}
.plist{margin:.3rem 0;padding-left:1.2rem;font-size:14px}
.scorebar{display:flex;gap:6px;margin-bottom:10px}
.scorecell{flex:1;background:rgba(8,29,16,.55);border-radius:10px;padding:6px 8px;color:var(--cream);text-align:center}
.scorecell .lab{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.auction{width:100%;border-collapse:collapse;font-size:14px;margin:.4rem 0}
.auction th{border-bottom:1.5px solid var(--ghost-bd);padding:4px;font-size:12px;letter-spacing:.06em}
.auction th.turn{background:var(--gold);border-radius:6px 6px 0 0}
.auction td{text-align:center;padding:4px;border-bottom:1px solid #eee6d2}
.bidbox{margin:.6rem 0}
.hand{display:flex;flex-wrap:wrap;gap:4px;margin:.4rem 0;align-items:center}
.handrow{margin-top:.6rem}
.handrow .lab{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.card{width:44px;height:62px;border-radius:7px;border:1.5px solid #b9b09a;background:#fff;font:inherit;font-size:.95rem;font-weight:700;cursor:pointer;line-height:1.1;box-shadow:0 1px 2px rgba(0,0,0,.2);padding:2px}
.card.small{width:38px;height:53px;font-size:.8rem}
.card.tiny{width:26px;height:37px;font-size:.6rem;border-radius:5px;padding:1px}
.card.dis{opacity:.5;cursor:default}
.card.back{background:repeating-linear-gradient(45deg,#7a2c26,#7a2c26 4px,#8d3a33 4px,#8d3a33 8px)}
.card.back.dim{opacity:.5}
.card .red{color:var(--red)} .card .blk{color:#20242c}
.tablegrid{display:grid;grid-template-areas:". n ." "w mid e";grid-template-columns:1fr 1.4fr 1fr;gap:4px;margin:.5rem 0}
.pos.n{grid-area:n}.pos.w{grid-area:w}.pos.e{grid-area:e}.pos.mid{grid-area:mid}
.pname{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.tinyhand{gap:2px}
.trickarea{position:relative;min-height:120px;background:rgba(20,59,34,.12);border-radius:10px;display:grid;place-items:center;padding:6px}
.trickcard{position:absolute}
.tc0{top:4px;left:50%;transform:translateX(-50%)}
.tc1{right:8px;top:50%;transform:translateY(-50%)}
.tc2{bottom:4px;left:50%;transform:translateX(-50%)}
.tc3{left:8px;top:50%;transform:translateY(-50%)}
.wonby{font-size:11px;color:var(--muted)}
.contractline{font-size:14px;margin-bottom:4px}
.coach{background:#EEF3FF;border-left:3px solid #4A6FA5;color:#2C3E57;padding:.5rem .7rem;border-radius:6px;font-size:14px;line-height:1.45}
.breakdown{margin:.4rem 0;padding-left:1.2rem;font-size:14px}
.sheet{width:100%;border-collapse:collapse;font-size:13px;margin:.5rem 0}
.sheet th,.sheet td{padding:4px;border-bottom:1px solid #eee6d2;text-align:left}
.cutrow{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:.6rem 0}
.cutslot{display:flex;flex-direction:column;align-items:center;gap:4px}
.cutname{font-size:11px;font-weight:700;color:var(--muted)}
.cutval{font-size:14px;font-weight:700}
.chatbox .chatlog{max-height:8em;overflow-y:auto;font-size:.88rem;margin-bottom:.4rem}
.footrow{display:flex;gap:8px;justify-content:flex-end;margin:8px 0}
