:root{--felt-1:#1f7a4d;--felt-2:#0d4f30;--gold:#e8c86a;--gold-soft:#b89544;--ink:#10131a;--panel:#0c1612b8;--panel-line:#e8c86a38;--text:#f3f5ef;--muted:#9fb0a4;--red:#d8324a;--card-w:clamp(46px, 5.4vw, 74px);--card-h:calc(var(--card-w) * 1.452)}*{box-sizing:border-box}html,body{height:100%;margin:0}body{min-height:100dvh;color:var(--text);overscroll-behavior-y:none;background:radial-gradient(120% 90% at 50% -10%,#223142 0%,#141a24 45%,#0a0d13 100%);font-family:Segoe UI,system-ui,-apple-system,sans-serif;overflow-x:hidden}button{touch-action:manipulation}.stage{flex-direction:column;gap:clamp(8px,1.4vw,18px);min-height:100dvh;padding:clamp(12px,2vw,28px);display:flex;position:relative}.table{border-radius:50%;flex:1;min-height:0;position:relative}.felt{background:radial-gradient(65% 65% at 50% 42%, var(--felt-1) 0%, var(--felt-2) 72%, #08351f 100%);text-align:center;border:3px solid #e8c86a59;border-radius:50%;place-items:center;display:grid;position:absolute;inset:8% 6%;box-shadow:inset 0 0 0 10px #00000047,inset 0 0 90px #00000073,0 40px 90px #0000008c}.felt-ring{border:2px dashed #e8c86a47;border-radius:50%;position:absolute;inset:12%}.title-lockup{color:#ffffff24;-webkit-user-select:none;user-select:none;position:absolute;top:18%}.title-lockup p{letter-spacing:.15em;margin:0;font-size:clamp(28px,5vw,68px);font-weight:800}.title-lockup span{letter-spacing:.55em;text-transform:uppercase;font-size:clamp(11px,1.3vw,16px)}.trick{z-index:2;min-height:var(--card-h);place-items:center;display:grid;position:relative}.trick-stack{place-items:center;display:grid}.trick-pile{transform:translate(var(--dx,0px), var(--dy,0px)) rotate(var(--rot,0deg));filter:drop-shadow(0 4px 8px #00000059);grid-area:1/1;gap:6px;display:flex}.trick-pile:not(:last-child){filter:brightness(.78)saturate(.9)drop-shadow(0 3px 6px #0006)}.trick-swept{pointer-events:none;position:absolute;inset:0}.trick-swept .trick-pile{animation:.52s cubic-bezier(.5,0,.85,.4) forwards sweep-out;animation-delay:calc(var(--p,0) * 35ms)}.trick-swept .fly-card{animation:none}@keyframes sweep-out{to{transform:translate(72vmin, calc(var(--dy,0px) - 8vmin)) rotate(22deg) scale(.7);opacity:0}}.fly-card{animation:.44s cubic-bezier(.22,1,.36,1) backwards fly-in;animation-delay:calc(var(--i) * 70ms)}@keyframes fly-in{0%{transform:translate(var(--fx,0), var(--fy,0)) scale(.55) rotate(-10deg);opacity:0}to{opacity:1;transform:translate(0)scale(1)rotate(0)}}.empty-trick{color:#ffffff8c;letter-spacing:.04em;margin:0;font-size:.9rem}.message{max-width:60%;color:var(--gold);background:#00000052;border-radius:999px;margin:0;padding:7px 16px;font-size:clamp(.78rem,1.4vw,.98rem);font-weight:600;position:absolute;bottom:22%}.seat{z-index:4;animation:.46s cubic-bezier(.22,1,.36,1) backwards seat-in;animation-delay:calc(var(--i,0) * 90ms);flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;transform:translate(-50%,-50%)}@keyframes seat-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.72)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.seat-fan{height:calc(var(--card-w) * .726);align-items:flex-start;display:flex}.card-back{width:calc(var(--card-w) * .7);aspect-ratio:500/726;margin-left:calc(var(--card-w) * -.5);transform:rotate(calc(var(--i) * 8deg));background:#fdfdf8 url(/cards/back_blue.png) 50%/cover no-repeat;border-radius:2px;box-shadow:0 4px 10px #00000073}.card-back:first-child{margin-left:0}.seat-plate{background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:9px;padding:7px 14px 7px 8px;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex}.avatar{letter-spacing:.02em;width:38px;height:38px;color:var(--gold);background:linear-gradient(145deg,#2c3a4d,#1a2330);border:1px solid #ffffff24;border-radius:50%;place-items:center;font-size:.72rem;font-weight:800;display:grid}.seat-info{flex-direction:column;line-height:1.2;display:flex}.seat-name{font-size:.9rem;font-weight:700}.seat-status{color:var(--muted);font-size:.72rem}.seat.active .seat-plate{border-color:var(--gold);transform:scale(1.05);box-shadow:0 0 0 2px #e8c86a59,0 0 22px #e8c86a66}.seat.active .avatar{color:var(--ink);background:linear-gradient(145deg, var(--gold), var(--gold-soft))}.seat.done{opacity:.5}.rail{z-index:5;flex-direction:column;gap:10px;width:clamp(160px,18vw,220px);display:flex;position:absolute;top:clamp(12px,2vw,28px);right:clamp(12px,2vw,28px)}.panel{background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:14px;padding:10px 14px}.panel h2{text-transform:uppercase;letter-spacing:.14em;color:var(--gold);margin:0 0 6px;font-size:.7rem}.panel ol{color:#dfe6df;flex-direction:column;gap:3px;margin:0;padding:0;font-size:.78rem;list-style:none;display:flex}.panel ol strong{color:var(--gold);margin-right:4px}.muted{color:var(--muted)}.new-game{border:1px solid var(--panel-line);color:var(--text);cursor:pointer;background:#00000059;border-radius:12px;padding:9px;font-weight:600;transition:background .15s,border-color .15s}.new-game:hover{border-color:var(--gold);background:#e8c86a29}.new-game:disabled{opacity:.35;cursor:default}.rail-actions{gap:8px;display:flex}.rail-actions .new-game{flex:1}.ghost{border:1px solid var(--panel-line);color:var(--muted);cursor:pointer;background:0 0;border-radius:12px;padding:9px 14px;font-weight:600;transition:color .15s,border-color .15s}.ghost:hover{color:var(--text);border-color:var(--gold)}.menu{place-items:center;min-height:100vh;padding:24px;display:grid}.menu-card{background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:22px;flex-direction:column;gap:22px;width:min(440px,100%);padding:32px 30px 30px;display:flex;position:relative;box-shadow:0 30px 80px #0000008c}.lang-toggle{border:1px solid var(--panel-line);color:var(--muted);letter-spacing:.04em;cursor:pointer;background:0 0;border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:600;transition:color .15s,border-color .15s;position:absolute;top:16px;right:16px}.lang-toggle:hover{color:var(--gold);border-color:var(--gold)}.menu-title{text-align:center;line-height:1}.menu-title p{letter-spacing:.12em;color:var(--gold);margin:0;font-size:clamp(40px,9vw,60px);font-weight:800}.menu-title span{letter-spacing:.5em;text-transform:uppercase;color:var(--muted);font-size:.9rem}.option-group{border:none;margin:0;padding:0}.option-group legend{text-transform:uppercase;letter-spacing:.14em;color:var(--gold);margin-bottom:10px;font-size:.72rem}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--panel-line);min-width:46px;color:var(--text);cursor:pointer;background:#ffffff0d;border-radius:12px;padding:10px 14px;font-size:1rem;font-weight:700;transition:transform .12s,background .15s,border-color .15s}.chip.wide{flex-direction:column;flex:1;align-items:flex-start;gap:2px;display:flex}.chip.wide span{color:var(--muted);font-size:.72rem;font-weight:500}.chip:hover{transform:translateY(-1px)}.chip.on{background:linear-gradient(145deg, var(--gold), var(--gold-soft));color:var(--ink);border-color:#0000}.chip.on span{color:#10131ab3}.option-note{color:var(--muted);margin:8px 0 0;font-size:.78rem}.menu-start{background:linear-gradient(145deg, var(--gold), var(--gold-soft));color:var(--ink);letter-spacing:.02em;cursor:pointer;border:none;border-radius:14px;margin-top:4px;padding:14px;font-size:1.05rem;font-weight:800;transition:transform .12s,box-shadow .15s}.menu-start:hover{transform:translateY(-2px);box-shadow:0 12px 26px #e8c86a59}.menu-actions{align-items:stretch;gap:10px;display:flex}.menu-actions>*{flex:1;margin-top:0}.room-panel{border:1px solid var(--panel-line);background:#ffffff0d;border-radius:14px;flex-direction:column;gap:10px;padding:14px;display:flex}.room-heading{color:var(--gold);letter-spacing:.14em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:12px;font-size:.72rem;font-weight:800;display:flex}.room-heading strong{letter-spacing:.04em;text-transform:none;color:var(--text)}.text-field{flex-direction:column;gap:6px;display:flex}.text-field span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:700}.text-field input{border:1px solid var(--panel-line);width:100%;min-height:42px;color:var(--text);font:inherit;background:#00000047;border-radius:10px;outline:none;padding:9px 11px}.text-field input:focus{border-color:var(--gold)}.lobby-seats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.lobby-seats li{min-width:0;color:var(--text);background:#00000038;border-radius:10px;align-items:center;gap:8px;padding:8px;display:flex}.lobby-seats strong{width:24px;height:24px;color:var(--gold);background:#e8c86a29;border-radius:50%;flex:none;place-items:center;font-size:.75rem;display:grid}.lobby-seats span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.lobby-seats em{color:var(--muted);margin-left:auto;font-size:.68rem;font-style:normal}.form-error{color:#ff8fa0;margin:0;font-size:.78rem}.connection-pill{border:1px solid var(--panel-line);min-height:44px;color:var(--muted);border-radius:12px;place-items:center;padding:9px 12px;font-size:.78rem;font-weight:700;display:grid}@media (prefers-reduced-motion:reduce){.fly-card,.seat,.hand-slot>*,.hand.hand-denied{animation:none}.trick-swept{display:none}}.playing-card{width:var(--card-w);aspect-ratio:500/726;-webkit-user-select:none;user-select:none;background:#fdfdf8;border-radius:3px;padding:0;display:block;position:relative;overflow:hidden;box-shadow:0 6px 14px #0006}.playing-card .card-face{border-radius:inherit;pointer-events:none;width:100%;height:100%;display:block}.playing-card.mini-card{--card-w:clamp(40px, 4.6vw, 60px)}button.playing-card{cursor:pointer;border:none;font-family:inherit;transition:transform .12s,box-shadow .12s}button.playing-card:disabled{cursor:default}button.playing-card.selected{box-shadow:0 0 0 3px var(--gold), 0 10px 20px #00000080}.hand-zone{flex-direction:column;align-items:center;gap:10px;display:flex}.hand-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;display:flex}.hand-meta{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.hand-label{color:var(--muted);font-size:.9rem}.hand-label strong{color:var(--gold)}.key-hints{align-items:center;gap:5px;display:flex}.keycap{color:#f3f5efc7;background:#ffffff14;border:1px solid #e8c86a47;border-radius:6px;place-items:center;min-width:22px;height:22px;padding:0 7px;font-family:inherit;font-size:.68rem;font-weight:800;line-height:1;display:inline-grid;box-shadow:inset 0 -1px #00000059,0 1px #ffffff12}.actions{gap:10px;display:flex}.actions button{border:1px solid var(--panel-line);color:var(--text);cursor:pointer;background:#ffffff0f;border-radius:999px;align-items:center;gap:9px;padding:9px 22px;font-size:.9rem;font-weight:700;transition:transform .12s,background .15s,opacity .15s;display:inline-flex}.actions button:hover:not(:disabled){transform:translateY(-1px)}.actions button:disabled{opacity:.35;cursor:default}.actions .primary{background:linear-gradient(145deg, var(--gold), var(--gold-soft));color:var(--ink);border-color:#0000}.actions .primary .keycap{color:#10131ac7;background:#10131a1f;border-color:#10131a3d;box-shadow:inset 0 -1px #10131a3d,0 1px #ffffff3d}.hand{padding-top:calc(var(--card-h) * .28);min-height:calc(var(--card-h) * 1.1);justify-content:center;align-items:flex-end;display:flex}.hand.hand-denied{will-change:transform;animation:.52s cubic-bezier(.36,.07,.19,.97) hand-denied}.hand-slot{margin-left:var(--overlap,calc(var(--card-w) * -.42));transform:rotate(calc(var(--offset) * 2.4deg));transition:transform .14s}.hand-slot:first-child{margin-left:0}@media (hover:hover){.hand-slot:hover{transform:rotate(calc(var(--offset) * 2.4deg)) translateY(-14px);z-index:3}}.hand-slot.keyboard-target{z-index:4}.hand-slot.keyboard-target:not(.lifted){transform:rotate(calc(var(--offset) * 2.4deg)) translateY(-12px)}.hand-slot.keyboard-target button.playing-card{box-shadow:0 0 0 2px #ffffffeb,0 0 0 5px #e8c86ab3,0 12px 24px #00000085}.hand-slot.lifted{transform:rotate(calc(var(--offset) * 2.4deg)) translateY(-26px);z-index:3}.hand-slot>*{animation:.46s cubic-bezier(.22,1,.36,1) backwards deal-in;animation-delay:calc(.24s + var(--i,0) * 45ms)}@keyframes deal-in{0%{opacity:0;transform:translateY(-52vmin)scale(.5)rotate(22deg)}to{opacity:1;transform:translate(0)scale(1)rotate(0)}}@keyframes hand-denied{0%,to{transform:translate(0,0)}10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-14px)}40%,60%{transform:translate(14px)}}.trick-name{color:var(--muted);letter-spacing:.02em;margin:0;font-size:.82rem}@media (max-width:720px){:root{--card-w:clamp(52px, 14vw, 62px)}.stage{padding:10px 10px calc(8px + env(safe-area-inset-bottom));gap:8px}.table{--seat-edge:70px;--seat-edge-y:52px;min-height:clamp(340px,118vw,560px)}.felt{inset:3% 0%}.title-lockup{top:24%}.message{max-width:86%;bottom:20%}.seat{--card-w:34px}.avatar{width:30px;height:30px;font-size:.6rem}.seat-plate{gap:7px;padding:5px 11px 5px 6px}.seat-name{font-size:.78rem}.seat-status{font-size:.64rem}.rail{-webkit-overflow-scrolling:touch;flex-direction:row;order:3;align-items:stretch;width:100%;padding-bottom:2px;position:static;overflow-x:auto}.rail .panel{flex-shrink:0;min-width:170px}.rail-actions{flex-direction:column;flex-shrink:0;order:-1;min-width:112px}.rail-actions button{flex:1}.trick-pile{gap:0}.fly-card:not(:first-child){margin-left:-14px}.key-hints,.actions .keycap{display:none}.hand-bar{gap:8px;width:100%}.hand-meta,.actions{width:100%}.actions button{border-radius:14px;flex:1;justify-content:center;min-height:50px;font-size:1rem}.hand-zone{gap:6px;width:100%}.hand{--hand-min-strip:32px;-webkit-overflow-scrolling:touch;justify-content:flex-start;width:100%;padding:34px 12px 6px;overflow-x:auto}.hand-slot,.hand-slot.keyboard-target:not(.lifted){transform:none}.hand-slot:first-child{margin-left:auto}.hand-slot:last-child{margin-right:auto}.hand-slot.lifted{transform:translateY(-24px)}.playing-card.mini-card{--card-w:38px}}
