@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2)format("woff2-variations");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:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2)format("woff2-variations");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:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff")}:root{color:#16363b;font-synthesis:none;--ink:#16363b;--muted:#69817e;--paper:#f0f1e6;--lime:#e1f777;--line:#d1d8c7;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);background:#0e2229;font-family:DM Sans Variable,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;width:100%;height:100%;margin:0;overflow:hidden}body{justify-content:center;display:flex}button,input,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;background:0 0;border:0}button:focus-visible,a:focus-visible,select:focus-visible{outline-offset:3px;outline:3px solid #2baab2}button:active{transform:translateY(1px)}a{color:inherit}button .icon{flex-shrink:0}.icon{vertical-align:middle;width:22px;height:22px;display:inline-block}#app{background:var(--paper);isolation:isolate;width:100%;max-width:480px;height:100dvh;position:relative;overflow:hidden;box-shadow:0 0 80px #0004}#scene-shell{touch-action:none;position:absolute;inset:0}canvas{touch-action:none;width:100%;height:100%;display:block}#interface{pointer-events:none;position:absolute;inset:0}#interface button,dialog,nav,select,input{pointer-events:auto}.only-game,.practice-hud{display:none!important}.is-playing .only-game{display:flex!important}.is-playing .only-home,.is-playing .home-panel,.is-training .scoreboard{display:none!important}.is-training .practice-hud{display:block!important}.is-home #scene-shell:after{content:"";pointer-events:none;background:linear-gradient(#e9ecdfed 0%,#e9ecdfb0 17%,#0000 32% 63%,#e9ecdf9c 79%,#e9ecdf 100%);position:absolute;inset:0}.topbar{top:var(--safe-top);z-index:5;justify-content:space-between;align-items:center;gap:8px;height:68px;display:flex;position:absolute;left:16px;right:16px}.wordmark{letter-spacing:1px;white-space:nowrap;align-items:center;gap:9px;min-width:44px;min-height:44px;padding:0;font-size:11px;font-weight:750;display:flex}.logo-mark{background:var(--ink);color:var(--lime);border-radius:11px;place-items:center;width:36px;height:36px;display:grid}.logo-mark .icon{width:24px;height:24px}.wordmark-light{font-weight:450}.top-actions{gap:2px;display:flex}.icon-button{border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.icon-button:hover{background:#173a3910}.top-actions .icon-button .icon{width:20px;height:20px}.is-playing .topbar{height:58px}.is-playing .wordmark>span:last-child{display:none}.is-playing .top-actions{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f5f5e9db;border-radius:28px;box-shadow:0 2px 10px #16363b0a}.home-panel{inset:calc(83px + var(--safe-top)) 22px calc(89px + var(--safe-bottom));pointer-events:none;flex-direction:column;display:flex;position:absolute}.home-heading{position:relative}.home-eyebrow,.small-label,.rail-kicker{letter-spacing:1.8px;color:var(--muted);font-size:9px;font-weight:750}.home-eyebrow{align-items:center;gap:8px;display:flex}.live-dot{background:#648879;border-radius:50%;width:5px;height:5px;display:inline-block;box-shadow:0 0 0 3px #64887912}h1{letter-spacing:-.6px;margin:7px 0 0;font-family:Barlow Condensed,sans-serif;font-size:50px;font-weight:600;line-height:1}h1 span{color:#829a58}.home-heading>small{color:var(--muted);font-size:8px;position:absolute;top:6px;right:0}.athlete-stage{flex:1;min-height:110px;position:relative}.stage-line{border-right:1px solid #708a7330;height:37%;position:absolute;top:15%;right:2px}.stage-number{color:#7b927d;font-family:Barlow Condensed;font-size:24px;font-weight:500;position:absolute;top:15%;right:12px}.home-selected{margin-bottom:12px}.setup-preview{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);text-align:left;background:#f4f4e9e8;border:1px solid #ffffffe0;border-radius:16px;align-items:center;gap:11px;width:100%;padding:14px 15px;display:flex;box-shadow:0 4px 20px #18382f0b}.hero-monogram{background:var(--hero-color);border-radius:14px;flex-shrink:0;place-items:center;width:44px;height:44px;font-family:Barlow Condensed;font-size:23px;display:grid}.setup-preview>span:nth-child(2){flex:1;min-width:0}.setup-preview small{letter-spacing:1.5px;color:var(--muted);font-size:8px;font-weight:700;display:block}.setup-preview strong{margin:2px 0 3px;font-size:17px;line-height:1.3;display:block}.setup-preview em{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-style:normal;display:block;overflow:hidden}.setup-preview em span{padding:0 3px}.setup-preview>.icon{width:16px;color:var(--muted)}.home-actions{gap:10px;display:grid}.match-format{text-align:left;align-items:center;width:100%;min-height:44px;padding:0 3px;font-size:11px;font-weight:550;display:flex}.match-format>span{flex:1}.match-format b{text-transform:uppercase;letter-spacing:1.3px;color:var(--muted);font-size:9px;font-weight:700}.match-format .icon{width:14px;height:14px;margin-left:7px}.primary,.secondary{border-radius:13px;justify-content:space-between;align-items:center;gap:12px;min-height:54px;padding:14px 20px;font-size:14px;font-weight:700;display:flex}.primary{background:var(--lime);color:#193839;box-shadow:0 4px #a2b84f}.primary:active{transform:translateY(3px);box-shadow:0 1px #a2b84f}.secondary{background:#e4e8db;border:1px solid #d2dac8}.quiet{min-height:48px;color:var(--muted);border-radius:12px;font-size:12px;font-weight:600}.play-button{min-height:62px;padding:16px 22px;font-size:18px}.home-bottom{bottom:var(--safe-bottom);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#eff0e6e8;border-top:1px solid #ced8c5;height:73px;padding:0 20px;display:flex;position:absolute;left:0;right:0}.home-bottom button{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:5px;font-size:10px;font-weight:600;display:flex}.home-bottom .icon{color:#57736a;width:23px;height:23px}.scoreboard{top:calc(67px + var(--safe-top));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:3;background:#f6f6eced;border-radius:14px;flex-direction:column;padding:9px 13px 11px;position:absolute;left:14px;right:14px;box-shadow:0 3px 20px #152f2f0c}.score-label{letter-spacing:1.3px;color:var(--muted);margin:0 0 5px;font-size:8px;font-weight:750}.score-team{align-items:center;gap:7px;height:26px;display:flex}.team-indicator{border-radius:50%;width:6px;height:6px}.home-color{background:#bfd951}.away-color{background:#da8b62}.team-names{letter-spacing:.25px;flex:1;font-size:10px;font-weight:700}.serve-dot{color:#789036;font-size:9px}.set-score{color:var(--muted);text-align:center;width:16px;font-size:11px;font-weight:600}.score-team>strong{text-align:center;width:22px;font-size:15px}.score-team>b{text-align:center;background:#e5ead8;border-radius:5px;min-width:34px;font-size:17px;line-height:24px}.score-team:last-of-type>b{background:#f0dfcf}.score-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:8px;position:absolute;top:9px;right:13px}#gesture-trace{pointer-events:none;z-index:7;width:100%;height:100%;display:none;position:absolute;inset:0;overflow:visible}#gesture-trace.visible{display:block}#gesture-line{fill:none;stroke:#f1ff9f;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 3px #143c3260)}#gesture-origin{fill:#f2ff9e88;stroke:#f8ffd7;stroke-width:2px}#gesture-tip{fill:#e5ff80;stroke:#244840;stroke-width:2px}#gesture-preview{color:#f2f5e7;pointer-events:none;z-index:8;background:#16363bf0;border:1px solid #e2f67e66;border-radius:12px;min-width:80px;padding:5px 9px;display:none;position:absolute;transform:translate(-50%,-100%)}#gesture-preview.visible{display:block}#gesture-preview strong{text-align:center;font-size:11px;display:block}#gesture-preview>span{background:#fff3;border-radius:3px;height:4px;margin-top:4px;display:block;overflow:hidden}#gesture-strength{background:var(--lime);border-radius:3px;height:100%;display:block}.practice-hud{top:calc(67px + var(--safe-top));-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#f4f5e9ed;border-radius:14px;padding:13px 15px;position:absolute;left:14px;right:14px;box-shadow:0 3px 20px #152f2f0c}.practice-heading{letter-spacing:1.3px;color:var(--muted);justify-content:space-between;font-size:8px;font-weight:700;display:flex}.practice-task{justify-content:space-between;align-items:center;gap:10px;margin:7px 0 11px;display:flex}.practice-task h2{letter-spacing:-.4px;margin:0;font-size:19px;font-weight:650}.practice-task>strong{white-space:nowrap;background:#e2e9cf;border-radius:6px;padding:6px 9px;font-size:12px}.practice-progress{gap:5px;display:flex}.practice-progress i{background:#d4dcc9;border-radius:2px;flex:1;height:3px}.practice-progress i.passed{background:#7a9b4e}.practice-progress i.current{background:#b4ce61}.lesson-success{box-shadow:inset 0 0 0 2px #91b65b}.lesson-retry{box-shadow:inset 0 0 0 2px #d4a079}.point-toast{text-align:center;pointer-events:none;z-index:6;filter:drop-shadow(0 2px 12px #f0f3da);display:none;position:absolute;top:43%;left:24px;right:24px}.point-toast.visible{animation:.22s ease-out point-in;display:block}.point-toast>span{letter-spacing:2.4px;font-size:9px;font-weight:700;display:block}.point-toast>strong{margin:5px 0;font-family:Barlow Condensed;font-size:52px;line-height:1.2;display:block}.point-toast>small{background:#f5f5e8ef;border-radius:8px;max-width:100%;padding:7px 12px;font-size:11px;line-height:1.5;display:inline-block}@keyframes point-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}dialog{color:var(--ink);background:var(--paper);width:min(100%,480px);max-width:480px;max-height:calc(100dvh - 28px - var(--safe-top));overscroll-behavior:contain;scrollbar-width:thin;border:1px solid #fff9;border-radius:24px 24px 0 0;margin:0 auto;padding:0;position:fixed;inset:auto 0 0;overflow:auto;box-shadow:0 -10px 80px #0e292a30}dialog::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d2a2b75}#modal-content{padding:23px 20px calc(22px + var(--safe-bottom))}.modal-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.modal-header h2{letter-spacing:-.3px;margin:5px 0 0;font-family:Barlow Condensed;font-size:35px;font-weight:600;line-height:1.1}.modal-header .icon-button{background:#dce3d2}.modal-tabs{z-index:3;background:#dfe5d5;border-radius:11px;gap:3px;margin-bottom:18px;padding:4px;display:flex;position:sticky;top:0}.modal-tabs button{white-space:nowrap;border-radius:8px;flex:1;min-height:44px;padding:10px 7px;font-size:12px;font-weight:650}.modal-tabs button.active{background:#f6f6ec;box-shadow:0 1px 4px #294a3910}.setup-dialog,.result-dialog{height:calc(100dvh - 28px - var(--safe-top));overflow:hidden}.setup-dialog #modal-content,.result-dialog #modal-content{flex-direction:column;height:100%;display:flex}.setup-dialog .modal-header,.setup-dialog .modal-tabs,.modal-footer,.result-actions{flex-shrink:0}.setup-dialog #setup-content,.result-body{overscroll-behavior:contain;scrollbar-width:thin;min-height:0;padding-bottom:16px;overflow:auto}.modal-footer{border-top:1px solid var(--line);flex-direction:column;gap:10px;padding-top:14px;display:flex}.modal-footer>span{color:var(--muted);font-size:10px}.full-width{width:100%;margin-top:11px}.compact{width:100%;min-height:52px}.field{letter-spacing:1.3px;color:var(--muted);flex-direction:column;gap:8px;margin:15px 0;font-size:9px;font-weight:750;display:flex}.field select{width:100%;color:var(--ink);letter-spacing:0;appearance:auto;background:#f8f7ec;border:1px solid #cbd5c1;border-radius:10px;min-height:48px;padding:13px 12px;font-size:13px}.field small{letter-spacing:0;font-size:11px;font-weight:400;line-height:1.5}.modal-note,.settings-note{color:var(--muted);font-size:12px;line-height:1.65}.settings-note{background:#e2e8d8;border-radius:10px;margin-top:20px;padding:13px}.toggle-row{border-bottom:1px solid var(--line);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:76px;padding:12px 0;display:flex;position:relative}.toggle-row>span{flex:1}.toggle-row strong{font-size:13px;font-weight:650;display:block}.toggle-row small{color:var(--muted);margin-top:4px;font-size:10px;line-height:1.5;display:block}.toggle-row input{opacity:0;width:46px;height:44px;position:absolute;right:0}.toggle-row i{pointer-events:none;background:#c2ccbb;border-radius:14px;width:40px;height:24px;display:block}.toggle-row i:after{content:"";background:#fffdf2;border-radius:50%;width:18px;height:18px;margin:3px;transition:transform .15s;display:block}.toggle-row input:checked+i{background:#78984d}.toggle-row input:checked+i:after{transform:translate(16px)}.toggle-row input:focus-visible+i{outline-offset:3px;outline:3px solid #2baab2}.skeleton-setting{margin-bottom:18px}.hero-grid,.pala-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.hero-card,.pala-card{text-align:left;background:#e7ecdd;border:1px solid #d1dac7;border-radius:14px;padding:12px;position:relative;overflow:hidden}.hero-card.selected,.pala-card.selected{background:#edf2dc;border-color:#6e8c45;box-shadow:inset 0 0 0 1px #6e8c45}.hero-country{letter-spacing:1px;color:var(--muted);font-size:8px;font-weight:700}.hero-portrait{background:radial-gradient(at 50% 70%,#fff6 0,#0000 65%);width:100%;height:90px;margin:8px 0 7px;position:relative;overflow:hidden}.portrait-head{background:var(--skin);border-top:7px solid var(--hair);z-index:1;border-radius:40% 40% 42% 42%;width:28px;height:33px;position:absolute;top:4px;left:calc(50% - 14px);box-shadow:inset -5px -1px #0000000b}.portrait-body{background:var(--hero-color);border-radius:26px 26px 0 0;width:70px;height:64px;position:absolute;bottom:-10px;left:calc(50% - 35px);transform:rotate(-4deg);box-shadow:inset -18px 0 #0000000d}.portrait-racket{color:#395847;position:absolute;bottom:3px;right:4px;transform:rotate(-20deg)}.portrait-racket .icon{width:45px;height:45px}.hero-card>small{text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-size:8px;display:block}.hero-card>strong{margin:4px 0 7px;font-family:Barlow Condensed;font-size:21px;font-weight:600;line-height:1.1;display:block}.hero-specialty{color:var(--muted);font-size:9px}.selected-check{color:#f4f5e7;background:#718d49;border-radius:50%;justify-content:center;align-items:center;width:21px;height:21px;display:none;position:absolute;top:10px;right:10px}.selected-check .icon{width:13px;height:13px}.selected .selected-check{display:flex}.hero-details,.pala-detail{margin-top:21px}.hero-details h3,.pala-detail h3{margin:5px 0 8px;font-family:Barlow Condensed;font-size:24px;font-weight:600;line-height:1.15}.hero-details p,.pala-detail p{color:var(--muted);margin:0 0 18px;font-size:11px;line-height:1.6}.ability-bars{gap:10px;display:grid}.ability-bars>div{align-items:center;gap:12px;font-size:10px;display:flex}.ability-bars span{width:58px;color:var(--muted)}.ability-bars i{background:#d3dcc8;border-radius:3px;flex:1;height:5px;overflow:hidden}.ability-bars b{background:#7f9c55;border-radius:3px;height:100%;display:block}.ability-bars strong{text-align:right;width:19px;font-size:10px}.partner-field{margin-top:22px}.pala-card>.small-label{font-size:8px}.pala-card>strong{margin:10px 0 5px;font-family:Barlow Condensed;font-size:17px;font-weight:600;display:block}.pala-card>span:not(.small-label):not(.selected-check){color:var(--muted);font-size:9px;display:block}.pala-drawing{width:80px;height:115px;margin:8px auto 0;position:relative;transform:rotate(12deg)}.pala-face{border:5px solid var(--pala-color);background:radial-gradient(circle,#b4c7be 1px,#0000 1.5px) 0 0/9px 9px,#25454a;border-radius:45% 45% 48% 48%;width:72px;height:88px;position:absolute;top:0;box-shadow:2px 4px 5px #19332a20}.pala-face span{color:#e1e9d2;place-items:center;font-family:Barlow Condensed;font-size:16px;font-style:italic;display:grid;position:absolute;inset:0}.diamond .pala-face{clip-path:polygon(50% 0,100% 22%,95% 75%,50% 100%,5% 75%,0 22%);border-radius:30% 30% 45% 45%}.round .pala-face{border-radius:50%;height:76px}.pala-handle{background:repeating-linear-gradient(0deg,#eeeadd 0 4px,#c8cbbb 4px 5px);border-radius:2px 2px 5px 5px;width:12px;height:32px;position:absolute;top:80px;left:30px}.round .pala-handle{top:73px}.pala-detail dl{grid-template-columns:1fr 1fr;gap:11px;margin:0;display:grid}.pala-detail dl>div{border-top:1px solid var(--line);padding:9px 0}.pala-detail dt{letter-spacing:1px;color:var(--muted);font-size:8px}.pala-detail dd{margin:5px 0 0;font-size:10px}.source-note{color:var(--muted);margin:18px 0 0;font-size:10px;line-height:1.6}.source-note button{padding:8px 0;font-size:10px;font-weight:650}.source-note .icon{width:13px;height:13px}.drill-list{gap:9px;display:grid}.drill-list>button{text-align:left;background:#e7ecdc;border:1px solid #d2dcc8;border-radius:13px;align-items:center;gap:12px;min-height:84px;padding:13px;display:flex}.drill-list>button.learn-drill{background:#e5f1b9;border-color:#c2d780}.drill-number{color:#829b67;font-family:Barlow Condensed;font-size:27px}.drill-list>button>span:nth-child(2){flex:1}.drill-list strong{margin-bottom:5px;font-size:14px;display:block}.drill-list small{color:var(--muted);font-size:10px;line-height:1.5;display:block}.drill-list .icon{width:18px}.guide-tabs button{padding:10px 3px;font-size:10px}.guide-lead{margin:0 0 22px;font-family:Barlow Condensed;font-size:22px;font-weight:600}.guide-content h3{margin:22px 0 8px;font-size:15px;font-weight:650}.guide-content p{color:#5e7772;font-size:12px;line-height:1.75}.guide-court{background:#3d7d82;border:2px solid #f7f9dc;width:160px;height:260px;margin:25px auto 10px;position:relative;box-shadow:0 0 0 8px #d8e0cd}.mini-net{background:#d5dcbe;height:3px;position:absolute;top:50%;left:0;right:0}.mini-line{background:#f7f9dc;height:1px;position:absolute;left:0;right:0}.mini-line.top{top:15%}.mini-line.bottom{bottom:15%}.court-length{font-size:10px;position:absolute;top:46%;left:-36px;transform:rotate(-90deg)}.court-width{font-size:10px;position:absolute;bottom:-22px;left:42%}.mini-player{background:var(--lime);border-radius:50%;width:8px;height:8px;position:absolute}.mini-player.a{top:30%;left:25%}.mini-player.b{top:30%;right:25%}.mini-player.c{background:#efab7c;bottom:20%;left:25%}.mini-player.d{background:#efab7c;bottom:20%;right:25%}.guide-callout{background:#e1e8d4;border-radius:10px;padding:14px;font-size:12px;line-height:1.6}.tactic-cards{gap:12px;display:grid}.tactic-cards article{background:#e1e8d5;border-radius:13px;padding:18px}.tactic-cards article>span{letter-spacing:1.5px;color:var(--muted);font-size:8px}.tactic-cards h3{margin-top:8px}.tactic-cards p{margin-bottom:0}.source-list a{border-bottom:1px solid var(--line);padding:15px 0;font-size:13px;font-weight:600;text-decoration:none;display:block}.source-list span{color:var(--muted);margin-top:6px;font-size:10px;line-height:1.6;display:block}.pause-score{justify-content:center;align-items:center;gap:30px;margin:25px 0;font-family:Barlow Condensed;font-size:80px;display:flex}.pause-score i{color:#97a78b;font-size:40px;font-style:normal}.pause-lesson{text-align:center;padding:28px 0}.pause-lesson strong{font-family:Barlow Condensed;font-size:23px;display:block}.pause-lesson span{letter-spacing:2px;color:var(--muted);margin-top:12px;font-size:9px;display:block}.result-trophy{text-align:center;padding:5px}.result-trophy .icon{color:#849d3e;width:50px;height:50px}.result-score{justify-content:center;gap:15px;margin:10px 0;font-family:Barlow Condensed;font-size:68px;line-height:1.2;display:flex}.result-score i{color:#96a88b;margin:0 8px;font-size:32px;font-style:normal}.result-players{text-align:center;letter-spacing:.5px;font-size:8px;line-height:1.7}.result-players span{color:var(--muted);padding:0 5px}.result-stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;grid-template-columns:repeat(3,1fr);gap:5px;margin:22px 0;padding:22px 0;display:grid}.result-stats strong{font-family:Barlow Condensed;font-size:29px;font-weight:600;display:block}.result-stats span{letter-spacing:.7px;color:var(--muted);margin-top:5px;font-size:7px;display:block}.result-table>div{border-bottom:1px solid var(--line);grid-template-columns:1fr 30px 30px;gap:15px;padding:12px 0;font-size:11px;display:grid}.result-table strong{text-align:center}.result-table strong:last-child{color:var(--muted)}.result-actions{border-top:1px solid var(--line);padding-top:13px}.result-actions .full-width{margin-top:3px}.lesson-summary{text-align:center;margin:10px 0 24px}.lesson-summary>span{background:var(--lime);border-radius:50%;place-items:center;width:50px;height:50px;margin:auto;display:grid}.lesson-summary>strong{margin-top:10px;font-family:Barlow Condensed;font-size:56px;font-weight:600;display:block}.lesson-summary p{color:var(--muted);font-size:11px}.lesson-checks{gap:15px;margin:0;padding:0;font-size:12px;list-style:none;display:grid}.lesson-checks .icon{color:#728c49;width:17px;height:17px;margin-right:8px}.receive-buttons{grid-template-columns:1fr 1fr;gap:10px;margin-top:20px;display:grid}.receive-buttons button{justify-content:center}.court-loading,.graphics-error{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:30px;font-size:13px;display:flex;position:absolute;inset:0}.court-loading span{border:2px solid #b5c694;border-top-color:#254d4c;border-radius:50%;width:30px;height:30px;margin-bottom:15px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.graphics-error button{background:var(--lime);border-radius:12px;margin-top:20px;padding:16px 30px}@media (height<=670px){.home-panel{top:calc(72px + var(--safe-top));bottom:calc(75px + var(--safe-bottom));left:17px;right:17px}.home-heading h1{font-size:37px}.home-eyebrow{font-size:8px}.home-bottom{height:63px}.home-selected{margin-bottom:4px}.setup-preview{border-radius:13px;padding:10px 12px}.setup-preview strong{font-size:15px}.setup-preview .hero-monogram{width:37px;height:37px;font-size:20px}.match-format{min-height:44px}.home-actions{gap:6px}.play-button{min-height:53px;font-size:16px}.athlete-stage{min-height:70px}.topbar{height:62px}.practice-hud,.scoreboard{top:calc(60px + var(--safe-top))}.practice-task h2{font-size:17px}.practice-hud{padding:10px 13px}.practice-task{margin:5px 0 8px}.is-playing .topbar{height:54px}.point-toast>strong{font-size:43px}#modal-content{padding:19px 16px calc(16px + var(--safe-bottom))}.modal-header{margin-bottom:15px}.modal-header h2{font-size:30px}.modal-tabs{margin-bottom:13px}.modal-footer{gap:8px;padding-top:10px}.hero-portrait{height:70px}.hero-card{padding:10px}.result-stats{margin:14px 0;padding:14px 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.portrait-required{z-index:20;background:var(--paper);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:none;position:absolute;inset:0}.portrait-required strong{letter-spacing:-.5px;font-size:22px}.portrait-required>span:last-child{color:var(--muted);font-size:12px}.phone-outline{border:2px solid var(--ink);border-radius:7px;width:32px;height:55px;margin-bottom:8px;display:block;position:relative}.phone-outline:after{content:"";background:var(--ink);border-radius:2px;width:8px;height:2px;position:absolute;bottom:4px;left:10px}@media (orientation:landscape) and (pointer:coarse){.portrait-required{display:flex}}.setup-dialog #setup-content,.result-body{flex:1}.shot-feedback{z-index:5;color:#173a3a;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;background:#f4f5e9e6;border:1px solid #ffffff80;border-radius:7px;max-width:calc(100% - 24px);padding:4px 8px;font-size:11px;font-weight:650;line-height:15px;transition:opacity .16s,visibility 0s linear .16s;position:absolute;transform:translate(-50%,-100%);box-shadow:0 1px 5px #18372c15}.shot-feedback.visible{opacity:1;visibility:visible;transition:opacity .12s}.shot-feedback.is-queued{color:#edffa6;background:#173a3cd9;border-color:#e5fa8740}.shot-feedback[data-kind=hint]{background:#f1f3e5c7;font-weight:550}.shot-feedback[data-kind=miss]{color:#7b442b;background:#faecd8eb}#practice-instruction{color:#5e766e;margin:0 0 11px;font-size:11px;line-height:1.45}.is-playing .topbar{top:calc(10px + var(--safe-top));align-items:stretch;width:44px;height:88px;left:auto;right:14px}.is-playing .wordmark{display:none}.is-playing .top-actions{border-radius:22px;flex-direction:column;gap:0}.is-playing .top-actions .icon-button{width:44px;min-width:44px;height:44px;min-height:44px}.is-playing .scoreboard,.is-playing .practice-hud{top:calc(10px + var(--safe-top));right:70px}.is-playing .scoreboard{padding:9px 11px 11px}.is-playing .score-team{gap:5px}.is-playing .team-names{text-overflow:ellipsis;white-space:nowrap;letter-spacing:0;min-width:0;font-size:11px;overflow:hidden}.is-playing .score-time{right:11px}.is-playing .score-label{letter-spacing:.8px;padding-right:34px}.is-playing .set-score{width:12px}.is-playing .score-team>strong{width:20px}.is-playing .score-team>b{min-width:30px}.is-playing .practice-task h2{min-width:0;line-height:1.15}.is-playing .practice-task>strong{flex-shrink:0}.is-playing #practice-instruction{margin-bottom:6px}#control-cue{z-index:4;pointer-events:none;opacity:0;width:18px;height:12px;transition:opacity .1s;position:absolute;transform:translate(-50%,-100%)}#control-cue.visible{opacity:1}#control-cue svg{fill:#e4f880;stroke:#16363b;stroke-width:1.5px;stroke-linejoin:round;width:100%;height:100%;display:block}.top-actions .icon-button:disabled{opacity:.32}.is-training.has-course .topbar{height:44px}.is-training.has-course [data-action=swap]{display:none!important}
