:root{--bg:#eef0f3;--desk:#d9dce2;--panel:#fff;--panel-2:#f6f7f9;--line:#d6d9df;--line-strong:#b9bec7;--text:#1c2027;--text-2:#5b6370;--accent:#5b4dd6;--accent-2:#ece9ff;--accent-text:#fff;--ai:#2f6fec;--sel:#1d6bf3;--good:#16794a;--bad:#b42318;--warn:#9a5b00;--voice-1:#1d6bf3;--voice-2:#15803d;--voice-3:#c2410c;--voice-4:#a21caf;--shadow:0 1px 2px #1018281f, 0 6px 20px #1018281a;--radius:6px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#17191d;--desk:#2a2d33;--panel:#1f2227;--panel-2:#262a30;--line:#353a42;--line-strong:#4a515b;--text:#e7e9ee;--text-2:#a3aab5;--accent:#8b80ff;--accent-2:#2e2a52;--accent-text:#111;--good:#4ade80;--bad:#f87171;--warn:#fbbf24;--shadow:0 1px 2px #00000080, 0 8px 24px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#17191d;--desk:#2a2d33;--panel:#1f2227;--panel-2:#262a30;--line:#353a42;--line-strong:#4a515b;--text:#e7e9ee;--text-2:#a3aab5;--accent:#8b80ff;--accent-2:#2e2a52;--accent-text:#111;--good:#4ade80;--bad:#f87171;--warn:#fbbf24;--shadow:0 1px 2px #00000080, 0 8px 24px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.45 var(--font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:4px 10px;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:var(--panel-2);border-color:var(--line-strong)}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}button.danger{color:var(--bad);border-color:var(--bad)}button.small{padding:2px 8px;font-size:12px}button.link{color:var(--accent);background:0 0;border:none;padding:0 4px}button.wide{width:100%;padding:8px 10px}input,select,textarea{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);min-width:0;padding:4px 7px}input[type=number]{width:72px}input[type=checkbox]{accent-color:var(--accent)}kbd{font:11px var(--mono);border:1px solid var(--line-strong);color:var(--text-2);border-bottom-width:2px;border-radius:4px;margin-left:4px;padding:0 4px}.score-library-link{border:1px solid var(--line);border-radius:var(--radius);min-height:36px;color:var(--accent);white-space:nowrap;touch-action:manipulation;align-items:center;padding:4px 12px;font-weight:600;text-decoration:none;display:inline-flex}.app{grid-template-rows:auto auto 1fr auto;grid-template-columns:minmax(0,1fr);height:100%;display:grid}.workspace{min-width:0;min-height:0;display:flex}.grow{flex:1}.topbar{background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:14px;min-width:0;padding:6px 16px;display:flex}.brand{align-items:center;gap:8px;min-width:160px;display:flex}.brand .logo{background:var(--accent);width:26px;height:26px;color:var(--accent-text);border-radius:7px;flex-shrink:0;place-items:center;font-size:16px;display:grid}.brand strong{letter-spacing:.2px;white-space:nowrap;flex-shrink:0;font-size:14px}.doc-title{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.doc-title:before{content:"— "}.menu,.tools{align-items:center;gap:4px;display:flex}.menu button,.tools button{background:0 0;border-color:#0000}.menu button:hover:not(:disabled),.tools button:hover:not(:disabled){background:var(--panel-2);border-color:var(--line)}.tools{margin-left:auto}.tools .sep{background:var(--line);width:1px;height:20px;margin:0 4px}.tools .play{border-color:var(--line);min-width:76px}.tools .play.on{background:var(--accent-2);color:var(--accent);border-color:var(--accent)}.tools .zoom{text-align:center;width:42px;color:var(--text-2);font-variant-numeric:tabular-nums}.toggle{cursor:pointer;white-space:nowrap;align-items:center;gap:4px;padding:0 6px;display:flex}.dropdown{position:relative}.dropdown-menu{z-index:30;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow);flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.dropdown-menu button{text-align:left}.dropdown-title{color:var(--text-2);padding:4px 8px 2px;font-size:12px}.dropdown-empty{color:var(--text-2);padding:6px 8px}.dropdown-menu button small{color:var(--text-2);text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}.split{display:flex;position:relative}.menu .split>button:first-child{padding-right:4px}.menu .split .split-arrow{min-width:0;padding:0 4px}.tools button.on{background:var(--accent-2);border-color:var(--accent);color:var(--accent)}.dirty-dot{background:var(--warn);border-radius:50%;flex:none;width:7px;height:7px}@media (max-width:1360px){.doc-title{display:none}}.palette{background:var(--panel-2);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:5px 16px;display:flex}.palette .group{border-left:1px solid var(--line);align-items:center;gap:2px;padding-left:8px;display:flex}.palette .icon{background:0 0;border-color:#0000;place-items:center;width:32px;height:30px;padding:0;display:grid}.palette .icon.text{font-size:15px;font-weight:600}.palette .icon.on{background:var(--accent-2);border-color:var(--accent);color:var(--accent)}.palette .input-toggle{font-weight:600}.palette .input-toggle.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.palette .input-toggle.on kbd{color:inherit;border-color:currentColor}.palette .voice{background:0 0;border-color:#0000;width:26px;padding:2px 0;font-weight:600}.palette .voice.v1{color:var(--voice-1)}.palette .voice.v2{color:var(--voice-2)}.palette .voice.v3{color:var(--voice-3)}.palette .voice.v4{color:var(--voice-4)}.palette .voice.on{color:#fff}.palette .voice.v1.on{background:var(--voice-1)}.palette .voice.v2.on{background:var(--voice-2)}.palette .voice.v3.on{background:var(--voice-3)}.palette .voice.v4.on{background:var(--voice-4)}.glyph-icon{display:block;overflow:visible}.keypad{z-index:40;background:var(--panel);border:1px solid var(--line-strong);width:228px;box-shadow:var(--shadow);-webkit-user-select:none;user-select:none;touch-action:none;border-radius:10px;position:fixed}.keypad-head{border-bottom:1px solid var(--line);cursor:grab;align-items:center;gap:2px;padding:4px 4px 4px 10px;display:flex}.keypad-head:active{cursor:grabbing}.keypad.collapsed .keypad-head{border-bottom:none}.keypad-title{font-size:13px;font-weight:600}.keypad-head button{width:26px;height:24px;color:var(--text-2);background:0 0;border-color:#0000;padding:0}.keypad-head button:hover{background:var(--panel-2);color:var(--text)}.keypad-tabs{border-bottom:1px solid var(--line);grid-template-columns:repeat(6,1fr);gap:2px;padding:4px;display:grid}.keypad-tabs button{min-width:0;color:var(--text-2);white-space:nowrap;background:0 0;border-color:#0000;padding:3px 0;font-size:12px;overflow:hidden}.keypad-tabs button.on{background:var(--accent-2);color:var(--accent);font-weight:600}.keypad-grid{grid-template-columns:repeat(4,1fr);gap:4px;padding:6px;display:grid}.keypad .key{background:var(--panel-2);border:1px solid var(--line);min-width:0;height:44px;color:var(--text);border-radius:7px;place-items:center;padding:0;display:grid;position:relative}.keypad .key:hover{border-color:var(--line-strong);background:var(--panel)}.keypad .key.on{background:var(--accent-2);border-color:var(--accent);color:var(--accent)}.keypad .key.wide{grid-column:span 4;height:34px}.keypad .key-text{align-items:center;gap:6px;font-size:14px;font-weight:600;display:flex}.keypad .key-caption{color:var(--text-2);font-size:10px;position:absolute;bottom:2px;right:4px}.keypad .input-key.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.keypad .voice.v1 .key-text{color:var(--voice-1)}.keypad .voice.v2 .key-text{color:var(--voice-2)}.keypad .voice.v3 .key-text{color:var(--voice-3)}.keypad .voice.v4 .key-text{color:var(--voice-4)}.keypad .voice.on .key-text{color:var(--accent)}.keypad-hint{color:var(--text-2);margin:0;padding:0 10px 8px;font-size:12px;line-height:1.4}.keypad.docked{border-radius:12px 12px 0 0;width:auto;bottom:0;left:0;right:0}.keypad.docked .keypad-head{cursor:default}.keypad.docked .keypad-grid{grid-template-columns:repeat(8,1fr)}.keypad.docked .key.wide{grid-column:span 8}.drop-overlay{z-index:60;border:3px dashed var(--accent);pointer-events:none;background:#5b4dd61f;place-items:center;display:grid;position:fixed;inset:0}.drop-overlay span{background:var(--panel);box-shadow:var(--shadow);border-radius:8px;padding:10px 18px;font-weight:600}.modal.confirm{width:min(420px,100vw - 32px)}.modal.confirm p{margin:0 0 16px;line-height:1.5}.score-scroll{background:var(--desk);flex:1;min-width:0;overflow:auto}.pages{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:28px;min-width:min-content;padding:28px;display:flex}.pages.mode-continuous{flex-wrap:nowrap;justify-content:flex-start}.score-scroll.seamless{background:#fff}.pages.mode-seamless{flex-wrap:nowrap;justify-content:flex-start;gap:0;padding:16px}.page{color:#111;box-shadow:var(--shadow);cursor:default;-webkit-user-select:none;user-select:none;touch-action:none;background:#fff;flex:none;position:relative}.input-mode .page{cursor:crosshair}.mode-seamless .page{box-shadow:none;touch-action:pan-x pan-y}.page-svg,.page-svg svg,.overlay{width:100%;height:100%;position:absolute;inset:0}.overlay{pointer-events:none;overflow:visible}.page-svg [data-ref]{cursor:pointer}.page-svg .ghost{color:var(--ai);opacity:.8}.page-svg .approx{color:#c2410c}.page-svg .sel,.page-svg .sel .ghost,.page-svg .ghost .sel{color:var(--sel);opacity:1}.page-svg .chord.sel .notehead,.page-svg .sel.notehead{filter:drop-shadow(0 0 .15px var(--sel))}.range-sel{fill:#1d6bf31f;stroke:#1d6bf3b3;stroke-width:.15px}.input-cursor{fill:#1d6bf32e;stroke:var(--voice-1);stroke-width:.14px}.input-cursor.voice-2{fill:#15803d2e;stroke:var(--voice-2)}.input-cursor.voice-3{fill:#c2410c2e;stroke:var(--voice-3)}.input-cursor.voice-4{fill:#a21caf2e;stroke:var(--voice-4)}.shadow-note ellipse{fill:#1d6bf38c}.shadow-ledger{stroke:#1d6bf38c;stroke-width:.16px}.playhead{stroke:#e11d48;stroke-width:.25px}.side{background:var(--panel);border-left:1px solid var(--line);flex:none;min-height:0;display:flex}.side .tabs{border-left:1px solid var(--line);background:var(--panel-2);flex-direction:column;order:2;gap:2px;padding:6px 4px;display:flex}.side .tabs button{width:56px;color:var(--text-2);white-space:normal;background:0 0;border-color:#0000;flex-direction:column;align-items:center;gap:2px;padding:7px 2px;font-size:11px;line-height:1.2;display:flex}.side .tabs button.on{background:var(--panel);border-color:var(--line);color:var(--accent);font-weight:600}.side .tab-icon{font-size:16px}.side .panel{width:330px;overflow-y:auto}.panel-body{flex-direction:column;gap:10px;padding:14px 14px 24px;display:flex}.panel-body h3{margin:0;font-size:15px}.panel-body h4{text-transform:uppercase;letter-spacing:.4px;color:var(--text-2);margin:6px 0 0;font-size:12px}.hint{color:var(--text-2);margin:0;font-size:12px}.field{flex-direction:column;gap:3px;min-width:0;display:flex}.field>span{color:var(--text-2);font-size:12px}.row{align-items:flex-end;gap:10px;min-width:0;display:flex}.row.tight{align-items:center;gap:6px}.row.wrap{flex-wrap:wrap}.row .field{flex:1}.row .field input[type=number]{width:100%}.slash,.prefix{color:var(--text-2)}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:8px 10px 10px}legend{color:var(--text-2);padding:0 4px;font-size:12px}.checks{grid-template-columns:1fr 1fr;gap:4px 10px;display:grid}.check{cursor:pointer;text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}details.advanced summary{cursor:pointer;color:var(--text-2);margin-bottom:8px;font-size:12px}details.advanced .row+.row{margin-top:8px}.ai-actions,.ai-import,.ai-review{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.status-line{margin:0;font-size:12px}.status-line.good{color:var(--good)}.status-line.bad{color:var(--bad)}.command{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.command pre,pre.message{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);width:100%;font:11px/1.5 var(--mono);white-space:pre-wrap;word-break:break-all;margin:0;padding:8px;overflow-x:auto}pre.message.error{color:var(--bad)}pre.message.warn{color:var(--warn)}pre.message.ok{color:var(--good)}.runs{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.runs li{border:1px solid var(--line);border-left:3px solid var(--ai);border-radius:var(--radius);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.run-info{flex-direction:column;display:flex}.run-info span{color:var(--text-2);font-size:12px}.run-actions{gap:6px;display:flex}.run-actions .accept{color:var(--good);border-color:var(--good)}.run-actions .reject{color:var(--bad)}textarea.code{font:12px/1.5 var(--mono);resize:vertical}.parts{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.part-row{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:4px;padding:8px;display:flex}.part-names{gap:6px;display:flex}.part-names input{flex:1}.part-names input.abbr{flex:0 0 72px}.part-meta{color:var(--text-2);justify-content:space-between;align-items:center;gap:6px;font-size:12px;display:flex}.part-meta .confirm{gap:4px;display:flex}.props-section{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding-bottom:12px;display:flex}.statusbar{background:var(--panel);border-top:1px solid var(--line);color:var(--text-2);white-space:nowrap;align-items:center;gap:14px;padding:3px 16px;font-size:12px;display:flex;position:relative}.statusbar .mode{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:0 6px}.statusbar .mode.input{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.statusbar .file-state.unsaved{color:var(--warn)}.statusbar .saved{color:var(--good)}.help-pop{z-index:40;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);white-space:normal;grid-template-columns:1fr 1fr;gap:3px 18px;padding:12px 14px;display:grid;position:absolute;bottom:calc(100% + 6px);right:12px}.modal-backdrop{z-index:50;background:#0f121973;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);width:min(640px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:14px;padding:20px 22px;display:flex;overflow-y:auto}.modal h2{margin:0;font-size:18px}.templates{flex-direction:column;gap:10px;display:flex}.template-group h5{color:var(--text-2);margin:0 0 4px;font-size:12px;font-weight:500}.template-list{flex-wrap:wrap;gap:6px;display:flex}.template.on{background:var(--accent-2);border-color:var(--accent);color:var(--accent);font-weight:600}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.toast{z-index:60;color:#f4f6fa;max-width:min(560px,100vw - 32px);box-shadow:var(--shadow);cursor:pointer;background:#1f2430;border-radius:8px;padding:9px 14px;position:fixed;bottom:44px;left:50%;transform:translate(-50%)}.toast.error{background:#8f1d14}.import-status{z-index:59;border:1px solid var(--line);border-left:3px solid var(--ai);background:var(--panel);max-width:min(460px,100vw - 32px);color:var(--text);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:10px;padding:9px 10px 9px 14px;display:flex;position:fixed;bottom:44px;left:16px}.import-status.failed{border-left-color:var(--bad)}.import-status.ready{border-left-color:var(--good)}.import-text{flex-direction:column;gap:2px;min-width:0;font-size:12px;display:flex}.import-text strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.import-text span{color:var(--text-2);overflow-wrap:anywhere}.import-status.failed .import-text span{color:var(--bad)}.import-spinner{border:2px solid var(--line);border-top-color:var(--ai);border-radius:50%;flex:none;width:14px;height:14px;animation:.9s linear infinite import-spin}@keyframes import-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.import-spinner{animation:none}}@media (max-width:1200px){.topbar{flex-wrap:wrap;row-gap:4px}.topbar .tools{margin-left:0}}@media (max-width:900px){.topbar{flex-wrap:wrap;row-gap:4px}.menu,.tools{flex-wrap:wrap}.tools{margin-left:0}.doc-title,.statusbar .parts{display:none}.statusbar{white-space:normal;flex-wrap:wrap;row-gap:2px}.help-pop{grid-template-columns:1fr;left:16px}.side .panel{width:min(330px,70vw)}.side .tab-label{display:none}.side .tabs button{width:36px}}@media print{@page{size:A4;margin:0}body{background:#fff}.topbar,.palette,.keypad,.side,.statusbar,.toast,.overlay{display:none!important}.app,.workspace,.score-scroll{background:#fff;height:auto;display:block;overflow:visible}.pages{padding:0;display:block}.page{box-shadow:none;break-after:page;width:210mm!important;height:297mm!important}.page-svg .ghost,.page-svg .sel{color:#111;opacity:1}}.candidate-list{margin-top:16px}.candidate-card{border:1px solid var(--border,#d4d4d4);border-radius:8px;grid-template-columns:1fr auto;gap:6px 12px;margin:8px 0;padding:12px;display:grid}.candidate-card small{grid-column:1}.candidate-card button{grid-area:1/2/3;align-self:center}.candidate-dialog{background:var(--bg,#f2f2f0);width:min(1100px,96vw);max-width:96vw;height:92dvh;max-height:92dvh;color:var(--text,#222);border:1px solid #888;border-radius:12px;padding:0}.candidate-dialog::backdrop{background:#0008}.candidate-dialog[open]{flex-direction:column;display:flex}.candidate-toolbar{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;padding:14px 18px;display:flex}.candidate-toolbar span{margin-right:auto;font-size:13px}.candidate-pages{background:#dcdedb;flex:1;min-height:0;padding:14px;overflow:auto}.candidate-pages>div{background:#fff;max-width:940px;margin:0 auto 18px;box-shadow:0 2px 12px #0002}.candidate-pages svg{width:100%;height:auto;display:block}.candidate-accept{border-top:1px solid #bbb;flex-shrink:0;padding:12px 18px}.candidate-accept input[type=number]{width:70px}@media (max-width:600px){.candidate-dialog{height:96dvh}.candidate-toolbar,.candidate-accept{padding:10px}.candidate-pages{padding:6px}}.demo-banner{color:#233b29;background:#e5ede4;flex-wrap:wrap;flex-shrink:0;gap:8px 16px;padding:8px 16px;font-size:12px;display:flex}.demo-banner a{color:inherit;margin-left:auto}.demo-app{grid-template-rows:auto auto auto minmax(0,1fr) auto}.candidate-edge-note{color:var(--text-2);margin:0;padding:4px 18px 10px;font-size:12px}.candidate-accept .field{flex:0 0 150px;min-width:150px}
