:root{color-scheme:dark;--bg: #141519;--bg-radial: radial-gradient(circle at top left, rgba(75, 198, 162, .2), transparent 32%), radial-gradient(circle at 85% 10%, rgba(168, 85, 247, .18), transparent 30%), linear-gradient(135deg, #15161c 0%, #0f1115 100%);--panel: rgba(27, 30, 38, .92);--panel-strong: rgba(34, 38, 49, .96);--text: #f6f2ea;--muted: #a8b0bf;--soft: #6f7a8c;--line: rgba(255, 255, 255, .11);--accent: #4bc6a2;--accent-strong: #5ee9bf;--danger: #ff6b6b;--gold: #f2c15f;--shadow: 0 24px 70px rgba(0, 0, 0, .34)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text)}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.56}.set-app{min-height:100vh;background:var(--bg-radial);padding:clamp(1rem,3vw,2rem)}.set-app.in-game{position:relative;height:100vh;height:100dvh;min-height:0;overflow:hidden;padding:clamp(.55rem,1.4vw,1rem)}.game-shell{width:min(1180px,100%);margin:0 auto;display:flex;flex-direction:column;gap:1rem}.in-game .game-shell{height:100%;min-height:0;gap:.65rem}.hero,.panel,.table-panel{border:1px solid var(--line);background:var(--panel);border-radius:28px;box-shadow:var(--shadow)}.hero{padding:clamp(1rem,3vw,1.35rem);display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;overflow:hidden}.in-game .hero{flex:0 0 auto;align-items:center;border-radius:20px;padding:.62rem .85rem}.hero h1,.panel h2,.table-panel h2{margin:0}.hero h1{font-size:clamp(3rem,9vw,5.8rem);line-height:.85;letter-spacing:-.08em}.in-game .hero h1{font-size:clamp(1.9rem,5vw,3.2rem)}.in-game .hero-copy{display:none}.gameplay-hero{min-height:0}.gameplay-topbar{display:flex;align-items:center;gap:.85rem;min-width:0}.gameplay-topbar>strong{font-size:clamp(1.3rem,3vw,1.8rem);line-height:1;letter-spacing:-.06em}.gameplay-chip-row{display:flex;align-items:center;gap:.45rem;min-width:0;flex-wrap:wrap}.gameplay-chip-row span{border:1px solid var(--line);border-radius:999px;background:#ffffff0e;color:var(--muted);padding:.28rem .48rem;font-size:.75rem;font-weight:900;white-space:nowrap}.hero-copy,.empty-state,.room-code-card p,.room-actions p{color:var(--muted);margin:0}.hero-copy{max-width:560px;margin-top:.75rem}.eyebrow{margin:0 0 .25rem;color:var(--accent-strong);text-transform:uppercase;letter-spacing:.12em;font-size:.76rem;font-weight:900}.connection-pill{display:inline-flex;align-items:center;gap:.45rem;border:1px solid var(--line);border-radius:999px;padding:.45rem .7rem;color:var(--muted);text-transform:capitalize;white-space:nowrap}.connection-pill span{width:.58rem;height:.58rem;border-radius:999px;background:var(--gold)}.connection-pill.connected span{background:var(--accent);box-shadow:0 0 14px #4bc6a2cc}.connection-pill.disconnected span{background:var(--danger)}.notice{margin:0;border:1px solid rgba(242,193,95,.32);background:#f2c15f1f;color:#ffe2a0;border-radius:18px;padding:.8rem 1rem}.in-game .notice{position:fixed;left:50%;top:.8rem;z-index:20;width:min(420px,calc(100vw - 1.5rem));transform:translate(-50%);pointer-events:none;text-align:center}.lobby-grid,.game-grid{display:grid;gap:1rem}.lobby-grid{grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr)}.game-grid{grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start}.in-game .game-grid{flex:1 1 auto;min-height:0;overflow:hidden;align-items:stretch}.panel,.table-panel{padding:clamp(1rem,3vw,1.2rem)}.table-panel{position:relative;overflow:hidden}.in-game .table-panel{display:flex;flex-direction:column;min-height:0}.panel-header{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.85rem}.field{display:flex;flex-direction:column;gap:.45rem;color:var(--muted);font-weight:800}.field input{border:1px solid var(--line);background:#ffffff12;color:var(--text);border-radius:16px;padding:.85rem .95rem;outline:none}.field input:focus{border-color:#4bc6a2b3;box-shadow:0 0 0 4px #4bc6a21f}.button-row,.join-box,.room-actions,.extra-card-row,.table-meta{display:flex;gap:.7rem;align-items:center}.button-row{flex-wrap:wrap;margin-top:1rem}.join-box{margin-top:1rem;align-items:flex-end}.join-box .field{flex:1}.primary-button,.secondary-button{border:1px solid transparent;border-radius:999px;padding:.82rem 1rem;color:var(--text);font-weight:900;transition:transform .16s ease,border-color .16s ease,background .16s ease}.primary-button{background:linear-gradient(135deg,var(--accent),#3386f2)}.secondary-button{background:#ffffff12;border-color:var(--line)}.secondary-button.voted{border-color:#4bc6a294;color:var(--accent-strong)}.primary-button:hover:not(:disabled),.secondary-button:hover:not(:disabled),.public-room-row:hover:not(:disabled){transform:translateY(-1px)}.primary-button.slim{min-width:116px}.public-room-list,.player-list,.side-panel{display:flex;flex-direction:column;gap:.7rem}.in-game .side-panel{min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.24) transparent}.in-game .side-panel::-webkit-scrollbar{width:8px}.in-game .side-panel::-webkit-scrollbar-track{background:transparent}.in-game .side-panel::-webkit-scrollbar-thumb{background:#ffffff3d;border-radius:999px}.public-room-row,.player-row{border:1px solid var(--line);background:#ffffff0e;color:var(--text);border-radius:18px;padding:.75rem;display:flex;justify-content:space-between;gap:1rem;text-align:left}.public-room-row span,.player-row span{display:flex;flex-direction:column;gap:.14rem}.public-room-row em,.player-row em{color:var(--muted);font-style:normal;font-size:.82rem;text-transform:capitalize}.room-lobby{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,360px);gap:1rem;align-items:stretch}.room-code-card{border:1px solid rgba(75,198,162,.24);background:linear-gradient(135deg,#4bc6a221,#a855f71a);border-radius:24px;padding:1rem}.room-code-card h2{margin:.15rem 0;font-size:clamp(3rem,12vw,6rem);letter-spacing:.08em}.room-actions{grid-column:1 / -1;justify-content:space-between;border-top:1px solid var(--line);padding-top:1rem}.game-status-bar{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1rem}.in-game .game-status-bar,.in-game .extra-card-row{flex:0 0 auto}.table-meta{flex-wrap:wrap;justify-content:flex-end}.table-meta span,.extra-card-row span,.event-panel span{border:1px solid var(--line);border-radius:999px;color:var(--muted);padding:.35rem .55rem;font-size:.82rem}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:clamp(.55rem,1.5vw,.85rem)}.in-game .card-grid{flex:1 1 auto;min-height:0;align-content:center;grid-auto-rows:minmax(0,1fr)}.set-card-button{position:relative;border:2px solid transparent;background:#ffffff0e;border-radius:18px;padding:.35rem;min-height:118px;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease}.in-game .set-card-button{min-height:0}.set-card-button img{width:100%;height:100%;display:block;object-fit:contain;border-radius:13px;-webkit-user-select:none;user-select:none}.set-card-button.selected{transform:translateY(-2px);border-color:var(--accent-strong);box-shadow:0 0 0 4px #4bc6a21f,0 14px 24px #00000038;background:#4bc6a21a}.set-card-button:hover:not(:disabled){transform:translateY(-1px);border-color:#fff3;box-shadow:0 10px 18px #0000002e;background:#ffffff14}.set-card-button.selected:hover:not(:disabled){transform:translateY(-2px);border-color:var(--accent-strong);box-shadow:0 0 0 4px #4bc6a21f,0 14px 24px #00000038;background:#4bc6a21a}.set-card-button.dealt{animation:deal-card .54s cubic-bezier(.19,1,.22,1) both;animation-delay:var(--deal-delay, 0ms)}.set-card-button.pending{filter:saturate(1.08) brightness(1.06)}.set-card-button.rejected,.set-card-button.selected.rejected,.set-card-button.rejected:hover:not(:disabled),.set-card-button.selected.rejected:hover:not(:disabled){border-color:var(--danger);background:#ff6b6b2e;box-shadow:0 0 0 4px #ff6b6b29,0 14px 24px #00000038;animation:rejected-card .52s ease both}.extra-card-row{justify-content:space-between;margin-top:1rem;border-top:1px solid var(--line);padding-top:1rem}.mobile-score-strip,.floating-deck-button,.mobile-score-drawer-backdrop{display:none}.mobile-score-strip{width:100%;border:1px solid rgba(75,198,162,.26);border-radius:17px;background:linear-gradient(135deg,#4bc6a21c,#3386f20f),#ffffff0b;color:var(--text);padding:.42rem;gap:.38rem;overflow:hidden;box-shadow:inset 0 1px #ffffff0f}.mobile-score-strip span{flex:1 1 0;min-width:0;border:1px solid rgba(255,255,255,.1);border-radius:13px;background:#14151966;padding:.34rem .42rem;display:flex;align-items:center;justify-content:space-between;gap:.35rem}.mobile-score-strip strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem}.mobile-score-strip em{color:var(--accent-strong);font-style:normal;font-weight:950}.mobile-score-strip .is-you{border-color:#4bc6a26b;background:#4bc6a21f}.mobile-score-strip .score-more{flex:0 0 auto;color:var(--muted)}.floating-deck-button{position:absolute;right:.7rem;bottom:.7rem;z-index:8;border:1px solid rgba(75,198,162,.36);border-radius:18px;background:linear-gradient(135deg,#222631f5,#141519f5),#ffffff14;color:var(--text);padding:.42rem .52rem;align-items:center;gap:.3rem;box-shadow:0 18px 34px #00000059}.floating-deck-button strong{font-size:.95rem;line-height:1}.floating-deck-button em{color:var(--muted);font-style:normal;font-size:.7rem;font-weight:900}.floating-deck-button.voted{border-color:#f2c15f80;color:#ffe2a0}.mini-deck-pile{position:relative;width:31px;height:24px;display:block}.mini-deck-pile i{position:absolute;inset:0;border:1px solid rgba(255,255,255,.18);border-radius:6px;background:radial-gradient(circle at 28% 30%,rgba(75,198,162,.48),transparent 35%),#242936}.mini-deck-pile i:nth-child(1){transform:translate(5px,-4px) rotate(6deg);opacity:.48}.mini-deck-pile i:nth-child(2){transform:translate(2px,-2px) rotate(2deg);opacity:.72}.mini-deck-pile.empty{opacity:.32;filter:grayscale(1)}.mobile-score-drawer-backdrop{position:fixed;inset:0;z-index:30;background:#06080c7a;align-items:flex-end;padding:.7rem}.mobile-score-drawer{width:min(100%,460px);margin:0 auto;border:1px solid var(--line);border-radius:24px;background:#1b1e26fa;box-shadow:0 28px 70px #00000075;padding:.85rem;max-height:min(72vh,520px);overflow-y:auto;animation:score-drawer-in .2s ease both}.mobile-score-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.mobile-score-drawer-header h2{margin:0}.mobile-score-drawer-header button{width:2.2rem;height:2.2rem;border:1px solid var(--line);border-radius:999px;background:#ffffff0f;color:var(--muted);font-weight:950}.player-board.compact{padding:0;border:0;background:transparent;box-shadow:none}.player-board.compact .panel-header{display:none}.deck-control{display:flex;align-items:center;gap:.7rem}.deck-pile{position:relative;width:54px;height:40px;flex:0 0 auto}.deck-pile span{position:absolute;inset:0;border:1px solid rgba(255,255,255,.2);border-radius:9px;background:linear-gradient(135deg,#ffffff1f,#ffffff05),radial-gradient(circle at 28% 30%,rgba(75,198,162,.42),transparent 34%),#242936;box-shadow:0 10px 20px #0000003d}.deck-pile span:nth-child(1){transform:translate(8px,-6px) rotate(5deg);opacity:.52}.deck-pile span:nth-child(2){transform:translate(4px,-3px) rotate(2deg);opacity:.78}.deck-pile span:nth-child(3){transform:translate(0)}.deck-pile.empty{opacity:.32;filter:grayscale(1)}.player-row.you{border-color:#4bc6a27a;background:#4bc6a217}.player-row.recent-collector{border-color:#f2c15f94;animation:score-pulse .9s ease both}.player-row>.score-stack{align-items:flex-end;justify-content:center;color:var(--accent-strong);font-weight:950;font-size:1.3rem}.score-stack{min-width:58px}.score-stack strong{line-height:1}.score-pile{position:relative;width:34px;height:18px;margin-bottom:.12rem}.score-pile i{position:absolute;inset:0;border-radius:5px;border:1px solid rgba(255,255,255,.18);background:linear-gradient(135deg,rgba(255,255,255,.12),transparent),#303746}.score-pile i:nth-child(1){transform:translate(-5px,2px) rotate(-8deg)}.score-pile i:nth-child(2){transform:translate(0) rotate(1deg)}.score-pile i:nth-child(3){transform:translate(5px,2px) rotate(8deg)}.player-row.recent-collector .score-pile{animation:score-pile-catch .75s ease both}.event-panel{gap:.45rem}.event-panel strong{line-height:1.35}.collection-float{position:absolute;right:1rem;top:5.15rem;z-index:5;pointer-events:none;display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;animation:collection-fly 1.05s cubic-bezier(.2,.9,.2,1) both}.collection-float-cards{position:relative;width:116px;height:62px}.collection-float img{position:absolute;width:70px;height:48px;object-fit:contain;border-radius:8px;filter:drop-shadow(0 12px 20px rgba(0,0,0,.35));transform:translate(var(--float-offset, 0)) rotate(var(--float-rotation, 0deg))}.collection-float span{border:1px solid rgba(242,193,95,.32);border-radius:999px;background:#141519cc;color:#ffe2a0;padding:.32rem .55rem;font-size:.78rem;font-weight:900;box-shadow:0 10px 24px #00000038}@keyframes rejected-card{0%,to{transform:translate(0)}20%{transform:translate(-8px) rotate(-1deg)}40%{transform:translate(8px) rotate(1deg)}60%{transform:translate(-5px) rotate(-.5deg)}80%{transform:translate(5px) rotate(.5deg)}}@keyframes deal-card{0%{opacity:0;transform:translate(34px,-46px) rotate(9deg) scale(.72);filter:blur(1px)}72%{opacity:1;transform:translate(-2px,2px) rotate(-1deg) scale(1.02);filter:blur(0)}to{opacity:1;transform:translate(0) rotate(0) scale(1)}}@keyframes collection-fly{0%{opacity:0;transform:translate(-42vw,24vh) scale(1.05)}16%{opacity:1}72%{opacity:1;transform:translate(-8px,8px) scale(.78)}to{opacity:0;transform:translate(34px,-14px) scale(.46)}}@keyframes score-pulse{0%,to{background:#ffffff0e}44%{background:#f2c15f24}}@keyframes score-pile-catch{0%{transform:translateY(-8px) scale(.84);filter:brightness(1.6)}to{transform:translateY(0) scale(1);filter:brightness(1)}}@keyframes score-drawer-in{0%{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:900px){.lobby-grid,.game-grid,.room-lobby{grid-template-columns:1fr}.in-game .game-grid{grid-template-rows:minmax(0,1fr)}.side-panel{order:-1}.in-game .side-panel{display:none}.card-grid{grid-template-columns:repeat(3,minmax(88px,1fr))}.in-game .game-status-bar,.in-game .extra-card-row{display:none}.in-game .mobile-score-strip{display:flex;flex:0 0 auto;margin-bottom:.5rem}.in-game .floating-deck-button{display:inline-flex}.mobile-score-drawer-backdrop{display:flex}}@media(max-width:620px){.set-app{padding:.7rem}.set-app.in-game{padding:.45rem}.hero,.game-status-bar,.room-actions,.join-box{flex-direction:column;align-items:stretch}.in-game .hero{flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;padding:.46rem .55rem;border-radius:17px}.gameplay-topbar{gap:.46rem}.gameplay-chip-row{gap:.28rem}.gameplay-chip-row span{padding:.22rem .36rem;font-size:.66rem}.in-game .connection-pill{padding:.28rem .44rem;font-size:.68rem}.in-game .connection-pill span{width:.46rem;height:.46rem}.in-game .table-panel{padding:.5rem;border-radius:20px}.connection-pill,.table-meta{align-self:flex-start}.card-grid{gap:.45rem}.set-card-button{min-height:90px;border-radius:14px}.in-game .set-card-button{min-height:0}.collection-float{top:5.4rem;right:.8rem}.in-game .collection-float{top:5.9rem;right:.7rem}.mobile-score-strip{padding:.34rem;gap:.28rem;border-radius:14px}.mobile-score-strip span{padding:.28rem .32rem;border-radius:11px}.mobile-score-strip strong{font-size:.7rem}.mobile-score-strip em{font-size:.78rem}.floating-deck-button{right:.55rem;bottom:.55rem;border-radius:15px;padding:.34rem .42rem}.mini-deck-pile{width:27px;height:21px}}
