:root{--lapis-950:#070a24;--lapis-900:#0b1033;--lapis-800:#0f1640;--lapis-700:#18246a;--lapis-500:#2a3a8c;--turq:#1fb5ac;--turq-dark:#0f7d77;--pomegranate:#c8213b;--pomegranate-dark:#8e1029;--gold:#e2b350;--gold-light:#ffe29a;--gold-dark:#a8741f;--saffron:#f4a62a;--emerald:#2e9b62;--plum:#5b2a7a;--cream:#fbf3e0;--ink:#1b1f4a;--text:#f6efe0;--text-dim:#f6efe0a8;--font-display:"Dela Gothic One", "Rubik", system-ui, sans-serif;--font-ui:"Rubik", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:16px;--gold-border:linear-gradient(135deg, var(--gold-light), var(--gold) 45%, var(--gold-dark));--girih:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='%23e2b350' stroke-width='1.1'%3E%3Cg transform='translate(36 36)'%3E%3Crect x='-13' y='-13' width='26' height='26'/%3E%3Crect x='-13' y='-13' width='26' height='26' transform='rotate(45)'/%3E%3Ccircle r='5'/%3E%3C/g%3E%3Cpath d='M0 36H17M55 36H72M36 0V17M36 55V72'/%3E%3Cpath d='M0 9L9 0M63 0L72 9M72 63L63 72M9 72L0 63'/%3E%3C/g%3E%3C/svg%3E");--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);color:var(--text);background:radial-gradient(120% 70% at 50% 0%, #2a3a8ce6 0%, transparent 60%), radial-gradient(90% 60% at 50% 110%, #8e102973 0%, transparent 70%), var(--lapis-800);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background-attachment:fixed;overflow:hidden}body:before{content:"";background-image:var(--girih);opacity:.07;pointer-events:none;background-size:72px 72px;position:fixed;inset:0}button,input{font:inherit;color:inherit}.screen{max-width:920px;height:100dvh;padding:calc(env(safe-area-inset-top) + 10px) calc(env(safe-area-inset-right) + 14px) calc(env(safe-area-inset-bottom) + 10px) calc(env(safe-area-inset-left) + 14px);flex-direction:column;gap:12px;margin:0 auto;display:flex;position:relative}.btn{background:linear-gradient(180deg, #2a3a8cf2, #0f1640f2) padding-box, var(--gold-border) border-box;min-height:48px;color:var(--cream);letter-spacing:.01em;cursor:pointer;-webkit-user-select:none;user-select:none;border:1.5px solid #0000;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:10px 18px;font-weight:700;transition:transform 80ms,box-shadow 80ms,opacity .2s,filter .2s;display:inline-flex;position:relative;box-shadow:0 4px #00000059,0 8px 18px #00000040}.btn small{opacity:.75;font-size:12px;font-weight:400}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #00000059,0 4px 10px #00000040}.btn:disabled{opacity:.42;filter:grayscale(.4);cursor:default}.btn-primary{background:linear-gradient(180deg, #e0354f, var(--pomegranate-dark)) padding-box, var(--gold-border) border-box;text-shadow:0 1px #00000059}.btn-ghost{box-shadow:none;background:linear-gradient(#0b1033b3,#0b1033d9) padding-box padding-box,linear-gradient(135deg,#ffe29a8c,#a8741f8c) border-box}.btn-big{min-height:60px;font-size:17px}.chip{width:40px;height:40px;color:var(--gold-light);cursor:pointer;background:#0b1033a6;border:1.5px solid #e2b35099;border-radius:50%;font-weight:700}.chip-icon{place-items:center;padding:0;display:inline-grid}.link-btn{color:var(--gold-light);text-underline-offset:4px;cursor:pointer;background:0 0;border:none;align-self:center;padding:8px;text-decoration:underline}input{-webkit-user-select:text;user-select:text;background:#070a2499;border:1.5px solid #e2b35073;border-radius:12px;outline:none;width:100%;min-height:48px;padding:10px 14px;font-size:17px}input:focus{border-color:var(--gold-light);box-shadow:0 0 0 3px #ffe29a2e}.panel{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(#18246ab8,#0b1033d1) padding-box padding-box,linear-gradient(160deg,#ffe29ab3,#a8741f40 40%,#ffe29a99) border-box;border:1.5px solid #0000;border-radius:20px;padding:16px;position:relative;box-shadow:0 18px 40px #00000059}.panel-label{letter-spacing:.12em;text-transform:uppercase;color:var(--gold-light);opacity:.85;margin-bottom:6px;font-size:12px;display:block}.row{gap:10px;display:flex}.row>*{flex:1}.muted{color:var(--text-dim);font-size:14px}.center{text-align:center}.pulse{animation:1.8s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}.topbar{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;min-height:40px;display:grid}.topbar-side{justify-self:start;gap:8px;display:flex}.topbar-side-end{justify-self:end}.topbar-title{align-items:baseline;gap:10px;display:flex}.brand-mini{font-family:var(--font-display);background:var(--gold-border);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:22px}.room-code-mini{font-family:var(--font-display);letter-spacing:.2em;color:var(--text-dim);font-size:13px}.conn-banner{top:env(safe-area-inset-top);z-index:60;background:var(--pomegranate-dark);border:1px solid var(--gold);text-align:center;text-wrap:balance;border-radius:999px;width:max-content;max-width:calc(100vw - 32px);margin-top:8px;padding:8px 14px;font-size:13px;position:fixed;left:50%;translate:-50%}.toasts{left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 40%);z-index:70;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed}.toast{border:1px solid var(--gold);text-align:center;background:#070a24eb;border-radius:14px;max-width:min(90vw,420px);padding:10px 16px;font-size:15px;box-shadow:0 10px 30px #00000080}.sheet-backdrop{z-index:50;background:#0406149e;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:min(100%,560px);max-height:88dvh;padding:20px 18px calc(env(safe-area-inset-bottom) + 18px);background:var(--girih) 0 0 / 72px 72px, linear-gradient(180deg, #18246afa, #0b1033fc) padding-box, var(--gold-border) border-box;background-blend-mode:soft-light, normal, normal;border:1.5px solid #0000;border-bottom:0;border-radius:24px 24px 0 0;overflow:auto;box-shadow:0 -20px 60px #00000080}.sheet-title{font-family:var(--font-display);color:var(--gold-light);justify-content:center;align-items:center;gap:10px;margin-bottom:14px;font-size:22px;display:flex}.sheet-actions{flex-direction:column;gap:10px;margin-top:16px;display:flex}:root{--cw:64px}.card{width:var(--cw);height:calc(var(--cw) * 1.4);border-radius:calc(var(--cw) * .11);color:var(--ink);-webkit-user-select:none;user-select:none;background:radial-gradient(120% 80% at 30% 20%,#ffffffd9,#0000 60%),linear-gradient(165deg,#fffaf0 0%,#f6ead0 60%,#ead8b0 100%);flex:none;transition:box-shadow .15s;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #a8741f59,0 2px #0000002e,0 6px 14px #00000052}.card:before{content:"";inset:calc(var(--cw) * .05);border-radius:calc(var(--cw) * .07);pointer-events:none;border:1px solid #a8741f80;position:absolute}.card.red{color:var(--pomegranate)}.card-index{top:calc(var(--cw) * .07);left:calc(var(--cw) * .08);z-index:1;flex-direction:column;align-items:center;line-height:.95;display:flex;position:absolute}.card-index .r{font-family:var(--font-display);font-size:calc(var(--cw) * .3);letter-spacing:-.08em}.card-index .s{font-size:calc(var(--cw) * .24);margin-top:calc(var(--cw) * .01)}.card-index.bottom{top:auto;left:auto;bottom:calc(var(--cw) * .07);right:calc(var(--cw) * .08);rotate:180deg}.card-center{font-size:calc(var(--cw) * .56);opacity:.92;place-items:center;display:grid;position:absolute;inset:0}.face-center{flex-direction:column;justify-content:center;align-items:center;gap:0;display:flex}.face-rank{font-family:var(--font-display);font-size:calc(var(--cw) * .48);width:calc(var(--cw) * .62);height:calc(var(--cw) * .62);outline-offset:-2px;background:radial-gradient(circle,#e2b35038,#0000 70%);border-radius:50%;outline:1px dashed #a8741f8c;place-items:center;line-height:1;display:grid}.face-suit{font-size:calc(var(--cw) * .22);margin-top:calc(var(--cw) * .02)}.card.trump:after{content:"";right:calc(var(--cw) * .1);top:calc(var(--cw) * .1);width:calc(var(--cw) * .2);height:calc(var(--cw) * .2);background:conic-gradient(from 22.5deg, var(--gold-light), var(--gold-dark), var(--gold-light), var(--gold-dark), var(--gold-light));clip-path:polygon(50% 0,61% 30%,93% 25%,70% 50%,93% 75%,61% 70%,50% 100%,39% 70%,7% 75%,30% 50%,7% 25%,39% 30%);position:absolute}.card.trump .face-rank{background:radial-gradient(circle,#e2b35080,#0000 72%);outline:1.5px solid #a8741fcc}.card.joker{color:var(--gold-light)}.card.joker-black{background:radial-gradient(120% 90% at 50% 15%,#8a5cd68c,#0000 65%),linear-gradient(165deg,#2a1d4f,#120c2a)}.card.joker-red{background:radial-gradient(120% 90% at 50% 15%,#ffc45c8c,#0000 65%),linear-gradient(165deg,#d22c47,#6d0c22)}.card.joker:before{border-color:#ffe29abf}.joker-glyph{font-family:var(--font-display);text-shadow:0 0 calc(var(--cw) * .12) #ffd678cc;flex-direction:column;align-items:center;line-height:1;display:flex;position:absolute;top:30%;left:0;right:0}.joker-size{font-size:calc(var(--cw) * .2);opacity:.85}.joker-king{font-size:calc(var(--cw) * .5)}.card.joker .card-index .r{font-size:calc(var(--cw) * .22);letter-spacing:-.02em}.joker-label{left:0;right:0;bottom:calc(var(--cw) * .09);text-align:center;font-size:calc(var(--cw) * .13);letter-spacing:.12em;text-transform:uppercase;opacity:.85;position:absolute}.card.selected{box-shadow:inset 0 0 0 2px var(--gold), 0 0 0 2px var(--gold-light), 0 0 22px #ffd678bf, 0 10px 20px #00000073}.card-back{background:#8e1029}.card-back:before{display:none}.card-back svg{width:100%;height:100%;position:absolute;inset:0}.mini-back{width:10px;height:14px;box-shadow:0 0 0 1px var(--gold-light), 2px -2px 0 -.5px #ffe29a8c;background:linear-gradient(90deg,#f4a62a 0 20%,#8e1029 20% 45%,#2e9b62 45% 60%,#8e1029 60% 80%,#f4a62a 80%);border-radius:2px;display:inline-block}.home{overflow-y:auto}.home>:first-child{margin-top:auto}.home>:last-child{margin-bottom:auto}.hero{flex-direction:column;align-items:center;min-height:250px;padding-top:18px;display:flex;position:relative}.hero-rosette{opacity:.35;animation:80s linear infinite spin;position:absolute;top:-30px;left:50%;translate:-50%}@keyframes spin{to{rotate:360deg}}.hero-cards{--cw:70px;width:220px;height:130px;position:relative}.hero-card{margin-left:calc(var(--cw) / -2);transform-origin:50% 120%;position:absolute;top:10px;left:50%}.hero-card-0{opacity:.85;translate:-78px 26px;rotate:-30deg}.title{font-family:var(--font-display);background:linear-gradient(180deg, #fff6d6 10%, var(--gold-light) 35%, var(--gold) 60%, var(--gold-dark) 90%);color:#0000;-webkit-text-stroke:2px #3c0a1999;filter:drop-shadow(0 5px 0 var(--pomegranate-dark)) drop-shadow(0 12px 24px #0000008c);-webkit-background-clip:text;background-clip:text;margin:-6px 0 0;font-size:clamp(72px,24vw,128px);font-weight:400;line-height:1;position:relative}.tagline{letter-spacing:.08em;color:var(--text-dim);margin-top:6px;font-size:15px}.home-panel{flex-direction:column;align-self:center;gap:12px;width:min(100%,440px);display:flex}.field{display:block}.open-rooms{gap:8px}.open-room-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.open-room{width:100%;min-height:52px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#070a248c;border:1.5px solid #e2b35073;border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"star host people""star status status";align-items:center;column-gap:10px;padding:8px 14px;display:grid}.open-room:disabled{opacity:.55;cursor:default}.open-room:not(:disabled):active{border-color:var(--gold-light)}.open-room>svg{color:var(--gold);grid-area:star}.open-room-host{text-overflow:ellipsis;white-space:nowrap;grid-area:host;font-weight:700;overflow:hidden}.open-room-people{font-variant-numeric:tabular-nums;color:var(--gold-light);grid-area:people}.open-room-status{color:var(--text-dim);grid-area:status;font-size:13px}.open-room-lobby .open-room-status{color:var(--turq)}.join-row{margin-top:4px}.code-input{text-transform:uppercase;letter-spacing:.4em;font-family:var(--font-display);text-align:center}.lobby{overflow-y:auto}.code-tiles{gap:10px;display:flex}.code-tile{width:58px;height:70px;font-family:var(--font-display);color:var(--ink);box-shadow:inset 0 0 0 2px var(--gold), 0 6px 0 var(--gold-dark), 0 12px 24px #0006;background:linear-gradient(165deg,#fffaf0,#ead8b0);border-radius:12px;place-items:center;font-size:36px;display:grid}.seat-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.seat-slot{background:#070a2473;border:1px solid #e2b35059;border-radius:14px;flex-direction:column;align-items:center;gap:4px;min-height:112px;padding:12px 6px 10px;display:flex;position:relative}.lobby-lead{text-align:center;color:var(--text-dim);font-size:14px}button.seat-slot-free{font:inherit;color:var(--text-dim);cursor:pointer;border-color:#ffe29a8c;gap:6px;font-size:13px;transition:background .15s,transform 80ms}button.seat-slot-free:active{background:#2a3a8c73;transform:scale(.97)}.seat-plus{width:38px;height:38px;color:var(--gold-light);border:1.5px dashed #ffe29ab3;border-radius:50%;place-items:center;font-size:24px;line-height:1;display:grid}.seat-manage{z-index:2;border-radius:inherit;cursor:pointer;background:0 0;border:none;position:absolute;inset:0}.seat-manage:active:not(:disabled){background:#ffe29a14}.visibility-panel{flex-direction:column;align-items:center;gap:6px;display:flex}.visibility-switch{background:#070a248c;border:1.5px solid #e2b35080;border-radius:999px;padding:3px;display:inline-flex}.visibility-option,.visibility-name{min-height:40px;font:inherit;color:var(--text-dim);border-radius:999px;align-items:center;gap:6px;padding:6px 16px;font-weight:700;display:inline-flex}.visibility-option{cursor:pointer;background:0 0;border:none}.visibility-option.is-active{color:var(--lapis-950);background:linear-gradient(180deg, var(--gold-light), var(--gold))}.visibility-name{color:var(--gold-light)}.seat-remove{z-index:1;background:var(--lapis-900);width:30px;height:30px;color:var(--cream);cursor:pointer;border:1px solid #ffe29a80;border-radius:50%;place-items:center;padding:0;font-size:13px;display:grid;position:absolute;top:-8px;right:-8px;box-shadow:0 3px 8px #00000073}.seat-slot-you{border-color:var(--gold-light);box-shadow:0 0 18px #ffe29a40}.seat-slot-free{color:var(--text-dim);border-style:dashed;justify-content:center;font-size:13px}.seat-slot-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;font-weight:700;overflow:hidden}.seat-slot-tag{color:var(--gold-light);align-items:center;gap:4px;min-height:14px;font-size:11px;display:flex}.waiting{margin-top:12px;font-size:14px}.lobby-actions{flex-direction:column;gap:10px;margin-top:auto;display:flex}.lobby-alts{flex-wrap:wrap;justify-content:center;gap:0 12px;display:flex}.lobby-alts .link-btn{padding:4px 8px}.rules-body{font-size:15px;line-height:1.5}.rules-body h4{font-family:var(--font-display);color:var(--gold-light);margin:16px 0 6px;font-weight:400}.rules-body ul{margin:0;padding-left:18px}.rules-order{text-align:center;background:#070a2480;border-radius:10px;padding:8px 12px;font-size:14px}.rules-table{border-collapse:collapse;width:100%;font-size:14px}.rules-table td{vertical-align:top;border-bottom:1px solid #e2b35033;padding:6px 8px}.rules-table td:first-child{white-space:nowrap;color:var(--gold-light);font-weight:700}.invite-qr{flex-direction:column;align-items:center;gap:8px;display:flex}.qr{width:min(62vw,230px);height:auto;box-shadow:0 0 0 3px var(--gold), 0 0 0 7px var(--lapis-900), 0 0 0 8px var(--gold-dark), 0 14px 30px #00000073;border-radius:14px}.invite-code{justify-content:center;align-items:baseline;gap:10px;margin:14px 0 8px;display:flex}.invite-code .panel-label{margin:0}.invite-code b{font-family:var(--font-display);letter-spacing:.25em;color:var(--gold-light);font-size:26px;font-weight:400}.invite-link{text-align:center;color:var(--text-dim);font-size:14px}.invite-note{background:#1fb5ac1f;border:1px solid #1fb5ac73;border-radius:12px;margin-top:10px;padding:8px 12px;font-size:13px;line-height:1.4}.invite-note-warn{background:#c8213b26;border-color:#ff4d678c}.invite-banner{text-align:center}.invite-banner .code-tiles{justify-content:center;margin:6px 0 4px}.return-offer{background:#070a248c;border:1.5px solid #e2b35073;border-radius:14px;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"reason reason reason""code go dismiss";align-self:center;align-items:center;gap:6px 10px;width:min(100%,440px);padding:10px 10px 10px 14px;display:grid}.return-offer-reason{color:var(--text-dim);grid-area:reason;font-size:13px;line-height:1.3}.return-offer-code{font-family:var(--font-display);letter-spacing:.2em;color:var(--gold-light);grid-area:code;font-size:18px}.return-offer-go{grid-area:go;min-height:40px;padding:6px 14px}.return-offer-dismiss{grid-area:dismiss}.notice-screen{justify-content:center;align-items:center}.notice-panel{text-align:center;flex-direction:column;gap:12px;width:min(100%,420px);display:flex}.notice-panel h2{font-family:var(--font-display);color:var(--gold-light);margin:0;font-weight:400}.notice-panel p{color:var(--text-dim);margin:0}.history-bar{background:#070a2480;border:1px solid #e2b35059;border-radius:14px;align-items:center;gap:10px;min-height:52px;padding:8px 12px;display:flex}.history-bar-icon{color:var(--gold);flex:none}.history-bar-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.history-bar-summary{font-size:15px;font-weight:700}.history-bar-note{color:var(--text-dim);font-size:12px}.history-bar-reveal{flex:none;overflow:hidden}.game{--avatar:50px;gap:8px}.opponents{justify-content:space-around;align-items:flex-start;gap:4px;min-height:108px;padding:0 2px;display:flex}.opponents .seat{translate:0 calc(var(--arc,0) * 22px)}.seat{flex-direction:column;align-items:center;gap:3px;width:74px;min-width:0;transition:opacity .3s,filter .3s;display:flex;position:relative}.seat-avatar{width:var(--avatar);height:var(--avatar);position:relative}.seat-avatar .avatar{border-radius:50%;width:100%;height:100%;transition:box-shadow .3s}.seat-turn .seat-avatar .avatar{animation:1.4s ease-in-out infinite turnGlow;box-shadow:0 0 0 3px #ffe29a40,0 0 24px #ffd678bf}@keyframes turnGlow{50%{box-shadow:0 0 0 5px #ffe29a26,0 0 34px #ffd678f2}}.turn-ring{pointer-events:none;width:calc(100% + 14px);height:calc(100% + 14px);position:absolute;inset:-7px;rotate:-90deg}.turn-ring-track{fill:none;stroke:#070a2499;stroke-width:4px}.turn-ring-bar{fill:none;stroke:var(--gold-light);stroke-width:4px;stroke-linecap:round;stroke-dashoffset:0;animation-name:ringDeplete;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes ringDeplete{0%{stroke-dashoffset:0;stroke:var(--gold-light)}70%{stroke:var(--gold-light)}to{stroke-dashoffset:188.5px;stroke:var(--pomegranate)}}.seat-thinking{border:3px dotted var(--gold-light);pointer-events:none;border-radius:50%;animation:2.4s linear infinite spin;position:absolute;inset:-6px}.seat-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;font-weight:700;overflow:hidden}.seat-meta{color:var(--text-dim);align-items:center;font-size:12px;display:flex}.seat-tag{color:var(--saffron);white-space:nowrap;font-size:10px}.seat-out{opacity:.6}.seat-offline .seat-avatar{filter:grayscale()brightness(.7)}.seat-place{width:22px;height:22px;font-family:var(--font-display);color:var(--ink);box-shadow:0 0 0 2px var(--lapis-900);background:linear-gradient(160deg,#e9eef7,#9aa6bd);border-radius:50%;place-items:center;font-size:12px;display:grid;position:absolute;bottom:-4px;right:-6px}.seat-place.place-1,.result-place.place-1{background:var(--gold-border)}.seat-place.place-3,.result-place.place-3{background:linear-gradient(160deg,#f0b38a,#a8622f)}.bubble{z-index:3;background:var(--cream);color:var(--ink);font-family:var(--font-display);white-space:nowrap;border-radius:10px 10px 10px 2px;padding:3px 8px;font-size:12px;position:absolute;top:-10px;right:-26px;box-shadow:0 3px #0000004d}.table{flex:1;min-height:150px;position:relative}.carpet{box-shadow:inset 0 0 0 3px var(--gold), inset 0 0 0 10px var(--turq-dark), inset 0 0 0 12px var(--gold-dark), inset 0 0 70px #000000a6, 0 22px 46px #00000073;background:radial-gradient(at 50% 45%,#ffc45c2e,#0000 55%),radial-gradient(#a3203a 0%,#741029 55%,#3f0717 100%);border-radius:50%;position:absolute;inset:2% 1%;overflow:hidden}.carpet:before{content:"";border:2px dotted #ffe29a8c;border-radius:50%;position:absolute;inset:18px}.carpet:after{content:"";background-image:var(--girih);opacity:.12;background-size:54px 54px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(#000 30%,#0000 70%);mask-image:radial-gradient(#000 30%,#0000 70%)}.carpet-rosette{opacity:.22;width:min(62%,260px);height:auto;position:absolute;top:50%;left:50%;translate:-50% -50%}.table-plays{--cw:clamp(46px, 12.5vw, 76px);place-items:center;display:grid;position:absolute;inset:0}.play{grid-area:1/1}.play-cards{display:flex}.play-cards>.card{transform-origin:50% 110%}.play-cards>.card+.card{margin-left:calc(var(--cw) * var(--overlap))}.table-label{white-space:nowrap;text-overflow:ellipsis;background:#070a249e;border:1px solid #e2b35066;border-radius:999px;max-width:86%;padding:4px 12px;font-size:13px;position:absolute;bottom:9%;left:50%;overflow:hidden;translate:-50%}.table-label:empty{display:none}.table-label b{color:var(--gold-light)}.status{background:#070a248c;border:1px solid #e2b35038;border-radius:16px;align-items:center;gap:10px;min-height:54px;padding:6px 12px 6px 8px;transition:border-color .3s,box-shadow .3s;display:flex}.status .seat{--avatar:40px;width:auto}.status .seat-name,.status .seat-meta{display:none}.status .bubble{right:-30px}.status-mine{border-color:var(--gold-light);box-shadow:0 0 22px #ffd67847}.status-text{flex:1;min-width:0}.status-main{align-items:center;gap:8px;font-size:16px;font-weight:700;display:flex}.countdown{background:var(--gold-border);min-width:30px;height:24px;color:var(--ink);font-family:var(--font-display);border-radius:999px;place-items:center;padding:0 6px;font-size:13px;display:inline-grid}.countdown-low{background:var(--pomegranate);color:#fff;animation:.6s ease-in-out infinite pulse}.status-sub{min-height:17px;color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.status-sub.good{color:#7fe9e1}.status-sub.bad{color:#ff9aaa}.actions{grid-template-columns:1fr 1fr 1.35fr;gap:8px;display:grid}.actions .btn{min-height:50px;padding:8px 10px}.actions-active .btn-primary:not(:disabled){animation:1.2s ease-in-out infinite readyGlow}@keyframes readyGlow{50%{box-shadow:0 4px #00000059,0 0 26px #ff5a6eb3}}.fast-forward{align-self:center;min-height:40px}.spectator-note{text-align:center;font-family:var(--font-display);color:var(--gold-light);padding:16px;font-size:18px}.hand{touch-action:none;flex:none;width:100%;margin-bottom:2px;position:relative}.hand-card{cursor:pointer;position:absolute;top:0;left:0}.hand-disabled{pointer-events:none}.deal-in{width:100%;height:100%;animation:.5s cubic-bezier(.2,.9,.3,1.15) both dealIn;animation-delay:calc(var(--i,0) * 28ms)}@keyframes dealIn{0%{opacity:0;transform:translateY(140%)rotate(8deg)}}.result-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.result-waiting{margin:4px 0 10px}.result-waiting-list{flex-wrap:wrap;gap:6px;display:flex}.waiting-chip{color:var(--text);font:inherit;background:#070a248c;border:1px solid #e2b35073;border-radius:999px;padding:6px 12px;font-size:14px}button.waiting-chip{cursor:pointer}.result-sheet .history-bar-reveal{margin:10px 0}.result-sheet .visibility-panel{margin-bottom:10px}.result-row{background:#070a2480;border:1px solid #e2b35040;border-radius:14px;align-items:center;gap:10px;padding:8px 12px;display:flex;position:relative}.result-you{border-color:var(--gold-light)}.result-place{width:30px;height:30px;font-family:var(--font-display);color:var(--ink);background:linear-gradient(160deg,#e9eef7,#9aa6bd);border-radius:50%;flex:none;place-items:center;display:grid}.result-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:700;overflow:hidden}.result-note{color:var(--text-dim);font-size:13px}.result-loser{border-color:var(--pomegranate);background:#8e102961}.result-loser .result-place{background:var(--pomegranate);color:#fff}.result-loser .result-note{visibility:hidden}.loser-stamp{color:#ff4d67;font-family:var(--font-display);letter-spacing:.04em;text-shadow:0 0 12px #ff4d6799;background:#3c000e73;border:3px solid #ff4d67;border-radius:8px;margin-top:-16px;padding:2px 10px;font-size:17px;position:absolute;top:50%;right:12px}.standin-warning{max-width:440px;color:var(--gold-light);text-align:center;background:#f4a62a29;border:1px solid #f4a62a8c;border-radius:12px;align-self:center;padding:6px 12px;font-size:13px}.standin-banner{border:1.5px solid var(--gold);background:#070a24d9;border-radius:14px;align-self:center;align-items:center;gap:12px;padding:8px 8px 8px 14px;font-weight:700;display:flex}.standin-banner .btn{min-height:40px;padding:6px 16px}@media (orientation:landscape) and (height<=560px){.game{--avatar:38px;grid-template:"opp opp""table table"minmax(0,1fr)"status actions""hand hand"/minmax(0,1fr) minmax(0,1fr);gap:6px 10px;display:grid}.game .topbar{inset:calc(env(safe-area-inset-top) + 6px) calc(env(safe-area-inset-right) + 10px) auto calc(env(safe-area-inset-left) + 10px);z-index:5;pointer-events:none;position:absolute}.game .topbar>*{pointer-events:auto}.game .topbar-title{visibility:hidden}.game .opponents{grid-area:opp;min-height:74px;padding:0 104px}.game .opponents .seat{translate:0 calc(var(--arc,0) * 10px)}.game .table{grid-area:table;min-height:90px}.game .table-plays{--cw:clamp(32px, 9.5vh, 58px)}.game .carpet{inset:0 2%}.game .carpet:before{inset:8px 14px}.game .table-label{max-width:30%;inset:50% 6% auto auto;translate:0 -50%}.game .status{grid-area:status;min-height:46px}.game .actions{grid-area:actions}.game .actions .btn{min-height:46px}.game .hand,.game .spectator-note{grid-area:hand}.game .fast-forward{grid-area:actions}.game .standin-warning,.game .standin-banner{z-index:4;grid-area:table;place-self:end center;margin-bottom:6px}}@media (width>=760px) and (height>=700px){.game{--avatar:60px;gap:12px}.seat{width:96px}.seat-name{font-size:14px}}.tone-gold{--tone-a:#ffd36b;--tone-b:#a8741f}.tone-turquoise{--tone-a:#3ce6da;--tone-b:#0b6a65}.tone-red{--tone-a:#ff4d67;--tone-b:#7a0a22}.tone-indigo{--tone-a:#8ea0ff;--tone-b:#1d2b6b}.tone-plum{--tone-a:#c39bff;--tone-b:#3b1960}.fx{z-index:40;pointer-events:none;position:fixed;inset:0;overflow:hidden}@keyframes fxLife{0%{opacity:0}8%{opacity:1}78%{opacity:1}to{opacity:0}}.fx-title{font-family:var(--font-display);color:#fff;-webkit-text-stroke:3px #120a24;paint-order:stroke fill;text-shadow:5px 5px 0 var(--tone-b), 0 0 34px var(--tone-a);white-space:nowrap;line-height:1.05;transform:skew(-10deg)}.fx-sub{letter-spacing:.12em;text-transform:uppercase;color:var(--tone-a);text-shadow:0 2px #0009;white-space:nowrap;margin-top:6px;font-size:15px;font-weight:800}.fx-cutin .fx-dim{animation:fxLife var(--dur) ease both;background:radial-gradient(#0000000d,#040614e6 72%);position:absolute;inset:0}.fx-cutin .fx-lines{background:repeating-conic-gradient(from 0deg, color-mix(in srgb, var(--tone-a) 70%, white) 0deg .6deg, transparent .6deg 3.4deg);width:230vmax;height:230vmax;animation:linesSpin var(--dur) linear both, fxLife var(--dur) ease both;position:absolute;top:50%;left:50%;translate:-50% -50%;-webkit-mask-image:radial-gradient(circle,#0000 11%,#000 30%);mask-image:radial-gradient(circle,#0000 11%,#000 30%)}@keyframes linesSpin{0%{rotate:0deg;scale:1.2}to{rotate:14deg;scale:1}}.fx-halftone{animation:fxLife var(--dur) ease both;background-image:radial-gradient(circle,#ffffff40 1.3px,#0000 1.7px);background-size:9px 9px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(#0000 35%,#000 85%);mask-image:radial-gradient(#0000 35%,#000 85%)}.fx-flash{background:#fff;animation:.42s ease-out both flash;position:absolute;inset:0}@keyframes flash{0%{opacity:.95}to{opacity:0}}.fx-glyph{font-family:var(--font-display);white-space:nowrap;color:var(--tone-a);text-shadow:0 0 60px var(--tone-a);animation:glyphZoom var(--dur) cubic-bezier(.2, .8, .2, 1) both;font-size:min(78vmin,560px);line-height:1;position:absolute;top:44%;left:50%;translate:-50% -50%}.fx-glyph-long{font-size:min(46vmin,360px)}@keyframes glyphZoom{0%{opacity:0;scale:2.4}14%{opacity:.32;scale:1}82%{opacity:.24}to{opacity:0;scale:.9}}.fx-cutin .fx-band{border-top:3px solid var(--tone-a);border-bottom:3px solid var(--tone-a);animation:bandSlam var(--dur) both;background:linear-gradient(90deg,#0000,#040614b8 14% 86%,#0000);flex-direction:column;align-items:center;padding:18px 0 16px;display:flex;position:absolute;top:50%;left:-6%;right:-6%;translate:0 -50%;rotate:-6deg}@keyframes bandSlam{0%{opacity:0;scale:1 0}9%{opacity:1;scale:1 1.2}15%{scale:1}80%{opacity:1;scale:1}to{opacity:0;scale:1 .4}}.fx-cutin .fx-title{font-size:min(clamp(40px, 13vw, 108px), calc(94vw / (var(--chars,8) * .8)));animation:.55s cubic-bezier(.2,1.7,.4,1) 60ms both titleSlam}@keyframes titleSlam{0%{opacity:0;filter:blur(10px);scale:3.2}60%{opacity:1;filter:blur();scale:.92}to{scale:1}}.fx-sparks{position:absolute;top:50%;left:50%}.fx-sparks span{background:color-mix(in srgb, var(--tone-a) 60%, #fff6d6);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);width:14px;height:14px;margin:-7px;animation:1.05s cubic-bezier(.1,.8,.3,1) both spark;position:absolute}@keyframes spark{0%{transform:rotate(var(--a)) translateY(0) scale(var(--s));opacity:1}to{transform:rotate(var(--a)) translateY(calc(-1 * var(--d))) scale(0) rotate(180deg);opacity:0}}.fx-banner .fx-band{background:linear-gradient(90deg, transparent 0%, var(--tone-b) 9%, var(--tone-a) 50%, var(--tone-b) 91%, transparent 100%);height:clamp(86px,17vh,150px);animation:bannerSweep var(--dur) cubic-bezier(.2, .9, .2, 1) both;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;top:38%;left:-12%;right:-12%;overflow:hidden;rotate:-7deg;box-shadow:0 -4px #ffffffd9,0 4px #ffffffd9,0 -9px #120a24,0 9px #120a24,0 22px 44px #00000080}@keyframes bannerSweep{0%{translate:115%}17%{translate:0}78%{opacity:1;translate:-2%}to{opacity:.2;translate:-115%}}.fx-band-lines{background:repeating-linear-gradient(0deg,#0000 0 7px,#ffffff38 7px 9px),linear-gradient(90deg,#0000 30%,#ffffff8c 48%,#0000 66%) 0 0/60% 100% no-repeat;animation:.5s linear infinite streak;position:absolute;inset:0}@keyframes streak{0%{background-position:0 0,-60% 0}to{background-position:0 0,160% 0}}.fx-band-glyph{font-family:var(--font-display);color:#ffffffeb;-webkit-text-stroke:2px #120a24;paint-order:stroke fill;text-shadow:4px 4px 0 var(--tone-b);font-size:clamp(46px,13vw,96px);line-height:1;position:relative}.fx-band-text{flex-direction:column;align-items:flex-start;display:flex;position:relative}.fx-banner .fx-title{font-size:min(clamp(34px, 11vw, 86px), calc(62vw / (var(--chars,8) * .8)))}.fx-banner .fx-sub{color:#fff;font-size:13px}.fx-stamp{background:var(--pomegranate);color:#fff;font-family:var(--font-display);animation:stampIn .45s cubic-bezier(.2, 1.8, .4, 1) var(--stamp-delay) both, fxLife var(--dur) ease both;border:4px solid #fff;border-radius:6px;padding:4px 14px;font-size:clamp(22px,7vw,40px);position:absolute;top:60%;left:50%;translate:-50%;rotate:-12deg;box-shadow:0 0 0 4px #120a24,0 12px 24px #00000080}@keyframes stampIn{0%{opacity:0;scale:3}to{opacity:1;scale:1}}.fx-pop{z-index:3;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.fx-pop>*{grid-area:1/1}.fx-pop-burst{background:repeating-conic-gradient(from 0deg, var(--tone-a) 0deg 2deg, transparent 2deg 11deg);width:240px;height:240px;animation:popBurst var(--dur) ease-out both;border-radius:50%;-webkit-mask-image:radial-gradient(circle,#0000 34%,#000 36% 58%,#0000 70%);mask-image:radial-gradient(circle,#0000 34%,#000 36% 58%,#0000 70%)}@keyframes popBurst{0%{opacity:0;scale:.3}25%{opacity:.85}to{opacity:0;scale:1.6}}.fx-pop-glyph{font-family:var(--font-display);color:var(--tone-a);animation:popGlyph var(--dur) ease-out both;font-size:130px;line-height:1}@keyframes popGlyph{0%{opacity:0;scale:1.8}20%{opacity:.32;scale:1}to{opacity:0;scale:1.1}}.fx-pop-title{font-family:var(--font-display);color:#fff;-webkit-text-stroke:2px #120a24;paint-order:stroke fill;text-shadow:3px 3px 0 var(--tone-b);animation:popTitle var(--dur) cubic-bezier(.2, 1.6, .4, 1) both;align-self:start;margin-top:4%;font-size:34px;transform:skew(-10deg)}@keyframes popTitle{0%{opacity:0;scale:2.4}25%{opacity:1;scale:1}80%{opacity:1}to{opacity:0;translate:0 -14px}}.game{animation-duration:.5s;animation-timing-function:ease-out}@keyframes shakeA{0%,to{translate:0}10%{translate:-9px 5px}20%{translate:8px -6px}30%{translate:-6px 5px}45%{translate:5px -3px}65%{translate:-3px 2px}85%{translate:2px -1px}}@keyframes shakeB{0%,to{translate:0}10%{translate:9px 5px}20%{translate:-8px -6px}30%{translate:6px 5px}45%{translate:-5px -3px}65%{translate:3px 2px}85%{translate:-2px -1px}}@media (prefers-reduced-motion:reduce){.fx-lines,.fx-sparks,.fx-halftone,.fx-pop-burst,.fx-flash,.fx-band-lines{display:none}.game{animation-name:none!important}.fx-band,.fx-title,.fx-glyph,.fx-stamp{animation-name:fxLife!important}.hero-rosette{animation:none}}
