:root{font-family:Noto Sans SC,PingFang SC,sans-serif;color:#292d30;background:#f7f5f0;--blue:#164f7d;--line:#dedbd4;--paper:#fbfaf7}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{border:0;background:none;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #2b6b9a;outline-offset:2px}.app{display:grid;grid-template:60px minmax(0,1fr)/240px minmax(600px,1fr) 0;width:100vw;height:100vh;background:var(--paper);overflow:hidden;transition:grid-template-columns .25s}.app.pdf-open{grid-template-columns:240px minmax(600px,1fr) minmax(380px,31vw)}.topbar{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:0 22px 0 18px;border-bottom:1px solid var(--line);background:#fbfaf7;z-index:10}.brand-mark{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#111;color:#fff;font:600 18px Georgia}.brand{font:600 20px "Noto Serif SC",serif;letter-spacing:.04em}.concert{height:36px;margin-left:16px;padding:0 13px;display:flex;align-items:center;gap:12px;border:1px solid #d8d5cf;border-radius:4px;background:#fff;font-size:13px}.spacer{flex:1}.admin-link{color:#666;font-size:13px}.topbar>i{height:25px;width:1px;background:var(--line)}.topbar img{width:34px;height:34px;border-radius:50%;object-fit:cover}.topbar>span:not(.spacer){font-size:13px}.topbar svg{width:14px}.playlist{grid-row:2;min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--line);background:#f8f7f3}.playlist-title{height:54px;padding:0 20px;display:flex;align-items:center;gap:8px;color:#696d70;font-size:13px}.playlist-title svg{width:17px}.playlist-title span{color:#999}.track-list{flex:1;overflow:auto}.track{position:relative;width:100%;min-height:76px;padding:13px 14px 12px 20px;display:grid;grid-template-columns:28px 1fr auto;align-items:start;text-align:left;border-block:1px solid transparent}.track:hover{background:#f0eee9}.track.active{background:#eef3f6;border-color:#dbe5ec;color:#164f7d}.track.active:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#1c6599}.track>b,.track>em{font:500 12px/1.5 Georgia;font-style:normal}.track>span{min-width:0}.track strong,.track small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track strong{font:500 13px/1.3 Georgia,"Noto Serif SC",serif}.track small{margin-top:7px;color:#858785;font:11px Georgia}.track>em{color:#777}.track-nav{padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:9px;border-top:1px solid var(--line)}.track-nav button{height:44px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d8d5cf;border-radius:4px;background:#fbfaf7;font-size:12px}.workspace{grid-row:2;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.player-section{flex:0 0 auto;padding:18px 20px 0;border-bottom:1px solid var(--line)}.track-heading{display:flex;justify-content:space-between;align-items:start}.track-heading h1{margin:0;font:500 clamp(20px,1.75vw,28px)/1.15 Georgia,"Noto Serif SC",serif}.track-heading p{margin:7px 0 0;color:#757875;font:13px Georgia}.track-heading p span{margin-left:26px;font-family:Noto Sans SC}.score-open{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid var(--line);border-radius:4px;font-size:12px}.score-open:disabled{opacity:.35}.controls{height:57px;display:flex;align-items:center;gap:7px}.controls>button{width:32px;height:36px;display:grid;place-items:center}.controls .play{width:44px;height:44px;border-radius:50%;background:var(--blue);color:#fff}.controls>i{height:29px;width:1px;margin:0 5px;background:var(--line)}.controls .jump{display:flex;flex-direction:column;height:40px;font-size:10px}.jump svg{width:19px}.jump .flip,.jump .right{transform:scaleX(-1)}.volume{accent-color:var(--blue);width:78px}.controls .ab{width:25px;height:25px;border:1px solid #aaa9a5;border-radius:2px;font:500 12px Georgia}.controls .ab.set{color:#fff;background:#746b82;border-color:#746b82}.controls>em{height:1px;width:20px;margin:0 -8px;background:#aaa9a5}.controls .clear{width:auto;margin-left:3px;color:#8d746e;font-size:10px}.readout{display:flex;gap:6px;margin-bottom:5px;font:16px Georgia}.readout span{padding-top:3px;color:#858583;font-size:12px}.wave{height:54px;position:relative;cursor:pointer;border-top:1px solid #e2ded6}.wave canvas{width:100%;height:54px;display:block}.playhead,.avatar-grid>i{position:absolute;z-index:4;inset-block:0;width:1px;background:#1c5a89;pointer-events:none}.playhead:before{content:"";position:absolute;top:-1px;left:-4px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:8px solid #1c5a89}.loop{position:absolute;top:37px;z-index:5;padding:1px 4px;transform:translate(-50%);border:1px solid #a89e83;background:#eee7d6;color:#6c624d;font:10px Georgia}.ticks{height:24px;display:flex;justify-content:space-between;color:#8b8a86;font:10px Georgia}.overview{flex:0 0 154px;padding:0 20px;border-bottom:1px solid var(--line)}.section-label{height:26px;display:flex;align-items:center;color:#777;font-size:11px}.avatar-grid{height:124px;position:relative;overflow:hidden;background-image:linear-gradient(#e6e2dc 1px,transparent 1px);background-size:100% 26px}.timeline-avatar{position:absolute;z-index:3;width:23px;height:23px;padding:0;transform:translate(-50%);border:2px solid var(--c);border-radius:50%;box-shadow:0 0 0 1px #fff}.timeline-avatar img{width:100%;height:100%;display:block;border-radius:50%;object-fit:cover}.p-S{--c:#AFC7D6}.p-A{--c:#C8B5B2}.p-T{--c:#C4B07A}.p-B{--c:#89949D}.p-all{--c:#746B82}.comment-area{min-height:0;flex:1;display:flex;flex-direction:column}.filters{min-height:42px;padding:6px 14px;display:flex;align-items:center;gap:7px;border-bottom:1px solid var(--line);color:#686c6e;font-size:11px}.filters>button{min-width:33px;height:25px;display:flex;align-items:center;justify-content:center;gap:3px;border-radius:4px;background:color-mix(in srgb,var(--c) 52%,white);opacity:.45}.filters>button.on{opacity:1}.filters>button svg{width:11px}.filters>label{height:27px;margin-left:6px;padding:0 7px;display:flex;align-items:center;gap:4px;border:1px solid #d8d5cf;border-radius:4px}.filters select{border:0;background:transparent;color:inherit;font-size:11px}.filters>small{margin-left:auto;white-space:nowrap}.comments{min-height:145px;flex:1;overflow-y:auto;padding:6px 13px 4px}.comments article{position:relative;min-height:48px;margin-bottom:3px;padding:6px 10px;display:flex;align-items:flex-start;gap:9px;border-left:4px solid var(--c);border-bottom:1px solid color-mix(in srgb,var(--c) 45%,#fff);background:color-mix(in srgb,var(--c) 14%,#fff);transition:opacity .2s}.comments article.important{padding-left:72px;outline:1px solid color-mix(in srgb,var(--c) 42%,#fff);background:color-mix(in srgb,var(--c) 10%,#fbfaf7)}.comments article.faded{opacity:.24}.priority{position:absolute;left:8px;top:7px;height:21px;padding:0 6px;display:flex;align-items:center;gap:3px;border:1px solid #b9acc5;border-radius:3px;color:#746b82;font-size:10px}.comments article>img{width:32px;height:32px;flex:0 0 auto;border-radius:50%;object-fit:cover}.comment-main{min-width:0;flex:1}.meta{height:16px;display:flex;align-items:center;gap:9px;font-size:10px}.meta strong{font-size:11px}.meta span{color:#8a8b89;font:10px Georgia}.meta b{padding:0 5px;border-radius:3px;font-weight:500}.comment-main>p{margin:1px 0 3px;color:#474b4e;font-size:11px;line-height:1.3}.actions{display:flex;gap:12px}.actions button{padding:0;display:flex;align-items:center;gap:3px;color:#828482;font-size:9px}.actions button svg{width:11px}.actions button.selected{color:#164f7d;font-weight:600}.score-link{flex:0 0 auto;align-self:center;color:#285f88;font-size:10px;white-space:nowrap}.reply{margin-top:3px;display:flex;align-items:center;gap:5px;color:#666;font-size:9px}.reply img{width:17px;height:17px;border-radius:50%;object-fit:cover}.reply strong{color:#3d596d}.reply-form{display:flex;margin-top:5px;gap:5px}.reply-form input{min-width:0;flex:1;height:25px;padding:0 7px;border:1px solid #cfcac2;background:#fff}.reply-form button{padding:0 9px;border-radius:3px;background:var(--blue);color:#fff;font-size:10px}.empty{height:100%;min-height:120px;display:grid;place-items:center;color:#8d8b87;font-size:12px}.composer{flex:0 0 72px;padding:5px 13px 7px;display:flex;align-items:flex-start;gap:9px;border-top:1px solid var(--line)}.composer>img{width:34px;height:34px;border-radius:50%;object-fit:cover}.composer-box{position:relative;min-width:0;height:59px;flex:1;display:grid;grid-template-columns:66px minmax(160px,1fr) 38px auto 64px;overflow:hidden;border:1px solid #aeb7be;border-radius:6px;background:#fff}.composer-box>select{padding:0 8px;border:0;border-right:1px solid #d9d6d0}.composer textarea{min-width:0;padding:8px 10px 18px;resize:none;border:0;outline:0;font-size:11px}.image-upload{display:grid;place-items:center;cursor:pointer;color:#5d6265}.image-upload input{display:none}.score-check{padding:0 10px;display:flex;align-items:center;gap:5px;border-left:1px solid #ece9e3;color:#6f7375;font-size:10px;white-space:nowrap;cursor:pointer}.score-check.disabled{opacity:.35}.score-check input{display:none}.score-check>i{width:15px;height:15px;display:grid;place-items:center;border:1px solid #c7c3bc;border-radius:2px}.score-check svg{width:12px}.submit{margin:7px;border-radius:4px;background:var(--blue);color:#fff;font-size:11px}.count{position:absolute;left:76px;bottom:3px;color:#999;font-size:9px}.file{position:absolute;right:205px;bottom:3px;max-width:120px;display:flex;color:#666;font-size:9px}.file button{padding:0}.file svg{width:10px}.toast{position:fixed;z-index:60;left:50%;bottom:24px;padding:10px 16px;transform:translate(-50%);border-radius:5px;background:#24313a;color:#fff;box-shadow:0 8px 24px #0002;font-size:12px}.score{grid-row:2;min-width:0;overflow:hidden;border-left:1px solid var(--line);background:#f8f5ed;opacity:0;pointer-events:none}.pdf-open .score{opacity:1;pointer-events:auto}.score-head{height:58px;padding:0 16px 0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font:500 16px Georgia,"Noto Serif SC",serif}.score-head button{padding:7px 9px;display:flex;align-items:center;gap:3px;border:1px solid #d7d2c9;border-radius:4px;font:11px Noto Sans SC}.score-nav{height:54px;display:flex;align-items:center;justify-content:center;gap:10px;border-bottom:1px solid var(--line)}.score-nav button{width:30px;height:30px;display:grid;place-items:center;border:1px solid #d7d2c9;border-radius:4px;background:#fbfaf7}.score-nav span{width:58px;height:30px;display:grid;place-items:center;border:1px solid #d7d2c9;background:#fbfaf7;font:14px Georgia}.score-nav small{margin-left:-7px;color:#85837e}.score-page{height:calc(100vh - 172px);position:relative;margin:0 12px;overflow:auto;background:#fbf8ef}.score-page img{width:100%;min-height:100%;display:block;object-fit:cover;object-position:top;filter:sepia(.08) saturate(.86)}.score-page>span{position:absolute;left:16px;top:14px;font:11px Georgia}.backdrop{display:none}.admin{min-height:100vh;display:grid;grid-template:60px 1fr/220px 1fr;background:#f6f5f1}.admin>header{grid-column:1/-1;padding:0 22px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);background:#fbfaf7}.admin>header strong{font:600 18px "Noto Serif SC"}.admin>header button{margin-left:auto;display:flex;align-items:center;gap:6px}.admin>nav{padding:22px 12px;border-right:1px solid var(--line);background:#efede7}.admin>nav button{width:100%;height:42px;padding:0 14px;text-align:left;border-radius:4px;color:#5c6164}.admin>nav button.active{background:#fff;color:var(--blue);font-weight:600}.admin>main{padding:34px 40px}.admin-title{margin-bottom:24px;display:flex;align-items:center;justify-content:space-between}.admin-title h1{margin:0;font:600 25px "Noto Serif SC"}.admin-title p{margin:5px 0 0;color:#858783;font-size:12px}.admin-title>button{height:38px;padding:0 15px;border-radius:4px;background:var(--blue);color:#fff}.admin-table{overflow:auto;border:1px solid var(--line);background:#fff}.admin-row{min-width:780px;min-height:64px;padding:0 18px;display:grid;grid-template-columns:minmax(270px,1.5fr) .5fr .8fr .8fr .65fr;align-items:center;border-bottom:1px solid #ebe8e2;font-size:12px}.admin-row.head{min-height:42px;color:#858581;background:#f8f7f3}.admin-row>span:first-child{display:flex;align-items:center;gap:14px}.admin-row i{display:flex;flex-direction:column;font-style:normal}.admin-row i small{margin-top:4px;color:#92938f}.admin-row button{margin-right:12px;color:#37627f}.admin-row .danger{color:#9a5555}.success{display:flex;align-items:center;gap:5px;color:#487358;font-style:normal}.upload{color:#2d6388;cursor:pointer}.upload input{display:none}.simple{padding:25px;border:1px solid var(--line);background:#fff}.simple h2{margin:0 0 10px}.simple p{color:#777}.simple button{float:right;color:#2d6388}.users .admin-row{grid-template-columns:1.2fr 1fr .7fr .7fr .7fr}.users img{width:34px;height:34px;border-radius:50%;object-fit:cover}.switch input{display:none}.switch i{position:relative;width:38px;height:21px;display:block;border-radius:12px;background:#ccc}.switch i:after{content:"";position:absolute;width:17px;height:17px;top:2px;left:2px;border-radius:50%;background:#fff;transition:.2s}.switch input:checked+i{background:#746b82}.switch input:checked+i:after{transform:translate(17px)}@media(max-width:1180px){.app.pdf-open{grid-template-columns:210px minmax(540px,1fr) 340px}.track-heading h1{font-size:21px}.controls{gap:3px}.filters>small{display:none}}@media(max-width:760px){body{overflow:auto}.app,.app.pdf-open{min-height:100dvh;height:auto;display:block;overflow:visible}.topbar{height:56px;position:sticky;top:0;z-index:20;padding:0 12px}.brand-mark{width:28px;height:28px}.brand{font-size:16px}.concert,.admin-link,.topbar>i,.topbar>span:not(.spacer),.topbar>svg{display:none}.playlist{height:auto;border:0;border-bottom:1px solid var(--line)}.playlist-title{height:40px}.track-list{display:flex;overflow-x:auto;padding:0 10px 10px}.track{flex:0 0 210px;min-height:62px;border:1px solid var(--line)}.track+.track{margin-left:7px}.track-nav{display:none}.workspace{overflow:visible}.player-section{padding:16px 12px 0}.track-heading h1{font-size:21px}.controls{height:60px;overflow-x:auto}.controls .jump{flex:0 0 31px}.volume,.controls>svg,.controls .clear{display:none}.ticks span:nth-child(2n){display:none}.overview{padding:0 12px}.filters{overflow-x:auto;flex-wrap:nowrap}.filters>*{flex:0 0 auto}.comments{min-height:250px;overflow:visible}.comments article.important{padding-left:12px;padding-top:38px}.comments article{flex-wrap:wrap}.priority{top:8px}.score-link{margin-left:48px}.composer{min-height:108px;position:sticky;bottom:0;z-index:12;padding:8px;background:#fbfaf7}.composer>img{display:none}.composer-box{min-height:92px;height:auto;grid-template:47px 43px/64px 1fr 40px 64px}.composer textarea{grid-column:2/4}.score-check{grid-column:1/4;grid-row:2}.submit{grid-column:4;grid-row:1/3}.count,.score{display:none}.pdf-open .score{display:block;position:fixed;z-index:40;top:7vh;right:12px;bottom:3vh;left:12px;border:1px solid #d1ccc2;box-shadow:0 18px 70px #15151555;opacity:1}.score-head{height:50px}.score-nav{height:46px}.score-page{height:calc(90vh - 98px);margin:0}.backdrop{display:block;position:fixed;z-index:39;top:0;right:0;bottom:0;left:0;background:#1c212666}.admin{display:block}.admin>header{height:58px}.admin>nav{display:flex;overflow-x:auto;padding:8px}.admin>nav button{width:auto;white-space:nowrap}.admin>main{padding:20px 12px}.admin-title h1{font-size:21px}}.app,.app.pdf-open{grid-template:56px minmax(0,1fr)/minmax(620px,1fr) 0}.app.pdf-open{grid-template-columns:minmax(620px,1fr) minmax(390px,31vw)}.topbar{height:56px;padding-left:14px}.playlist-trigger{width:34px;height:34px;display:grid;place-items:center;border:1px solid #ddd9d1;border-radius:4px;background:#fff}.playlist-trigger svg{width:18px}.profile-button{display:flex;align-items:center;gap:8px;padding:3px 0 3px 5px}.profile-button img{width:34px;height:34px}.profile-button span{font-size:13px}.profile-button svg{width:13px}.playlist{position:fixed;z-index:31;top:56px;bottom:0;left:0;width:270px;display:flex;transform:translate(-102%);box-shadow:10px 0 32px #25313b24;transition:transform .22s ease}.playlist.open{transform:translate(0)}.playlist-title>button{margin-left:auto;width:30px;height:30px;display:grid;place-items:center}.playlist-title>button svg{width:15px}.drawer-backdrop{position:fixed;z-index:30;top:56px;right:0;bottom:0;left:0;background:#1c242a33}.track-nav{display:none}.workspace{grid-column:1;grid-row:2}.player-section{padding:10px 20px 0}.track-heading{height:31px;align-items:center;gap:14px}.track-heading h1{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:20px}.track-heading .readout{margin:0 4px 0 auto;white-space:nowrap;font-size:15px}.track-heading .readout span{font-size:11px}.controls{height:39px;gap:5px}.controls>button{width:29px;height:29px}.controls .play{width:34px;height:34px}.controls .play svg{width:16px}.controls>i{height:22px;margin:0 3px}.controls .jump{height:31px;justify-content:center;font-size:9px}.jump svg{width:16px;height:16px}.controls>svg{width:16px}.volume{width:66px}.controls .ab{width:23px;height:23px}.wave,.wave canvas{height:32px}.loop{top:18px}.ticks{display:none}.avatar-strip{height:66px;position:relative;margin:0 20px;border-bottom:1px solid var(--line);background-image:linear-gradient(#ebe7e0 1px,transparent 1px);background-size:100% 17px;overflow:hidden}.avatar-strip>i{position:absolute;z-index:2;inset-block:0;width:1px;background:#1c5a89}.timeline-avatar{width:21px;height:21px}.timeline-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}.filters{min-height:38px;padding:5px 14px}.filters>button{height:24px}.filters>label{height:25px}.comments{min-height:240px;padding-top:7px}.actions button{min-width:25px;height:21px;justify-content:center}.actions button span{font-variant-numeric:tabular-nums}.actions button:first-child,.actions button:nth-child(2){padding:0 5px;border:1px solid #dcd8d1;border-radius:3px;background:#fff9}.composer{flex:0 0 66px;padding:4px 13px 5px}.composer>img{width:32px;height:32px}.composer-box{height:56px;grid-template-columns:50px minmax(180px,1fr) 34px auto 58px}.composer-box>select{padding:0 5px;font-size:10px}.composer textarea{padding:7px 9px 17px}.score-check{padding:0 8px}.submit{margin:6px}.score{grid-column:2;grid-row:2}.score-head{height:52px;padding:0 12px 0 17px}.score-head>div{display:flex;align-items:center;gap:6px}.score-head button{height:29px;padding:0 8px}.score-head .mark.active{border-color:#c73d3d;background:#fff1f1;color:#a72f2f}.score-head .clear-mark{color:#9d3b3b;border-color:transparent}.score-nav{height:44px}.score-page{height:calc(100vh - 152px);margin:0;overflow:auto;background:#e9e5dc}.pdf-canvas-host{position:relative;width:100%;min-height:100%;margin:auto;background:#fbf8ef;touch-action:pan-y}.pdf-canvas-host canvas{display:block;max-width:100%;margin:auto}.pdf-canvas-host.marking{cursor:crosshair;touch-action:none}.score-annotation{position:absolute;border:3px solid #d83434;border-radius:10px;background:#e7363612;box-shadow:0 0 0 1px #fff8;pointer-events:none}.marking-tip{position:sticky;z-index:3;bottom:12px;width:max-content;margin:-44px auto 12px;padding:7px 11px;border-radius:4px;background:#242a2ee8;color:#fff;font-size:11px;pointer-events:none}.pdf-loading{height:240px;display:grid;place-items:center;color:#777;font-size:12px}.pdf-error{min-height:220px;display:grid;place-content:center;justify-items:center;gap:12px;color:#8d4343}.pdf-error button{padding:8px 13px;border:1px solid #c9c3ba;border-radius:4px;background:#fff;color:var(--blue)}.modal-layer{position:fixed;z-index:70;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#22292e59}.profile-dialog{position:relative;width:min(390px,calc(100vw - 28px));padding:20px;border:1px solid #d6d2ca;border-radius:7px;background:#fbfaf7;box-shadow:0 18px 60px #1d252c2b}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{margin:0;font:600 20px "Noto Serif SC",serif}.dialog-head button{display:grid;place-items:center}.avatar-editor{margin:22px 0;display:flex;align-items:center;gap:15px}.avatar-editor img{width:64px;height:64px;border-radius:50%;object-fit:cover}.avatar-editor span{position:relative;padding:7px 11px;border:1px solid #d7d3cb;border-radius:4px;font-size:12px;cursor:pointer}.avatar-editor input{display:none}.profile-dialog>label:not(.avatar-editor){display:flex;flex-direction:column;gap:7px;color:#666;font-size:12px}.profile-dialog>label input{height:38px;padding:0 10px;border:1px solid #cbc7bf;border-radius:4px;background:#fff}.profile-dialog>p{color:#8a8985;font-size:11px}.dialog-actions{margin-top:22px;display:flex;justify-content:flex-end;gap:8px}.dialog-actions button{height:35px;padding:0 14px;border:1px solid #d5d1ca;border-radius:4px}.dialog-actions button[type=submit]{border-color:var(--blue);background:var(--blue);color:#fff}.admin-login{min-height:100vh;display:grid;place-items:center;background:#f3f1ec}.admin-login form{width:min(390px,calc(100vw - 30px));padding:34px;border:1px solid #d8d4cd;border-radius:8px;background:#fbfaf7;box-shadow:0 20px 60px #23313b12}.admin-login .brand-mark{margin:auto}.admin-login h1{margin:16px 0 4px;text-align:center;font:600 23px "Noto Serif SC",serif}.admin-login p{margin:0 0 24px;text-align:center;color:#898985;font-size:12px}.admin-login label{margin-top:13px;display:flex;flex-direction:column;gap:6px;color:#666;font-size:12px}.admin-login input{height:40px;padding:0 11px;border:1px solid #cbc7bf;border-radius:4px;background:#fff}.admin-login button{width:100%;height:40px;margin-top:20px;border-radius:4px;background:var(--blue);color:#fff}.admin-login a{margin-top:16px;display:block;text-align:center;color:#6f777c;font-size:11px}.login-error{margin-top:10px;color:#a33f3f;font-size:11px}.admin>header a{margin-left:auto;display:flex;align-items:center;gap:6px;color:#596267;text-decoration:none}@media(max-width:760px){.app,.app.pdf-open{display:block;min-height:100dvh}.topbar{height:52px}.playlist-trigger{display:grid;width:31px;height:31px}.brand{font-size:15px}.topbar .brand-mark{display:none}.profile-button span,.profile-button svg{display:none}.profile-button img{display:block;width:31px;height:31px}.playlist{top:52px;width:min(290px,86vw)}.drawer-backdrop{top:52px;right:0;bottom:0;left:0}.workspace{overflow:visible}.player-section{padding:10px 11px 0}.track-heading{height:auto;min-height:33px}.track-heading h1{font-size:17px}.track-heading .readout{font-size:13px}.score-open{font-size:0}.score-open svg{width:17px}.controls{height:42px}.volume,.controls>svg,.controls .clear{display:none}.wave,.wave canvas{height:30px}.avatar-strip{height:56px;margin:0 11px}.filters{overflow-x:auto}.comments{min-height:310px}.composer{min-height:88px}.composer-box{min-height:78px;height:auto;grid-template:39px 39px/48px 1fr 36px 58px}.composer-box>select{grid-column:1;grid-row:1}.composer textarea{grid-column:2/4;grid-row:1}.image-upload{grid-column:3;grid-row:1}.score-check{grid-column:1/4;grid-row:2}.submit{grid-column:4;grid-row:1/3}.score{display:none}.pdf-open .score{display:block;position:fixed;z-index:40;top:4vh;right:8px;bottom:2vh;left:8px}.score-head{height:48px}.score-head strong{font-size:13px}.score-head>div{gap:3px}.score-head button{padding:0 6px;font-size:10px}.score-nav{height:40px}.score-page{height:calc(94vh - 90px)}.backdrop{display:block}.admin>header a{font-size:12px}}.pdf-canvas-host{min-height:0}.pdf-canvas-host canvas{width:100%;height:auto}@media(max-width:760px){.playlist{top:52px;bottom:0;width:min(310px,88vw);height:auto;border-right:1px solid var(--line);border-bottom:0}.playlist-title{height:46px;flex:0 0 46px;padding:0 14px}.playlist .track-list{min-height:0;display:block;flex:1;overflow-x:hidden;overflow-y:auto;padding:6px 0 18px}.playlist .track{width:100%;min-height:67px;display:grid;flex:none;margin:0;padding:11px 13px 10px 16px;border:0;border-block:1px solid transparent}.playlist .track+.track{margin-left:0}.track-heading{height:auto;min-height:33px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;align-items:center}.track-heading h1{grid-column:1;font-size:17px}.track-heading .readout{grid-column:2;margin:0;font-size:13px}.score-open{grid-column:1/-1;justify-self:end;height:27px;padding:0 7px;gap:4px;font-size:10px}.score-open svg{width:14px}.controls{height:42px;overflow-x:hidden;justify-content:space-between;gap:1px}.controls .jump{flex:0 0 29px}.filters{min-height:70px;overflow:visible;flex-wrap:wrap;align-content:center;gap:5px;padding:6px 10px}.filters>*{flex:0 0 auto}.filters>label{margin-left:0}.filters>small{display:none}.comments{min-height:340px;overflow:visible;padding:7px 8px 114px}.comments article,.comments article.important{min-height:0;display:grid;grid-template-columns:36px minmax(0,1fr);gap:5px 8px;padding:10px 10px 10px 8px;flex-wrap:nowrap}.comments article.important{padding-top:39px}.priority{top:9px;left:9px}.comments article>img{grid-column:1;grid-row:1;width:34px;height:34px}.comment-main{grid-column:2;grid-row:1;min-width:0}.meta{height:auto;min-height:17px;flex-wrap:wrap;gap:4px 8px}.comment-main>p{overflow-wrap:anywhere;font-size:12px;line-height:1.45}.score-link{grid-column:2;justify-self:start;align-self:start;margin:0;font-size:10px}.reply{align-items:flex-start;flex-wrap:wrap}.reply-form{width:100%}.composer{min-height:104px;padding:7px 8px}.composer-box{min-height:90px;height:auto;grid-template-columns:48px minmax(0,1fr) 36px 58px;grid-template-rows:52px 36px}.composer-box>select{grid-column:1;grid-row:1;min-width:0;padding:0 3px}.composer textarea{grid-column:2;grid-row:1;padding:8px 7px;min-width:0}.image-upload{grid-column:3;grid-row:1}.score-check{grid-column:1/4;grid-row:2;padding:0 8px;border-left:0;border-top:1px solid #ece9e3;overflow:hidden;text-overflow:ellipsis}.submit{grid-column:4;grid-row:1/3;margin:6px}.count,.file{display:none}.score-page{overscroll-behavior:contain}.admin>main{overflow:hidden}.admin-title{gap:10px}.admin-title>button{flex:0 0 auto;padding:0 10px}.admin-table{max-width:100%;overscroll-behavior-x:contain}.admin>nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;padding:7px 6px;gap:3px}.admin>nav button{width:100%;padding:0 4px;text-align:center;white-space:nowrap;font-size:10px}.admin-row{min-width:0;padding:0 9px;grid-template-columns:minmax(120px,1fr) 38px 58px 58px;gap:5px;font-size:10px}.admin-row>span:nth-child(3){display:none}.admin-row>span:nth-child(5){display:flex;flex-direction:column;gap:4px}.admin-row>span:nth-child(5) button{margin:0}.admin-row>span:first-child{gap:8px}.admin-row i small{font-size:9px}.users .admin-row{grid-template-columns:minmax(100px,1.2fr) 62px 26px 30px 40px;gap:3px}.users .admin-row>span:nth-child(3){display:block}.users .admin-row>span:first-child{gap:6px}.users img{width:28px;height:28px}.users .switch i{width:32px;height:19px}.users .switch i:after{width:15px;height:15px}.users .switch input:checked+i:after{transform:translate(13px)}}.track-order{align-items:center}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;margin:20px 0 6px;border:1px solid #cbc7bf;border-radius:6px;overflow:hidden}.auth-tabs button{height:40px;background:#fff;color:#596168}.auth-tabs button.active{background:var(--blue);color:#fff}.profile-dialog{max-height:calc(100dvh - 28px);overflow-y:auto}.profile-dialog hr{margin:22px 0;border:0;border-top:1px solid #ddd8cf}.password-panel{display:grid;gap:10px}.password-panel h3{margin:0;font-size:16px}.password-panel label{display:flex;flex-direction:column;gap:6px;color:#5e6467;font-size:12px}.password-panel input{height:38px;padding:0 10px;border:1px solid #cbc7bf;border-radius:4px;background:#fff}.password-panel>button{justify-self:start;height:36px;padding:0 14px;border-radius:4px;background:var(--blue);color:#fff}.success-note{color:#28704c}.danger-account{margin-top:24px;color:#aa3131;text-decoration:underline}.admin-v2>header>button{padding:6px 10px;border:1px solid #d5d1ca;border-radius:4px;background:#fff}.account-actions{margin-top:24px;display:flex;align-items:center;justify-content:space-between}.account-actions .danger-account{margin:0;color:#aa3131;text-decoration:underline}@media(max-width:760px){.join-gate{height:100dvh;min-height:0;display:block;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:20px 12px}.join-card{margin:auto}.admin-v2>header{overflow-x:auto}.admin-v2>header>*{flex:0 0 auto}}.profile-dialog>label select{height:38px;padding:0 10px;border:1px solid #cbc7bf;border-radius:4px;background:#fff}.comment-image{display:block;max-width:min(360px,100%);max-height:220px;margin:6px 0;border-radius:4px;object-fit:contain}.login-card{width:min(390px,calc(100vw - 30px));padding:34px;text-align:center;border:1px solid #d8d4cd;border-radius:8px;background:#fbfaf7;box-shadow:0 20px 60px #23313b12}.login-card .brand-mark{margin:auto}.login-card h1{margin:16px 0 6px;font:600 23px "Noto Serif SC",serif}.login-card p{margin:0 0 24px;color:#898985;font-size:12px}.wechat-login{height:42px;display:grid;place-items:center;border-radius:4px;background:#1aad19;color:#fff;text-decoration:none}.admin-logout{margin-left:auto;color:#737977;font-size:11px}.admin>header .admin-logout+a{margin-left:6px}.concert-cards{display:grid;gap:12px}.simple-actions{float:right;display:flex;gap:12px}.simple-actions button{float:none}.simple-actions .danger{color:#9a5555}.admin-concert-select{min-width:220px;height:30px;margin-top:7px;padding:0 8px;border:1px solid #d5d1ca;border-radius:4px;background:#fff;color:#666;font-size:11px}.loading,.empty-home{min-height:100vh;display:grid;place-items:center;color:#666}.empty-home{align-content:center;text-align:center;background:#f7f5f0}.empty-home h1{font:600 28px "Noto Serif SC",serif}.empty-home a{margin:auto;padding:10px 14px;border-radius:4px;background:var(--blue);color:#fff;text-decoration:none}.join-gate{min-height:100vh;padding:34px 14px;display:grid;place-items:center;background:#f3f1ec}.join-card{width:min(560px,100%);padding:28px;border:1px solid #d8d4cd;border-radius:8px;background:#fbfaf7;box-shadow:0 20px 60px #23313b12}.join-card h1{margin:0 0 8px;font:600 24px "Noto Serif SC",serif}.join-card p{margin:0 0 18px;color:#777;font-size:13px}.join-card label,.profile-dialog>label{display:flex;flex-direction:column;gap:6px;margin-top:12px;color:#5e6467;font-size:12px}.join-card input,.join-card select{height:38px;padding:0 10px;border:1px solid #cbc7bf;border-radius:4px;background:#fff}.join-card fieldset{margin:18px 0 0;padding:0;border:0}.join-card legend{margin-bottom:8px;color:#5e6467;font-size:12px}.role-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.role-grid button{padding:6px;border:1px solid #dedad3;border-radius:5px;background:#fff;font-size:10px}.role-grid button.selected{border-color:#27658f;background:#edf5fa}.role-grid img{width:42px;height:42px;margin:auto;border-radius:50%;object-fit:cover;display:block}.role-grid span{display:block;margin-top:4px;white-space:nowrap}.join-avatar{flex-direction:row!important;align-items:center;gap:12px!important}.join-avatar>img{width:54px;height:54px;border-radius:50%;object-fit:cover}.join-avatar>span{position:relative;padding:7px 10px;border:1px solid #d8d4cd;border-radius:4px;cursor:pointer}.join-avatar input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.join-card>button{width:100%;height:41px;margin-top:20px;border-radius:4px;background:var(--blue);color:#fff}.tag{display:inline-flex;align-items:center;margin:0 2px;padding:1px 5px;border-radius:4px;background:#e5e6e7;color:#46515a;font-size:.86em;line-height:1.35;vertical-align:baseline}.tag-S{background:#d9e7ef}.tag-A{background:#e4d7d5}.tag-T{background:#e2d7b7}.tag-B{background:#cbd1d6}.tag-钢琴{background:#f1d8a4}.tag-auto-0{background:#d9e8df}.tag-auto-1{background:#ead9e4}.tag-auto-2{background:#dce1ee}.tag-auto-3{background:#e9dfc9}.tag-auto-4{background:#dce6e5}.tag-editor{min-width:0;padding:8px 9px;overflow:auto;outline:0;font-size:12px;line-height:1.5;white-space:pre-wrap}.tag-editor:empty:before{content:attr(data-placeholder);color:#9a9a96}.composer-box{grid-template-columns:minmax(130px,1fr) 34px auto 58px}.composer-box .tag-editor{grid-column:1}.preset-tags{display:flex;gap:5px;overflow-x:auto;padding:4px 0 0}.preset-tags .tag{flex:0 0 auto;border:0;cursor:pointer}.composer{flex-basis:94px;display:flex;align-items:flex-start}.composer-box{position:relative;flex:1;height:56px}.composer .preset-tags{position:absolute;left:46px;right:0;bottom:-28px}.composer-box .score-check{border-left:1px solid #ece9e3}.comment-main>p{line-height:1.65}.meta b,.filters{display:none}.admin-title>span{display:flex;gap:8px}.admin-title>span button{height:38px;padding:0 12px;border-radius:4px;background:var(--blue);color:#fff}.user-row{grid-template-columns:minmax(220px,1fr) 140px 120px}.user-row img{width:30px;height:30px;border-radius:50%;object-fit:cover;margin-right:8px}.user-row label{display:flex;gap:8px;align-items:center}.score-head .clear-mark{color:#a03737}.profile-dialog select{height:38px;border:1px solid #cbc7bf;border-radius:4px;background:#fff}.backdrop{border:0}.catalog-loading{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;background:#f7f5f0;color:#41484c;text-align:center}.catalog-loading strong{font-size:18px;font-weight:600}.catalog-loading small{color:#7b8184;font-size:13px}.loading-spinner{width:30px;height:30px;margin-bottom:4px;border:3px solid #d8d4cc;border-top-color:var(--blue);border-radius:50%;animation:catalog-spin .8s linear infinite}.catalog-loading button{margin-top:6px;padding:9px 16px;border-radius:5px;background:var(--blue);color:#fff}@keyframes catalog-spin{to{transform:rotate(360deg)}}@media(max-width:760px){.join-gate{padding:16px 10px;align-items:start}.join-card{padding:20px 16px}.join-card h1{font-size:20px}.role-grid{grid-template-columns:repeat(3,1fr)}.composer{flex-basis:125px;min-height:125px}.composer-box{min-height:65px;grid-template-columns:minmax(0,1fr) 36px 58px}.tag-editor{grid-column:1;grid-row:1}.image-upload{grid-column:2;grid-row:1}.submit{grid-column:3;grid-row:1}.score-check{grid-column:1/3!important;grid-row:2!important;height:30px}.composer .preset-tags{left:0;bottom:-31px}.comment-area{padding-bottom:0}.user-row{grid-template-columns:1fr;gap:5px;padding:10px}.admin-title>span{flex-direction:column}.admin-row{min-width:580px}.admin-table{overflow:auto}}.admin>main{grid-column:1/-1;min-width:0;width:100%;padding:34px clamp(20px,4vw,64px)}.admin-title>div{min-width:0;flex:1}.admin-title>span{display:flex;gap:8px;flex-wrap:wrap}.admin-title>span button{white-space:nowrap}@media(max-width:760px){.admin>main{padding:20px 14px}.admin-title{align-items:flex-start}.admin-title h1{font-size:20px;white-space:nowrap}.admin-title p{line-height:1.45}.admin-title>span{flex:0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:5px}.admin-title>span button{height:32px;padding:0 8px;font-size:11px}.admin-concert-select{width:100%;min-width:0}.admin-row{min-width:520px}.admin-table{width:100%}}.score-stroke{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.score-stroke polyline{fill:none;stroke:#d83434;stroke-width:.008;stroke-linecap:round;stroke-linejoin:round}.composer .score-check{display:none}.score-head .attach-score-mark{border-color:#2c805d;background:#eaf6ee;color:#246b4d;white-space:nowrap}.admin-v2>main{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,2fr);gap:24px;align-items:start}.admin-v2 .admin-lists,.admin-v2 .admin-tracks{padding:20px;border:1px solid #ddd8d0;border-radius:8px;background:#fffdfa}.admin-v2 .admin-title{display:flex;gap:14px;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.admin-v2 .admin-title h1{margin:0;font:600 20px "Noto Serif SC",serif}.admin-v2 .admin-title p{margin:5px 0 0;color:#777;font-size:12px;line-height:1.5}.admin-v2 .admin-title>button{flex:none;height:34px;padding:0 11px;border-radius:4px;background:var(--blue);color:#fff;font-size:12px;white-space:nowrap}.list-cards{display:grid;gap:8px}.list-cards article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;padding:12px;border:1px solid #e0dcd5;border-radius:6px;cursor:pointer}.list-cards article.selected{border-color:#28618a;background:#f0f6fa}.list-cards strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-cards small{color:#85817b;font-size:11px}.list-cards span{grid-column:1/-1;display:flex;gap:10px}.list-cards button,.admin-v2 .admin-row button{padding:0;color:#687176;font-size:11px}.list-cards .danger,.admin-v2 .danger{color:#a24949}.admin-v2 .admin-table{overflow:auto;border:1px solid #e2ded7;border-radius:5px}.admin-v2 .admin-row{min-width:600px;display:grid;grid-template-columns:minmax(180px,1fr) 65px 65px 65px 90px;gap:8px;align-items:center;padding:11px 13px;border-bottom:1px solid #ebe7e0;font-size:12px}.admin-v2 .admin-row:last-child{border-bottom:0}.admin-v2 .admin-row.head{background:#f5f3ee;color:#777;font-size:11px}.admin-v2 .admin-row>span:first-child{display:grid;gap:3px}.admin-v2 .admin-row small{color:#888;font-size:10px}.admin-v2 .admin-row>span:last-child{display:flex;gap:9px}.admin-v2 button:disabled{opacity:.4;cursor:not-allowed}.composer{flex-basis:100px;min-height:100px}.composer-box{overflow:visible}.composer .preset-tags{bottom:-29px;background:#fbfaf7}@media(max-width:760px){.admin-v2>main{display:block;padding:13px 10px}.admin-v2 .admin-lists,.admin-v2 .admin-tracks{padding:14px;margin-bottom:12px}.admin-v2 .admin-title h1{font-size:18px}.admin-v2 .admin-title p{font-size:11px}.admin-v2 .admin-table{margin-inline:-2px}.admin-v2 .admin-row{min-width:560px;padding:10px}.composer{flex-basis:104px;min-height:104px}.composer .preset-tags{left:0;right:0;bottom:-31px;padding-left:0}}.composer{position:relative;flex-basis:108px;min-height:108px;padding-bottom:30px}.composer .preset-tags{position:absolute;left:55px;right:14px;bottom:4px;height:24px;align-items:center;z-index:4;background:#fbfaf7}.preset-tags .tag{padding:3px 7px;font-size:11px}.empty{-webkit-user-select:none;user-select:none;cursor:default}.score-link{display:none}.score-inline{padding:0;border:0;color:#1b5d94;text-decoration:underline;font:inherit;cursor:pointer}@media(max-width:760px){.composer{flex-basis:116px;min-height:116px;padding-bottom:34px}.composer .preset-tags{left:8px;right:8px;bottom:4px;height:25px}.preset-tags .tag{padding:3px 6px;font-size:10px}}.playlist-title{font-size:0}.playlist-title>svg,.playlist-title>span{display:none}.playlist-title>button{font-size:12px}.composer{min-height:132px;flex-basis:132px;padding-top:35px;padding-bottom:6px}.composer-box{height:62px}.composer .preset-tags{top:5px;bottom:auto;left:55px;right:14px;height:27px;background:transparent}.preset-tags .tag{padding:4px 8px;font-size:13px;font-weight:600}.tag-editor{font-size:14px;line-height:1.6}.submit{font-size:13px}.comments article{border:1px solid #ccd4d9;border-left:4px solid var(--c);border-radius:5px;animation:comment-enter .3s cubic-bezier(.16,1,.3,1) both;will-change:transform,opacity}.comments article.important{border-color:#b9acc5;border-left:4px solid #746b82}@keyframes comment-enter{0%{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.comments article{animation:comment-fade .24s ease both}.admin-v2 .admin-users{grid-column:1/-1;padding:20px;border:1px solid #ddd8d0;border-radius:8px;background:#fffdfa}.admin-user-row{display:grid;grid-template-columns:34px minmax(120px,1fr) minmax(130px,1fr) auto auto;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #ebe7e0;font-size:12px}.admin-user-row img{width:30px;height:30px;border-radius:50%;object-fit:cover}.admin-user-row small{color:#777}.admin-user-row button{height:28px;padding:0 9px;border:1px solid #d7d2c9;border-radius:4px;background:#fff;font-size:11px}.admin-user-row .danger{color:#a24949}@keyframes comment-fade{0%{opacity:0}to{opacity:1}}@media(max-width:760px){.composer{min-height:142px;flex-basis:142px;padding-top:37px;padding-bottom:7px}.composer .preset-tags{top:5px;left:8px;right:8px;height:28px}.preset-tags .tag{padding:4px 7px;font-size:12px}.tag-editor{font-size:14px}}.pdf-canvas-host{position:static;width:100%;min-height:0}.pdf-sheet{position:relative;max-width:100%;margin:auto}.pdf-sheet canvas{display:block;width:100%!important;height:100%!important;margin:0}.pdf-sheet.marking{cursor:crosshair;touch-action:none}.pdf-sheet .marking-tip{position:absolute;left:50%;bottom:12px;margin:0;transform:translate(-50%)}.reply-form textarea{min-width:0;flex:1;min-height:42px;padding:6px 7px;resize:vertical;border:1px solid #cfcac2;background:#fff;font:13px/1.4 system-ui}.profile-dialog fieldset{margin-top:14px;padding:0;border:0}.profile-dialog fieldset legend{margin-bottom:8px;color:#666;font-size:12px}.read-only-toggle{display:flex;align-items:center;gap:5px;font:12px system-ui;color:#655f57}.read-only-toggle input{accent-color:#9a6b32}.admin-v2 .list-cards article{position:relative}.admin-v2 .list-cards article>.read-only-toggle{position:absolute;left:12px;bottom:11px}.admin-v2 .list-cards article>small{padding-bottom:22px}.reply{white-space:pre-wrap}@font-face{font-family:LXGW WenKai;src:url(/assets/LXGWWenKai.ttf) format("truetype");font-display:swap}:root,button,input,select,textarea,.admin{font-family:LXGW WenKai,PingFang SC,system-ui,sans-serif}.brand,.track-heading h1{font-size:20px!important;font-weight:600!important;letter-spacing:.04em}.empty{display:none!important}.no-score .score-open{opacity:1;color:#777;font-size:0}.no-score .score-open:after{content:"该曲目无乐谱";font-size:13px}.no-score .score-page{display:grid;place-items:center}.no-score .score-page:before{content:"该曲目无乐谱";color:#8a8882;font-size:17px}.no-score .score-head .mark,.no-score .score-nav{display:none}.comment-area{position:relative}.read-only .comment-area{background:#f0f0ee}.read-only .comment-area:before{content:"当前曲目为只读，只能查看已有评论";display:block;padding:9px 16px;border-bottom:1px solid #d5d4d0;background:#e5e5e2;color:#6f716f;font-size:14px}.read-only .composer{pointer-events:none;filter:grayscale(1);opacity:.48}.read-only .reply-launch,.read-only .reply-form{display:none!important}.composer{min-height:148px;flex-basis:148px;padding-top:48px}.composer .preset-tags{top:8px;bottom:auto;height:32px}.preset-tags .tag{padding:6px 10px;font-size:14px}.tag-editor{padding:10px 12px;font-size:16px;line-height:1.65}.comments article{margin-bottom:7px}.comment-main>p{font-size:16px}.meta,.meta strong{font-size:15px}.reply{font-size:14px}.admin-v2{display:block}.admin-v2>header{height:60px}.admin-v2>main{display:grid;grid-template-columns:minmax(270px,.8fr) minmax(520px,1.6fr);gap:22px;padding:26px}.admin-v2 section{padding:20px;border:1px solid #ddd8d0;border-radius:8px;background:#fffdfa}.admin-v2 .admin-users{grid-column:1/-1}.admin-v2 .admin-title{margin-bottom:16px}.list-cards{display:grid;gap:9px}.list-cards article{position:relative;padding:14px;border:1px solid #ded9d1;border-radius:6px;cursor:pointer}.list-cards article.selected{border-color:#4c7897;background:#f0f6fa}.list-cards article strong,.list-cards article small{display:block}.list-cards article small{margin-top:5px;color:#777}.card-options,.track-options{display:flex;align-items:center;gap:15px;margin-top:13px}.admin-check{display:flex;align-items:center;gap:5px;font-size:14px;cursor:pointer}.admin-check input{width:17px;height:17px;accent-color:#215d88}.text-danger{color:#b12e34!important}.track-admin-list{display:grid;gap:8px}.track-admin-list article{display:grid;grid-template-columns:58px minmax(190px,1fr) auto;align-items:center;gap:12px;padding:11px;border:1px solid #e1ddd6;border-radius:6px}.track-order{display:flex;gap:4px}.track-order button{width:26px;height:30px;border:1px solid #d8d3ca;border-radius:4px}.track-info input{width:100%;padding:6px 8px;border:1px solid transparent;border-radius:4px;background:transparent;font-size:16px;font-weight:600}.track-info input:hover,.track-info input:focus{border-color:#bbb6ad;background:#fff}.track-info small{display:block;margin:3px 8px;color:#777}.track-options{margin:0}.batch-dialog{position:relative;width:min(1180px,calc(100vw - 36px));max-height:88vh;padding:22px;overflow:auto;border-radius:9px;background:#fbfaf7;box-shadow:0 24px 80px #1115}.batch-dialog h2{margin:0}.batch-dialog p{margin:5px 0;color:#777}.audio-picker,.pdf-picker{position:relative;display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid #b8c7d1;border-radius:5px;background:#edf5fa;color:#174f76;cursor:pointer}.audio-picker{margin:18px 0}.audio-picker input,.pdf-picker input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.upload-list{overflow:auto;border:1px solid #ddd8d0}.upload-row{min-width:1030px;display:grid;grid-template-columns:1.2fr 1fr 1.3fr .55fr .55fr 1.25fr .4fr;align-items:center;gap:12px;min-height:68px;padding:9px 12px;border-bottom:1px solid #ebe7df;font-size:13px}.upload-row.head{min-height:40px;background:#f2f0eb;color:#747672}.upload-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.upload-row input{max-width:100%;padding:7px;border:1px solid #ccc7be;border-radius:4px}.upload-row progress{width:100%;height:8px}.upload-row small{display:block;color:#777}.upload-empty{padding:38px;text-align:center;color:#888}.admin-user-row{grid-template-columns:36px minmax(120px,1fr) minmax(150px,1fr) auto auto}@media(max-width:760px){.admin-v2>main{display:block;padding:12px}.admin-v2 section{margin-bottom:12px}.track-admin-list article{grid-template-columns:50px 1fr}.track-options{grid-column:1/-1}.batch-dialog{width:calc(100vw - 18px)}.composer{min-height:158px;flex-basis:158px;padding-top:50px}.composer .preset-tags{height:35px}.preset-tags .tag{font-size:13px}.tag-editor{font-size:16px}}@font-face{font-family:LXGW Heart;src:url(/assets/LXGWHeartSerif.ttf) format("truetype");font-display:swap}.brand,.track-heading h1,.playlist-title,.track strong,.score-head strong,.empty-home h1,.admin h1,.join-card h1{font-family:LXGW Heart,"Noto Serif SC",serif}.avatar-strip{height:42px;background:none;border:0;overflow:visible}.timeline-avatar{z-index:1;top:8px!important;width:28px;height:28px;transform:translate(-50%);border:2px solid #fbfaf7;box-shadow:0 1px 4px #0003}.timeline-avatar~.timeline-avatar{z-index:2}.comments{font-size:14px}.comments article{padding:10px 12px;min-height:62px}.comments article>img{width:38px;height:38px}.meta,.meta strong{font-size:14px}.comment-main>p{font-size:15px;line-height:1.55}.actions button,.reply,.reply-launch{font-size:12px}.actions button svg{width:14px}.reply-launch{padding:0;color:#466779}.reply-list{margin-top:4px}.reply{margin-top:4px;font-size:13px}.reply-form input{font-size:13px;height:30px}.score,.score-page{-webkit-user-select:none;user-select:none}.score canvas{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.score-page{cursor:default}.comments article,.comments article.important{animation:none}@media(max-width:760px){.topbar{min-height:56px;height:auto;padding-block:6px}.topbar .brand{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.25;font-size:14px!important}.track-heading{grid-template-columns:minmax(0,1fr) auto;row-gap:5px}.track-heading h1{grid-column:1/-1;overflow:visible;text-overflow:clip;white-space:normal;line-height:1.25}.track-heading .readout{grid-column:1;grid-row:2;justify-self:start}.track-heading .score-open{grid-column:2;grid-row:2}}.admin-v2>header strong,.admin-v2 .admin-title h1{font-family:LXGW Heart,"Noto Serif SC",serif!important;font-weight:600!important}.admin-v2>header{display:flex;align-items:center;gap:18px}.storage-usage{padding:5px 9px;border:1px solid #d8d3ca;border-radius:999px;color:#666;font-size:13px;white-space:nowrap}.list-cards,.track-admin-list{max-height:calc(100vh - 205px);overflow-y:auto;overscroll-behavior:contain;padding-right:5px;scrollbar-gutter:stable}.track-admin-list article{grid-template-columns:22px 58px minmax(230px,1fr) auto}.track-select{width:17px;height:17px;accent-color:#215d88}.track-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track-bulk{display:flex;align-items:center;justify-content:space-between;margin:-4px 0 10px;padding:8px 10px;border-radius:5px;background:#f4f2ed;font-size:13px}.track-bulk label{display:flex;align-items:center;gap:6px}.track-bulk input{width:16px;height:16px}.track-bulk button{font-size:13px}.pdf-picker.compact{padding:5px 8px;background:#fff;font-size:12px}.batch-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.batch-actions button{min-width:86px;height:38px;border:1px solid #cbc6bd;border-radius:5px;background:#fff}.batch-actions .primary{border-color:var(--blue);background:var(--blue);color:#fff}.controls{display:flex;align-items:center;gap:7px}.controls>button{width:36px!important;height:36px!important;min-width:36px;padding:0!important;display:grid;place-items:center;border:1px solid #d8d5cf!important;border-radius:7px!important;background:#fff!important;color:#27343b!important;font-size:11px!important}.controls>button svg{width:18px;height:18px}.controls>button.play{background:#175a87!important;color:#fff!important;border-color:#175a87!important}.controls>i{height:25px;margin:0 2px}.ab-loop{display:flex;margin-left:auto;border:1px solid #cfcac1;border-radius:7px;overflow:hidden;background:#fff}.ab-loop button{width:35px;height:34px;border-left:1px solid #e0ddd7;background:#fff;color:#46535a;font-size:12px}.ab-loop button:first-child{border-left:0}.ab-loop button.active{background:#315f79;color:#fff}@media(max-width:760px){.admin-v2>header{gap:8px}.admin-v2>header strong{font-size:12px}.storage-usage{font-size:10px;padding:4px 6px}.list-cards,.track-admin-list{max-height:56vh}.track-admin-list article{grid-template-columns:22px 50px minmax(180px,1fr)}.track-options{grid-column:1/-1}.controls{gap:4px;overflow-x:auto}.controls>button{width:33px!important;height:33px!important;min-width:33px}.ab-loop{flex:none}}.wave .loop-marker{position:absolute;z-index:8;top:0;bottom:0;width:2px;margin-left:-1px;background:#bd4d4d;pointer-events:none}.wave .loop-marker:before{content:attr(data-label);position:absolute;left:50%;top:-19px;min-width:18px;height:18px;padding:0 3px;display:grid;place-items:center;transform:translate(-50%);border-radius:4px 4px 0 0;background:#bd4d4d;color:#fff;font:700 11px/1 system-ui}.wave .loop-b,.wave .loop-b:before{background:#315f79}@media(max-width:760px){html,body,#root{width:100%;height:100%;min-height:0;overflow:hidden}.app,.app.pdf-open{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.topbar{position:relative;top:auto;flex:0 0 54px;height:54px;min-width:0;padding:0 10px;gap:9px}.playlist-trigger{flex:0 0 34px}.topbar .brand{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px!important;letter-spacing:.015em}.profile-button{flex:0 0 34px}.workspace{min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.player-section{flex:0 0 auto;padding:10px 10px 0}.track-heading{min-height:34px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center}.track-heading h1{grid-column:1;min-width:0;font-size:18px!important}.track-heading .readout{grid-column:2;font-size:13px}.track-heading .score-open{grid-column:3;justify-self:end;width:32px;height:30px;padding:0;display:grid;place-items:center;font-size:0}.track-heading .score-open:after{display:none}.track-heading .score-open svg{width:16px}.controls{height:43px;gap:3px;justify-content:flex-start;overflow:visible}.controls>button{width:30px!important;height:32px!important;min-width:30px!important;border-radius:6px!important;font-size:9px!important}.controls>button svg{width:15px;height:15px}.controls>i{display:none}.ab-loop{margin-left:auto;height:32px}.ab-loop button{width:28px;height:30px;font-size:11px}.wave,.wave canvas{height:34px}.wave{margin-top:4px}.wave .loop-marker:before{top:-17px;height:16px;font-size:10px}.avatar-strip{flex:0 0 38px;height:38px;margin:0 10px;overflow:hidden}.timeline-avatar{top:5px!important;width:26px;height:26px}.comment-area{min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden;padding:0}.comments{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:8px 9px 10px}.composer{position:relative;bottom:auto;flex:0 0 auto;min-height:139px;padding:46px 9px max(8px,env(safe-area-inset-bottom));background:#fbfaf7}.composer .preset-tags{top:8px;left:9px;right:9px;height:31px;gap:7px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.composer .preset-tags::-webkit-scrollbar{display:none}.preset-tags .tag{padding:6px 9px;font-size:13px;white-space:nowrap}.composer-box{width:100%;min-height:82px;height:82px;grid-template-columns:minmax(0,1fr) 38px 64px;grid-template-rows:1fr;border-radius:8px;overflow:hidden}.composer-box .tag-editor{grid-column:1;grid-row:1;padding:11px 10px;font-size:15px;line-height:1.5;overflow-y:auto}.composer-box .image-upload{grid-column:2;grid-row:1}.composer-box .submit{grid-column:3;grid-row:1;margin:7px;font-size:14px}.composer-box .score-check{display:none}.pdf-open .score{inset:max(8px,env(safe-area-inset-top)) 7px max(8px,env(safe-area-inset-bottom));max-height:calc(100dvh - 16px)}.score-page{height:calc(100dvh - 106px)}}@media(max-width:380px){.topbar .brand{font-size:14px!important}.player-section{padding-inline:7px}.controls{gap:2px}.controls>button{width:28px!important;min-width:28px!important}.ab-loop button{width:26px}.track-heading h1{font-size:17px!important}.composer{padding-inline:7px}.preset-tags .tag{font-size:12px}}@media(max-height:500px)and (max-width:900px){html,body,#root{height:100%;min-height:0;overflow:hidden}.app,.app.pdf-open{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.topbar{position:relative;flex:0 0 48px;height:48px}.workspace{min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.player-section{flex:0 0 auto;padding:6px 14px 0}.track-heading{height:28px}.controls{height:35px}.wave,.wave canvas{height:28px}.avatar-strip{flex:0 0 31px;height:31px;margin-inline:14px}.timeline-avatar{top:3px!important;width:24px;height:24px}.comment-area{min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.comments{min-height:0;flex:1;overflow-y:auto;padding:5px 10px}.composer{position:relative;bottom:auto;flex:0 0 92px;min-height:92px;padding:36px 10px 5px}.composer .preset-tags{top:4px;left:10px;right:10px;height:27px}.preset-tags .tag{padding:4px 8px;font-size:12px}.composer-box{height:51px;min-height:51px;grid-template-columns:minmax(0,1fr) 36px 60px}.composer-box .tag-editor{grid-column:1;padding:7px 9px;font-size:14px}.composer-box .image-upload{grid-column:2}.composer-box .submit{grid-column:3;margin:5px}.score{display:none;flex:none}.pdf-open .score{display:block;position:fixed;z-index:40;top:5px;right:5px;bottom:5px;left:5px}.pdf-open .score-page{height:calc(100dvh - 102px)}}.admin-v2{height:100dvh;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-v2>main{min-height:max-content}.admin-user-row{grid-template-columns:36px minmax(120px,1fr) minmax(150px,1fr) auto auto auto}.wave canvas{transform:scaleY(.68);transform-origin:center center}@media(max-width:760px){.track-heading .score-open svg{display:none}.track-heading .score-open:after{content:"谱";display:block!important;font-size:15px;color:#315f79}.no-score .track-heading .score-open:after{content:"无谱";font-size:12px;color:#888}.admin-v2{height:100dvh;overflow-y:auto}.admin-user-row{grid-template-columns:34px minmax(0,1fr);gap:8px}.admin-user-row small{grid-column:2}.admin-user-row button{grid-row:auto}.admin-user-row button:first-of-type{grid-column:1/2}.admin-user-row button:last-child{grid-column:auto}}.media-loading{position:absolute;z-index:7;left:50%;top:50%;padding:4px 9px;transform:translate(-50%,-50%);border-radius:999px;background:#fbfaf7e8;color:#5c6970;font:12px/1.4 system-ui;box-shadow:0 1px 5px #0002;pointer-events:none}.pdf-loading{position:absolute;z-index:8;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#fbf8ef;color:#667078;font-size:14px}.pdf-canvas-host{position:relative;min-height:100%}@media(max-width:760px){.topbar{flex:0 0 54px!important;height:54px!important;min-height:54px!important;padding-block:0!important}.topbar .brand{overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important;line-height:1.2;font-size:clamp(10px,3.15vw,13px)!important;letter-spacing:0!important}.track-heading{height:34px!important;min-height:34px!important;display:grid!important;grid-template-columns:minmax(0,1fr) auto 32px!important;gap:5px!important;align-items:center!important}.track-heading h1{grid-column:1!important;grid-row:1!important;min-width:0;overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important;font-size:clamp(10px,3.6vw,17px)!important;letter-spacing:0!important;line-height:1.15!important}.track-heading .readout{grid-column:2!important;grid-row:1!important;margin:0!important;align-self:center;white-space:nowrap;font-size:12px!important}.track-heading .score-open{grid-column:3!important;grid-row:1!important;width:32px;height:30px;align-self:center}.player-section{position:relative}}.track-admin-list article{grid-template-columns:22px 108px minmax(230px,1fr) auto}.track-order{display:flex;align-items:center;gap:5px}.track-order button{width:auto;min-width:30px;padding:0 7px;white-space:nowrap}.track-order .drag-handle{padding:0;width:31px;font-size:20px;cursor:grab}.track-order .drag-handle:active{cursor:grabbing}.track-admin-list article.dragging{opacity:.48;border-style:dashed}.track-admin-list article:has(.drag-handle:hover){border-color:#aabecb}@media(max-width:760px){.track-admin-list article{grid-template-columns:22px 108px minmax(180px,1fr)}.track-options{grid-column:1/-1}}.readonly-field input{background:#ececea!important;color:#777!important;border-color:#d4d2cd!important;cursor:not-allowed}.avatar-editor{display:flex!important;flex-direction:row!important;align-items:center;flex-wrap:wrap}.avatar-editor>button{padding:7px 10px;border:1px solid #d8d4cd;border-radius:4px;background:#f5f3ef;color:#59646a}.list-title-row{display:grid;grid-template-columns:31px minmax(0,1fr) 31px;align-items:center;gap:6px}.list-title-row input{min-width:0;width:100%;padding:5px 7px;border:1px solid transparent;border-radius:4px;background:transparent;font-size:15px;font-weight:600}.list-title-row input:hover,.list-title-row input:focus{border-color:#bcb7ae;background:#fff}.list-title-row button{width:31px;height:31px;border:1px solid #d8d3ca;border-radius:4px}.list-title-row .drag-handle{font-size:20px;cursor:grab}.list-title-row .to-top{font-size:17px}.list-cards article.dragging{opacity:.48;border-style:dashed}
