@font-face{font-family:Manrope;src:url('../fonts/Manrope-variable.ttf') format('truetype');font-weight:200 800;font-display:swap}
:root{--paper:#f4f4ed;--ink:#242b24;--muted:#899084;--accent:#dafa6d;--line:#dde0d4}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #79a845;outline-offset:3px}header{height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4%}.brand{color:var(--ink);font-size:25px;font-weight:800;letter-spacing:-1px;text-decoration:none;display:flex;align-items:center;gap:10px}.ball-logo{font-size:36px;color:#849543}.edition{font-size:9px;letter-spacing:1.6px;border-left:1px solid #bfc4b6;margin-left:12px;padding-left:20px;max-width:90px}.header-right{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:1.4px}.live-dot{width:6px;height:6px;border-radius:50%;background:#79964a}.avatar{border:1px solid var(--line);border-radius:50%;width:38px;height:38px;margin-left:22px;background:#e6e9dc;font-size:11px;font-weight:800}main{max-width:1560px;margin:auto;padding:38px 4% 15px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:34px}.eyebrow,.panel-label{font-size:10px;letter-spacing:1.7px;font-weight:800;color:#7c8474}h1{font-size:clamp(26px,2.6vw,40px);font-weight:600;letter-spacing:-1.7px;margin:9px 0}h1 span{color:#91a550}.heading p{font-size:12px;color:#868b80;margin:10px 0 0}.season{border-left:1px solid var(--line);padding-left:25px;min-width:210px}.season small{font-size:10px;letter-spacing:1px;display:flex;justify-content:space-between;gap:24px}.season small b{font-weight:700}.season>div{font-size:12px;margin-top:12px}.season #age{color:var(--muted);margin-left:10px}.workspace{display:grid;grid-template-columns:190px minmax(0,1fr) 208px;gap:26px}.training{padding-top:8px}.training .panel-label{margin-bottom:22px}.shot{display:flex;width:100%;align-items:center;gap:12px;text-align:left;background:none;border:1px solid transparent;padding:16px 13px;margin-bottom:5px;border-radius:7px}.shot .shot-icon{width:21px;font-size:20px;color:#8d957e}.shot .shot-copy{font-size:12px;font-weight:700;flex:1}.shot small{display:block;font-size:9px;font-weight:500;color:var(--muted);margin-top:3px}.shot .arrow{opacity:0}.shot.active{background:#e5e9d9;border-color:#dbe1ca}.shot.active .arrow{opacity:1}.shot:hover{background:#e9ecdf}.training-note{border-top:1px solid var(--line);margin-top:22px;padding:23px 5px;display:flex;gap:9px;font-size:11px;line-height:1.7}.training-note>span{font-size:24px;color:#84954d}.training-note p{font-size:10px;color:var(--muted);line-height:1.7}.play{border:1px solid #d7dbcf;border-radius:10px;overflow:hidden;background:#fafbf5}.court-toolbar{display:flex;justify-content:space-between;align-items:center;padding:13px 18px}.surface-tabs{display:flex;gap:5px}.surface-tabs button{border:0;background:transparent;font-size:10px;padding:8px 12px;border-radius:5px;color:#7c8575}.surface-tabs button.active{background:#283b2e;color:#eaf1de}.court-number{font-size:8px;color:#939b8c;letter-spacing:1px}.court-number i{font-style:normal;margin:0 8px;color:#9db76f}.court-wrap{position:relative;background:#344d3b;aspect-ratio:1.62;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:manipulation;cursor:crosshair}.court-top,.court-bottom{position:absolute;left:23px;right:23px;display:flex;justify-content:space-between;pointer-events:none;font-size:8px;color:#eaf1df;letter-spacing:1.3px}.court-top{top:20px}.court-top span:first-child{padding:6px 9px;border:1px solid #ffffff45;border-radius:3px}.court-top span:last-child{padding-top:6px;opacity:.65}.court-bottom{bottom:19px;opacity:.7;font-size:7px}.controls{padding:22px}.control-heading{display:flex;justify-content:space-between;align-items:center}.control-heading small{font-size:8px;color:#839077;letter-spacing:1.4px;font-weight:800}h2{font-size:19px;font-weight:600;letter-spacing:-.6px;margin:9px 0}.power-number{font-size:29px;font-weight:600}.power-number small{font-size:12px;letter-spacing:0;margin-left:3px}.power-track{position:relative;height:30px;margin:18px 0 12px;display:flex;justify-content:space-between;padding-top:13px;font-size:7px;letter-spacing:1px;color:#929c88}.power-gradient{position:absolute;top:0;height:5px;left:0;right:0;border-radius:9px;background:linear-gradient(90deg,#e4e8d7,#a8c278,#668b3b)}#powerNeedle{position:absolute;top:-4px;left:0;width:3px;height:13px;background:#263d29;border:1px solid white;transition:none}.action-row{display:flex;align-items:center;gap:12px}.action-row p{font-size:9px;color:var(--muted);flex:1;line-height:1.6}.action-row button{white-space:nowrap}#serveSides{display:flex;gap:2px}#serveSides button{font-size:9px;padding:7px 8px;background:none;border:1px solid var(--line);border-radius:4px}#serveSides button.active{background:#e5ead8}.primary{border:0;border-radius:5px;background:var(--accent);color:#263d22;font-weight:800;font-size:11px;padding:15px 17px}.primary span{margin-left:20px}button:disabled{cursor:default;opacity:.5}.stats{padding:9px 0}.overall{margin:22px 0}.overall>span{font-size:65px;letter-spacing:-4px;font-weight:500}.overall sup{font-size:23px;color:#8a9580;margin-left:5px}.overall p{font-size:10px;color:var(--muted);margin:0}.stat-divider{height:1px;background:var(--line);margin:24px 0}.record{margin-bottom:18px}.record>div{display:flex;justify-content:space-between;font-size:10px;margin-bottom:8px}.record b{font-size:10px;font-weight:600;color:#79866d}.record-track{height:3px;background:#e0e4d7}.record-track i{display:block;height:100%;background:#8f9f64;transition:width .5s}.last-result{border:1px solid var(--line);padding:17px 13px;margin-top:25px;border-radius:6px}.last-result .panel-label{font-size:8px;letter-spacing:1px}.last-result strong{display:block;font-size:18px;margin:14px 0 7px}.last-result p{font-size:10px;color:var(--muted);line-height:1.7;margin:0}.text-button{border:0;background:transparent;font-size:10px;padding:17px 0;color:#6f7f5c}.text-button span{margin-left:20px}.save-note{font-size:8px;line-height:1.7;color:#9ca18f;margin:0}footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:30px;padding-top:17px;font-size:8px;color:#939b89;letter-spacing:1px}footer p{font-size:9px;letter-spacing:0}footer i{margin:0 12px;font-style:normal;color:#b2b8a9}footer b{color:#63774b;margin-right:5px}footer small{margin-left:15px;font-size:8px}footer button{border:0;background:none;font-size:10px;color:#738363}dialog{border:1px solid var(--line);border-radius:12px;padding:32px;max-width:490px;width:calc(100% - 30px);background:var(--paper);color:var(--ink)}dialog::backdrop{background:#122519a8;backdrop-filter:blur(4px)}dialog p,dialog li{font-size:12px;line-height:1.9;color:#69745f}dialog label{display:block;font-size:11px;margin:18px 0}dialog input,dialog select{display:block;width:100%;border:1px solid #cfd7c4;background:#fffef8;padding:11px;border-radius:5px;margin-top:7px;color:#2a3826}dialog .text-button{margin-left:16px}dialog .primary{margin-top:10px}@media(min-width:1600px){main{padding-top:50px}.workspace{gap:35px;grid-template-columns:210px minmax(0,1fr) 225px}}@media(max-width:1100px){.workspace{grid-template-columns:145px minmax(0,1fr);gap:17px}.stats{grid-column:1/-1;display:grid;grid-template-columns:120px 1fr 200px;gap:20px}.stats>.panel-label,.stat-divider{display:none}.overall{margin:0}.last-result{margin:0}#records{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.record{margin:0}.training-note{font-size:10px}.shot{padding:14px 8px;gap:7px}.shot .shot-copy{font-size:11px}.save-note{display:none}.stats .text-button{grid-column:3;padding:0}.edition{display:none}.header-right{font-size:8px}.action-row{flex-wrap:wrap}.action-row .primary{margin-left:auto}.court-number{display:none}footer>span{display:none}}@media(max-width:650px){header{height:64px}.brand{font-size:21px}.header-right{font-size:0;gap:0}.avatar{font-size:10px}.heading{margin-bottom:20px;align-items:flex-start}.heading .eyebrow{font-size:7px;letter-spacing:1px}h1{font-size:25px;letter-spacing:-1px}.heading p{font-size:9px}.season{min-width:0;padding-left:10px;margin-top:2px}.season small{font-size:7px;display:block}.season small b{display:block;margin-top:5px}.season>div{font-size:9px}.season #age{display:block;margin-left:0;margin-top:4px}main{padding:24px 12px}.workspace{display:flex;flex-direction:column;gap:14px}.training{padding:0}.training>.panel-label,.training-note{display:none}#shots{display:flex;overflow:auto;gap:5px;padding-bottom:5px}.shot{min-width:100px;padding:10px 8px;margin:0}.shot .shot-icon,.shot small,.shot .arrow{display:none}.shot .shot-copy{text-align:center;font-size:10px}.court-wrap{aspect-ratio:1.23}.court-toolbar{padding:8px 10px}.controls{padding:15px}.control-heading h2{font-size:17px}.court-top,.court-bottom{left:14px;right:14px;font-size:6px}.court-top span:last-child{display:none}.action-row p{min-width:110px}.stats{display:grid;grid-template-columns:90px 1fr;gap:15px;padding:6px}.overall>span{font-size:50px}#records{grid-template-columns:repeat(2,1fr)}.last-result{grid-column:1/-1}.stats .text-button{grid-column:1/-1}.overall p{font-size:8px}footer{margin-top:12px;gap:15px}footer p{line-height:2;font-size:8px}footer i{margin:0 3px}footer small{display:block;margin:0}footer button{white-space:nowrap}}

.catalog-back{color:inherit;text-decoration:none;font-size:10px;letter-spacing:0;white-space:nowrap}.catalog-back:hover{text-decoration:underline}@media(max-width:650px){.catalog-back{font-size:9px}.header-right .avatar{margin-left:10px}}
[hidden]{display:none!important}

/* Readable type and a viewport-sized training workspace. */
body{font-size:16px}header{height:64px}.header-right{font-size:12px}.edition{font-size:11px}.eyebrow,.panel-label{font-size:12px}.heading p{font-size:15px}.season small{font-size:12px}.season>div{font-size:15px}.shot .shot-copy{font-size:15px}.shot small{font-size:11px}.shot{padding:12px 10px}.training-note{font-size:13px}.training-note p{font-size:12px}.surface-tabs button{font-size:13px}.court-number{font-size:11px}.court-top,.court-bottom{font-size:11px}.court-bottom{bottom:10px}.court-top{top:10px}.controls{padding:12px 18px}.control-heading small{font-size:12px}h2{font-size:21px}.power-number{font-size:34px}.power-number small{font-size:15px}.power-track{height:40px;margin:14px 8px 5px;padding-top:22px;font-size:11px}.power-gradient{height:12px;background:linear-gradient(90deg,#d4dfae,#a8cf58,#63a63b);border:1px solid #6e8f45}.action-row p{font-size:12px}.primary{font-size:14px;padding:12px 17px}#serveSides button{font-size:12px}.record>div,.record b{font-size:13px}.record{margin-bottom:13px}.last-result p{font-size:13px}.last-result .panel-label{font-size:11px}.text-button{font-size:13px}.overall p{font-size:13px}.save-note{font-size:11px}footer,footer p{font-size:11px}footer button{font-size:13px}dialog p,dialog li{font-size:15px}dialog label{font-size:14px}.catalog-back{font-size:13px}
#powerNeedle{width:12px;height:30px;top:-9px;transform:translateX(-50%);background:#172b27;border:3px solid #fff;border-radius:5px;box-shadow:0 0 0 2px #172b27,0 3px 9px #0007;z-index:2}
#powerNeedle::before{content:'';position:absolute;left:-5px;top:-12px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:9px solid #203b2a}.choosing-power #powerNeedle{background:#f87030;box-shadow:0 0 0 3px #fff,0 0 0 5px #f87030}.choosing-power .power-track{background:#e6edd2;border-radius:8px}.choosing-power .power-number{color:#bc4b18}
body{height:100dvh;overflow:hidden}main{height:calc(100dvh - 64px);display:flex;flex-direction:column;padding:16px 3% 8px}.heading{flex-shrink:0;margin-bottom:14px}.heading h1{font-size:30px;margin:4px 0}.heading .eyebrow{font-size:11px}.workspace{flex:1;min-height:0;grid-template-columns:175px minmax(0,1fr) 195px;gap:18px}.play{min-height:0;display:grid;grid-template-rows:48px minmax(0,1fr) 174px}.court-wrap{min-height:0;aspect-ratio:auto}.court-wrap canvas{width:100%;height:100%;object-fit:contain}.training,.stats{overflow:auto;min-height:0}.training-note{margin-top:10px;padding-top:12px}.training .panel-label{margin-bottom:10px}.stats .overall{margin:9px 0}.overall>span{font-size:48px}.stat-divider{margin:14px 0}.last-result{margin-top:12px;padding:10px}.last-result strong{font-size:17px;margin:8px 0}footer{flex-shrink:0;margin-top:10px;padding-top:8px}footer p{margin:0}footer>span{display:none}.action-row{flex-wrap:nowrap}.action-row p{margin:0}.court-toolbar{padding:6px 12px}
.career-embedded header,.career-embedded .heading,.career-embedded footer{display:none!important}.career-embedded main{height:100dvh;padding:5px!important}.career-embedded .workspace{display:block;height:100%;min-height:0}.career-embedded .play{height:100%;grid-template-rows:42px minmax(0,1fr) 170px}
@media(max-width:1100px){.workspace{grid-template-columns:145px minmax(0,1fr)}.stats{display:none}.shot .shot-copy{font-size:13px}.action-row p{font-size:11px}footer small{display:none}.training-note{display:none}}
@media(max-width:650px){header{height:50px}.header-right{font-size:0}.catalog-back{font-size:12px}.brand{font-size:20px}main{height:calc(100dvh - 50px);padding:8px}.heading{margin-bottom:6px}.heading h1{font-size:22px}.heading p,.heading .eyebrow{display:none}.season{padding-left:10px}.season small,.season>div{font-size:11px}.workspace{display:flex;flex-direction:column;gap:5px}.training{flex:0 0 40px;overflow:visible}.training>.panel-label{display:none}#shots{height:40px;padding:0}.shot{min-width:100px;padding:6px}.shot .shot-copy{font-size:13px}.play{flex:1;min-height:0;grid-template-rows:40px minmax(0,1fr) 167px}.surface-tabs button{font-size:12px;padding:6px 10px}.court-top span:last-child,.court-bottom span:first-child{display:none}.court-top,.court-bottom{font-size:10px}.controls{padding:8px 12px}.control-heading h2{font-size:17px;margin:3px 0}.control-heading small{font-size:10px}.power-number{font-size:28px}.power-track{margin-top:14px}.action-row{gap:7px;flex-wrap:wrap}.action-row p{display:none}.primary{font-size:13px;padding:10px 13px}.action-row .primary{margin-left:auto}footer{display:none}.career-embedded main{height:100dvh}.career-embedded .play{grid-template-rows:36px minmax(0,1fr) 165px}}
@media(max-height:570px){.heading,footer{display:none}.training .panel-label,.training-note,.stats .overall{display:none}.shot{padding:6px}.play,.career-embedded .play{grid-template-rows:34px minmax(0,1fr) 145px}.controls{padding:6px 12px}.power-track{margin-top:8px}.control-heading h2{font-size:17px}.control-heading small{font-size:10px}.power-number{font-size:25px}}
.play{grid-template-rows:48px minmax(0,1fr) 192px}.career-embedded .play{grid-template-rows:42px minmax(0,1fr) 190px}@media(max-width:650px){.play,.career-embedded .play{grid-template-rows:38px minmax(0,1fr) 180px}}@media(max-height:570px){.play,.career-embedded .play{grid-template-rows:34px minmax(0,1fr) 180px}}
