:root{--page: #f4f5f6;--card: #ffffff;--ink: #16181d;--ink-2: #5d6068;--ink-3: #9b9ea6;--ink-4: #c4c7cd;--line: #ededf0;--line-2: #e3e4e8;--fill: #f3f4f6;--fill-2: #f7f8f9;--brand: #ff2442;--brand-press: #e51e3a;--brand-soft: #fff0f2;--good: #18b368;--warn: #f5a623;--bad: #f0453a;--good-bg: #e7f8ef;--warn-bg: #fef3e0;--bad-bg: #fdecea;--court-a: #0f2e2a;--court-b: #16403a;--r: 14px;--r-sm: 10px;--r-lg: 18px;--shadow-1: 0 1px 2px rgba(20, 22, 28, .05);--shadow-2: 0 6px 22px rgba(20, 22, 28, .08);--shadow-pop: 0 10px 40px rgba(20, 22, 28, .16);--tabbar-h: 56px;--maxw: 540px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent}button,input,textarea{font-family:inherit}a{color:inherit;text-decoration:none}img,video,canvas{display:block;max-width:100%}::selection{background:var(--brand-soft)}.app{max-width:var(--maxw);margin:0 auto;min-height:100%;background:var(--page);position:relative;box-shadow:0 0 0 1px var(--line)}.app-scroll{min-height:100vh;padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.page{animation:fade .22s ease}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.appbar{position:sticky;top:0;z-index:30;height:50px;display:flex;align-items:center;gap:10px;padding:0 12px;background:#ffffffdb;-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line)}.appbar .back,.appbar .act{width:36px;height:36px;border:none;background:none;cursor:pointer;display:grid;place-items:center;color:var(--ink);border-radius:50%}.appbar .act:active,.appbar .back:active{background:var(--fill)}.appbar .ttl{font-size:16px;font-weight:600;flex:1;text-align:center}.appbar .ttl.left{text-align:left}.feed-top{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:center;gap:22px;height:50px;padding:0 14px;background:#ffffffe6;-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line)}.feed-top .seg{background:none;border:none;cursor:pointer;position:relative;font-size:16px;color:var(--ink-3);font-weight:500;padding:6px 2px}.feed-top .seg.on{color:var(--ink);font-weight:700}.feed-top .seg.on:after{content:"";position:absolute;left:50%;bottom:0;transform:translate(-50%);width:18px;height:3px;border-radius:2px;background:var(--brand)}.feed-top .search{position:absolute;right:12px;width:34px;height:34px;border:none;background:none;display:grid;place-items:center;color:var(--ink-2);cursor:pointer}.masonry{columns:2;column-gap:8px;padding:8px}@media(min-width:480px){.masonry{column-gap:9px;padding:9px}}.pcard{break-inside:avoid;margin-bottom:8px;background:var(--card);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-1);cursor:pointer;display:block}.pcard:active{transform:scale(.99)}.pcard .cover{position:relative;width:100%;background:var(--fill);overflow:hidden}.pcard .cover img{width:100%;height:100%;object-fit:cover}.pcard .cover .badge{position:absolute;left:8px;top:8px;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:#fff;padding:3px 8px;border-radius:999px;background:#0000006b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.pcard .cover .badge.score{background:#00000080}.pcard .cover .play-mini{position:absolute;right:8px;bottom:8px;width:26px;height:26px;border-radius:50%;background:#00000057;display:grid;place-items:center;color:#fff;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.pcard .body{padding:8px 10px 11px}.pcard .ttl{font-size:14px;line-height:1.4;color:var(--ink);font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pcard .meta{display:flex;align-items:center;gap:6px;margin-top:9px}.pcard .meta .who{display:flex;align-items:center;gap:5px;min-width:0;flex:1}.pcard .meta .nick{font-size:12px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pcard .meta .likes{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--ink-3);flex-shrink:0}.avatar{border-radius:50%;object-fit:cover;flex-shrink:0;display:grid;place-items:center;color:#fff;font-weight:600;background:var(--brand);overflow:hidden}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;z-index:40;width:100%;max-width:var(--maxw);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;align-items:center;background:#fffffff0;-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--line)}.tabbar .tab{flex:1;height:var(--tabbar-h);border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-3);font-size:10px}.tabbar .tab.on{color:var(--ink)}.tabbar .tab.on svg{stroke:var(--ink)}.tabbar .pub{flex:0 0 auto;margin:0 8px}.tabbar .pub button{width:54px;height:38px;border-radius:12px;border:none;cursor:pointer;background:var(--brand);color:#fff;display:grid;place-items:center;box-shadow:0 4px 14px #ff244266}.tabbar .pub button:active{background:var(--brand-press)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:13px 16px;border-radius:999px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);font-size:15px;font-weight:600;cursor:pointer;transition:transform .08s ease,background .15s ease,opacity .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand)}.btn-primary:active{background:var(--brand-press)}.btn-ghost{background:var(--fill);border-color:transparent}.btn-row{display:flex;gap:10px}.btn-row .btn{width:auto;flex:1}.btn-sm{width:auto;padding:8px 18px;font-size:13px}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:13px;color:var(--ink-2);font-weight:500}.input,.textarea{width:100%;border:1px solid var(--line-2);background:var(--fill-2);border-radius:var(--r-sm);padding:13px 14px;font-size:15px;color:var(--ink);outline:none;transition:border-color .15s,background .15s}.input:focus,.textarea:focus{border-color:var(--brand);background:#fff}.textarea{resize:none;line-height:1.6}.input::placeholder,.textarea::placeholder{color:var(--ink-4)}.stack{display:flex;flex-direction:column;gap:14px}.pad{padding:16px}.muted{color:var(--ink-3)}.hr{height:8px;background:var(--page)}.section-label{font-size:12px;color:var(--ink-3);letter-spacing:.4px;font-weight:600}.empty{text-align:center;padding:64px 28px;color:var(--ink-3)}.empty .em-ico{font-size:40px;margin-bottom:12px}.empty h4{margin:0 0 6px;font-size:16px;color:var(--ink-2);font-weight:600}.empty p{margin:0;font-size:13px;line-height:1.6}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--line-2);border-top-color:var(--brand);animation:spin .85s linear infinite}.spinner.lime{border-top-color:var(--good)}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{display:grid;place-items:center;padding:60px 0}.toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + 28px);transform:translate(-50%);background:#16181deb;color:#fff;font-size:13px;padding:11px 18px;border-radius:999px;z-index:80;box-shadow:var(--shadow-pop);animation:fade .2s ease;max-width:80%;text-align:center}.auth{padding:40px 26px 26px;min-height:100vh;display:flex;flex-direction:column}.auth .logo{width:56px;height:56px;border-radius:17px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:28px;font-weight:800;margin-bottom:22px;box-shadow:0 8px 24px #ff24424d}.auth h1{font-size:26px;margin:0 0 6px;letter-spacing:-.5px}.auth .sub{color:var(--ink-3);font-size:14px;margin:0 0 30px;line-height:1.5}.auth .switch{text-align:center;margin-top:20px;font-size:14px;color:var(--ink-2)}.auth .switch b{color:var(--brand);font-weight:600;cursor:pointer}.auth .err{background:var(--bad-bg);color:var(--bad);font-size:13px;padding:11px 14px;border-radius:var(--r-sm)}.dropzone{border:1.6px dashed var(--line-2);border-radius:var(--r);background:var(--fill-2);padding:46px 22px;text-align:center;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:13px}.dropzone:active{background:var(--fill)}.dropzone .ico{width:58px;height:58px;border-radius:18px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center}.dropzone h3{margin:0;font-size:16px;font-weight:600}.dropzone p{margin:0;font-size:13px;color:var(--ink-3);line-height:1.6}.tips{background:var(--fill-2);border-radius:var(--r);padding:15px 16px}.tips li{display:flex;gap:9px;font-size:13px;color:var(--ink-2);line-height:1.6}.tips li+li{margin-top:9px}.tips .dot{color:var(--brand);flex-shrink:0}.hint{font-size:12px;color:var(--ink-4);text-align:center;line-height:1.6}.analyzing{display:flex;flex-direction:column;align-items:center;gap:18px;padding:28px 18px}.progress-track{width:100%;height:7px;border-radius:999px;background:var(--fill);overflow:hidden}.progress-fill{height:100%;background:var(--brand);border-radius:999px;transition:width .2s ease}.analyzing .status{font-size:14px;color:var(--ink-2);text-align:center;min-height:20px}.court{position:relative;width:100%;aspect-ratio:3 / 4;overflow:hidden;background:linear-gradient(160deg,var(--court-b),var(--court-a));border-radius:var(--r);display:grid;place-items:center}.court video{width:100%;height:100%;object-fit:contain}.court canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.court .tag{position:absolute;top:10px;left:10px;z-index:3;color:#fff;font-size:12px;padding:4px 9px;border-radius:999px;background:#00000073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.court .play{position:absolute;z-index:3;width:54px;height:54px;border-radius:50%;background:#ffffffeb;color:#16403a;border:none;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-2)}.score-row{display:flex;align-items:center;gap:15px}.ring{width:62px;height:62px;flex-shrink:0}.score-label .big{font-size:17px;font-weight:700}.score-label .sub{font-size:13px;color:var(--ink-3);margin-top:3px}.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:6px 11px;border-radius:999px}.pill.good{background:var(--good-bg);color:var(--good)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.bad{background:var(--bad-bg);color:var(--bad)}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px}.metric{background:var(--fill-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 13px}.metric .k{font-size:12px;color:var(--ink-3)}.metric .v{font-size:16px;font-weight:700;margin-top:5px;display:flex;align-items:baseline;gap:6px}.metric .v small{font-size:12px;font-weight:700}.coach{background:linear-gradient(180deg,#fff,var(--fill-2));border:1px solid var(--line);border-radius:var(--r);padding:16px}.coach .head{display:flex;align-items:center;gap:9px;margin-bottom:11px}.coach .cavatar{width:30px;height:30px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center}.coach .head .name{font-size:14px;font-weight:700}.coach .head .name small{display:block;font-size:11px;color:var(--ink-3);font-weight:500}.coach p{margin:0 0 12px;font-size:14px;line-height:1.75;color:var(--ink)}.coach .em-warn{color:var(--warn);font-weight:600}.coach .em-good{color:var(--good);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:7px 12px;border:1px solid var(--line-2);border-radius:999px;color:var(--ink-2);background:#fff}.detail-author{display:flex;align-items:center;gap:10px;padding:12px 16px}.detail-author .nm{flex:1;min-width:0}.detail-author .nm .n{font-size:14px;font-weight:600}.detail-author .nm .t{font-size:12px;color:var(--ink-3);margin-top:2px}.detail-body{padding:4px 16px 16px}.detail-body .dtitle{font-size:17px;font-weight:700;line-height:1.4;margin:8px 0}.detail-body .dtext{font-size:15px;line-height:1.75;color:#2b2d33;white-space:pre-wrap}.detail-time{font-size:12px;color:var(--ink-4);margin-top:14px}.comment-list{padding:4px 16px 20px}.comment{display:flex;gap:10px;padding:12px 0}.comment .c-body{flex:1;min-width:0}.comment .c-top{font-size:13px;color:var(--ink-2)}.comment .c-text{font-size:14px;line-height:1.6;color:var(--ink);margin-top:3px}.comment .c-time{font-size:11px;color:var(--ink-4);margin-top:5px}.action-bar{position:fixed;left:50%;transform:translate(-50%);bottom:0;z-index:35;width:100%;max-width:var(--maxw);display:flex;align-items:center;gap:10px;padding:9px 14px calc(9px + env(safe-area-inset-bottom));background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line)}.action-bar .cinput{flex:1;height:38px;border-radius:999px;border:none;background:var(--fill);padding:0 16px;font-size:14px;outline:none;color:var(--ink)}.action-bar .iact{display:flex;flex-direction:column;align-items:center;gap:1px;background:none;border:none;cursor:pointer;color:var(--ink-2);font-size:11px;min-width:38px}.action-bar .iact.liked{color:var(--brand)}.like-btn svg{transition:transform .18s cubic-bezier(.3,1.6,.5,1)}.like-btn.pop svg{transform:scale(1.35)}.profile-head{padding:20px 18px 14px}.profile-top{display:flex;align-items:center;gap:16px}.profile-top .who{flex:1;min-width:0}.profile-top .who .n{font-size:19px;font-weight:700}.profile-top .who .id{font-size:12px;color:var(--ink-3);margin-top:3px}.profile-bio{font-size:14px;color:var(--ink-2);line-height:1.6;margin:14px 0 4px;min-height:8px}.stats{display:flex;gap:26px;margin-top:14px}.stats .s{display:flex;align-items:baseline;gap:5px}.stats .s b{font-size:17px;font-weight:700}.stats .s span{font-size:12px;color:var(--ink-3)}.profile-actions{display:flex;gap:10px;margin-top:18px}.subtabs{display:flex;gap:24px;padding:4px 18px 0;border-bottom:1px solid var(--line)}.subtabs .st{padding:12px 0;font-size:14px;color:var(--ink-3);font-weight:500;cursor:pointer;position:relative}.subtabs .st.on{color:var(--ink);font-weight:700}.subtabs .st.on:after{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:-1px;width:22px;height:3px;border-radius:2px;background:var(--brand)}.sentinel{height:1px}
