:root{--ink: #f5f1e6;--ink-2: rgba(245, 241, 230, .7);--ink-3: rgba(245, 241, 230, .45);--gold: #f2c14e;--felt-1: #1f7350;--felt-2: #0f3d2e;--panel: rgba(8, 28, 21, .92);--line: rgba(255, 255, 255, .12);--ok: #3aa26a;--bad: #c24848;--card: #fffdf6;--red: #cf2530;--plate: #f8f3e9;--plate-ink: #2b2730;--plate-ink-2: rgba(43, 39, 48, .6);--black: #1b1d22;--cw: clamp(46px, min(17vw, 10.5vh), 96px);--ch: calc(var(--cw) * 1.4);--lean: 24deg;--back: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, .2) 0 16%, transparent 17%), repeating-linear-gradient(45deg, #b4293d 0 4px, #8d1d2e 4px 8px);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--felt-2);color:var(--ink);font:15px/1.35 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}body{background:radial-gradient(120% 90% at 50% 40%,var(--felt-1),var(--felt-2) 70%) fixed}body:has(.table-screen){background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72'%3E%3Cg fill='%23fff' fill-opacity='0.05' font-family='serif' font-size='16'%3E%3Ctext x='6' y='22'%3E%E2%99%A0%3C/text%3E%3Ctext x='42' y='22'%3E%E2%99%A5%3C/text%3E%3Ctext x='24' y='58'%3E%E2%99%A3%3C/text%3E%3Ctext x='60' y='58'%3E%E2%99%A6%3C/text%3E%3C/g%3E%3C/svg%3E"),radial-gradient(120% 90% at 50% 45%,#4a5d68,#2c3a43 75%) fixed}button{font:inherit;color:inherit}.hidden{display:none!important}.btn{border:0;border-radius:12px;padding:10px 16px;background:#ffffff1f;font-weight:600;cursor:pointer;touch-action:manipulation;transition:transform .08s,background .15s}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.35;cursor:default;transform:none}.btn.primary{background:var(--gold);color:#2b2105}.btn.danger{background:#d6564f;color:#fff}.confirm p{margin:4px 0 14px;font-size:17px;line-height:1.4}.btn.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--line)}.btn.small{padding:6px 12px;font-size:14px;border-radius:10px}.btn.big{width:100%;padding:16px;font-size:18px;border-radius:16px}.link{background:none;border:0;color:var(--gold);text-decoration:underline;cursor:pointer}.lobby{max-width:520px;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 16px 32px;display:flex;flex-direction:column;gap:20px;min-height:100%}.hero{text-align:center}.logo{font-size:30px;letter-spacing:6px;color:var(--ink)}.logo .red{color:#ff6b6b}.hero h1{margin:4px 0 0;font:700 44px/1.1 Georgia,Times New Roman,serif;letter-spacing:1px}.tagline{margin:6px 0 14px;color:var(--ink-2)}.you-are{color:var(--ink-2)}.name-btn{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;background:#00000040;border:0;border-radius:999px;padding:4px 14px 4px 4px;font-weight:700;font-size:16px;color:var(--ink);cursor:pointer}.name-btn .animal-face{width:34px;height:34px}.name-btn .pencil{color:var(--ink-2);font-weight:400}.lobby{position:relative}.lobby>.gear{position:absolute;top:max(12px,env(safe-area-inset-top));right:12px}.gear{font-size:18px;line-height:1;padding:6px 10px}.table-row .faces{display:inline-flex;margin-right:8px;vertical-align:middle}.table-row .faces .animal-face{width:24px;height:24px;margin-left:-6px;box-shadow:0 0 0 2px #1d3a2d}.table-row .faces .animal-face:first-child{margin-left:0}.prefs .identity{display:flex;align-items:center;gap:16px;margin-bottom:6px}.prefs-face .animal-face{width:76px;height:76px;box-shadow:0 0 0 3px #ffffffd9,0 4px 14px #00000073}.name-field{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.name-row{display:flex;gap:8px}.name-input{flex:1;min-width:0;font:600 18px/1.2 inherit;font-family:inherit;padding:8px 10px;border-radius:12px;border:1px solid var(--line);background:#0000004d;color:var(--ink)}.name-input.invalid{border-color:#ff8a8a}.name-hint{font-size:12px;color:var(--ink-3)}.name-hint.invalid{color:#ff9b9b}.btn.spin{font-size:22px;line-height:1;padding:0 12px}.lobby h2{font-size:13px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-3);margin:0 0 8px}.tables{display:flex;flex-direction:column;gap:8px}.table-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;border:0;border-radius:14px;background:#00000040;cursor:pointer}.table-row .who{flex:1;min-width:0}.table-row .names{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-row .meta{font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:6px}.seats-dots{display:inline-flex;gap:3px}.seats-dots span{width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--ink-3)}.seats-dots span.taken{background:var(--gold);box-shadow:none}.empty{color:var(--ink-2);text-align:center;padding:20px 0}.lobby footer{margin-top:auto;display:flex;justify-content:space-between;color:var(--ink-3);font-size:13px}.modal{position:fixed;inset:0;z-index:50;background:#0000008c;display:grid;place-items:end center;animation:fade .15s}@media(min-height:600px)and (min-width:600px){.modal{place-items:center}}.modal-panel{width:min(440px,100%);max-height:90vh;overflow:auto;background:var(--panel);border-radius:20px 20px 0 0;padding:20px 20px max(20px,env(safe-area-inset-bottom));animation:rise .2s ease-out}@media(min-height:600px)and (min-width:600px){.modal-panel{border-radius:20px}}.modal h2{margin:0 0 14px;font-size:20px}.create{display:flex;flex-direction:column;gap:12px}.field{color:var(--ink-2);font-size:14px}.segmented{display:flex;background:#ffffff14;border-radius:12px;padding:4px}.segmented button{flex:1;border:0;background:none;padding:10px;border-radius:9px;font-size:18px;font-weight:700;cursor:pointer}.segmented button.on{background:var(--gold);color:#2b2105}.check{display:flex;align-items:center;gap:8px}.check input{width:20px;height:20px;accent-color:var(--gold)}.code-row{display:flex;align-items:center;gap:12px}.code-input{font:700 26px/1 ui-monospace,Menlo,monospace;letter-spacing:10px;text-align:center;width:160px;padding:8px;border-radius:12px;border:1px solid var(--line);background:#0000004d;color:var(--ink);align-self:center}.actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.rules p{margin:0 0 10px;color:var(--ink-2)}.rules strong{color:var(--ink)}.toast{position:fixed;left:50%;top:calc(56px + env(safe-area-inset-top));transform:translate(-50%,-20px);opacity:0;z-index:60;background:#111;color:#fff;padding:8px 16px;border-radius:999px;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%)}.banner{position:fixed;top:0;left:0;right:0;z-index:70;text-align:center;background:#9b2c2c;padding:calc(4px + env(safe-area-inset-top)) 8px 4px;font-size:13px}.waiting{position:fixed;inset:0;display:flex;flex-direction:column}.wait-body{width:100%;max-width:480px;margin:0 auto;padding:8px 16px 24px;display:flex;flex-direction:column;gap:14px;overflow:auto}.wait-status{text-align:center;color:var(--gold);font-weight:600;margin:8px 0 0}.seat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.seat-list li{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:#00000040}.seat-list li.free{background:none;box-shadow:inset 0 0 0 1.5px dashed var(--line);border:1.5px dashed var(--line);color:var(--ink-3)}.seat-list li.me{box-shadow:inset 0 0 0 1.5px var(--gold)}.seat-list li.offline{opacity:.5}.seat-list .who{flex:1;font-weight:600}.seat-list .avatar.empty{background:none;box-shadow:inset 0 0 0 1.5px var(--line)}.seat-list .avatar{width:36px;height:36px;font-size:16px}.invite label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:6px}.link-row{display:flex;gap:8px}.link-box{flex:1;min-width:0;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:#0000004d;color:var(--ink);font:13px ui-monospace,Menlo,monospace}.topbar{position:relative;z-index:4;display:flex;align-items:center;gap:8px;padding:calc(6px + env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left));min-height:48px;background:#0000004d}.topbar .title{flex:1;min-width:0;text-align:center;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15}.topbar .title small{display:block;font-weight:500;font-size:12px;color:var(--ink-2)}.topbar .trump-sym{font-size:14px}.table-screen{position:fixed;inset:0;display:flex;flex-direction:column;user-select:none;-webkit-user-select:none;overflow:hidden}.play-area{flex:1;display:flex;min-height:0}.felt{flex:1;min-width:0;display:flex;flex-direction:column;position:relative}.tabletop{position:absolute;inset:5% 2% -4%;border-radius:46% 46% 12% 12%/30% 30% 8% 8%;background:radial-gradient(90% 70% at 50% 55%,#2a8a5f,#186343 60%,#11503a);box-shadow:inset 0 0 0 5px #ffffff0d,inset 0 0 0 9px #0000002e,inset 0 30px 70px #0000004d,0 0 0 6px #3b2416,0 0 0 8px #2a190f,0 20px 60px #00000080;transform:perspective(1000px) rotateX(14deg);transform-origin:50% 100%;pointer-events:none}.arena{--cx: 50%;--cy: 60%;--sx: 1;--sy: 1;--tx: .6;--ty: -1.6;--ring: calc(var(--cw) * 3);--dw: calc(var(--cw) * .82);flex:1;position:relative;min-height:0}.card.probe{position:absolute;visibility:hidden;pointer-events:none}.fx{position:fixed;inset:0;z-index:25;pointer-events:none}.fx .card{position:absolute;opacity:0}.status{position:relative;text-align:center;min-height:22px;font-size:14px;color:var(--ink-2);padding:0 8px;text-shadow:0 1px 3px rgba(0,0,0,.6)}.status.mine{color:var(--gold);font-weight:700}.me-slot{position:relative;z-index:3;display:flex;justify-content:center;padding:2px 8px 0}.hand{position:relative;z-index:4;height:calc(var(--ch) + 30px);margin-bottom:env(safe-area-inset-bottom);touch-action:none}.ring{position:absolute;left:calc(var(--cx) - var(--ring) / 2);top:calc(var(--cy) - var(--ring) / 2);width:var(--ring);height:var(--ring);border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.07),rgba(255,255,255,.02) 80%,transparent);transform:perspective(800px) rotateX(var(--lean));color:#ffffff29;pointer-events:none}.ring svg{position:absolute;inset:0;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.center{position:absolute;left:calc(var(--cx) + var(--tx) * var(--cw));top:calc(var(--cy) + var(--ty) * var(--ch));width:0;height:0}.center .deck,.center .trump-card{--cw: var(--dw);position:absolute;top:calc(var(--dw) * -.7)}.center .deck{left:calc(var(--dw) * -.72);transform:perspective(800px) rotateX(var(--lean)) rotate(-6deg);box-shadow:1px 1px #ddd,2px 2px #8d1d2e,3px 3px #ddd,4px 4px #8d1d2e,5px 5px #ddd,6px 8px 12px #00000073}.center .trump-card{left:calc(var(--dw) * -.32);transform:perspective(800px) rotateX(var(--lean)) rotate(7deg);box-shadow:0 0 0 2px var(--gold),0 0 22px 4px #f2c14e8c,0 6px 14px #00000073}.trump-label{position:absolute;left:calc(var(--dw) * .18);top:calc(var(--dw) * .7 - 10px);translate:-50% 0;padding:1px 8px;border-radius:999px;background:var(--gold);color:#2b2105;font-size:10px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;box-shadow:0 2px 6px #0006;white-space:nowrap}.no-trump{position:absolute;left:calc(var(--dw) * -.2);top:calc(var(--dw) * -.3);width:calc(var(--dw) * 1.1);text-align:center;font-size:12px;font-weight:700;color:var(--ink-2)}.trick{position:absolute;inset:0;pointer-events:none;z-index:2}.card.in-trick,.impact{position:absolute;left:calc(var(--cx) + var(--x) * var(--sx) * var(--cw) - var(--cw) / 2);top:calc(var(--cy) + var(--y) * var(--sy) * var(--ch) - var(--ch) / 2)}.in-trick{transform:perspective(800px) rotateX(var(--lean)) rotate(var(--r));box-shadow:0 6px 14px #0006}.in-trick.winner{box-shadow:0 0 0 3px var(--gold),0 0 26px #f2c14ed9;z-index:9!important}.impact{width:var(--cw);height:var(--ch);border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.35),rgba(255,255,255,.12) 60%,transparent);opacity:0}.seat{position:absolute;z-index:3;left:var(--px);top:var(--py);translate:-50% 0;width:96px;padding:6px 4px 5px;border-radius:16px;background:var(--plate);color:var(--plate-ink);box-shadow:0 4px 14px #00000059,inset 0 -2px #00000014;display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;transition:opacity .3s,box-shadow .3s}.seat.turn{box-shadow:0 0 0 3px var(--gold),0 0 22px #f2c14eb3,0 4px 14px #00000059}.seat.pos-me{position:relative;left:auto;top:auto;translate:none;width:auto;flex-direction:row;gap:10px;padding:5px 10px 5px 5px;border-radius:18px}.seat.pos-me .info{text-align:left;align-items:flex-start}.seat.pos-me .tbar{position:absolute;left:18px;right:18px;bottom:-7px;height:5px}.seat .info{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;max-width:100%}.avatar{--c: #888;position:relative;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 0 2px #ffffffd9,0 2px 8px #00000073;flex:none}.avatar>.animal-face{width:100%;height:100%}.bot-badge{position:absolute;left:-7px;top:-4px;width:19px;height:19px;border-radius:50%;background:#fff;display:grid;place-items:center;font-size:11px;line-height:1;box-shadow:0 1px 3px #00000080}.seat.turn .avatar{box-shadow:0 0 0 3px var(--gold),0 0 18px #f2c14ee6;animation:pulse 1.2s ease-in-out infinite}.seat.won .avatar{box-shadow:0 0 0 3px #fff,0 0 22px #ffffffe6}.dealer{position:absolute;left:50%;bottom:-8px;translate:-50% 0;padding:1px 6px;border-radius:999px;background:var(--gold);color:#2b2105;font-size:9px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;white-space:nowrap;box-shadow:0 2px 5px #0006}.off{position:absolute;left:-2px;top:-2px;width:12px;height:12px;border-radius:50%;background:var(--bad);border:2px solid var(--felt-2)}.seat .name{font-size:13px;font-weight:700;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avatar:has(.dealer)+.info .name{margin-top:4px}.seat.pos-me .name{max-width:46vw}.contract{display:flex;gap:4px;justify-content:center}.contract.none{display:none}.contract.left{font-size:12px;font-weight:700;color:var(--plate-ink-2)}.contract .cell{display:flex;flex-direction:column;align-items:center;min-width:40px;padding:2px 6px 3px;border-radius:9px;background:#28201414;line-height:1}.contract small{font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--plate-ink-2);margin-bottom:2px;white-space:nowrap}.contract b{font-size:21px;font-weight:800}.contract .pending b{color:#2820144d}.contract .calling{background:var(--gold);animation:pulse 1s ease-in-out infinite}.contract .calling small{color:#5a4206}.contract .called{background:#2f5d8c;color:#fff}.contract .called small,.contract .ok small,.contract .bust small{color:#fffc}.contract .cow{background:#f2e3c2;box-shadow:inset 0 0 0 1.5px #b88a3a}.contract .ok{background:var(--ok);color:#fff}.contract .bust{background:var(--bad);color:#fff}.bubble{position:absolute;top:-14px;right:-16px;z-index:10;min-width:40px;padding:4px 10px;border-radius:16px 16px 16px 4px;background:#fff;color:#1d1a22;font-size:24px;font-weight:900;text-align:center;box-shadow:0 0 0 3px var(--gold),0 6px 16px #00000073;pointer-events:none;white-space:nowrap}.pos-right .bubble,.pos-top .bubble,.pos-top-right .bubble{right:auto;left:-16px;border-radius:16px 16px 4px}.seat.gone{opacity:.35;filter:grayscale(1)}.seat.out{opacity:.55}.tbar{width:72px;height:4px;border-radius:2px;background:#0000001f;overflow:hidden;visibility:hidden}.tbar.on{visibility:visible}.tbar i{display:block;height:100%;width:100%;transform-origin:left center;background:#7dd87d}.fan{--step: calc(var(--cw) * .17);--n: 1;position:absolute;z-index:1;left:var(--fx);top:var(--fy);translate:-50% -50%;width:calc(var(--cw) + (var(--n) - 1) * var(--step));height:var(--ch);transform:var(--fan-3d, none);-webkit-box-reflect:below 2px linear-gradient(transparent 58%,rgba(255,255,255,.22));pointer-events:none}.fan>.card{position:absolute;top:0;left:calc(var(--i) * var(--step));transform-origin:50% 160%;transform:rotate(calc((var(--i) - (var(--n) - 1) / 2) * 2.5deg));box-shadow:-3px 1px 6px #00000059}.fan.turn>.card{box-shadow:-3px 1px 6px #00000059,0 0 0 2px #f2c14ee6}.fan>.forehead{box-shadow:0 0 0 3px var(--gold),0 8px 18px #00000080}.fan.pos-top{--fx: 50%;--fy: calc(10px + var(--ch) / 2);--fan-3d: perspective(600px) rotateX(14deg)}.seat.pos-top{--px: calc(50% + var(--cw) * 1.3 + 48px);--py: calc(10px + var(--ch) / 2 - 42px)}.fan.pos-left{--fx: calc(var(--cw) * .72);--fy: calc(var(--cy) + var(--ch) * .05);--fan-3d: perspective(380px) rotateY(-44deg)}.fan.pos-right{--fx: calc(100% - var(--cw) * .72);--fy: calc(var(--cy) + var(--ch) * .05);--fan-3d: perspective(380px) rotateY(44deg)}.seat.pos-left{--px: 52px;--py: calc(var(--cy) - var(--ch) * .45 - 124px)}.seat.pos-right{--px: calc(100% - 52px) ;--py: calc(var(--cy) - var(--ch) * .45 - 124px)}.fan.pos-top-left,.fan.pos-top-right{--fx: 27%;--fy: calc(10px + var(--ch) / 2);--fan-3d: perspective(600px) rotateX(14deg) rotateY(-12deg)}.fan.pos-top-right{--fx: 73%;--fan-3d: perspective(600px) rotateX(14deg) rotateY(12deg)}.seat.pos-top-left,.seat.pos-top-right{--px: 27%;--py: calc(16px + var(--ch))}.seat.pos-top-right{--px: 73%}.arena.n5{--cy: 63%}@media(orientation:portrait)and (max-width:699px){:root{--cw: clamp(44px, min(17vw, 9svh), 96px)}.tabletop{top:-9%}.arena,.arena.n5{--cy: max(60%, calc(var(--ch) * 1.42 + 108px));--tx: 1.95;--ty: 0;--high: calc(var(--ch) * .5 + 4px);--low: calc(var(--ch) * .5 + 44px)}.pos-top{--ux: 50%;--uy: var(--high)}.pos-left{--ux: min(50px, 12.5vw);--uy: var(--low)}.pos-right{--ux: calc(100% - min(50px, 12.5vw)) ;--uy: var(--low)}.arena.n3 .pos-left{--ux: 30%;--uy: var(--high)}.arena.n3 .pos-right{--ux: 70%;--uy: var(--high)}.pos-top-left{--ux: 37.5%;--uy: var(--high)}.pos-top-right{--ux: 62.5%;--uy: var(--high)}.arena .seat:not(.pos-me){--px: var(--ux);--py: var(--uy);width:min(96px,24vw);padding:4px 3px;gap:1px}.arena .fan{--fx: var(--ux);--fy: var(--uy);-webkit-box-reflect:none}.arena .fan.pos-left{--fan-3d: perspective(500px) rotateY(-28deg)}.arena .fan.pos-right{--fan-3d: perspective(500px) rotateY(28deg)}.arena.n3 .fan.pos-left,.arena.n3 .fan.pos-right,.arena .fan.pos-top-left,.arena .fan.pos-top-right{--fan-3d: perspective(600px) rotateX(14deg)}.arena.n5 .fan{--step: calc(var(--cw) * .11)}.bid-panel{bottom:4px;padding:8px 10px}.bid-title{display:none}.bids{gap:6px}.bid-btn{min-width:42px;height:42px;font-size:18px}.bid-info{margin-top:6px;font-size:12px}.seat:not(.pos-me) .avatar{width:36px;height:36px}.seat .name{font-size:12px}.contract .cell{min-width:34px;padding:1px 5px 2px}.contract b{font-size:18px}.contract small{font-size:8px}.bubble{font-size:20px;top:-10px}}.animal-face{display:inline-block;border-radius:50%;overflow:hidden;flex:none;vertical-align:middle}.animal-face svg{display:block;width:100%;height:100%}.animal-face.mini{width:22px;height:22px;box-shadow:0 0 0 1.5px #ffffffb3}.felt:after{content:"";position:absolute;left:0;right:0;bottom:0;height:45%;background:radial-gradient(60% 70% at 50% 100%,rgba(255,205,90,.32),transparent 70%);opacity:0;transition:opacity .4s;pointer-events:none}.felt.my-turn:after{opacity:1;animation:glow 1.6s ease-in-out infinite}.status.mine{justify-self:center;align-self:center;width:fit-content;margin:0 auto 4px;padding:4px 18px;border-radius:999px;background:linear-gradient(100deg,#f7c548,#ffe9a6 45%,#f7c548 55%,#f0a92c);background-size:250% 100%;color:#2b1d02;font-size:17px;font-weight:800;letter-spacing:.3px;text-shadow:none;box-shadow:0 0 0 2px #ffffff80,0 0 22px #ffc846bf;animation:pop .35s cubic-bezier(.2,.9,.3,1.4),shine 2.2s linear infinite,nudge 1.6s ease-in-out infinite}.card{position:relative;width:var(--cw);height:calc(var(--cw) * 1.4);border-radius:calc(var(--cw) * .1);background:var(--card);color:var(--black);box-shadow:0 1px 2px #0000004d,0 3px 8px #00000040;font-family:Georgia,Times New Roman,serif;font-weight:700;flex:none}.card.red{color:var(--red)}.card:not(.back):after{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--back);box-shadow:inset 0 0 0 calc(var(--cw) * .06) #fff;opacity:0;pointer-events:none}.corner{position:absolute;display:flex;flex-direction:column;align-items:center;line-height:.95;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:calc(var(--cw) * .27);letter-spacing:-.08em}.corner .suit{font-size:calc(var(--cw) * .21);letter-spacing:0}.corner.tl{top:4%;left:6%}.corner.br{bottom:4%;right:6%;transform:rotate(180deg)}.pips{position:absolute;inset:11% 36%;font-size:calc(var(--cw) * .24);line-height:1}.pips span{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%)}.pips span.down{transform:translate(-50%,-50%) rotate(180deg)}.ace{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--cw) * .7)}.court{position:absolute;inset:7% 14%}.court svg{display:block;width:100%;height:100%}.card.back{background:var(--back);border:calc(var(--cw) * .06) solid #fff}.qmark{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--cw) * .6);color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.6)}.in-hand{position:absolute;bottom:10px;transform-origin:50% 130%;transform:translateY(calc(var(--d, 0px) + var(--lift, 0px))) rotate(var(--r, 0deg));transition:left .25s ease,transform .18s ease,filter .2s,box-shadow .2s;cursor:pointer;touch-action:none}.in-hand.selected{transform:translateY(calc(var(--d, 0px) - 24px + var(--lift, 0px))) rotate(var(--r, 0deg));box-shadow:0 0 0 3px var(--gold),0 10px 20px #00000073}.in-hand.dim{filter:brightness(.55) saturate(.6)}.in-hand.playable{box-shadow:0 0 0 1.5px #f2c14ed9,0 3px 8px #0000004d}@media(hover:hover){.in-hand.playable:hover{transform:translateY(calc(var(--d, 0px) - 12px)) rotate(var(--r, 0deg))}}.bid-panel{position:absolute;left:50%;bottom:8px;transform:translate(-50%,20px);width:min(400px,calc(100% - 16px));padding:12px;border-radius:18px;background:var(--panel);box-shadow:0 10px 30px #00000080;text-align:center;opacity:0;pointer-events:none;transition:.2s ease-out;z-index:20}.bid-panel.open{opacity:1;transform:translate(-50%);pointer-events:auto}.bid-title{font-weight:700;color:var(--gold);margin-bottom:10px}.bids{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.bid-btn{min-width:48px;height:48px;font-size:20px;padding:0 10px;background:#ffffff24}.bid-btn.cow{background:#f2e3c2;color:#3a2a08;display:flex;align-items:center;gap:6px}.bid-btn.cow .cow-label{font-size:13px}.bid-btn:disabled{text-decoration:line-through}.bid-info{margin-top:8px;font-size:13px;color:var(--ink-2)}.bid-info .hook{color:#ffb3a7}.overlay{position:absolute;inset:0;display:none;place-items:center;z-index:30;pointer-events:none}.overlay.open{display:grid}.overlay.final{pointer-events:auto}.overlay .panel{min-width:240px;max-width:calc(100% - 24px);padding:14px 16px;border-radius:18px;background:var(--panel);box-shadow:0 12px 40px #0000008c;animation:pop .3s cubic-bezier(.2,.9,.3,1.3);pointer-events:auto}.overlay h2{margin:0 0 10px;font-size:18px;text-align:center}.result{display:flex;align-items:center;gap:10px;padding:5px 2px;border-top:1px solid var(--line)}.result .who{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result .ct{color:var(--ink-2);font-size:13px}.result .pts{font-weight:800;min-width:36px;text-align:right}.result.made .pts{color:#8ff0a4}.result.missed .pts{color:#ff9b9b}.result.me .who{color:var(--gold)}.result .medal{width:26px;text-align:center}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none}.dock{display:none;width:clamp(300px,26vw,400px);overflow:auto;padding:8px;background:#0000002e;border-left:1px solid var(--line)}@media(min-width:1000px)and (min-height:560px){.dock{display:block}.topbar .btn.small:last-child{display:none}}.sheet{position:fixed;inset:0;z-index:40;background:#00000080;display:flex;align-items:flex-end;justify-content:center}.sheet-panel{width:min(560px,100%);max-height:88vh;display:flex;flex-direction:column;background:var(--panel);border-radius:20px 20px 0 0;padding:14px 12px max(12px,env(safe-area-inset-bottom));animation:rise .2s ease-out}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.sheet-head h2{margin:0;font-size:18px}.sheet-body{overflow:auto}.grid{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.grid th,.grid td{padding:4px 3px;text-align:center;border-bottom:1px solid var(--line);white-space:nowrap}.grid thead th{font-size:11px;font-weight:700;max-width:64px;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}.grid thead th.me{color:var(--gold)}.grid thead .animal-face{display:block;margin:2px auto 3px;width:24px;height:24px}.grid thead .th-name{display:block;overflow:hidden;text-overflow:ellipsis}.grid .rnd{width:34px;color:var(--ink-3);font-weight:600}.trump-sym{margin-left:2px;color:var(--ink)}.trump-sym.red{color:#ff6b6b}.grid td .bid{display:inline-block;min-width:17px;margin-right:4px;border:1px solid var(--ink-3);border-radius:4px;font-size:11px;line-height:15px;color:var(--ink-2)}.grid td .bid.cow{background:#f2e3c2;color:#3a2a08;border-color:#f2e3c2}.grid td .tot{display:inline-block;min-width:22px;font-weight:700}.grid td.made .tot{color:#8ff0a4}.grid td.missed .tot{color:#ff9b9b}.grid td.out{color:var(--ink-3)}.grid td .took:before{content:"\2713";font-size:10px;margin-right:1px;color:var(--ink-3)}.grid tr.current{background:#f2c14e21}.grid th.gone{opacity:.4;text-decoration:line-through}.grid tfoot td{font-weight:800;font-size:15px;border-bottom:0}@media(orientation:landscape)and (max-height:500px){:root{--cw: clamp(40px, 11vh, 60px)}.topbar{min-height:40px;padding-top:4px;padding-bottom:4px}.me-slot{position:absolute;left:max(8px,env(safe-area-inset-left));bottom:calc(14px + env(safe-area-inset-bottom));width:min(205px,22%);justify-content:flex-start;padding:0}.seat.pos-me,.seat.pos-me .name{max-width:100%}.status{position:absolute;right:max(8px,env(safe-area-inset-right));bottom:calc(14px + env(safe-area-inset-bottom));width:min(205px,22%);text-align:right;z-index:3}.hand{height:calc(var(--ch) + 18px);margin-inline:min(205px,22%)}.in-hand{bottom:4px}.arena,.arena.n5{--cy: 57%;--sx: 1.15;--tx: 2.6;--ty: 0}.bid-panel{bottom:4px;width:auto;max-width:calc(100% - 16px);padding:6px 12px;display:flex;align-items:center;gap:12px;text-align:left}.bid-title{font-size:14px;margin:0;max-width:110px;line-height:1.2}.bids{flex-wrap:nowrap;gap:6px}.bid-info{margin:0;font-size:12px;max-width:150px}.bid-btn{min-width:38px;height:38px;font-size:18px;padding:0 8px}.fan.pos-top,.fan.pos-top-left,.fan.pos-top-right{--fy: calc(6px + var(--ch) / 2)}.fan.pos-top-left{--fx: 33%}.fan.pos-top-right{--fx: 67%}.seat.pos-top{--py: 4px}.seat.pos-top-left,.seat.pos-top-right{--px: calc(33% - var(--cw) * 1.3 - 52px);--py: 4px}.seat.pos-top-right{--px: calc(67% + var(--cw) * 1.3 + 52px)}.seat.pos-top{--px: calc(50% + var(--cw) * 1.3 + 52px)}.seat:not(.pos-me){width:88px;padding:4px 3px;gap:1px}.seat:not(.pos-me) .avatar{width:34px;height:34px}.seat .name{font-size:12px}.contract .cell{min-width:34px;padding:1px 5px 2px}.contract b{font-size:17px}.contract small{font-size:8px}.bubble{font-size:20px}.fan.pos-left,.fan.pos-right{--fx: calc(14% + 50px) ;--fy: calc(var(--cy) - var(--ch) * .45);--fan-3d: perspective(500px) rotateY(-36deg)}.fan.pos-right{--fx: calc(86% - 50px) ;--fan-3d: perspective(500px) rotateY(36deg)}.seat.pos-left,.seat.pos-right{--px: calc(max(8px, env(safe-area-inset-left)) + 44px) ;--py: calc(var(--cy) - var(--ch) * .45 - 42px)}.seat.pos-right{--px: calc(100% - max(8px, env(safe-area-inset-right)) - 44px) }}@media(min-width:700px)and (min-height:700px){:root{--cw: clamp(60px, 10.5vh, 110px)}.arena,.arena.n5{--cy: 60%;--sx: 1.1;--tx: 2.4;--ty: -.15}.seat{width:110px}.avatar{width:50px;height:50px;font-size:22px}.seat .name{font-size:14px}.seat.pos-top{--px: calc(50% + var(--cw) * 1.3 + 62px);--py: calc(10px + var(--ch) / 2 - 52px)}.fan.pos-top-left{--fx: 30%}.fan.pos-top-right{--fx: 70%}.seat.pos-top-left,.seat.pos-top-right{--px: calc(30% - var(--cw) * 1.3 - 62px);--py: 10px}.seat.pos-top-right{--px: calc(70% + var(--cw) * 1.3 + 62px)}.fan.pos-left,.fan.pos-right{--fx: calc(var(--cw) * 1.8);--fy: calc(var(--cy) - var(--ch) * .1);--fan-3d: perspective(700px) rotateY(-38deg)}.fan.pos-right{--fx: calc(100% - var(--cw) * 1.8);--fan-3d: perspective(700px) rotateY(38deg)}.seat.pos-left,.seat.pos-right{--px: calc(var(--cw) * 1.8);--py: calc(var(--cy) - var(--ch) * .6 - 132px)}.seat.pos-right{--px: calc(100% - var(--cw) * 1.8)}}@keyframes glow{50%{opacity:.55}}@keyframes shine{0%{background-position:100% 0}to{background-position:-150% 0}}@keyframes nudge{50%{transform:scale(1.06)}}@keyframes pulse{50%{transform:scale(1.06)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(30px);opacity:0}}@keyframes pop{0%{transform:scale(.85);opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/*# sourceMappingURL=client.css.map */
