:root{--bg: #0b0f0c;--panel: rgba(16, 22, 18, .92);--panel-2: rgba(28, 38, 31, .95);--line: rgba(255, 255, 255, .1);--text: #eef2ea;--muted: #9aa89d;--accent: #f2c01e;--felt: #23864a;--danger: #ef5350;--good: #52d273;--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--display: "Arial Black", "Helvetica Neue", system-ui, sans-serif;--mono: ui-monospace, "Cascadia Mono", Menlo, monospace;--gold: #f2c01e;--edge: rgba(160, 220, 180, .28)}html,body{margin:0;height:100%;background:radial-gradient(ellipse at 50% 40%,#16241a,#0b0f0c 70%);overflow:hidden}body{font-family:var(--font);color:var(--text);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}canvas{display:block;touch-action:none}#ui{position:fixed;inset:0;pointer-events:none}#ui>*{pointer-events:auto}.hidden{display:none!important}#hud{position:absolute;top:8px;left:64px;right:64px;height:52px;display:flex;align-items:center;justify-content:center;gap:12px;pointer-events:none}.pcard{display:flex;align-items:center;gap:10px;min-width:0;flex:0 1 300px;background:linear-gradient(160deg,#22462ee6,#0c1610f0);border:1px solid var(--line);border-radius:14px;padding:6px 12px;transition:box-shadow .2s,border-color .2s,opacity .2s;opacity:.72}.pcard.p1{flex-direction:row-reverse;text-align:right}.pcard.turn{opacity:1;border-color:#f2c01ecc;box-shadow:0 0 0 2px #f2c01e40,0 0 18px #f2c01e40;animation:pl-turn 1.8s ease-in-out infinite}@keyframes pl-turn{50%{box-shadow:0 0 0 2px #f2c01e66,0 0 28px #f2c01e73}}.avatar{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:15px;background:#2b3a30;color:var(--text);position:relative}.avatar .ring{position:absolute;inset:-3px;border-radius:50%;pointer-events:none}.avatar.has-face{width:42px;height:42px;color:transparent;background:radial-gradient(circle at 50% 35%,#3b5244,#22302a)}.face{display:block;line-height:0}.face svg{display:block;width:100%;height:100%}.avatar .face{position:absolute;inset:0;border-radius:50%;overflow:hidden}.pinfo{min-width:0;display:flex;flex-direction:column;gap:4px}.pname{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pname small{color:var(--muted);font-weight:500}.rack{display:flex;gap:3px}.pcard.p1 .rack{justify-content:flex-end}.bi{width:14px;height:14px;border-radius:50%;flex:none;box-shadow:inset -2px -2px 3px #00000059,inset 1px 1px 2px #ffffff59}.bi.gone{opacity:.18}.bi.empty{background:#33413a;box-shadow:none}.vs{color:var(--muted);font-weight:800;font-size:12px;letter-spacing:.1em;flex:none}#msg{position:absolute;top:66px;left:50%;transform:translate(-50%);font-size:13px;color:var(--muted);white-space:nowrap;pointer-events:none}#banner{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);padding:12px 28px;border-radius:16px;background:linear-gradient(160deg,#22462eeb,#080e0aeb);border:1px solid var(--edge);box-shadow:0 0 0 3px #c9963473,0 14px 40px #0000008c;font:900 26px var(--display);letter-spacing:.03em;color:#ffe27a;text-shadow:0 2px 0 rgba(0,0,0,.5);opacity:0;pointer-events:none;text-align:center;white-space:nowrap;z-index:10}#banner.show{animation:pl-banner-in .45s cubic-bezier(.2,1.6,.4,1) both}#banner.out{animation:pl-banner-out .25s ease-in both}#banner.foul{color:#ffb4b0;border-color:#ef535099;box-shadow:0 0 0 3px #ef535059,0 14px 40px #0000008c}#banner.foul.show{animation:pl-banner-in .45s cubic-bezier(.2,1.6,.4,1) both,pl-shake .4s .35s ease-in-out}#banner.good{color:#c9f7d4}@keyframes pl-banner-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}60%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes pl-banner-out{0%{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,-64%)}}@keyframes pl-shake{20%,60%{margin-left:-6px}40%,80%{margin-left:6px}}@media(prefers-reduced-motion:reduce){#banner.show{animation:none;opacity:1}#banner.out,.pcard.turn{animation:none}}.pcard.away .avatar{filter:grayscale(1) brightness(.55)}.pcard.away .pname{color:var(--muted)}#away{position:absolute;top:90px;left:16px;right:16px;margin:0 auto;width:fit-content;z-index:5;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;padding:8px 14px;border-radius:14px;background:var(--panel);border:1px solid var(--line);font-size:14px;font-weight:700;text-align:center}#away .spinner{width:16px;height:16px;margin:0;border-width:2px;flex:none}#away .btn{min-height:36px;padding:8px 12px;font-size:14px;pointer-events:auto}#ui>#away{pointer-events:none}#hint{position:absolute;bottom:6px;left:50%;transform:translate(-50%);font-size:12px;color:var(--muted);white-space:nowrap;pointer-events:none;opacity:.85}.iconbtn{position:absolute;top:12px;width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(180deg,#34784ceb,#18462af5);color:var(--text);font-size:20px;cursor:pointer;display:grid;place-items:center;box-shadow:0 3px #00000061,inset 0 1px #ffffff24;transition:transform .12s ease,border-color .15s ease}.iconbtn:hover,.iconbtn:focus-visible{outline:none;border-color:var(--gold);transform:translateY(-1px)}.iconbtn:active{transform:translateY(2px)}#pauseBtn{left:12px}#power{position:absolute;left:18px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;touch-action:none}#power .track{position:relative;width:38px;height:min(52vh,340px);border-radius:19px;overflow:hidden;cursor:ns-resize;background:linear-gradient(#1a231d,#0f1511);border:1px solid var(--line);box-shadow:inset 0 2px 8px #0009}#power .fill{position:absolute;left:0;right:0;top:0;height:0%;background:linear-gradient(#52d273,#f2c01e 60%,#ef5350)}#power .cue{position:absolute;left:50%;width:8px;margin-left:-4px;top:6px;bottom:6px;border-radius:4px;background:linear-gradient(#3a7bd5 0 3%,#f3efe4 3% 7%,#e3c48e 7% 62%,#6b2d1a 62% 82%,#1b1b1b 82%);transition:transform .05s;opacity:.95}.label{font-size:10px;letter-spacing:.14em;color:var(--muted);font-weight:700}#spin{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;touch-action:none}#spin .ball{position:relative;width:76px;height:76px;border-radius:50%;cursor:crosshair;background:radial-gradient(circle at 35% 30%,#fff,#eeeadf 45%,#b9b4a6);box-shadow:0 4px 14px #00000080}#spin .ball:before{content:"";position:absolute;inset:50% 8px auto;height:1px;background:#0000001f}#spin .ball:after{content:"";position:absolute;inset:8px auto 8px 50%;width:1px;background:#0000001f}#spin .limit{position:absolute;inset:12%;border-radius:50%;border:1px dashed rgba(0,0,0,.18)}#spin .dot{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#d62828;box-shadow:0 0 0 2px #fffc;left:50%;top:50%}.sidebar-narrow #power .track{width:30px}.sidebar-narrow #spin .ball{width:60px;height:60px}.sidebar-narrow #power{left:10px}.sidebar-narrow #spin{right:10px}.stacked #power{left:16px;right:104px;top:auto;bottom:calc(22px + env(safe-area-inset-bottom));transform:none;flex-direction:column-reverse;align-items:stretch}.stacked #power .track{width:auto;height:40px;cursor:ew-resize}.stacked #power .fill{inset:0 auto 0 0;height:100%!important;width:var(--p, 0%);background:linear-gradient(90deg,#52d273,#f2c01e 60%,#ef5350)}.stacked #power .cue{inset:50% 6px auto;width:auto;height:8px;margin:-4px 0 0;transform:translate(var(--pull, 0%))!important;background:linear-gradient(90deg,#1b1b1b 0 18%,#6b2d1a 18% 38%,#e3c48e 38% 93%,#f3efe4 93% 97%,#3a7bd5 97%)}.stacked #power .label{text-align:left}.stacked #spin{right:16px;top:auto;bottom:calc(12px + env(safe-area-inset-bottom));transform:none}.stacked #spin .ball{width:68px;height:68px}.stacked #hint{bottom:calc(108px + env(safe-area-inset-bottom));white-space:normal;width:calc(100vw - 32px);text-align:center}@media(max-width:640px),(max-height:420px){#hud{left:58px;right:58px;top:6px;gap:6px}.pcard{padding:5px 8px;gap:6px}.avatar{width:26px;height:26px;font-size:12px}.avatar.has-face{width:30px;height:30px}.go-face{width:64px;height:64px}.go-player.won .go-face{width:80px;height:80px}.pname{font-size:12px}.bi{width:9px;height:9px}.rack{gap:2px}.vs{display:none}#banner{font-size:18px}.iconbtn{width:36px;height:36px;top:8px;font-size:17px}#msg{top:54px}#away{top:76px;font-size:13px;padding:6px 10px}#away .btn{padding:7px 10px;font-size:13px}}.screen{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;padding:calc(max(env(safe-area-inset-top),10px) + 52px) 16px max(env(safe-area-inset-bottom),14px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden;background:radial-gradient(ellipse 80% 70% at 50% 40%,#050a0759,#030604c7);backdrop-filter:blur(5px) saturate(115%);-webkit-backdrop-filter:blur(5px) saturate(115%)}.screen.show{display:flex}.screen>.card,.screen>.pl-col{margin:auto 0}.screen[data-screen=menu]{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.card{position:relative;width:min(410px,100%);box-sizing:border-box;flex:none;display:flex;flex-direction:column;gap:10px;padding:20px 16px 16px;border-radius:20px;background:linear-gradient(160deg,#285c3ab8,#0a1a10eb);border:1px solid var(--edge);box-shadow:0 0 0 3px #c9963480,0 22px 54px #0009,inset 0 1px #ffffff1a;animation:pl-pop-card .34s cubic-bezier(.2,1.4,.4,1) both}.card h1,.card h2{margin:0 0 2px;text-align:center;font:900 clamp(1.6rem,7vw,2.2rem)/1.1 var(--display);letter-spacing:.04em;background:linear-gradient(180deg,#fffbea,#ffe9a6 32%,#f2c01e 58%,#9a6a08);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 #3d2a04) drop-shadow(0 0 14px rgba(242,192,30,.35));animation:pl-title-bounce .6s .05s cubic-bezier(.2,1.6,.4,1) both}.card p{margin:0;color:var(--muted);font-size:14px;line-height:1.45;text-align:center;animation:pl-fade-up .4s .12s ease-out both}.card p:empty{display:none}.btn{position:relative;overflow:hidden;appearance:none;min-height:48px;padding:11px 16px;border-radius:14px;font:900 16px var(--display);letter-spacing:.02em;color:var(--text);cursor:pointer;touch-action:manipulation;background:linear-gradient(180deg,#34784ceb,#18462af5);border:1px solid var(--edge);box-shadow:0 4px #00000061,inset 0 1px #ffffff24;transition:transform .12s ease,border-color .15s ease,box-shadow .15s ease,background .15s ease}.btn:hover:not([disabled]),.btn:focus-visible,[data-hub-input=keys] .btn:focus{outline:none;border-color:var(--gold);background:linear-gradient(180deg,#408c5af2,#1e5432f5);box-shadow:0 4px #00000061,0 0 0 3px #f2c01e38,0 0 22px #f2c01e4d}.btn:hover:not([disabled]){transform:translateY(-2px)}.btn:active:not([disabled]){transform:translateY(2px);box-shadow:0 1px #00000061}.btn:focus{outline:none}.btn.primary{color:#2a1a00;text-shadow:0 1px 0 rgba(255,255,255,.35);background:linear-gradient(180deg,#ffe17a,#f2c01e,#b8860b);border-color:#ffe9a6;box-shadow:0 4px #6b4a05,0 0 18px #f2c01e59,inset 0 1px #ffffff80}.btn.primary:hover:not([disabled]),.btn.primary:focus-visible,[data-hub-input=keys] .btn.primary:focus{background:linear-gradient(180deg,#fff0b0,#ffd23f,#c99510);border-color:#fff;box-shadow:0 4px #6b4a05,0 0 0 3px #ffffff40,0 0 28px #f2c01e99}.btn.primary:before{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;pointer-events:none;background:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);transform:skew(-20deg);animation:pl-sheen 3.6s 1.2s ease-in-out infinite}.btn.ghost{background:#00000038;box-shadow:none;border-color:#ffffff1a;font-size:15px;color:var(--muted)}.btn.ghost:hover:not([disabled]),.btn.ghost:focus-visible,[data-hub-input=keys] .btn.ghost:focus{color:var(--text);background:#ffffff14}.btn.danger{background:linear-gradient(180deg,#962826f2,#601414f5)}.btn small{display:block;font:400 12px var(--mono);color:var(--muted);margin-top:2px}.btn[disabled]{opacity:.45;cursor:default}.row{display:flex;gap:10px}.row>*{flex:1;min-width:0}.btn.mb{display:flex;align-items:center;gap:12px;text-align:left;padding:8px 34px 8px 8px}.mb-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;font-size:1.05rem;background:#0410098c;box-shadow:inset 0 -3px #00000059;transition:transform .15s ease,background .15s ease,color .15s ease}.mb-text{display:flex;flex-direction:column;gap:1px;min-width:0}.mb-label{font-size:1.02rem;line-height:1.15}.btn.mb small{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn.mb small:empty{display:none}.btn.mb:after{content:"◀";position:absolute;right:12px;top:50%;font-size:.8rem;color:var(--gold);opacity:0;transform:translate(8px,-50%);transition:opacity .15s ease,transform .15s ease}.btn.mb:hover:not([disabled]) .mb-icon,.btn.mb:focus-visible .mb-icon,[data-hub-input=keys] .btn.mb:focus .mb-icon{transform:scale(1.12) rotate(-6deg);background:var(--gold);color:#2a1a00}.btn.mb:hover:not([disabled]):after,.btn.mb:focus-visible:after,[data-hub-input=keys] .btn.mb:focus:after{opacity:1;animation:pl-pointer .6s ease-in-out infinite alternate}.btn.primary.mb{padding-top:11px;padding-bottom:11px}.btn.primary.mb:after{color:#2a1a00}.btn.primary .mb-label{font-size:1.2rem}.btn.primary small{color:#5a3e00}.btn.primary .mb-icon{width:44px;height:44px;border-radius:50%;background:none;box-shadow:none}.btn.primary .mb-icon{color:#2a1a00}.btn.primary:hover .mb-icon,.btn.primary:focus-visible .mb-icon,[data-hub-input=keys] .btn.primary:focus .mb-icon{background:none;color:#2a1a00}.row .btn.mb{padding-right:10px;gap:8px}.row .btn.mb:after{display:none}.row .mb-icon{width:32px;height:32px;font-size:.95rem}.row .mb-label{font-size:.95rem;white-space:nowrap}@media(max-width:420px){.row .btn.mb{padding-left:6px;gap:6px}.row .mb-icon{width:28px;height:28px}.row .mb-label{font-size:.86rem}}.btn.ghost.mb{min-height:44px;padding-top:4px;padding-bottom:4px}.btn.ghost .mb-icon{width:30px;height:30px;background:none;box-shadow:none}.card>.btn,.card>.row,.card>.toggles,.pl-panel>.btn,.pl-panel>.row,.pl-panel>.toggles,.pl-panel>.pl-footer{animation:pl-btn-in .42s calc(.12s + var(--i, 0) * .06s) cubic-bezier(.2,.9,.3,1.1) both}.card>.btn.hidden,.pl-panel>.btn.hidden{display:none}.pball{position:relative;display:inline-grid;place-items:center;width:1.05em;height:1.05em;border-radius:50%;flex:none;background:radial-gradient(circle at 34% 27%,#ffffffd9,#fff0 30%),radial-gradient(circle at 50% 50%,transparent 56%,rgba(0,0,0,.38) 100%),var(--paint, linear-gradient(var(--c), var(--c)));box-shadow:0 .06em .08em #00000080,0 0 16px var(--glow, transparent)}.pball.stripe{--paint: linear-gradient(#f6f3ea 0 24%, var(--c) 24% 76%, #f6f3ea 76%)}.pball b{display:grid;place-items:center;width:54%;height:54%;border-radius:50%;position:relative;z-index:1;font:900 .48em/1 var(--display);color:#141414;background:radial-gradient(circle at 40% 35%,#fff,#f1ede2 75%,#cfc8b5)}.pball.cue{--c: #f4f1e6}.pball.cue b{display:none}.pl-col{position:relative;z-index:1;width:min(420px,100%);display:flex;flex-direction:column;align-items:center;gap:12px;flex:none}.pl-kicker{margin:0;font:400 .72rem var(--mono);letter-spacing:.42em;padding-left:.42em;text-transform:uppercase;color:var(--gold);text-shadow:0 0 10px rgba(242,192,30,.5);animation:pl-fade-up .6s .55s ease-out both}.pl-wordmark{position:relative;display:flex;align-items:center;justify-content:center;gap:.1em;margin:.3em 0 .25em;padding:.36em .5em;font-size:clamp(1.45rem,7.4vw,2.9rem);border-radius:.32em;background:radial-gradient(ellipse at 50% 40%,#2c9a58,#1c703f 60%,#12502b);box-shadow:inset 0 0 .5em #0000008c,0 0 0 .2em #7a4520,0 0 0 .24em #3b1f0c,0 .08em 0 .24em #2a1508,0 .3em .4em .24em #00000073,0 0 50px #f2c01e2e;animation:pl-panel-in .5s cubic-bezier(.2,.9,.3,1.1) both}.pl-wordmark .pball{animation:pl-ball-drop .75s calc(.25s + var(--i) * .08s) cubic-bezier(.2,1.6,.4,1) both,pl-ball-bob 3s calc(1.4s + var(--i) * .14s) ease-in-out infinite}.pl-wordmark .pball b{animation:pl-ball-spin 7s calc(2.4s + var(--i) * .2s) ease-in-out infinite}.pl-wordmark .gap{width:.18em;flex:none}.pl-sights{position:absolute;inset:-.1em;pointer-events:none}.pl-sights i{position:absolute;width:.09em;height:.09em;margin:-.045em 0 0 -.045em;transform:rotate(45deg);background:#e9dfc4;opacity:.55;animation:pl-sight 1.2s calc(var(--i) * .4s) steps(1) infinite}.pl-taglines{position:relative;height:1.3em;width:100%;font-size:.9rem;text-align:center;color:var(--text);text-shadow:0 1px 6px rgba(0,0,0,.8)}.pl-taglines span{position:absolute;inset:0;opacity:0;animation:pl-tagline 14s linear infinite}.pl-taglines span:nth-child(2){animation-delay:3.5s}.pl-taglines span:nth-child(3){animation-delay:7s}.pl-taglines span:nth-child(4){animation-delay:10.5s}.pl-panel{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;box-sizing:border-box;border-radius:20px;background:linear-gradient(160deg,#285c3a8c,#08160dcc);border:1px solid var(--edge);box-shadow:0 20px 50px #0000008c,inset 0 1px #ffffff14;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:pl-panel-in .55s .25s cubic-bezier(.2,.9,.3,1.1) both}.pl-footer{display:flex;justify-content:space-between;gap:6px}.pl-chip{display:inline-flex;align-items:baseline;gap:6px;padding:5px 10px;border-radius:999px;white-space:nowrap;background:#04100999;border:1px solid rgba(160,220,180,.2)}.pl-chip span{font:400 .66rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.pl-chip strong{font-family:var(--display);color:var(--gold)}.pl-stage{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}.pl-lamp{position:absolute;left:50%;top:-6vh;width:min(130vw,900px);height:95vh;transform:translate(-50%);background:radial-gradient(ellipse 50% 60% at 50% 0%,rgba(255,236,170,.2) 0%,rgba(255,236,170,.06) 55%,transparent 75%);clip-path:polygon(38% 0,62% 0,100% 100%,0 100%);filter:blur(10px);animation:pl-lamp 6s ease-in-out infinite alternate}.pl-mote{position:absolute;bottom:-10px;width:var(--size, 4px);height:var(--size, 4px);border-radius:50%;background:#9fd8ff;box-shadow:0 0 8px 2px #78c8ff80;animation:pl-mote-rise 9s linear infinite}.pl-mote:nth-child(3n){background:var(--gold);box-shadow:0 0 8px 2px #f2c01e8c}.pl-mote:nth-child(4n){background:#fff;box-shadow:0 0 8px 2px #ffffff80}.toggles{display:flex;justify-content:center;gap:8px}.chip{appearance:none;min-height:36px;border:1px solid rgba(255,255,255,.12);background:#04100980;color:var(--muted);border-radius:999px;padding:6px 14px;font:600 13px var(--font);cursor:pointer;transition:all .15s ease}.chip.on{color:var(--text);border-color:#f2c01e8c;box-shadow:0 0 12px #f2c01e33}.chip:hover,.chip:focus-visible,[data-hub-input=keys] .chip:focus{outline:none;border-color:var(--gold);color:var(--text)}.stars{font-size:.7rem;letter-spacing:-.05em;color:var(--gold)}.btn.mb:hover .stars,.btn.mb:focus-visible .stars,[data-hub-input=keys] .btn.mb:focus .stars,.btn.primary .stars{color:#2a1a00}.status{text-align:center;font:400 12px var(--mono);color:var(--muted);animation:pl-fade-up .4s .1s ease-out both}.status .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:#777;vertical-align:0}.status.online .dot{background:var(--good);box-shadow:0 0 8px var(--good);animation:pl-pulse 1.6s ease-in-out infinite}.status.connecting .dot{background:var(--accent);animation:pl-pulse .7s ease-in-out infinite}.status.offline .dot{background:var(--danger)}.tables{display:flex;flex-direction:column;gap:8px;max-height:44vh;overflow:auto}.table-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:#04100980;border:1px solid rgba(160,220,180,.16);animation:pl-btn-in .35s calc(var(--i, 0) * .05s) ease-out both}.table-row .tn{flex:1;min-width:0}.tfaces{display:flex;flex:none}.tface{width:36px;height:36px;border-radius:50%;overflow:hidden;background:#22302a;border:2px solid #1a3a26;line-height:0}.tface+.tface{margin-left:-10px}.tface svg{width:100%;height:100%}.table-row .tn b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--display);font-size:15px}.table-row .tn span{color:var(--muted);font-size:12px}.table-row .btn{min-height:40px;padding:6px 16px;font-size:14px}.empty-list{text-align:center;color:var(--muted);font-size:14px;padding:18px 0}.empty-list .pball{font-size:34px;display:grid;margin:0 auto 8px;animation:pl-ball-bob 3s ease-in-out infinite}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{background:#04100980;border:1px solid rgba(160,220,180,.16);border-radius:14px;padding:10px;text-align:center;animation:pl-btn-in .4s calc(.1s + var(--i, 0) * .04s) cubic-bezier(.2,.9,.3,1.1) both}.stat b{display:block;font:900 24px var(--display);color:var(--gold);text-shadow:0 2px 0 rgba(0,0,0,.4)}.stat span{color:var(--muted);font:400 11px var(--mono);text-transform:uppercase;letter-spacing:.06em}.help{font-size:13px;color:var(--muted);line-height:1.5;text-align:left;animation:pl-fade-up .4s .12s ease-out both}.help h3{color:var(--gold);font:900 14px var(--display);letter-spacing:.03em;margin:12px 0 4px}.help ul{margin:0;padding-left:18px}.help kbd{background:#1d3325;border:1px solid rgba(255,255,255,.15);border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:12px;color:var(--text)}.spinner{width:34px;height:34px;margin:6px auto;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.waiting-face{position:relative;width:104px;height:104px;margin:6px auto}.waiting-face .spinner{position:absolute;inset:0;width:auto;height:auto;margin:0;border-width:4px;box-shadow:0 0 20px #f2c01e40}#waiting-face{position:absolute;inset:11px;border-radius:50%;overflow:hidden;background:#22302a;line-height:0;animation:pl-ball-bob 2.4s ease-in-out infinite}#waiting-face svg{width:100%;height:100%}.go-players{display:flex;justify-content:center;align-items:flex-end;gap:22px;margin:2px 0 4px}.go-player{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;max-width:150px;opacity:.75;animation:pl-fade-up .45s .1s ease-out both}.go-player.p1{animation-delay:.18s}.go-face{position:relative;width:84px;height:84px;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 50% 35%,#3b5244,#22302a);border:3px solid var(--line)}.go-face .face{position:absolute;inset:0}.go-name{font-size:13px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.go-player.won{opacity:1;position:relative;animation:pl-winner .7s .2s cubic-bezier(.2,1.6,.4,1) both}.go-player.won:before{content:"👑";position:absolute;top:-20px;font-size:24px;animation:pl-crown 1.8s 1s ease-in-out infinite;z-index:1}.go-player.won .go-face{width:104px;height:104px;border-color:#f2c01e;box-shadow:0 0 0 3px #f2c01e40,0 0 28px #f2c01e73}.go-player.won .go-name{color:#ffe27a;font-family:var(--display)}.card h2.gameover-title.lose{background:linear-gradient(180deg,#fff,#d7e7dc 40%,#8fb39b,#3f5b48);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 3px 0 #13241a) drop-shadow(0 0 12px rgba(160,220,180,.25))}#go-extra{color:var(--gold)}.pl-confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:40}.pl-confetti i{position:absolute;top:-14px;width:8px;height:14px;border-radius:2px;animation:pl-fall 2.6s linear forwards}.pl-confetti i.round{width:11px;height:11px;border-radius:50%}@keyframes pl-pop-card{0%{opacity:0;transform:scale(.92) translateY(12px)}to{opacity:1;transform:none}}@keyframes pl-title-bounce{0%{opacity:0;transform:translateY(-40%) scale(.7,1.3)}60%{opacity:1;transform:translateY(4%) scale(1.1,.9)}to{opacity:1;transform:none}}@keyframes pl-btn-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pl-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pl-panel-in{0%{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:none}}@keyframes pl-sheen{0%{left:-60%}35%,to{left:130%}}@keyframes pl-pointer{0%{transform:translateY(-50%)}to{transform:translate(-5px,-50%)}}@keyframes pl-ball-drop{0%{opacity:0;transform:translateY(-170%) scale(.6,1.4)}55%{opacity:1;transform:translateY(10%) scale(1.18,.82)}75%{transform:translateY(-12%) scale(.95,1.05)}to{opacity:1;transform:none}}@keyframes pl-ball-bob{0%,to{translate:0 0;rotate:0deg}25%{translate:0 -6px;rotate:-5deg}50%{translate:0 0;rotate:0deg}}@keyframes pl-ball-spin{0%,86%,to{transform:rotate(0) scale(1)}93%{transform:rotate(360deg) scale(.8)}}@keyframes pl-sight{0%{background:#fff6d6;opacity:1;box-shadow:0 0 6px 2px #fff1b8e6}33%{background:#e9dfc4;opacity:.55;box-shadow:none}}@keyframes pl-tagline{0%{opacity:0;transform:translateY(8px)}4%,21%{opacity:1;transform:none}25%,to{opacity:0;transform:translateY(-8px)}}@keyframes pl-lamp{0%{opacity:.75}to{opacity:1}}@keyframes pl-mote-rise{0%{transform:translate(0);opacity:0}10%{opacity:.85}50%{transform:translate(18px,-55vh)}90%{opacity:.6}to{transform:translate(-12px,-110vh);opacity:0}}@keyframes pl-pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes pl-winner{0%{transform:scale(.5)}60%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes pl-crown{0%,to{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-4px) rotate(8deg)}}@keyframes pl-fall{to{transform:translateY(112vh) rotate(720deg)}}@media(prefers-reduced-motion:reduce){.card,.card h1,.card h2,.card p,.btn,.btn:before,.btn:after,.pball,.pball b,.pl-sights i,.pl-lamp,.pl-mote,.pl-panel,.pl-wordmark,.pl-kicker,.table-row,.stat,.help,.go-player,.go-player:before,#waiting-face,.status .dot,.card>*,.pl-panel>*{animation:none!important}.pl-taglines span{animation:none}.pl-taglines span:first-child{opacity:1}.pl-mote,.pl-confetti{display:none}}.mb-icon .pball{font-size:32px}.btn.primary .mb-icon .pball{font-size:40px}
