.stage{max-width:760px;margin-inline:auto}.turnbar{--tb-msg-lines:3;--tb-st-lines:1}.table-surface{padding:12px;border-radius:8px;background:#28654c url("assets/felt.webp") center/420px;color:#fff8ea;outline:none}.table-surface:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.players{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.seat{display:grid;gap:3px;min-width:0;border:1px solid #ffffff65;border-radius:6px;padding:7px;font-size:14px}.seat b{overflow-wrap:anywhere;font-size:14px}.seat small{font-size:12px}.seat.active{outline:2px solid #f5d66f;outline-offset:1px}.seat.active b::before{content:"▶ "}.scores{display:flex;gap:12px;flex-wrap:wrap;justify-content:space-between;margin:10px 0;font-size:14px}.scores b{font-size:18px}
.piles{display:flex;align-items:center;justify-content:center;gap:14px;padding:8px 0}.pile{display:grid;justify-items:center;gap:5px;width:90px;min-height:130px;background:transparent;color:inherit;border:2px solid transparent;border-radius:8px;padding:5px;cursor:pointer;font:inherit}.pile svg{display:block;width:57px;height:80px;filter:drop-shadow(0 1px 1px #0004)}.pile span{font-size:14px}.pile strong{font-size:14px}.pile:enabled{border-color:#f5d66f;border-style:dashed}.pile:disabled{cursor:default;opacity:1}.pile.can-discard{background:#f5d66f25}.pile:focus-visible{outline:3px solid #f5d66f;outline-offset:2px}.pile-info{max-width:154px;font-size:14px;display:grid;gap:8px}.pile-info .frozen::before{content:"❄ "}.pile-info .opening-ready{color:#f5d66f}
.melds{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start;margin:8px 0}.team-melds{min-width:0;padding:8px;border:1px solid #ffffff5c;border-radius:6px}.team-melds.own{border:2px solid #f5d66f80}.team-melds h3{margin:0 0 8px;font-size:14px}.team-melds h3 small{display:block;font-size:12px;font-weight:400;margin-top:3px}.meld-grid{display:flex;gap:7px;flex-wrap:wrap}.meld-row,.target-row{display:grid;justify-items:center;gap:5px;min-width:70px;max-width:120px;min-height:115px;border:1px solid #ffffff80;background:#ffffff12;color:inherit;border-radius:6px;padding:6px;font:inherit;cursor:pointer}.meld-row:disabled{cursor:default;opacity:1}.meld-row:enabled,.target-row{border:2px dashed #f5d66f}.meld-row.canasta{border:2px solid #f5d66f}.meld-cards{display:flex;min-height:53px;justify-content:center;align-items:center;padding-right:14px}.meld-cards svg{width:38px;height:53px;margin-right:-14px}.meld-count{font-size:14px}.meld-rank{font-size:17px;font-weight:800}.meld-kind{font-size:12px;min-height:1.4em}.empty-meld{margin:8px 0;font-size:14px;line-height:1.5;color:#fff8eacc}.progress-dots{display:flex;gap:3px}.progress-dots i{width:5px;height:5px;border-radius:50%;border:1px solid #fff8eaaa}.progress-dots i.filled{background:#f5d66f;border-color:#f5d66f}
.hand-area{margin-top:14px;padding-top:10px;border-top:1px solid #ffffff5c}.hand-area h3{font-size:15px;margin:0 0 8px}.hand{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;min-height:90px;padding-top:6px}.card{padding:0;border:2px solid transparent;border-radius:7px;background:transparent;width:56px;min-height:78px;color:inherit;cursor:pointer;position:relative;transition:transform .14s}.card svg{display:block;width:52px;height:73px;filter:drop-shadow(0 1px 1px #0003)}.card.selected{border-color:#f5d66f;transform:translateY(-5px);background:#f5d66f25}.card.selected::after{content:"✓";position:absolute;right:-5px;bottom:-3px;background:#f5d66f;color:#173a2d;width:20px;height:20px;line-height:20px;border-radius:50%;font-weight:800}.card.planned{opacity:.45}.card:disabled{cursor:default}.card:focus-visible{outline:3px solid #f5d66f;outline-offset:2px}.card.new-card{animation:card-arrive .25s ease-out}.hidden-hand{display:flex;align-items:center;gap:12px;font-size:15px}.hidden-hand svg{width:54px;height:76px}.selection-tools{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:12px 0}.selection{font-size:14px}.selection-tools .btn{min-height:44px;font-size:16px}.table-surface .btn{border-color:#fff8ea;background:#fff8ea;color:#193b2e}.table-surface .btn.sub{background:transparent;color:#fff8ea}.table-surface .btn:disabled{opacity:.55;border-style:dashed}.targets{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.target-hint{font-size:14px;text-align:center;min-height:1.5em}.plan-controls{display:flex;justify-content:center;margin:6px 0}.plan{margin-top:8px}.plan-header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:14px}.plan-rows{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.planned-row{position:relative;max-width:100%;background:#fff8ea;color:#193b2e;border:2px solid #f5d66f;border-radius:6px;padding:8px 28px 8px 8px;cursor:pointer;display:flex;align-items:center;gap:5px;flex-wrap:wrap;font:inherit}.planned-row svg{width:38px;height:53px}.planned-row b{font-size:16px}.planned-row::after{content:"×";position:absolute;right:8px;top:8px;font-size:20px}.plan:not([hidden]){border:1px dashed #f5d66f;border-radius:6px;padding:10px}.primary-actions{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:10px}.primary-actions .btn{min-height:48px;font-size:17px}.primary-actions .btn:not(.sub):enabled{background:#f5d66f;color:#193b2e;border-color:#f5d66f}.options{margin-top:12px}.options summary{padding:8px 0;font-size:15px}.controls{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:10px 0}.btn{min-height:44px}.field{min-width:0}select{font:inherit;font-size:16px;color:var(--ink);background:var(--surface,#fff);border:1px solid var(--line-strong);border-radius:6px;min-height:44px;padding:8px 30px 8px 10px;max-width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.record-wrap{overflow-x:auto}.record-table{width:100%;border-collapse:collapse;font-size:14px}.record-table th,.record-table td{padding:8px 6px;border:1px solid var(--line);text-align:center}.result{padding:16px;margin-top:12px;border:2px solid #f5d66f;border-radius:6px;background:var(--surface,#fff);color:var(--ink)}.result h2{font-size:21px;margin-top:0}.result .record-table th,.result .record-table td{border-color:var(--line)}.result .winner{font-weight:800;background:var(--accent-soft)}.result .btn{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}.result .btn.sub{color:var(--ink);background:var(--surface,#fff);border-color:var(--line-strong)}#handoff{text-align:center;padding:20px}#stats{font-size:14px}.article table{width:100%;border-collapse:collapse;overflow-wrap:anywhere}.article td,.article th{border:1px solid var(--line);padding:8px}.article img{display:block;width:100%;height:auto;max-width:640px;margin:18px auto}.article a{overflow-wrap:anywhere}.article figcaption{font-size:15px;line-height:1.6}.flying-card{position:fixed;width:50px;height:70px;pointer-events:none;z-index:99999;filter:drop-shadow(0 2px 3px #0004)}.flying-card svg{width:50px;height:70px}.flying-card b{position:absolute;right:-10px;top:-8px;background:#f5d66f;color:#193b2e;border-radius:12px;padding:3px 6px}.pulse{animation:meld-pulse .3s ease-out}@keyframes card-arrive{from{transform:rotateY(80deg);opacity:.5}to{transform:rotateY(0);opacity:1}}@keyframes meld-pulse{from{box-shadow:0 0 0 4px #f5d66f}to{box-shadow:0 0 0 0 transparent}}
@media(min-width:700px){.turnbar{--tb-msg-lines:2}.melds{gap:12px}.hand{gap:10px}.card{width:62px;min-height:87px}.card svg{width:58px;height:81px}.piles{gap:22px}}@media(max-width:480px){.table-surface{padding:10px}.players{gap:4px}.seat{padding:5px;font-size:12px}.seat b{font-size:12px}.seat small{font-size:11px}.melds{gap:7px}.team-melds{padding:6px}.meld-row,.target-row{min-width:65px;max-width:90px;min-height:107px;padding:5px}.meld-cards svg{width:34px;height:48px}.meld-count{font-size:13px}.meld-kind{font-size:11px}.pile{width:75px;min-height:126px}.pile-info{max-width:110px;font-size:13px}.piles{gap:10px}.pile span,.pile strong{font-size:13px}.hand{gap:7px}.card{width:52px;min-height:73px}.card svg{width:48px;height:67px}.record-table{font-size:12px}.record-table th,.record-table td{padding:6px 4px}.article th,.article td{padding:5px;font-size:14px}}
@media(prefers-reduced-motion:reduce){.card{transition:none}.card.new-card,.pulse{animation:none}}

/* Keep every public meld's rank, count and type visible in compact rows. */
.meld-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:6px}
.meld-row{grid-template-columns:60px minmax(0,1fr);grid-template-areas:"cards rank" "kind kind";align-items:center;gap:3px 5px;justify-items:start;min-width:0;max-width:none;width:100%;min-height:70px;padding:6px;text-align:left}
.meld-cards{grid-area:cards;min-height:39px;padding-right:12px;justify-content:start}
.meld-cards svg{width:28px;height:39px;margin-right:-12px}
.meld-rank{grid-area:rank;font-size:18px;line-height:1.25}.meld-count{display:block;font-size:14px;font-weight:400}
.meld-kind{grid-area:kind;font-size:14px;line-height:1.3;min-height:0}.meld-row.canasta .meld-kind{font-weight:700;color:#f5d66f}
.board-jumps{display:flex;gap:8px;position:sticky;top:0;z-index:2;padding:5px 0;background:#24563f}
.board-jumps a{display:flex;align-items:center;justify-content:center;flex:1;min-height:44px;border:1px solid #fff8ea80;border-radius:5px;color:#fff8ea;font-size:15px;text-decoration:none}
#melds,#hand-area{scroll-margin-top:58px}.site-header .language-link{margin-left:auto;font-size:16px}
.article img{max-width:460px}.article figcaption{font-size:16px}
@media(max-width:480px){.meld-grid{grid-template-columns:1fr}.meld-row{min-width:0;max-width:none;min-height:70px;padding:5px}.meld-cards svg{width:28px;height:39px}.meld-count,.meld-kind{font-size:14px}}

.article figure{margin:20px 0}
