@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(./barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(./barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(./barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(./barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(./barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(./barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(./barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(./barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(./barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:800;src:url(./barlow-condensed-vietnamese-800-normal-CpjukuLw.woff2)format("woff2"),url(./barlow-condensed-vietnamese-800-normal-BZxKbt5V.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:800;src:url(./barlow-condensed-latin-ext-800-normal-DGNyg4u8.woff2)format("woff2"),url(./barlow-condensed-latin-ext-800-normal-gY_0Gifi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:800;src:url(./barlow-condensed-latin-800-normal-BKzMuPgK.woff2)format("woff2"),url(./barlow-condensed-latin-800-normal-e9GbPXiK.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:800;src:url(./barlow-condensed-vietnamese-800-italic-DdsBx9lY.woff2)format("woff2"),url(./barlow-condensed-vietnamese-800-italic-aDhyDJMT.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:800;src:url(./barlow-condensed-latin-ext-800-italic-BbzArEj4.woff2)format("woff2"),url(./barlow-condensed-latin-ext-800-italic-Ca7Cun8E.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:800;src:url(./barlow-condensed-latin-800-italic-Cnej2eWp.woff2)format("woff2"),url(./barlow-condensed-latin-800-italic-B5BpsPSY.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(./ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(./ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(./ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(./ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(./ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(./ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#0b131c;--panel:#0b141ec7;--panel-solid:#0e1925;--panel-hi:#ffffff0f;--line:#ffffff1f;--line-hi:#ffffff52;--text:#eef3f7;--muted:#9aacbd;--ball:#d8f03c;--ball-ink:#13190a;--court:#2c5d8f;--win:#7fe3a0;--lose:#ff8a7a;--warm:#ffd48a;--f-display:"Barlow Condensed", "Arial Narrow", system-ui, sans-serif;--f-body:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:10px;--shadow:0 18px 50px #00000061;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}*{box-sizing:border-box}html,body,#root,.app{background:var(--ink);width:100%;height:100%;color:var(--text);font-family:var(--f-body);-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}canvas{touch-action:none;display:block}button{font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:8px;display:inline-flex}button svg{flex:none}button:focus-visible,label:focus-within{outline:2px solid var(--ball);outline-offset:2px}.key{min-width:1.75em;height:1.75em;font-family:var(--f-display);color:#eef3f7;vertical-align:middle;background:linear-gradient(#3a4b5d,#2a3846);border:1px solid #ffffff2e;border-radius:5px;place-items:center;margin:0 .12em;padding:0 .4em;font-size:.8em;font-weight:700;line-height:1;display:inline-grid;transform:translateY(-1px);box-shadow:0 2px #121b25,0 3px 6px #00000059,inset 0 1px #ffffff2e}.key.wide{letter-spacing:.06em;text-transform:uppercase;font-size:.7em}.arrow-keys{vertical-align:middle;flex-direction:column;align-items:center;gap:2px;font-size:.85em;display:inline-flex}.arrow-keys>span{display:inline-flex}.rolling{vertical-align:bottom;display:inline-grid;overflow:hidden}.rolling>span{grid-area:1/1;display:block}.round{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:42px;height:42px;color:var(--text);border-radius:50%;font-size:19px;transition:border-color .15s,background .15s,transform .15s}.round:hover{border-color:var(--line-hi);background:#1e2c3ae6;transform:translateY(-1px)}.hud{pointer-events:none;font-variant-numeric:tabular-nums;position:fixed;inset:0}.scoreboard{background:var(--grain), linear-gradient(180deg, #101c29eb, #0a121be6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-width:300px;box-shadow:var(--shadow);border:1px solid var(--line);font-family:var(--f-display);border-radius:8px;position:absolute;top:20px;left:20px;overflow:hidden}.scoreboard:before{content:"";background:linear-gradient(90deg, var(--ball), #8fd14f 60%, transparent);height:3px;display:block}.sb-row{border-bottom:1px solid var(--line);letter-spacing:.02em;align-items:center;height:38px;font-size:22px;font-weight:700;display:flex}.sb-serve{width:26px;color:var(--ball);filter:drop-shadow(0 0 6px #d8f03c99);justify-content:center;font-size:15px;display:flex}.sb-serve span{display:flex}.sb-name{text-transform:uppercase;flex:1;padding-right:12px}.away .sb-name{color:#ffc0b8}.sb-set,.sb-games{text-align:center;width:30px;color:var(--muted)}.sb-set.won{color:var(--text)}.sb-games{color:var(--text);background:var(--panel-hi);height:100%;line-height:38px}.sb-points{text-align:center;background:var(--ball);width:52px;color:var(--ball-ink);height:100%;line-height:38px}.sb-foot{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-content:space-between;gap:12px;padding:5px 12px;font-size:14px;font-weight:600;display:flex}.sb-foot b{color:var(--ball);margin-left:10px;display:inline-block}.sb-foot b.second{color:var(--warm)}.sb-sets{display:none}.hud-right{pointer-events:auto;gap:8px;display:flex;position:absolute;top:20px;right:20px}.toast-anchor{justify-items:center;display:grid;position:absolute;top:24%;left:0;right:0}.toast{isolation:isolate;justify-items:center;padding:6px 48px 10px;display:grid;position:relative}.toast-band{transform-origin:0;border-top:3px solid var(--tone);border-bottom:3px solid var(--tone);z-index:-1;background:linear-gradient(90deg,#0000,#0b141ed1 18% 82%,#0000);position:absolute;inset:12% -10% 22%;transform:skew(-14deg)}.toast.win{--tone:var(--ball)}.toast.lose{--tone:var(--lose)}.toast.neutral{--tone:var(--warm)}.toast-title{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.01em;color:var(--tone);text-shadow:0 4px #00000040,0 10px 40px #00000073;font-size:clamp(56px,9vw,110px);font-style:italic;font-weight:800;line-height:.95}.toast.lose .toast-title{color:#fff}.toast-detail{background:var(--tone);color:var(--ball-ink);font-family:var(--f-display);letter-spacing:.08em;text-transform:uppercase;border-radius:3px;margin-top:6px;padding:3px 14px;font-size:22px;font-weight:800;transform:skew(-10deg)}.grade-anchor{justify-items:center;display:grid;position:absolute;bottom:24%;left:0;right:0}.grade{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.04em;text-shadow:0 3px 12px #0000008c;font-size:36px;font-style:italic;font-weight:800}.grade-perfect{color:var(--ball)}.grade-good{color:#fff}.grade-early,.grade-late{color:var(--lose)}.serve-panel{background:var(--grain), var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius);border:1px solid var(--line);width:min(300px,100% - 40px);box-shadow:var(--shadow);opacity:0;gap:9px;padding:12px 14px;transition:opacity .2s,transform .2s;display:grid;position:absolute;top:146px;left:20px;transform:translateY(-8px)}.serve-panel[data-stage=aim],.serve-panel[data-stage=toss]{opacity:1;transform:translateY(0)}.serve-steps{font-family:var(--f-display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);gap:4px;font-size:14px;font-weight:700;display:grid}.serve-panel[data-stage=aim] .step.aim,.serve-panel[data-stage=aim] .step.toss,.serve-panel[data-stage=toss] .step.hit{color:var(--ball)}.serve-meter{background:#ffffff14;border-radius:7px;height:14px;position:relative;overflow:hidden;box-shadow:inset 0 1px 3px #00000080}.serve-good,.serve-perfect{position:absolute;top:0;bottom:0}.serve-good{background:#d8f03c40}.serve-perfect{background:var(--ball);box-shadow:0 0 12px #d8f03c99}.serve-ball{background:#fff;border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;top:1px;left:0;box-shadow:0 0 0 2px #00000059}.serve-panel[data-stage=aim] .serve-ball{opacity:.3}.serve-call{text-align:left;font-family:var(--f-display);text-transform:uppercase;letter-spacing:.04em;min-height:1.2em;font-size:24px;font-style:italic;font-weight:800}.serve-call[data-state=perfect]{color:var(--ball)}.serve-call[data-state=good]{color:#fff}.serve-call[data-state=late]{color:var(--lose);font-size:18px}.serve-keys{color:var(--muted);flex-wrap:wrap;justify-content:flex-start;gap:6px 14px;font-size:13px;display:flex}.telemetry{background:var(--grain), var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:var(--radius);min-width:170px;box-shadow:var(--shadow);font-family:var(--f-display);gap:2px;padding:8px 12px;display:grid;position:absolute;bottom:20px;right:20px}.tele-row{align-items:center;gap:10px;padding:3px 0;display:flex}.tele-row+.tele-row{border-top:1px solid var(--line)}.tele-icon{color:var(--ball);font-size:22px}.tele-text{flex:1;font-size:18px;font-weight:700;line-height:1.05;display:grid}.tele-text small{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:11px}.tele-text b{font-size:24px}.wind-arrow{border:1px solid var(--line);width:28px;height:28px;color:var(--ball);border-radius:50%;place-items:center;font-size:16px;transition:transform .4s;display:inline-grid}.rally{background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);font-family:var(--f-display);letter-spacing:.1em;text-transform:uppercase;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:16px;font-weight:700;display:flex;position:absolute;top:146px;left:20px}.rally.hot{color:var(--warm);border-color:#ffd48a80}.controls{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:var(--radius);color:var(--muted);background:#0b141e99;flex-wrap:wrap;align-items:center;gap:8px 16px;max-width:min(360px,100% - 32px);padding:8px 14px;font-size:13px;animation:1s 14s forwards controls-fade;display:flex;position:absolute;bottom:18px;left:20px}@keyframes controls-fade{to{opacity:.18}}.overlay{background:radial-gradient(120% 90% at 0%,#080e16eb 0%,#080e1699 55%,#080e161f 100%);justify-content:flex-start;padding:24px clamp(16px,6vw,90px);display:flex;position:fixed;inset:0;overflow-y:auto}.overlay.dim{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#080e1694;justify-content:center}.menu-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:clamp(20px,4vw,56px);width:min(1100px,100%);margin-block:auto;display:grid}.menu-col{flex-direction:column;gap:16px;min-width:0;display:flex}.settings{background:var(--grain), linear-gradient(160deg, #121f2dd1, #0a121bd1);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:18px 20px}.settings-inner{flex-direction:column;gap:14px;display:flex}@media (max-width:900px){.menu-grid{grid-template-columns:minmax(0,1fr);align-items:start;gap:18px}}.eyebrow{font-family:var(--f-display);letter-spacing:.16em;text-transform:uppercase;color:var(--ball);align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.logo{font-family:var(--f-display);text-transform:uppercase;letter-spacing:-.01em;text-shadow:0 10px 40px #00000059;margin:0;font-size:clamp(60px,9vw,112px);font-style:italic;font-weight:800;line-height:.82}.logo span{color:#0000;-webkit-text-stroke:2px var(--text);background:linear-gradient(90deg, var(--ball), transparent 70%);-webkit-background-clip:text;background-clip:text;display:block}h2{font-family:var(--f-display);text-transform:uppercase;margin:0;font-size:42px;font-weight:800;line-height:1}h3{font-family:var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--ball);align-items:center;gap:8px;margin:0 0 8px;font-size:16px;font-weight:700;display:flex}.lede{color:var(--muted);margin:0;font-size:17px}.choice{border:0;min-width:0;margin:0;padding:0}.choice legend{font-family:var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:7px;margin-bottom:8px;padding:0;font-size:14px;font-weight:700;display:flex}.choice legend svg{color:var(--ball);font-size:16px}.choice-row{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));gap:8px;display:grid}.choice label,.swatches label{isolation:isolate;border:1px solid var(--line);cursor:pointer;background:#ffffff09;border-radius:8px;transition:border-color .15s,background .15s;position:relative}.choice label{flex-direction:column;gap:2px;padding:8px 11px;display:flex}.choice label:hover,.swatches label:hover{border-color:var(--line-hi)}.choice label.on,.swatches label.on{border-color:#0000}.choice-sel{z-index:-1;border:1.5px solid var(--ball);background:linear-gradient(160deg,#d8f03c2e,#d8f03c0d);border-radius:8px;position:absolute;inset:-1px;box-shadow:0 0 18px #d8f03c26}.choice input,.swatches input{opacity:0;pointer-events:none;position:absolute}.choice-label{font-family:var(--f-display);text-transform:uppercase;justify-content:space-between;align-items:center;gap:6px;font-size:19px;font-weight:700;display:flex}.choice-badge{color:var(--muted);font-size:16px;display:inline-flex}.on .choice-badge{color:var(--ball)}.surface-chip{border:1.5px solid #ffffffd9;border-radius:4px;width:16px;height:16px;box-shadow:inset 0 0 0 2px #00000026}.choice-note{color:var(--muted);font-size:12px;line-height:1.3}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatches label{flex-direction:column;align-items:center;gap:5px;min-width:60px;padding:7px 8px 6px;display:flex}.swatch{border:2px solid #ffffffbf;border-radius:50%;width:28px;height:28px;box-shadow:inset 0 -4px 8px #0000004d,0 3px 8px #0000004d}.swatch-label{font-family:var(--f-display);letter-spacing:.06em;text-transform:uppercase;font-size:13px;font-weight:700}.menu-actions,.card-actions{gap:10px;display:grid}.menu-secondary{grid-template-columns:1fr 1fr;gap:10px;display:grid}.primary{background:linear-gradient(180deg, #e4f765, var(--ball));color:var(--ball-ink);font-family:var(--f-display);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:8px;padding:14px 20px;font-size:25px;font-style:italic;font-weight:800;position:relative;overflow:hidden;box-shadow:0 10px 28px #d8f03c47,inset 0 -3px #0000001f}.primary span{text-align:left;flex:1}.primary:after{content:"";background:linear-gradient(100deg,#0000 30%,#ffffff73 50%,#0000 70%);animation:3.2s ease-in-out 1s infinite sweep;position:absolute;inset:0;transform:translate(-120%)}@keyframes sweep{0%,60%{transform:translate(-120%)}to{transform:translate(120%)}}.primary .key{color:var(--ball-ink);background:#ffffff73;border-color:#00000026;font-size:.55em;font-style:normal;box-shadow:0 2px #0003}.ghost{color:var(--text);border:1px solid var(--line);font-family:var(--f-display);letter-spacing:.08em;text-transform:uppercase;background:#ffffff0a;border-radius:8px;padding:10px 16px;font-size:17px;font-weight:700;transition:border-color .15s,background .15s}.ghost:hover{border-color:var(--line-hi);background:#ffffff14}.sheet-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5;background:#050a1099;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sheet,.card{background:var(--grain), linear-gradient(160deg, #13212f, #0b141d);border:1px solid var(--line);border-radius:14px;width:min(760px,100%);max-height:calc(100vh - 40px);padding:24px 26px;overflow-y:auto;box-shadow:0 30px 90px #0000008c}.sheet-head{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.controls-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px 24px;display:grid}.controls-grid section{border-top:1px solid var(--line);padding-top:12px}.controls-grid dl{grid-template-columns:auto 1fr;align-items:center;gap:8px 12px;margin:0;font-size:14px;display:grid}.controls-grid dt{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);justify-self:end;font-size:15px;font-weight:700}.controls-grid dd{color:var(--text);margin:0}.controls-grid p{color:var(--muted);margin:10px 0 0;font-size:13px}.card{flex-direction:column;gap:14px;margin-block:auto;display:flex}.card.over{text-align:center;align-items:stretch;width:min(440px,100%)}.card.over .eyebrow{justify-content:center}.card.over.lost .eyebrow{color:var(--lose)}.over-icon{width:78px;height:78px;color:var(--ball-ink);background:radial-gradient(circle at 35% 30%, #f1ff9a, var(--ball) 60%, #a9c51c);border-radius:50%;flex:none;align-self:center;place-items:center;font-size:42px;display:grid;box-shadow:0 10px 40px #d8f03c66}.lost .over-icon{color:var(--muted);box-shadow:none;background:radial-gradient(circle at 35% 30%,#4a5a6c,#263342)}.final{justify-content:center;gap:10px;display:flex}.final span{border:1px solid var(--line);min-width:44px;font-family:var(--f-display);border-radius:6px;grid-template-rows:1fr 1fr;font-size:28px;font-weight:800;display:grid;overflow:hidden}.final b{padding:2px 10px}.final span.won b:first-child,.final span.lost b:last-child{background:var(--ball);color:var(--ball-ink)}.stat-head{font-family:var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);justify-content:space-between;margin-bottom:-6px;font-size:13px;font-weight:700;display:flex}.stat{font-family:var(--f-display);grid-template-columns:40px 1fr 40px;align-items:center;row-gap:5px;font-size:22px;font-weight:700;display:grid}.stat-you{text-align:left}.stat-opp{text-align:right}.stat-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:14px}.stat-bar{grid-column:1/-1;justify-content:space-between;gap:4px;height:6px;display:flex}.stat-bar i{background:#ffffff12;border-radius:3px;flex:1;position:relative;overflow:hidden}.stat-bar i.you{transform-origin:0;background:var(--ball)}.stat-bar i.opp{transform-origin:100%;background:#ffc0b8}.note{color:var(--muted);font-size:13px}.note b{color:var(--text)}@media (max-width:640px){.scoreboard{min-width:0;top:12px;left:12px}.sb-row{height:32px;font-size:18px}.hud-right{top:12px;right:12px}.controls{display:none}.telemetry{min-width:0;bottom:12px;right:12px}.choice-row{grid-template-columns:1fr}.choice label{flex-direction:row;justify-content:space-between;align-items:baseline}.settings{padding:14px}}@media (prefers-reduced-motion:reduce){.primary:after,.controls{animation:none}}.online-btn{color:var(--text);font-family:var(--f-display);letter-spacing:.06em;text-transform:uppercase;background:linear-gradient(#38bdf838,#38bdf81a);border:1px solid #38bdf88c;border-radius:8px;justify-content:flex-start;padding:12px 18px;font-size:21px;font-style:italic;font-weight:800;position:relative;overflow:hidden}.online-btn span{text-align:left;flex:1}.online-btn:hover{border-color:#38bdf8e6}.live-dot{background:#4ade80;border-radius:50%;width:9px;height:9px;animation:1.8s ease-out infinite live;box-shadow:0 0 #4ade8099}@keyframes live{to{box-shadow:0 0 0 10px #4ade8000}}.field{font-family:var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);gap:6px;font-size:14px;font-weight:700;display:grid}.field input,.join-row input{font:600 18px var(--f-body);color:var(--text);border:1px solid var(--line);letter-spacing:normal;text-transform:none;background:#ffffff0d;border-radius:8px;outline:none;padding:10px 12px}.field input:focus,.join-row input:focus{border-color:var(--ball)}.join-row{grid-template-columns:1fr auto;gap:10px;display:grid}.join-row input{font-family:var(--f-display);letter-spacing:.2em;text-transform:uppercase}button:disabled{opacity:.45;cursor:not-allowed}.net-error{color:var(--lose);background:#ff8a7a1a;border:1px solid #ff8a7a80;border-radius:8px;padding:8px 12px;font-size:14px}.room-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.room-list li{border:1px solid var(--line);background:#ffffff09;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.room-list li.empty{color:var(--muted);border-style:dashed}.room-list li>div{gap:2px;display:grid}.room-list b{font-family:var(--f-display);text-transform:uppercase;font-size:20px}.room-code{color:var(--text);background:#d8f03c0f;border:1px dashed #d8f03c99;border-radius:10px;align-items:center;gap:12px;padding:10px 14px;display:flex}.room-code span{font-family:var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:13px}.room-code b{text-align:left;font-family:var(--f-display);letter-spacing:.24em;color:var(--ball);flex:1;font-size:32px}.ready{color:var(--muted);font-size:24px}.ready.on{color:#4ade80}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.serve-aim{background:#7fe3a061;border-radius:6px;height:12px;position:relative;overflow:hidden;box-shadow:inset 0 1px 3px #00000080}.aim-out{background:#ff8a7a73;position:absolute;top:0;bottom:0}.aim-out.left{left:0}.aim-out.right{right:0}.aim-line{background:#fff;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.aim-needle{background:#fff;border-radius:2px;width:4px;height:14px;margin-left:-2px;transition:background .1s;position:absolute;top:-1px;left:50%;box-shadow:0 0 0 1px #00000080}.aim-needle[data-state=line]{background:var(--ball)}.aim-needle[data-state=out]{background:var(--lose)}.serve-panel[data-stage=aim] .serve-aim{opacity:.35}
