:root{--font: Inter, ui-sans-serif, system-ui, "Segoe UI", Helvetica, Arial, sans-serif;--bg: #0f0f0f;--bg-2: #141414;--panel: rgba(255, 255, 255, .05);--panel-strong: rgba(255, 255, 255, .08);--line: rgba(255, 255, 255, .1);--line-soft: rgba(255, 255, 255, .06);--cream: #f2f2f2;--ink: #0f0f0f;--text: #ececec;--dim: #9a9a9a;--accent: #f2f2f2;--good: #81c995;--mid: #d4b06a;--bad: #e57373;--court: #2c2c2c;--glass-blur: 20px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-pill: 999px;--shadow-glass: 0 8px 32px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255, 255, 255, .06);--tabs-dur: .25s;--tabs-ease: cubic-bezier(.22, 1, .36, 1);--tabs-text-muted: var(--dim);--tabs-text-active: var(--ink);--tabs-bar-bg: transparent;--tabs-pill-bg: rgba(255, 255, 255, .92)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);background:var(--bg);background-image:radial-gradient(ellipse 90% 60% at 50% -30%,rgba(255,255,255,.05),transparent 55%);color:var(--text)}.app{max-width:1240px;margin:0 auto;padding:18px 18px 48px}.app.is-lab{max-width:none;margin:0;padding:0;min-height:100vh}.app.is-lab .topbar{position:absolute;top:0;left:0;right:0;z-index:8;margin:0;padding:12px 16px;pointer-events:none}.app.is-lab .topbar>*{pointer-events:auto}.app.is-lab main{min-height:100vh}.topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin-bottom:22px}.topbar-center{justify-self:center;min-width:0}.goo-nav{max-width:100%}.app-nav-shell{display:inline-flex;max-width:100%;padding:4px;border-radius:var(--radius-pill);background:#ffffff0f;border:1px solid var(--line);box-shadow:var(--shadow-glass);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur))}.app.is-lab .app-nav-shell{background:#ffffff0d}.t-tabs{position:relative;display:inline-flex;align-items:center;gap:3px;padding:3px;border-radius:var(--radius-pill);background:var(--tabs-bar-bg)}.t-tabs.is-vertical{flex-direction:column;align-items:stretch}.t-tab{position:relative;appearance:none;border:0;background:transparent;color:var(--dim);cursor:pointer;border-radius:var(--radius-pill);z-index:1;font:500 13px/1 var(--font);letter-spacing:-.02em;white-space:nowrap;transition:color var(--tabs-dur) var(--tabs-ease)}.t-tab[aria-selected=true]{color:var(--ink)}.t-tab:not([aria-selected=true]):hover{color:var(--text)}.t-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.t-tabs-pill{position:absolute;top:0;left:0;width:0;height:0;background:var(--tabs-pill-bg);border-radius:var(--radius-pill);box-shadow:0 1px 2px #0003;transform:translate(0);transition:transform var(--tabs-dur) var(--tabs-ease),width var(--tabs-dur) var(--tabs-ease),height var(--tabs-dur) var(--tabs-ease);will-change:transform,width,height;z-index:0;pointer-events:none}.t-tabs--nav{flex-wrap:wrap;justify-content:center;gap:2px;padding:0;background:transparent}.t-tabs--nav .t-tab{padding:9px 14px}.t-tabs--mode{display:flex;width:100%;gap:2px;padding:3px;border-radius:var(--radius-md);background:#ffffff0d;border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur))}.t-tabs--mode .t-tab{flex:1;min-width:0;padding:9px 12px;border-radius:var(--radius-sm)}.t-tabs--mode .t-tabs-pill{border-radius:var(--radius-sm)}.t-tabs--lang.lang-toggle{position:fixed;right:16px;bottom:16px;z-index:10;gap:2px;padding:4px;background:#ffffff0d;border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-glass)}.t-tabs--lang .t-tab{font-size:11px;font-weight:600;letter-spacing:.08em;padding:6px 10px}.t-tabs--lang .t-tab[aria-selected=true]{color:var(--ink)}.t-tabs--seg{flex-wrap:wrap;padding:3px;background:#ffffff0d;border:1px solid var(--line);border-radius:var(--radius-md);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur))}.t-tabs--seg .t-tab{padding:8px 12px;border-radius:var(--radius-sm)}.t-tabs--seg .t-tabs-pill{border-radius:var(--radius-sm)}.t-tabs--camera.camera-picker-shell{gap:2px;padding:4px;background:#ffffff0f;border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-glass)}.t-tabs--camera .camera-picker-btn{width:34px;height:34px;padding:0;border-radius:50%;display:grid;place-items:center}.t-tabs--camera .camera-picker-btn[aria-selected=true]{color:var(--ink)}.t-tabs--camera .camera-picker-btn svg{width:20px;height:20px}@media(prefers-reduced-motion:reduce){.t-tabs-pill,.t-tab{transition:none!important}}.camera-picker{position:absolute;left:32px;top:50%;transform:translateY(-50%);z-index:7}.stage{position:relative}.brand{justify-self:start;display:inline-flex;align-items:center;gap:10px;border:0;background:none;color:var(--text);font:600 18px/1 var(--font);letter-spacing:-.04em;cursor:pointer}.brand .mark{width:12px;height:12px;border-radius:4px;background:var(--accent)}.lesson-rail{display:inline-flex}.hero,.academy header{max-width:720px;margin:12px 0 28px}.landing{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:calc(100vh - 100px);padding:56px 24px 48px;overflow:hidden}.landing-court{position:fixed;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.landing-court svg{width:100%;height:100%;opacity:.85}.landing-court-line{fill:none;stroke:#fff1;stroke-width:.028;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:landing-court-draw 40s cubic-bezier(.42,0,.18,1) infinite;animation-delay:calc(var(--line-i) * 1.25s)}.landing-court-net{fill:none;stroke:#ffffff0b;stroke-width:.022;stroke-dasharray:.1 .16;stroke-linecap:round;opacity:0;animation:landing-court-net 40s cubic-bezier(.42,0,.18,1) infinite;animation-delay:10s}@keyframes landing-court-net{0%,22%{opacity:0}28%,58%{opacity:1}68%,to{opacity:0}}@keyframes landing-court-draw{0%,1.5%{stroke-dashoffset:1}7%,58%{stroke-dashoffset:0}70%,to{stroke-dashoffset:1}}@media(prefers-reduced-motion:reduce){.landing-court-line{animation:none;stroke-dashoffset:0}.landing-court-net{animation:none;opacity:.4}}.landing-inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;width:100%;max-width:720px;text-align:center}.landing-hero{display:flex;flex-direction:column;align-items:center;width:100%}.landing-eyebrow{margin:0 0 20px;font-size:13px;font-weight:500;line-height:1.5;letter-spacing:normal;text-transform:uppercase;color:var(--dim)}.landing-title{font-weight:600;color:var(--text)}.landing-lede{margin:0;max-width:38ch;font-size:17px;line-height:1.65;letter-spacing:normal;color:var(--dim)}.landing-cta{display:flex;justify-content:center;margin-top:32px}.landing-btn{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border:0;border-radius:var(--radius-pill);background:var(--cream);color:var(--ink);font:600 15px/1.2 var(--font);letter-spacing:normal;cursor:pointer;transition:transform .18s var(--tabs-ease),box-shadow .18s var(--tabs-ease)}.landing-btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px #00000059}.landing-btn:active{transform:translateY(0)}.landing-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.landing-btn-arrow{display:inline-block;transition:transform .18s var(--tabs-ease)}.landing-btn:hover .landing-btn-arrow{transform:translate(3px)}.landing-modules{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 24px;margin:28px 0 0;padding:0;list-style:none}.landing-module{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;color:var(--dim);font:500 13px/1.4 var(--font);letter-spacing:normal;cursor:pointer;transition:color .15s ease}.landing-module:hover{color:var(--text)}.landing-module-dot{width:5px;height:5px;border-radius:50%;background:var(--line);transition:background .15s ease}.landing-module:hover .landing-module-dot{background:var(--good)}.landing-disclaimer{position:fixed;bottom:0;left:0;right:0;z-index:1;margin:0;padding:20px 24px 28px;max-width:none;font-size:12px;line-height:1.6;letter-spacing:normal;text-align:center;color:#9a9a9abf}.eyebrow{margin:0 0 8px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-weight:600}h1{margin:0 0 12px;font-size:clamp(36px,6vw,64px);line-height:.98;letter-spacing:-.045em}h1.landing-title{margin:0 0 24px;font-size:clamp(52px,11vw,96px);line-height:1.06;letter-spacing:-.03em}.lede,.hero p:not(.eyebrow),.academy header p:not(.eyebrow){margin:0;color:var(--dim);font-size:17px;line-height:1.55}.lab{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);gap:18px;align-items:start}@media(max-width:900px){.lab{grid-template-columns:1fr}}.app.is-lab .lab{display:block;position:relative;height:100vh}.app.is-lab .stage,.app.is-lab .stage-frame{position:absolute;inset:0}.stage-tools{display:none}.canvas-shell{position:relative;height:min(72vh,640px);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--line);background:var(--bg);box-shadow:var(--shadow-glass)}.app.is-lab .canvas-shell{height:100%;border:0;border-radius:0}.shot-badge{position:absolute;top:14px;left:14px;z-index:4;padding:6px 12px;border-radius:var(--radius-pill);font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;pointer-events:none;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 16px #00000040}.app.is-lab .shot-badge{top:80px;left:50%;right:auto;transform:translate(-50%);z-index:7;padding:7px 14px;font-size:12px;letter-spacing:.07em;box-shadow:var(--shadow-glass)}.hint{margin:10px 0 0;color:var(--dim);font-size:13px;line-height:1.45}.stage-hint{position:absolute;left:50%;bottom:22px;z-index:6;max-width:min(560px,calc(100% - 32px));transform:translate(-50%);pointer-events:none;animation:stage-hint-enter .45s ease-out both}.stage-hint__inner{margin:0;padding:11px 22px 12px;border-radius:999px;background:#08101cb8;border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(calc(var(--glass-blur) + 4px));-webkit-backdrop-filter:blur(calc(var(--glass-blur) + 4px));box-shadow:0 10px 36px #0000006b,inset 0 1px #ffffff14;color:var(--text);font-size:14px;font-weight:500;line-height:1.4;letter-spacing:.01em;text-align:center;white-space:nowrap}.stage-hint__inner:before{content:"";display:inline-block;width:7px;height:7px;margin-right:10px;border-radius:50%;background:var(--amber);box-shadow:0 0 10px #ffb020d9;vertical-align:.05em;animation:stage-hint-pulse 2.2s ease-in-out infinite}@keyframes stage-hint-enter{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes stage-hint-pulse{0%,to{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1)}}.chip{margin:0;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.app.is-lab .side{position:absolute;top:52px;right:14px;width:300px;max-height:calc(100vh - 78px);overflow:hidden;z-index:6;display:flex;flex-direction:column;gap:0;padding:0;border-radius:var(--radius-lg);background:#0c0c0cb8;border:1px solid var(--line);backdrop-filter:blur(calc(var(--glass-blur) + 4px));-webkit-backdrop-filter:blur(calc(var(--glass-blur) + 4px));box-shadow:var(--shadow-glass)}.app.is-lab .side .mode-switch{flex-shrink:0;margin:0;padding:10px;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.app.is-lab .side .mode-switch .t-tab{padding:8px 10px;font-size:13px}.side-body{flex:1;min-height:0;overflow:auto;padding:14px 14px 6px;display:flex;flex-direction:column;gap:14px}.side-section{margin:0}.side-eyebrow{margin:0 0 6px;font-size:12px;line-height:1.35;color:var(--dim)}.side-title{margin:0 0 8px;font-size:15px;font-weight:600;line-height:1.35;letter-spacing:-.02em}.side-copy{display:flex;flex-direction:column;gap:8px}.side-copy p,.side-list{margin:0;font-size:13px;line-height:1.5;color:#ececece0}.side-tag{display:inline-block;width:fit-content;padding:2px 8px;border-radius:var(--radius-pill);background:#ffffff0f;color:var(--dim)!important;font-size:12px!important;font-weight:500}.side-note{padding-top:8px;border-top:1px solid var(--line-soft);color:var(--dim)!important}.side-list{padding-left:16px;display:flex;flex-direction:column;gap:6px}.side-list--plain{list-style:none;padding-left:0;color:var(--dim)}.side-feedback{padding-left:10px;border-left:2px solid var(--line)}.side-feedback__title{margin:0;font-size:13px;font-weight:600;line-height:1.45}.side-feedback__sub{margin:6px 0 0;font-size:13px;line-height:1.45}.side-feedback__detail{margin:6px 0 0;font-size:13px;line-height:1.5;color:var(--dim)}.tone-good .side-feedback__title,.tone-good .side-feedback__sub{color:var(--good)}.tone-mid .side-feedback__title,.tone-mid .side-feedback__sub{color:var(--mid)}.tone-bad .side-feedback__title,.tone-bad .side-feedback__sub{color:var(--bad)}.tone-good.side-feedback{border-left-color:var(--good)}.tone-mid.side-feedback{border-left-color:var(--mid)}.tone-bad.side-feedback{border-left-color:var(--bad)}.tone-plain.side-feedback{border-left-color:#ffffff38}.side-actions{flex-shrink:0;display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--line-soft)}.side-actions .action{flex:1;min-width:0;padding:9px 12px;font-size:13px}.side-stats{flex-shrink:0;display:flex;margin:0;padding:10px 14px 12px;border-top:1px solid var(--line-soft);background:#ffffff05}.side-stat{flex:1;min-width:0}.side-stat dt{margin:0 0 2px;font-size:12px;line-height:1.3;color:var(--dim);font-weight:400}.side-stat dd{margin:0;font-size:13px;font-weight:600;line-height:1.3;letter-spacing:-.01em}.app.is-lab .side .shot-picks{gap:6px}.app.is-lab .side .shot-pick{padding:9px 8px;font-size:13px;font-weight:500;background:#ffffff08}@media(max-width:800px){.topbar{grid-template-columns:1fr;grid-template-areas:"brand" "nav";row-gap:10px}.brand{grid-area:brand}.topbar-center{grid-area:nav;justify-self:stretch;display:flex;justify-content:center}.t-tabs--nav .t-tab{padding:8px 11px;font-size:12px}.app.is-lab .side{inset:auto 0 0;width:100%;max-height:36vh;border-radius:12px 12px 0 0}.side-body{padding:12px 12px 4px;gap:12px}.side-actions,.side-stats{padding-left:12px;padding-right:12px}.stage-hint{bottom:calc(36vh + 14px);max-width:calc(100% - 24px)}.stage-hint__inner{padding:10px 16px 11px;font-size:13px;white-space:normal}.app.is-lab .lang-toggle{bottom:calc(36vh + 12px)}.app.is-lab .shot-badge{top:118px}}html:has(.is-lab),body:has(.is-lab){height:100%;overflow:hidden}.side{display:flex;flex-direction:column}.coach-note{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px 16px;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-glass)}.coach-note.is-shot{border-left-width:3px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--shot) 18%,transparent)}.coach-note.is-shot .pace{color:var(--shot)!important}.kicker{margin:0 0 4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-weight:600}.coach-note h3{margin:0 0 8px;font-size:20px;letter-spacing:-.03em}.coach-body p,.coach-note p{margin:0 0 8px;color:var(--text);line-height:1.5;font-size:14px}.coach-body p:last-child{margin-bottom:0}.pace{color:var(--dim)!important;font-size:13px;letter-spacing:.06em;text-transform:uppercase}.takeaway{margin-top:12px!important;padding-top:12px;border-top:1px solid var(--line);color:var(--text)!important;font-weight:600}.btn-row{display:flex;flex-wrap:wrap;gap:10px}button.action{appearance:none;border:1px solid var(--line);background:#ffffff0d;color:var(--text);font:500 13px/1 var(--font);letter-spacing:-.01em;padding:10px 16px;border-radius:var(--radius-sm);cursor:pointer;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}button.action:hover:not(:disabled){background:#ffffff17;border-color:#ffffff24}button.action.primary{background:#ffffffeb;border-color:#fff3;color:var(--ink)}button.action.primary:hover:not(:disabled){background:#fff}button.action:disabled{opacity:.38;cursor:not-allowed}button.action:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.scoreboard{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.score-cell{background:#ffffff0a;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;text-align:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.score-cell .n{font-size:22px;font-weight:700;letter-spacing:-.03em}.score-cell .l{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.verdict{border-radius:var(--radius-md);padding:12px 14px;border:1px solid var(--line);background:#ffffff0a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.verdict strong{display:block;font-size:15px}.verdict .sub{margin:6px 0 0;font-weight:600;font-size:13px}.verdict .detail{margin:6px 0 0;color:var(--dim);font-size:13px;line-height:1.45}.tone-good strong,.tone-good .sub{color:var(--good)}.tone-mid strong,.tone-mid .sub{color:var(--mid)}.tone-bad strong,.tone-bad .sub{color:var(--bad)}.path-readout{font-size:13px;color:var(--dim);display:flex;flex-direction:column;gap:5px;line-height:1.45}.live-call{position:absolute;left:50%;bottom:16px;transform:translate(-50%);background:#ffffff14;border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:4;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-glass)}.live-call span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.live-call button{appearance:none;border:0;background:#ffffffeb;color:var(--ink);border-radius:var(--radius-sm);padding:8px 12px;font:500 12px var(--font);cursor:pointer}.live-call button:hover{background:#fff}.live-call div{display:flex;gap:8px}.shot-picks{display:grid;grid-template-columns:1fr 1fr;gap:8px}.shot-pick{border:1px solid var(--c, var(--line));background:#ffffff0a;color:var(--text);border-radius:var(--radius-sm);padding:12px 10px;font:600 13px var(--font);cursor:pointer;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:background .15s ease,border-color .15s ease}.shot-pick:hover:not(:disabled){background:#ffffff14;border-color:#ffffff24}.shot-pick:disabled{opacity:.45;cursor:not-allowed}.academy-grid{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr);gap:16px;margin-bottom:28px}@media(max-width:800px){.academy-grid{grid-template-columns:1fr}}.lesson-nav{display:flex;flex-direction:column;gap:2px;padding:10px;min-width:220px;border:1px solid var(--line);border-radius:var(--radius-lg);background:#ffffff0d;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-glass)}.lesson-link{appearance:none;border:0;background:transparent;color:var(--dim);width:100%;text-align:left;border-radius:var(--radius-sm);border-left:2px solid transparent;text-transform:none;letter-spacing:-.02em;font:600 14px/1.25 var(--font);padding:10px 12px;cursor:pointer}.lesson-link:hover{color:var(--text);background:#ffffff0a}.lesson-link.is-active{color:var(--text);background:#ffffff0f;border-left-color:var(--accent)}.lesson-link span{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.55;margin-bottom:3px}.glossary h2{font-size:22px;letter-spacing:-.03em}.gloss-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.gloss-card{border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius-md);padding:14px;background:#ffffff0d;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-glass)}.gloss-card h3{margin:0 0 4px;font-size:17px}.gloss-card .contact{color:var(--dim);font-size:12px;line-height:1.45}.facing-row{display:flex;flex-direction:column;gap:8px}.move-beats{margin:0;padding-left:18px;color:var(--text);line-height:1.5}.move-beats li{margin:0 0 6px}.move-beats li:last-child{margin-bottom:0}.stage-frame{position:relative}
