:root{--chrome: #1b1626;--chrome-2: #261f36;--line: #3a3150;--felt: #0e4a55;--felt-deep: #0a343d;--ivory: #fbf6e8;--ink: #1d1b26;--text: #f3eee2;--muted: #b3aac4;--marigold: #f2a81d;--vermilion: #c2362b;--good: #5ccf9a;--card-w: 56px;--card-h: 80px;--overlap: -28px;--font-ui: "Bricolage Grotesque", system-ui, -apple-system, "Segoe UI", sans-serif;--font-card: "Fraunces", Georgia, serif}*{box-sizing:border-box}html,body{margin:0;background:var(--chrome);color:var(--text);font-family:var(--font-ui);-webkit-tap-highlight-color:transparent}body{min-height:100dvh}button,input{font:inherit;color:inherit}button{cursor:pointer;background:var(--chrome-2);border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-height:44px}button:hover:not(:disabled){border-color:var(--marigold)}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible{outline:3px solid var(--marigold);outline-offset:2px}button.primary{background:var(--marigold);color:#2a1c00;border-color:var(--marigold);font-weight:700}button.declare{background:transparent;border-color:var(--marigold);color:var(--marigold);font-weight:700}button.danger-btn{background:var(--vermilion);border-color:var(--vermilion);color:#fff;font-weight:700}button.link{background:none;border:none;color:var(--muted);text-decoration:underline;padding:8px;min-height:36px}button.link.danger{color:#ff9a8f}input{background:#120f1b;border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px;width:100%}input[type=range]{padding:0;accent-color:var(--marigold)}.muted{color:var(--muted);font-size:.92rem;line-height:1.45}.center-screen{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px 16px;text-align:center}.title{font-family:var(--font-card);font-weight:800;font-size:clamp(2.2rem,8vw,3.6rem);margin:0;letter-spacing:-.02em}.roomcode{color:var(--marigold);letter-spacing:.12em}.sub{margin:0 0 8px;color:var(--muted);max-width:34ch}.panel{background:var(--chrome-2);border:1px solid var(--line);border-radius:16px;padding:18px;width:min(100%,440px);text-align:left;display:flex;flex-direction:column;gap:14px}.panel label{display:flex;flex-direction:column;gap:6px;font-weight:600}.tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tabs button[aria-selected=true]{border-color:var(--marigold);background:#33294a}.code-input{letter-spacing:.25em;text-transform:uppercase;font-weight:800}.linkrow{display:flex;gap:8px}.seatlist{list-style:none;margin:0;padding:0;display:grid;gap:8px}.seatlist li{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.seatlist li.empty{color:var(--muted);border-style:dashed}.seatlist em{color:var(--marigold);font-style:normal;font-size:.85rem}.seatno{width:26px;height:26px;border-radius:50%;background:var(--felt);display:grid;place-items:center;font-weight:800;font-size:.85rem}.game{max-width:980px;margin:0 auto;padding:8px 12px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.topbar{display:flex;align-items:center;gap:14px;font-size:.9rem;color:var(--muted)}.topbar .room{font-weight:800;color:var(--text);letter-spacing:.06em}.topbar .danger{margin-left:auto}.seats{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.seat{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--chrome-2);min-width:128px}.seat .nm{font-weight:700}.seat .meta{grid-column:2;font-size:.78rem;color:var(--muted)}.seat .tag{grid-column:2;font-size:.72rem;color:var(--marigold)}.seat.turn{border-color:var(--marigold);box-shadow:0 0 0 2px var(--marigold),0 0 22px #f2a81d73}.dot{width:9px;height:9px;border-radius:50%;background:#6b6280}.dot.on{background:var(--good)}.banner{padding:12px 14px;border-radius:12px;background:var(--chrome-2);border:1px solid var(--line);font-weight:600;text-align:center}.banner.mine{background:var(--marigold);color:#2a1c00;border-color:var(--marigold)}.table{background:radial-gradient(ellipse at 50% 40%,var(--felt) 0%,var(--felt-deep) 100%);border-radius:22px;border:3px solid #07262d;padding:22px 12px 14px;display:flex;justify-content:center;align-items:flex-end;gap:clamp(14px,6vw,56px);min-height:160px}.pile{display:flex;flex-direction:column;align-items:center;gap:8px}.pile .cap{font-size:.8rem;color:#bfe0e4}.pile button{background:none;border:none;padding:0;position:relative;min-height:0;width:var(--card-w);height:var(--card-h);border-radius:8px}.pile button:not(:disabled):hover .top,.pile button:not(:disabled):hover .stack{transform:translateY(-4px)}.pile button:disabled{opacity:1;cursor:default}.stock .count{position:absolute;bottom:-4px;right:-8px;background:var(--ink);color:var(--ivory);border-radius:10px;font-size:.75rem;padding:1px 7px;border:1px solid var(--line)}.openpile .below{position:absolute;left:-10px;top:4px;transform:rotate(-6deg)}.openpile .top,.stock .stack{position:absolute;left:0;top:0;transition:transform .15s}.card.empty{border:2px dashed rgba(255,255,255,.3);background:transparent;box-shadow:none}.openjoker{outline:3px solid var(--marigold);outline-offset:3px}.card{position:relative;width:var(--card-w);height:var(--card-h);border-radius:8px;background:var(--ivory);color:var(--ink);box-shadow:0 1px #00000040,0 3px 8px #00000059;font-family:var(--font-card);font-weight:800;-webkit-user-select:none;user-select:none;flex:none}.card.red{color:var(--vermilion)}.card .rk{position:absolute;top:4px;left:6px;font-size:1.15rem;line-height:1}.card .su{position:absolute;top:24px;left:6px;font-size:.95rem;line-height:1}.card .big{position:absolute;right:6px;bottom:4px;font-size:1.9rem;line-height:1;opacity:.85}.card.wild{box-shadow:0 0 0 2px var(--marigold),0 3px 10px #f2a81d80}.card .badge{position:absolute;left:0;right:0;bottom:0;background:var(--marigold);color:#2a1c00;font-family:var(--font-ui);font-size:.6rem;font-weight:800;text-align:center;border-radius:0 0 6px 6px;padding:1px 0}.card.joker{display:grid;place-content:center;text-align:center;background:linear-gradient(160deg,#fff4cf,var(--ivory));color:#6a3d00}.card .jk{font-size:1.9rem;line-height:1}.card .jt{font-size:.65rem;font-family:var(--font-ui)}.card.back{background:repeating-linear-gradient(45deg,#5b2a86 0,#5b2a86 6px,#46206b 6px,#46206b 12px);border:3px solid var(--ivory)}.card.small{--card-w: 40px;--card-h: 57px}.card.small .rk{font-size:.9rem;top:3px;left:4px}.card.small .su{font-size:.7rem;top:18px;left:4px}.card.small .big{font-size:1.3rem}.card.small .badge{font-size:.5rem}.card.selected{transform:translateY(-14px);box-shadow:0 0 0 3px var(--marigold),0 8px 14px #00000080}.card.lifted{transform:scale(1.08) rotate(-3deg);box-shadow:0 12px 24px #0000008c}.handwrap{background:var(--chrome-2);border:1px solid var(--line);border-radius:16px;padding:10px 10px 14px}.handtools{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:.9rem;padding:0 4px 6px;flex-wrap:wrap}.hand{display:flex;flex-wrap:wrap;gap:10px 8px;padding-top:16px;min-height:calc(var(--card-h) + 36px);align-items:flex-end}.hand.small{padding-top:0;min-height:0;gap:6px}.group{display:flex;padding:8px 8px 8px calc(8px - var(--overlap) * -1);border:1.5px solid rgba(255,255,255,.22);border-radius:12px;min-height:calc(var(--card-h) + 16px);align-items:flex-end;touch-action:manipulation}.group{padding-left:8px}.group>.slot+.slot{margin-left:var(--overlap)}.group.over{border-color:var(--marigold);background:#f2a81d14}.group.new{border-style:dashed;min-width:90px;align-items:center;justify-content:center}.group .hint{font-size:.72rem;color:var(--muted);max-width:80px;text-align:center;padding:0 6px}.slot{touch-action:none;cursor:grab;flex:none}.hand.locked .slot{cursor:default;touch-action:auto}.hand.small .group{min-height:0;padding:5px}.hand.small{--overlap: -20px}.actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.actions button{flex:1 1 130px;max-width:200px}.actions .link{flex:0 0 auto;min-height:44px}.hintline{margin:0;text-align:center;font-size:.85rem;color:var(--muted);min-height:1.2em}.strip{flex-direction:row;flex-wrap:wrap;align-items:center;width:100%}.declaration,.gameover{width:100%}.declaration h2,.gameover h2{margin:0;font-family:var(--font-card);font-size:1.4rem}.timer{color:var(--marigold);margin-left:8px;font-variant-numeric:tabular-nums}.votes{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.votes li{padding:6px 10px;border-radius:999px;border:1px solid var(--line);font-size:.88rem}.votes .v-accept{border-color:var(--good);color:var(--good)}.votes .v-object{border-color:var(--vermilion);color:#ff9a8f}.row{display:flex;gap:10px}.row button{flex:1}.reveals{display:grid;gap:12px}.rv.win{outline:2px solid var(--marigold);outline-offset:4px;border-radius:10px}.scores{margin:0;padding-left:1.2em}.toasts{position:fixed;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;z-index:20}.toast{background:var(--ink);border:1px solid var(--marigold);padding:10px 16px;border-radius:12px;max-width:min(92vw,420px)}.reconnect{position:fixed;top:0;left:0;right:0;background:var(--vermilion);text-align:center;padding:6px;font-weight:700;z-index:30}@keyframes deal-in{0%{opacity:0;transform:translateY(-160px) scale(.55) rotate(-12deg)}to{opacity:1;transform:none}}.deal-in{animation:deal-in .45s cubic-bezier(.2,.8,.3,1) backwards;animation-delay:calc(var(--i, 0) * 70ms)}@keyframes arrive{0%{opacity:0;transform:translateY(-120px) scale(.7)}to{opacity:1;transform:none}}.arrive{animation:arrive .45s cubic-bezier(.2,.8,.3,1)}@keyframes drop{0%{opacity:0;transform:translateY(-70px) rotate(-10deg) scale(1.1)}to{opacity:1;transform:none}}.card.drop{animation:drop .3s ease-out}@keyframes flip{0%{transform:rotateY(180deg)}to{transform:rotateY(0)}}.pile .card.flip{animation:flip .8s ease-in-out}@keyframes revealflip{0%{transform:rotateY(90deg);opacity:0}to{transform:none;opacity:1}}.reveals .card{animation:revealflip .5s ease-out backwards;animation-delay:var(--d, 0s)}@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.12)}to{transform:scale(1)}}.votes li{animation:pop .3s ease-out}@keyframes confetti-fall{0%{transform:translateY(-20px) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:.9}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:15}.confetti span{position:absolute;top:-20px;border-radius:2px;animation-name:confetti-fall;animation-timing-function:linear;animation-fill-mode:forwards}.topbar .grow{flex:1}.topbar{flex-wrap:wrap}.topbar button,.topbar span{white-space:nowrap}.topbar .danger{margin-left:0}@media (max-width: 480px){.seats{gap:6px}.seat{min-width:0;flex:1 1 calc(50% - 6px);padding:5px 9px}.seat .meta{font-size:.72rem}:root{--card-w: 50px;--card-h: 72px;--overlap: -31px}.card .rk{font-size:1rem}.card .big{font-size:1.6rem}.actions button{flex:1 1 44%;max-width:none}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
