:root{--green:#56c42b;--green-2:#3d9e1a;--green-glow:#7dff43;--ink:#0a0e0a;--ink-2:#11160f;--panel:#161c12;--panel-2:#1c2417;--white:#f4f8f0;--muted:#8fa386;--border:#2c3a22;--home:#56c42b;--away:#e23b3b;--radius:14px;--font:"Segoe UI",system-ui,-apple-system,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--ink);height:100%;color:var(--white);font-family:var(--font);-webkit-user-select:none;user-select:none;overflow:hidden}#app{position:fixed;inset:0}.screen{display:none;position:absolute;inset:0}.screen.active{display:block}#menu-screen.active{justify-content:center;align-items:center;display:flex}.menu-bg{background:#070a06 url(/brand/court.jpg) 50%/cover no-repeat;position:absolute;inset:0}.menu-bg:before{content:"";background:radial-gradient(circle at 50% 42%,#070a060d,#070a0657 72%),linear-gradient(#070a061f,#070a0675);position:absolute;inset:0}.menu-bg:after{content:"";opacity:.04;background-image:repeating-linear-gradient(45deg,#fff 0 2px,#0000 2px 22px);position:absolute;inset:0}.menu-inner{z-index:2;text-align:center;flex-direction:column;align-items:center;gap:10px;width:min(92vw,440px);padding:24px 0;display:flex;position:relative}.menu-logo{filter:drop-shadow(0 16px 40px #000000b3)drop-shadow(0 0 24px #56c42b40);width:min(78vw,330px)}.ca-bar{justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.ca-chip{border:1px solid var(--border);background:var(--ink-2);color:var(--white);font-family:var(--font);cursor:pointer;border-radius:10px;align-items:center;gap:8px;max-width:300px;padding:7px 12px;font-size:12px;font-weight:700;transition:all .15s;display:inline-flex}.ca-chip:hover{border-color:var(--green);box-shadow:0 4px 16px #56c42b38}.ca-label{background:linear-gradient(180deg,var(--green),var(--green-2));color:#06210a;letter-spacing:1px;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:900}.ca-value{color:var(--muted);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ca-value.set{color:var(--green-glow)}.ca-copy{color:var(--muted);font-size:14px}.ca-chip:hover .ca-copy{color:var(--green-glow)}.x-link{border:1px solid var(--border);background:var(--ink-2);width:38px;height:38px;color:var(--white);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.x-link:hover{border-color:var(--green);color:var(--green-glow);transform:translateY(-2px);box-shadow:0 6px 18px #56c42b40}.tagline{letter-spacing:2px;color:var(--white);margin-top:-2px;font-size:15px;font-weight:800}.tagline .g{color:var(--green-glow);text-shadow:0 0 18px #7dff4380}.menu-card{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:14px;width:100%;padding:16px;display:flex;box-shadow:0 12px 40px #00000080}.menu-row{text-align:left;flex-direction:column;gap:7px;display:flex}.lbl{letter-spacing:2px;color:var(--muted);font-size:11px;font-weight:700}.seg{background:var(--ink-2);border:1px solid var(--border);border-radius:11px;gap:6px;padding:5px;display:flex}.seg-btn{color:var(--muted);cursor:pointer;font-size:12px;font-weight:700;font-family:var(--font);background:0 0;border:0;border-radius:8px;flex:1;padding:9px 6px;transition:all .15s}.seg-btn:hover{color:var(--white)}.seg-btn.active{background:linear-gradient(180deg,var(--green),var(--green-2));color:#06210a;box-shadow:0 4px 14px #56c42b66}.play-btn{background:linear-gradient(180deg,var(--green-glow),var(--green-2));color:#06210a;letter-spacing:1px;cursor:pointer;border:0;border-radius:11px;margin-top:2px;padding:14px;font-size:17px;font-weight:900;transition:all .15s;box-shadow:0 8px 24px #56c42b73}.play-btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px #56c42b99}.play-btn:active{transform:translateY(0)}.btn-sub{letter-spacing:1px;opacity:.7;margin-top:1px;font-size:10px;font-weight:700;display:block}.name-input{border:1px solid var(--border);background:var(--ink-2);width:100%;color:var(--white);font-weight:700;font-family:var(--font);border-radius:9px;padding:9px 12px;font-size:13px}.name-input:focus{border-color:var(--green);outline:none}.online-btn{border:1px solid var(--green);color:var(--green-glow);letter-spacing:1px;cursor:pointer;font-size:15px;font-weight:900;font-family:var(--font);background:linear-gradient(#56c42b2e,#56c42b0f);border-radius:11px;margin-top:2px;padding:12px;transition:all .15s}.online-btn:hover{background:linear-gradient(#56c42b4d,#56c42b1f);transform:translateY(-2px)}.lobby{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#050804d1;justify-content:center;align-items:center;display:none;position:absolute;inset:0}.lobby.open{display:flex}.lobby-card{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:1px solid var(--border);border-radius:18px;width:min(94vw,520px);padding:22px;box-shadow:0 24px 70px #0009}.lobby-head{align-items:center;gap:10px;display:flex}.lobby-head h2{letter-spacing:1px;color:var(--white);flex:1;font-size:19px;font-weight:900}.net-dot{letter-spacing:1px;color:var(--muted);font-size:11px;font-weight:800}.net-dot.on{color:var(--green-glow)}.lobby-close{border:1px solid var(--border);width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;font-size:15px}.lobby-close:hover{color:var(--white);border-color:var(--green)}.lobby-sub{color:var(--muted);margin:8px 0 14px;font-size:12px}.rooms-list{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.room-card{text-align:left;border:1px solid var(--border);background:var(--ink-2);color:var(--white);cursor:pointer;font-family:var(--font);border-radius:12px;flex-direction:column;gap:7px;padding:13px 15px;transition:all .15s;display:flex}.room-card:hover{border-color:var(--green);transform:translate(3px);box-shadow:0 6px 20px #56c42b33}.room-card.full{opacity:.5;cursor:not-allowed}.room-card.full:hover{border-color:var(--border);box-shadow:none;transform:none}.room-top{justify-content:space-between;align-items:center;display:flex}.room-name{letter-spacing:1px;font-size:15px;font-weight:900}.room-status{letter-spacing:1px;color:var(--muted);background:#8fa38633;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:800}.room-status.playing{color:#ff6a6a;background:#e23b3b33}.room-status.waiting{color:var(--green-glow);background:#56c42b33}.room-mid{font-variant-numeric:tabular-nums;color:var(--white);font-size:24px;font-weight:900}.room-bot{justify-content:space-between;align-items:center;font-size:12px;display:flex}.room-players{color:var(--muted);font-weight:700}.room-join{color:var(--green-glow);letter-spacing:1px;font-weight:900}.quickplay{width:100%}.controls-hint{color:var(--muted);text-align:left;grid-template-columns:1fr 1fr;gap:5px 18px;width:100%;padding:4px 6px;font-size:11.5px;display:grid}.controls-hint b{color:var(--green-glow);font-weight:800}.credit{color:#4a5640;letter-spacing:3px;font-size:10px;font-weight:700}#court{touch-action:none;background:#0a1207;width:100%;height:100%;display:block;position:absolute;inset:0}#hud{pointer-events:none;z-index:5;position:absolute;inset:0}.scorebar{border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0e09d1;border-radius:14px;align-items:center;gap:14px;padding:8px 16px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #00000080}.team{letter-spacing:1px;color:var(--muted);align-items:center;gap:7px;font-size:12px;font-weight:800;display:flex}.team .dot{border-radius:50%;width:10px;height:10px}.team-home .dot{background:var(--home);box-shadow:0 0 10px var(--home)}.team-away .dot{background:var(--away);box-shadow:0 0 10px var(--away)}.scoreblock{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:30px;font-weight:900;line-height:1;display:flex}#score-home{color:var(--home)}#score-away{color:var(--away)}.scoreblock .sep{color:var(--muted);font-size:22px}.timer{color:var(--white);border:1px solid var(--border);font-variant-numeric:tabular-nums;letter-spacing:1px;background:#0a0e09d1;border-radius:10px;padding:3px 14px;font-size:15px;font-weight:800;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.stamina-wrap{width:min(38vw,220px);position:absolute;bottom:18px;left:16px}.stamina-lbl{letter-spacing:2px;color:var(--muted);margin-bottom:4px;font-size:10px;font-weight:700}.stamina-bar{border:1px solid var(--border);background:#0a0e09cc;border-radius:6px;height:10px;overflow:hidden}#stamina-fill{background:linear-gradient(90deg,var(--green-2),var(--green-glow));width:100%;height:100%;transition:width .1s linear}#toast{letter-spacing:2px;color:var(--green-glow);text-shadow:0 4px 24px #000000b3,0 0 30px #7dff4380;opacity:0;text-align:center;white-space:nowrap;font-size:clamp(26px,7vw,56px);font-weight:900;transition:opacity .25s;position:absolute;top:38%;left:50%;transform:translate(-50%)}#toast.show{opacity:1}#ball-tag{color:#0a0e0a;letter-spacing:1px;opacity:0;background:#f4f8f0f2;border-radius:20px;padding:8px 16px;font-size:12px;font-weight:800;transition:all .2s;position:absolute;top:18px;right:18px;transform:translateY(-6px);box-shadow:0 6px 20px #0006}#ball-tag.show{opacity:1;transform:translateY(0)}.action-hint{border:1px solid var(--border);color:var(--white);letter-spacing:.5px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#0a0e09d9;border-radius:12px;padding:8px 18px;font-size:13px;font-weight:700;position:absolute;bottom:84px;left:50%;transform:translate(-50%)}.keycaps{z-index:6;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:8px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.keycaps span{color:var(--muted);border:1px solid var(--border);background:#0a0e09b3;border-radius:8px;align-items:center;gap:5px;padding:5px 9px;font-size:11px;display:flex}.keycaps b{border:1px solid var(--border);color:var(--white);background:#f4f8f01f;border-radius:6px;padding:2px 6px;font-weight:800;display:inline-block}.keycaps .hot b{background:linear-gradient(180deg,var(--green),var(--green-2));color:#06210a;border-color:#0000}@media (width<=680px){.keycaps{display:none}.action-hint{font-size:12px;bottom:20px}}#quit-btn{z-index:6;border:1px solid var(--border);width:38px;height:38px;color:var(--muted);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0e09d1;border-radius:10px;font-size:16px;position:absolute;top:14px;right:14px}#quit-btn:hover{color:var(--white);border-color:var(--green)}.overlay{z-index:8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#050804c7;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay.hidden{display:none}.go-card{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:1px solid var(--border);text-align:center;border-radius:18px;flex-direction:column;align-items:center;gap:12px;width:min(90vw,360px);padding:28px 34px;display:flex;box-shadow:0 20px 60px #0009}#go-title{letter-spacing:2px;font-size:24px;font-weight:900}.go-score{font-variant-numeric:tabular-nums;font-size:46px;font-weight:900}#go-sub{color:var(--muted);letter-spacing:1px;font-size:13px;font-weight:700}.ghost-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;width:100%;font-weight:800;font-family:var(--font);background:0 0;border-radius:10px;padding:11px}.ghost-btn:hover{color:var(--white);border-color:var(--green)}.go-card .play-btn{width:100%}@media (width<=520px){.controls-hint{grid-template-columns:1fr}}
