:root{--felt: #0b6623;--felt-dark: #08501b;--card-bg: #fdfdfb;--card-red: #c1272d;--card-black: #1a1a1a;--gold: #e7c66b;--panel: #11321f;--text: #f4f4f0;--muted: #b9c9bd;--legal: #1e7a3c;--illegal: #7a7a7a}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(circle at 50% 35%,var(--felt) 0%,var(--felt-dark) 100%);color:var(--text);min-height:100vh}#app{max-width:920px;margin:0 auto;padding:.5rem .75rem 2rem}.topbar{display:flex;align-items:baseline;gap:.6rem;border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:.4rem;margin-bottom:.6rem}.topbar h1{margin:0;font-size:1.4rem;letter-spacing:.05em;color:var(--gold)}.subtitle{color:var(--muted);font-size:.8rem}.scorepanel{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem;background:var(--panel);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:.6rem .75rem;margin-bottom:.75rem}.scorecell .label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.scorecell .value{font-size:1.1rem;font-weight:600}.scorecell .value.big{font-size:1.5rem}.crosses{color:var(--gold);letter-spacing:.1em}.table{display:grid;grid-template-areas:".    north ." "west center east" ".    south .";grid-template-columns:1fr 1.4fr 1fr;gap:.4rem;align-items:center;min-height:280px;background:#0000001f;border-radius:12px;padding:.6rem;margin-bottom:.75rem}.seat{text-align:center}.seat.north{grid-area:north}.seat.west{grid-area:west}.seat.east{grid-area:east}.center{grid-area:center}.seat .seatname{font-size:.8rem;color:var(--muted);margin-bottom:.2rem}.seat .seatname.active{color:var(--gold);font-weight:700}.seat .seatname.partner:after{content:" ♥";color:var(--card-red)}.backrow{display:flex;justify-content:center;gap:2px;flex-wrap:wrap}.cardback{width:22px;height:32px;border-radius:3px;background:repeating-linear-gradient(45deg,#244,#244 4px,#366 4px 8px);border:1px solid #0a2}.card{position:relative;display:inline-flex;flex-direction:column;justify-content:space-between;width:clamp(58px,15vw,80px);height:clamp(82px,21vw,112px);background:var(--card-bg);border-radius:7px;border:1px solid #999;box-shadow:0 2px 4px #00000059;padding:4px 6px;font-weight:700;font-size:clamp(.95rem,3.6vw,1.2rem);color:var(--card-black);user-select:none}.card.red{color:var(--card-red)}.card .corner-bottom{align-self:flex-end;transform:rotate(180deg)}.center .trick{display:flex;justify-content:center;gap:.4rem;min-height:80px;align-items:center;flex-wrap:wrap}.trickcard{text-align:center}.trickcard .who{font-size:.68rem;color:var(--muted);margin-bottom:2px}.center .trickinfo{font-size:.78rem;color:var(--muted);margin-top:.3rem;min-height:1.1em}.hand-wrap{margin-bottom:.6rem}.hand-label{font-size:.78rem;color:var(--muted);margin-bottom:.25rem}.hand{display:flex;gap:.35rem;flex-wrap:wrap}.card.playable{cursor:pointer;outline:2px solid var(--legal);transition:transform .08s ease}.card.playable:hover{transform:translateY(-6px)}.card.disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.6)}.actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.6rem}button{background:var(--gold);color:#1a1a1a;border:none;border-radius:8px;padding:.5rem .9rem;font-weight:700;cursor:pointer;font-size:.9rem}button.secondary{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,.4)}button:disabled{opacity:.4;cursor:not-allowed}.prompt{font-size:.95rem}.message{background:#e74c3c2e;border:1px solid rgba(231,76,60,.5);border-radius:8px;padding:.4rem .6rem;font-size:.85rem;margin-bottom:.6rem}.handover{background:#e7c66b26;border:1px solid var(--gold);border-radius:8px;padding:.5rem .7rem;margin-bottom:.6rem}.handover h3{margin:0 0 .3rem;color:var(--gold)}.log{font-size:.78rem;color:var(--muted);background:#0000002e;border-radius:8px;padding:.5rem .7rem;max-height:150px;overflow-y:auto}.log div{padding:1px 0;border-bottom:1px solid rgba(255,255,255,.05)}.small{font-size:.75rem}.seatmeta{font-size:.62rem;color:var(--muted);opacity:.7}.tag{font-size:.62rem;background:var(--gold);color:#1a1a1a;border-radius:4px;padding:0 4px;vertical-align:middle}.biddingturn{font-size:.85rem;color:var(--muted);margin-bottom:.3rem}.bigbid{font-size:2rem;font-weight:800;letter-spacing:.02em}.bigbid.bid{color:var(--gold)}.bigbid.pass{color:var(--muted)}.bidreason{font-size:.8rem;color:var(--muted);margin-top:.2rem}.winner-banner{font-size:1.5rem;font-weight:800;color:var(--gold);margin-bottom:.4rem;animation:pop .2s ease}@keyframes pop{0%{transform:scale(.85);opacity:.4}to{transform:scale(1);opacity:1}}.trumpbadge{display:flex;align-items:center;gap:.6rem;background:#1c1c1c;border:2px solid var(--gold);border-radius:10px;padding:.4rem .9rem;margin-bottom:.6rem;font-weight:800}.trumpbadge.red .tb-suit{color:var(--card-red)}.trumpbadge.black .tb-suit{color:#fff}.trumpbadge .tb-label{font-size:.7rem;letter-spacing:.15em;color:var(--gold)}.trumpbadge .tb-suit{font-size:1.4rem}.trumpbadge .tb-x2{background:var(--gold);color:#1a1a1a;border-radius:4px;padding:0 6px;font-size:.9rem}.piles{display:flex;gap:1.5rem;justify-content:center;margin-bottom:.3rem}.pile{cursor:pointer;text-align:center}.pile-stack{display:flex;justify-content:center}.pilecard{width:16px;height:24px;margin-left:-10px;border-radius:2px;background:repeating-linear-gradient(45deg,#244,#244 3px,#366 3px 6px);border:1px solid #0a2}.pilecard:first-child{margin-left:0}.pile-label{font-size:.72rem;color:var(--muted);margin-top:.2rem}.pilehint{text-align:center;font-size:.7rem;color:var(--muted);margin-bottom:.4rem}.lasttrick{background:#00000040;border:1px solid rgba(255,255,255,.15);border-radius:10px;padding:.5rem;margin-bottom:.6rem}.lasttrick-head{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;margin-bottom:.4rem}.sortrow{margin-left:.6rem}button.small{padding:.2rem .5rem;font-size:.72rem;border-radius:6px}button.sortbtn.on{background:var(--gold)}.handoff{text-align:center;background:var(--panel);border:1px solid var(--gold);border-radius:12px;padding:1.4rem 1rem;margin-bottom:.6rem}.handoff-title{font-size:1.2rem;margin-bottom:.3rem}.handoff-sub{color:var(--muted);font-size:.85rem;margin-bottom:.8rem}.setup{background:var(--panel);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:1rem 1.2rem}.setup h2{margin-top:0;color:var(--gold)}.setup .presets{margin-bottom:.8rem}.setuprow{display:flex;align-items:center;justify-content:space-between;max-width:320px;padding:.35rem 0}.seatno em{color:var(--muted);font-style:normal;font-size:.78rem}.seattoggle{min-width:80px}.seattoggle.on{background:var(--gold)}#startmatch{margin-top:.8rem}.bid-current{font-size:1.05rem;margin-bottom:.3rem;color:var(--gold)}.bidcontrols{margin-top:.5rem;align-items:center}.tag.dealer{background:#3a6ea5;color:#fff}#dobid,#dopass{font-size:1rem;padding:.55rem 1.1rem}
