.ShotInfoPanel_shotInfoPanel__35MOa{position:absolute;z-index:30;background:hsla(0,0%,100%,.6);padding:1rem .5rem;border-radius:.375rem;min-width:255px;max-width:265px;color:#374151;font-size:.75rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);border:1px solid rgba(209,213,219,.6);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);user-select:none;transition:opacity .2s ease;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.ShotInfoPanel_shotInfoPanel__35MOa:hover{background:hsla(0,0%,100%,.8);opacity:1}.ShotInfoPanel_closeBtn__nZF6q{position:absolute;top:.25rem;right:.25rem;background:rgba(229,231,235,.8);border:none;border-radius:.25rem;padding:.125rem .375rem;cursor:pointer;color:#374151;font-size:.75rem;line-height:1;z-index:1}.ShotInfoPanel_closeBtn__nZF6q:hover{background:rgba(209,213,219,.9)}.ShotInfoPanel_header__kmonN{margin-bottom:.375rem;margin-top:.25rem;font-weight:600;font-size:.875rem;color:#1f2937;cursor:-webkit-grab;cursor:grab;padding-right:1.5rem}.ShotInfoPanel_header__kmonN:active{cursor:-webkit-grabbing;cursor:grabbing}.ShotInfoPanel_label__GWucv{font-weight:500;color:#4b5563;font-size:.7rem}.ShotInfoPanel_value__eChu_{color:#1f2937;font-size:.7rem;font-weight:500}.ShotInfoPanel_infoTable__6lZYe{display:flex;flex-direction:column;gap:.1rem}.ShotInfoPanel_row___rYh5{display:flex;flex-direction:column;min-width:180px;padding:.025rem 0}.ShotInfoPanel_row___rYh5>div:first-child{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.ShotInfoPanel_subRow__7A95O{margin-top:.125rem;margin-left:.25rem}.ShotInfoPanel_subLabel__ED5Xt{font-size:.625rem;color:#6b7280;font-style:italic}.ShotInfoPanel_infoBtn__87ge2{position:absolute;top:.25rem;right:2rem;background:rgba(0,0,0,0);border:none;border-radius:.25rem;padding:.125rem .375rem;cursor:pointer;color:#fff;font-size:.75rem;line-height:1;z-index:2}.ShotInfoPanel_infoBtn__87ge2:hover{background:rgba(209,213,219,.9)}.ShotInfoPanel_infoPopup__1t_fW{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d1d5db;border-radius:.375rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1);z-index:100;max-height:400px;overflow-y:auto}.ShotInfoPanel_infoPopupHeader__aaGP2{display:flex;justify-content:space-between;align-items:center;padding:.25rem .75rem;border-bottom:1px solid #e5e7eb;background:#f9fafb}.ShotInfoPanel_infoPopupHeader__aaGP2 h3{margin:0;font-size:.875rem;font-weight:600;color:#1f2937}.ShotInfoPanel_infoPopupClose__KuQ_k{background:none;border:none;cursor:pointer;font-size:1rem;color:#6b7280;padding:.25rem}.ShotInfoPanel_infoPopupClose__KuQ_k:hover{color:#374151}.ShotInfoPanel_infoPopupContent__wms_D{padding:.75rem}.ShotInfoPanel_infoSection__GWyeA{margin-bottom:1rem}.ShotInfoPanel_infoSection__GWyeA:last-child{margin-bottom:0}.ShotInfoPanel_infoSection__GWyeA h4{margin:0 0 .5rem;font-size:.75rem;font-weight:600;color:#1f2937}.ShotInfoPanel_infoSection__GWyeA p{margin:0 0 .375rem;font-size:.625rem;line-height:1.4;color:#4b5563}.ShotInfoPanel_infoSection__GWyeA ul{margin:.25rem 0 0;padding-left:1rem;font-size:.625rem;color:#4b5563}.ShotInfoPanel_infoSection__GWyeA li{margin-bottom:.125rem}.TennisCourt_infoToggleBtn__01ZJD{position:absolute;top:2.75rem;right:.75rem;z-index:40;background:#fff;border:1px solid #d1d5db;border-radius:.5rem;padding:.25rem .75rem;font-size:1rem;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.06);color:#374151}.TennisCourt_infoToggleBtn__01ZJD:hover{background:#f9fafb}.TennisCourt_controlsPanel__N5YZv{display:flex;flex-direction:column;gap:1rem;background:hsla(0,0%,100%,.95);padding:1rem;border-radius:.5rem;font-size:.875rem;box-shadow:0 2px 8px rgba(0,0,0,.1);border:1px solid #e5e7eb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.TennisCourt_controlSection__Sikng{display:flex;flex-direction:column;gap:.5rem}.TennisCourt_controlSectionTitle__H_5KC{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#374151;margin:0;padding-bottom:.25rem;border-bottom:1px solid #e5e7eb}.TennisCourt_checkboxGroup__cbZTc{display:flex;flex-direction:column;gap:.375rem}.TennisCourt_checkboxLabel__Lr6wo{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.25rem 0;transition:color .2s ease}.TennisCourt_checkboxLabel__Lr6wo:hover{color:#1f2937}.TennisCourt_checkbox__I9I3p{width:1rem;height:1rem;accent-color:#3b82f6;cursor:pointer}.TennisCourt_checkboxText__gG2qv{font-size:.8rem;color:#4b5563;-webkit-user-select:none;-moz-user-select:none;user-select:none}.TennisCourt_playerControls__kW7zn{display:flex;flex-direction:column;gap:.5rem}.TennisCourt_selectLabel__5bLtx{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.TennisCourt_selectText__btgQx{font-size:.8rem;color:#4b5563;font-weight:500;min-width:-moz-fit-content;min-width:fit-content}.TennisCourt_gameControls__yLg34{display:flex;flex-direction:column;gap:.5rem}.TennisCourt_gameButton__w2Gof{padding:.5rem .75rem;background:#3b82f6;color:#fff;border:none;border-radius:.375rem;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:.25rem}.TennisCourt_gameButton__w2Gof:hover{background:#2563eb;transform:translateY(-1px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.TennisCourt_gameButton__w2Gof:active{transform:translateY(0)}.TennisCourt_smallSelect__wWEiK{padding:.25rem .5rem;border:1px solid #d1d5db;border-radius:.25rem;font-size:.8rem;background:#fff;color:#374151;cursor:pointer;min-width:4rem}.TennisCourt_smallSelect__wWEiK:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}.TennisCourt_statsToggleBtn__z7lvK{padding:.5rem 1rem;background:#374151;color:#fff;border:none;border-radius:.375rem;font-size:.875rem;cursor:pointer;transition:background .2s ease;margin-bottom:1rem}.TennisCourt_statsToggleBtn__z7lvK:hover{background:#4b5563}.TennisCourt_sidebarBottom__qaIkU{margin-top:auto;padding:1rem}.TennisCourt_feedback__p_GQB{font-size:.8rem;font-weight:600;color:#059669;background:rgba(16,185,129,.1);padding:.5rem;border-radius:.25rem;border:1px solid rgba(16,185,129,.2);margin-top:.5rem;text-align:center}.TennisCourt_pageRoot__yT_VI{display:flex;flex-direction:column;height:88vh;width:100vw;min-height:0;min-width:0;position:relative;max-width:1280px}.TennisCourt_topBar__83zSF{flex:0 0 auto;font-size:1.25rem;font-weight:700;letter-spacing:.03em;text-align:center;padding:.75rem 0;background:#000;color:#fff;position:relative;z-index:100}.TennisCourt_courtContainer__sy2Bl{flex:1 1;min-height:0;min-width:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000;position:relative}.TennisCourt_statsOverlay__gowOg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:30}.TennisCourt_statsOverlay__gowOg>*{pointer-events:auto}@media(orientation:landscape){.TennisCourt_pageRoot__yT_VI{flex-direction:column;height:100vh;width:100vw}.TennisCourt_topBar__83zSF{padding:.5rem 0;font-size:1.125rem}.TennisCourt_courtContainer__sy2Bl{flex:1 1;width:100%;height:calc(100vh - 3rem);display:flex;align-items:center;justify-content:center;overflow:hidden}}.TennisCourt_topControls__pIMyo{display:flex;flex-direction:column;gap:.5rem;margin-bottom:8px}.TennisCourt_compactRow__7s_DO{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.TennisCourt_courtCanvas__TPSL3{width:auto;height:auto;display:block;object-fit:contain;touch-action:pinch-zoom;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.TennisCourt_courtCanvasLandscape__GgZDn{width:auto;height:auto}.BurgerMenu_burgerButton__rBSPf{position:fixed;top:.75rem;left:.75rem;z-index:1000;background:rgba(0,0,0,.8);border:none;border-radius:.375rem;padding:.75rem;cursor:pointer;display:flex;flex-direction:column;gap:.25rem;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 2px 8px rgba(0,0,0,.2)}.BurgerMenu_burgerButton__rBSPf:hover{background:rgba(0,0,0,.9);transform:scale(1.05)}.BurgerMenu_burgerLine__Kdt2M{width:1.5rem;height:.125rem;background:#fff;border-radius:.0625rem;transition:all .3s ease;transform-origin:center}.BurgerMenu_burgerLine__Kdt2M.BurgerMenu_open__aL87h:first-child{transform:rotate(45deg) translate(.375rem,.375rem)}.BurgerMenu_burgerLine__Kdt2M.BurgerMenu_open__aL87h:nth-child(2){opacity:0}.BurgerMenu_burgerLine__Kdt2M.BurgerMenu_open__aL87h:nth-child(3){transform:rotate(-45deg) translate(.375rem,-.375rem)}.BurgerMenu_overlay__xToRn{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:998;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.BurgerMenu_menuPanel__RBFMn{position:fixed;top:0;left:-100%;width:100%;max-width:320px;height:100vh;background:#fff;z-index:999;transition:left .3s ease;box-shadow:2px 0 20px rgba(0,0,0,.1);display:flex;flex-direction:column}.BurgerMenu_menuPanel__RBFMn.BurgerMenu_open__aL87h{left:0}.BurgerMenu_menuHeader__9BBCV{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:#000;color:#fff;border-bottom:1px solid #e5e7eb}.BurgerMenu_menuTitle__aGZTW{margin:0;padding-left:3rem;font-size:1.125rem;font-weight:600}.BurgerMenu_closeButton__dSgJo{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:.25rem;line-height:1;transition:opacity .2s ease}.BurgerMenu_closeButton__dSgJo:hover{opacity:.7}.BurgerMenu_menuContent__vuIwE{flex:1 1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.BurgerMenu_statsSection__nzCyx{margin-top:auto;padding-top:1rem;border-top:1px solid #e5e7eb}.BurgerMenu_statsToggleBtn__V4zv7{width:100%;padding:.75rem;background:#374151;color:#fff;border:none;border-radius:.375rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .2s ease}.BurgerMenu_statsToggleBtn__V4zv7:hover{background:#4b5563}@media(orientation:landscape){.BurgerMenu_menuPanel__RBFMn{top:0;left:-100%;width:100%;max-width:300px;height:auto;max-height:100vh}.BurgerMenu_burgerButton__rBSPf{padding:.5rem}.BurgerMenu_burgerLine__Kdt2M{width:1.25rem;height:.1rem}.BurgerMenu_menuContent__vuIwE{max-height:calc(100vh - 4rem);padding:.75rem}.BurgerMenu_menuHeader__9BBCV{padding:.75rem}.BurgerMenu_menuTitle__aGZTW{font-size:1rem}}@media(max-width:480px){.BurgerMenu_menuPanel__RBFMn{max-width:300px}}.CanvasControls_canvasControls__IyMWi{position:absolute;top:.75rem;right:.75rem;z-index:50;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.CanvasControls_controlButton__3guf3{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;background:hsla(0,0%,100%,.95);border:1px solid rgba(0,0,0,.1);border-radius:.75rem;font-size:.875rem;font-weight:500;color:#374151;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);pointer-events:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.CanvasControls_controlButton__3guf3:hover{background:hsla(0,0%,100%,.98);border-color:rgba(59,130,246,.3);transform:translateY(-2px);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.CanvasControls_controlButton__3guf3:active{transform:translateY(-1px);transition-duration:.1s}.CanvasControls_orientationButton__9KK8J:hover{border-color:rgba(16,185,129,.3);color:#059669}.CanvasControls_orientationButton__9KK8J:hover .CanvasControls_buttonIcon__36uZ4{color:#059669;transform:scale(1.1)}.CanvasControls_statsButton__SOIqx:hover{border-color:rgba(147,51,234,.3);color:#7c3aed}.CanvasControls_statsButton__SOIqx:hover .CanvasControls_buttonIcon__36uZ4{color:#7c3aed;transform:scale(1.1)}.CanvasControls_statsButton__SOIqx.CanvasControls_active__PpYY3{background:rgba(147,51,234,.1);border-color:rgba(147,51,234,.3);color:#7c3aed}.CanvasControls_statsButton__SOIqx.CanvasControls_active__PpYY3 .CanvasControls_buttonIcon__36uZ4{color:#7c3aed}.CanvasControls_statsButton__SOIqx.CanvasControls_active__PpYY3:hover{background:rgba(147,51,234,.15)}.CanvasControls_buttonIcon__36uZ4{font-size:1rem;transition:all .3s cubic-bezier(.4,0,.2,1);color:#6b7280}.CanvasControls_buttonLabel__8tLqi{font-size:.8rem;font-weight:600;letter-spacing:.025em;transition:color .3s cubic-bezier(.4,0,.2,1)}@media(max-width:640px){.CanvasControls_canvasControls__IyMWi{top:.5rem;right:.5rem;gap:.5rem}.CanvasControls_controlButton__3guf3{padding:.625rem .875rem;font-size:.8rem}.CanvasControls_controlButton__3guf3 .CanvasControls_buttonIcon__36uZ4{font-size:.9rem}.CanvasControls_controlButton__3guf3 .CanvasControls_buttonLabel__8tLqi{font-size:.75rem}}@media(orientation:landscape)and (max-height:600px){.CanvasControls_canvasControls__IyMWi{top:.5rem;right:.5rem;gap:.5rem}.CanvasControls_controlButton__3guf3{padding:.5rem .75rem;min-width:6rem;font-size:.75rem;border-radius:.5rem}.CanvasControls_controlButton__3guf3 .CanvasControls_buttonIcon__36uZ4{font-size:.85rem}.CanvasControls_controlButton__3guf3 .CanvasControls_buttonLabel__8tLqi{font-size:.7rem}}@media(prefers-contrast:high){.CanvasControls_controlButton__3guf3{background:#fff;border:2px solid #000;color:#000}.CanvasControls_controlButton__3guf3:hover{background:#f0f0f0}.CanvasControls_buttonIcon__36uZ4{color:#000}}@media(prefers-reduced-motion:reduce){.CanvasControls_controlButton__3guf3{transition:none}.CanvasControls_controlButton__3guf3:active,.CanvasControls_controlButton__3guf3:hover{transform:none}.CanvasControls_buttonIcon__36uZ4{transition:none}.CanvasControls_buttonIcon__36uZ4:hover{transform:none}}@media(prefers-color-scheme:dark){.CanvasControls_controlButton__3guf3{background:rgba(31,41,55,.95);border-color:hsla(0,0%,100%,.1);color:#e5e7eb}.CanvasControls_controlButton__3guf3:hover{background:rgba(31,41,55,.98);color:#f9fafb}.CanvasControls_buttonIcon__36uZ4{color:#9ca3af}.CanvasControls_orientationButton__9KK8J:hover{border-color:rgba(16,185,129,.4);color:#10b981}.CanvasControls_orientationButton__9KK8J:hover .CanvasControls_buttonIcon__36uZ4{color:#10b981}.CanvasControls_statsButton__SOIqx:hover{border-color:rgba(147,51,234,.4);color:#a855f7}.CanvasControls_statsButton__SOIqx:hover .CanvasControls_buttonIcon__36uZ4{color:#a855f7}.CanvasControls_statsButton__SOIqx.CanvasControls_active__PpYY3{background:rgba(147,51,234,.2);border-color:rgba(147,51,234,.4);color:#a855f7}.CanvasControls_statsButton__SOIqx.CanvasControls_active__PpYY3 .CanvasControls_buttonIcon__36uZ4{color:#a855f7}}.page_container__1dI47{min-height:100vh;display:flex;flex-direction:column}.page_header__wx76O{display:flex;align-items:center;justify-content:flex-end;padding:.5rem 2rem .5rem 4rem;background:var(--card);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:100}.page_backButton___1j_E{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--secondary);color:var(--secondary-foreground);border-radius:6px;text-decoration:none;font-weight:500;transition:all .2s ease}.page_backButton___1j_E:hover{background:var(--muted);transform:translateX(-2px)}.page_title__qIfY7{font-size:1.25rem;font-weight:600;color:var(--foreground);margin:0}.page_main__HGF3Q{flex:1 1;display:flex;flex-direction:column}@media (max-width:768px){.page_header__wx76O{padding:.5rem 1rem .5rem 4rem;gap:1rem;text-align:center}.page_title__qIfY7{font-size:1.1rem}.page_backButton___1j_E{align-self:flex-start}}@media (max-width:480px){.page_header__wx76O{padding:.5rem .75rem .5rem 4rem}.page_title__qIfY7{font-size:1rem}}