:root{--bg:#101714;--panel:#19211d;--line:#ffffff12;--muted:#8b9b90;--ink:#f0f2e9;--lime:#d2fa77;--orange:#ed8853}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0;background:none}button:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:5px}button:disabled{opacity:.4;cursor:not-allowed}button{transition:background .18s,transform .18s}button:active{transform:translateY(1px)}[hidden]{display:none!important}a{text-decoration:none;color:inherit}.topbar{height:88px;padding:0 4.5%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;gap:12px;align-items:center;font-size:19px;font-weight:800;letter-spacing:1px}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:5px;color:var(--muted)}.brand-icon{width:39px;height:43px;display:block;font-size:43px;line-height:43px;color:var(--lime);font-weight:900;font-style:italic;position:relative}.brand-icon span{position:absolute;font-size:22px;top:-4px;right:-5px}nav{display:flex;align-items:center;gap:32px;align-self:stretch}.nav{color:var(--muted);position:relative;padding:0 4px}.nav.active{color:var(--ink)}.nav.active:after{content:"";position:absolute;bottom:0;height:3px;left:0;right:0;background:var(--lime)}.nav span{font-size:11px;margin-left:7px;background:#ffffff0b;border-radius:4px;padding:3px 5px}.top-right{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:1px;color:var(--muted)}.live-dot{display:inline-block;width:6px;height:6px;background:var(--lime);border-radius:50%;box-shadow:0 0 12px #d2fa7744}.avatar,.iconbtn{width:34px;height:34px;border:1px solid #ffffff20;border-radius:50%;color:var(--ink);font-size:16px}.iconbtn{margin-left:12px;border:0}.iconbtn.enabled{color:var(--lime)}main{max-width:1600px;margin:auto;padding:40px 4.5% 0}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:600}.intro .eyebrow{display:flex;align-items:center;gap:9px}.intro .eyebrow span{width:16px;height:1px;background:var(--lime)}h1{font-size:clamp(27px,3vw,42px);margin:13px 0 10px;letter-spacing:-1.5px;font-weight:750}h1 span{color:var(--lime)}p{color:var(--muted);line-height:1.8;margin:0}.personal{text-align:right}.personal>span{font-size:11px;color:var(--muted)}.personal strong{display:block;font-size:42px;line-height:1.4;letter-spacing:-2px}.personal small{font-size:17px;letter-spacing:0;color:var(--muted);font-weight:400}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px}.court-panel{position:relative;height:560px;min-width:0;border:1px solid #ffffff13;border-radius:16px;overflow:hidden;background:#222b25}canvas#court{width:100%;height:100%;display:block}.court-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#080e0a70,transparent 28%,transparent 72%,#09110b99)}.scene-top{position:absolute;top:28px;left:28px;right:28px;display:flex;justify-content:space-between;gap:16px;align-items:start}.scene-top h2{font-size:16px;font-weight:500;margin:10px 0}.court-badge{font-size:10px;background:#0c171780;border:1px solid #ffffff21;padding:8px 10px;border-radius:20px;white-space:nowrap}.court-badge i{display:inline-block;width:5px;height:5px;background:var(--lime);border-radius:50%;margin-right:6px}.court-lettering{position:absolute;left:32px;top:135px;font-size:clamp(35px,5vw,72px);line-height:.92;font-weight:900;font-style:italic;letter-spacing:-4px;opacity:.9;pointer-events:none}.court-lettering span{color:transparent;-webkit-text-stroke:1px #efffe777}.scene-bottom{position:absolute;bottom:24px;left:28px;right:28px;display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#d7dfd1;letter-spacing:1px}.scene-bottom i{margin-right:7px}aside{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:24px;display:flex;flex-direction:column}.side-top{display:flex;justify-content:space-between;align-items:center}.tiny-label{color:var(--muted);font-size:10px;padding:4px 6px;border:1px solid var(--line);border-radius:4px}aside h2{font-size:23px;margin:15px 0 22px;font-weight:650;letter-spacing:-.8px}.mode-list{display:flex;flex-direction:column;gap:9px}.mode-card{width:100%;display:flex;align-items:center;gap:13px;text-align:left;padding:14px 12px;border:1px solid var(--line);border-radius:9px;background:#11191455}.mode-card.selected{background:#d2fa7710;border-color:#d2fa7770}.mode-card.selected .mode-icon,.mode-card.selected i{color:var(--lime)}.mode-icon{font-size:26px;color:var(--muted);width:28px;text-align:center}.mode-card b{display:block;font-size:14px;font-weight:600}.mode-card small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.mode-card i{margin-left:auto;color:#667969;font-size:19px;font-style:normal}.label-row{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;margin:18px 0 8px}.spot-picker{display:flex;gap:5px}.spot-picker button{flex:1;padding:7px 0;border:1px solid var(--line);font-size:10px;border-radius:4px;color:var(--muted)}.spot-picker .chosen{background:var(--lime);color:#1a2517;border-color:var(--lime)}.player-mini{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:17px;margin-top:auto;margin-bottom:16px}.jersey-mini{background:#d2fa7715;border:1px solid #d2fa7733;color:var(--lime);height:39px;width:34px;display:grid;place-items:center;font-size:17px;font-style:italic;font-weight:800;clip-path:polygon(18% 0,38% 7%,62% 7%,82% 0,100% 22%,84% 35%,84% 100%,16% 100%,16% 35%,0 22%)}.player-mini small{font-size:9px;color:var(--muted)}.player-mini b{display:block;margin-top:4px;font-size:13px;font-weight:600}.player-mini b span{font-size:10px;color:var(--muted);margin-left:5px}.player-mini button{font-size:22px;margin-left:auto;color:var(--muted)}.primary{width:100%;background:var(--lime);color:#172015;padding:16px 20px;border-radius:8px;font-size:14px;font-weight:700;display:flex;justify-content:space-between;align-items:center}.primary:hover{background:#e1ff9e}.primary span{font-size:19px}.under-button{font-size:10px;text-align:center;margin-top:10px}.daily{display:flex;align-items:center;justify-content:space-between;gap:24px;border:1px solid var(--line);border-radius:12px;margin-top:22px;padding:22px 26px;background:#161e19}.daily-title{display:flex;align-items:center;gap:16px}.daily-symbol{font-size:35px;color:var(--lime)}h3{font-size:15px;margin:0 0 6px;font-weight:600}.daily p{font-size:10px}.daily-track{display:flex;flex:1;max-width:340px;align-items:center;gap:6px}.milestone{flex:1;position:relative;text-align:center;color:var(--muted);font-size:10px}.milestone:before{content:"";position:absolute;height:1px;background:#ffffff15;left:0;right:0;top:13px}.milestone b{position:relative;display:grid;place-items:center;border:1px solid #4b5b4a;background:#1b251d;border-radius:50%;width:26px;height:26px;margin:0 auto 7px;font-size:11px;font-weight:500}.milestone.done b{background:var(--lime);color:#172015;border-color:var(--lime)}.draw-button{white-space:nowrap;border:1px solid #d2fa7744;padding:12px 16px;border-radius:7px;font-size:11px;color:var(--lime)}.draw-button span{border-radius:4px;background:var(--lime);color:#172015;padding:2px 5px;margin:0 8px}footer{display:flex;justify-content:space-between;color:#738276;font-size:9px;letter-spacing:1px;padding:25px 0 22px}footer i{margin:0 10px;color:#435244;font-style:normal}#scoreboard{position:absolute;left:28px;right:28px;top:25px;display:flex;justify-content:space-between;pointer-events:none}#scoreboard>div>span{display:block;font-size:12px;color:#d3dacd}#scoreboard strong{display:block;font-size:58px;line-height:1.2;font-weight:800;letter-spacing:-2px}#scoreboard small{font-size:9px;letter-spacing:3px;color:var(--muted)}.clock{text-align:right}.clock strong{font-variant-numeric:tabular-nums}#feedback{position:absolute;top:40%;left:0;right:0;text-align:center;color:var(--lime);font-size:28px;font-weight:800;pointer-events:none;text-shadow:0 3px 18px #0009;white-space:pre-line}#feedback small{display:block;font-size:11px;font-weight:500;color:#fff;margin-top:8px}.game-bottom{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);width:min(370px,86%)}.shot-row{display:flex;justify-content:space-between;font-size:10px;color:#e4eadf;margin-bottom:10px}.shot-row span:nth-child(2){color:var(--lime)}.shot-dots{display:flex;gap:4px;justify-content:center;margin-bottom:13px;min-height:5px}.shot-dots i{height:4px;background:#ffffff24;flex:1;border-radius:3px}.shot-dots i.hit{background:var(--lime)}.shot-dots i.miss{background:#cf805f}.shot-dots i.current{background:white}.meter{height:8px;border-radius:5px;position:relative;background:#07100cbb;margin-bottom:14px;border:1px solid #ffffff15}.sweet{position:absolute;left:45%;width:12%;height:100%;background:#d2fa7755;border-left:1px solid var(--lime);border-right:1px solid var(--lime)}.meter-fill{height:100%;width:0;background:#ffffff55;border-radius:5px}#meterNeedle{position:absolute;left:0;top:-4px;width:3px;height:14px;background:white;border-radius:2px}#shoot{background:var(--lime);color:#182014;border-radius:9px;width:100%;height:56px;font-weight:750;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 3px 30px #0004}#shoot span{font-weight:400;font-size:11px;margin-left:14px}#shoot.holding{background:#efffd5;transform:scale(.985)}.game-help{display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#aebdab;margin-top:9px}.game-help button{font-size:10px}.playing main{padding-top:25px}.playing .court-panel{height:min(740px,calc(100dvh - 150px));min-height:480px}.playing #gameSide h2{font-size:30px}.playing #gameSide>p{font-size:12px;margin-bottom:25px}.stat-line{display:flex;justify-content:space-between;font-size:12px;padding:16px 0;border-bottom:1px solid var(--line)}.stat-line span{color:var(--muted)}.shot-guide{margin:24px 0}.shot-guide>span{display:inline-block;margin:10px 10px 0 0;font-size:10px;color:var(--lime)}.shot-guide b{font-size:12px;font-weight:500}.shot-guide p{font-size:11px;margin:6px 0 8px 25px}.secondary{border:1px solid #ffffff24;border-radius:8px;padding:13px 18px;font-size:12px;width:100%;margin-top:12px}.secondary:hover{background:#ffffff08}dialog{background:#1a241d;color:var(--ink);border:1px solid #ffffff20;border-radius:18px;max-width:650px;width:calc(100% - 30px);padding:34px;max-height:90dvh;overflow:auto;box-shadow:0 20px 100px #0007}dialog::backdrop{background:#050b08b8;backdrop-filter:blur(8px)}.close{position:absolute;right:16px;top:12px;font-size:26px;color:var(--muted);width:34px;height:34px}dialog h2{font-size:28px;margin:12px 0}dialog p{font-size:12px}dialog .primary{margin-top:22px;justify-content:center;gap:12px}.collection{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:24px}.player-card{padding:16px 12px;text-align:left;border-radius:10px;background:linear-gradient(135deg,#3f5136,#19251e);border:1px solid #ffffff20;position:relative;overflow:hidden}.player-card.locked{opacity:.45;filter:grayscale(1)}.player-card.selected{border-color:var(--lime)}.player-card .card-number{display:block;font-size:64px;font-style:italic;font-weight:900;color:var(--lime);line-height:1.1;margin:12px 0;opacity:.9}.player-card b{display:block;font-size:16px}.player-card small{display:block;font-size:9px;color:#a8b7a5;margin-top:5px}.player-card .tag{font-size:8px;letter-spacing:1px;color:var(--lime)}.player-card .rating{position:absolute;right:12px;top:14px;font-size:13px}.card-hero{width:210px;margin:24px auto;padding:28px;text-align:center;border:1px solid #d2fa7780;border-radius:14px;background:radial-gradient(at 50% 0,#70814866,transparent 80%),#202d22;box-shadow:0 0 70px #d2fa7710}.card-hero .big-number{font-size:110px;color:var(--lime);font-weight:900;font-style:italic;line-height:1.2}.card-hero h3{font-size:23px}.card-hero small{color:var(--muted)}.modal-center{text-align:center}.result-score{font-size:100px;font-weight:850;color:var(--lime);letter-spacing:-7px;line-height:1.1;margin:20px 0}.result-score small{font-size:25px;color:var(--muted);letter-spacing:0}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;margin-bottom:20px}.result-stats b{display:block;font-size:22px}.result-stats span{font-size:10px;color:var(--muted)}.result-spots{display:flex;justify-content:center;gap:8px;margin:16px 0}.result-spots span{font-size:10px;color:var(--muted);flex:1}.result-spots b{display:block;color:var(--ink);margin:6px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);background:var(--lime);color:#182213;padding:13px 22px;border-radius:9px;font-size:12px;opacity:0;pointer-events:none;transition:.2s;z-index:10;max-width:90%;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.help-list{line-height:2.1;color:#aab9a8;font-size:13px;padding-left:20px}.result-note{margin-bottom:8px!important}.flash{animation:pop .25s ease-out}@keyframes pop{from{transform:scale(.8);opacity:.3}to{transform:scale(1);opacity:1}}@media(min-width:1500px){.court-panel{height:610px}aside{padding:30px}.mode-card{padding:17px 14px}.workspace{grid-template-columns:minmax(0,1fr) 350px}}@media(max-width:1000px){.workspace{grid-template-columns:minmax(0,1fr) 290px;gap:15px}aside{padding:20px}.daily{flex-wrap:wrap}.daily-track{max-width:none}.daily-title{flex:1}.draw-button{margin-left:auto}.court-lettering{font-size:50px}.scene-top{left:20px;right:20px}.court-badge{display:none}.scene-bottom{left:20px;right:20px;font-size:9px}}@media(max-width:720px){.topbar{height:72px;padding:0 20px;gap:12px}.brand{font-size:16px;gap:9px}.brand-icon{font-size:35px;width:32px}.brand small{font-size:6px}nav{gap:14px;margin-left:auto}.nav{font-size:12px}.top-right{gap:4px}.top-right>.live-dot,.desktop,.avatar{display:none}.iconbtn{margin:0;width:24px}.intro{margin-bottom:22px}.intro p{font-size:11px}h1{font-size:28px;margin:12px 0 9px}.intro .eyebrow{font-size:8px;letter-spacing:1.5px}.personal{display:none}main{padding:26px 18px 0}.workspace{grid-template-columns:1fr;gap:16px}.court-panel{height:355px;border-radius:12px}.court-lettering{top:100px;left:20px;font-size:48px;letter-spacing:-2px}.scene-top{top:20px}.scene-top h2{font-size:12px}.scene-top .eyebrow{font-size:8px}.scene-bottom{font-size:8px;bottom:18px}.scene-bottom>span:last-child{display:none}aside{padding:20px}.side-top{display:none}aside h2{font-size:20px;margin:0 0 16px}.mode-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode-card{padding:12px 10px;gap:7px}.mode-card:nth-child(3){grid-column:1/-1;padding:10px}.mode-card:nth-child(3) span:nth-child(2){display:flex;align-items:center;gap:10px}.mode-card:nth-child(3) small{margin:0}.mode-icon{font-size:23px;min-width:22px}.mode-card small{font-size:8px}.mode-card b{font-size:12px}.mode-card i{display:none}.player-mini{margin-top:18px}.daily{padding:20px;gap:20px}.daily-title{flex-basis:100%}.daily-track{min-width:130px}.draw-button{font-size:10px;padding:12px 10px}.draw-button span{margin:0 4px}footer{font-size:8px;gap:15px;line-height:1.8}footer span:last-child{max-width:150px;text-align:right}.playing .topbar{height:62px}.playing main{padding:12px 10px}.playing .court-panel{height:calc(100dvh - 88px);min-height:460px;border-radius:12px}.playing #gameSide,.playing footer{display:none}.playing .game-bottom{bottom:max(20px,env(safe-area-inset-bottom))}#scoreboard{left:20px;right:20px;top:20px}#scoreboard strong{font-size:43px}.playing #feedback{top:37%}.collection{grid-template-columns:repeat(2,1fr)}dialog{padding:26px 20px}.result-score{font-size:85px}.result-stats b{font-size:20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

#trainingSpots{display:block;margin:0 auto 13px;background:#142218de;border:1px solid #d2fa7755;color:#d2fa77;border-radius:6px;padding:8px 12px;font:inherit;font-size:11px;max-width:100%}
