:root{color-scheme:dark;--bg: #14161a;--panel: #1c1f26;--panel-2: #262a33;--editor-bg: #101216;--border: #2a2e37;--text: #e6e8ee;--muted: #9aa1ad;--accent: #4fc3f7;--error: #ff6b6b;--warning: #ffc76b;--ok: #7bd88f;--paper: #f5f2ea}:root[data-theme=light]{color-scheme:light;--bg: #f3f4f6;--panel: #ffffff;--panel-2: #eef0f3;--editor-bg: #fbfbfc;--border: #d3d7de;--text: #1c2026;--muted: #5d6570;--accent: #0369a1;--error: #c62828;--warning: #9a6b00;--ok: #1b7a3d;--paper: #ffffff}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}.app{display:flex;flex-direction:column;height:100vh;height:100dvh}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--border);flex:none}.toolbar-group button.esc-button{font-size:.82rem;letter-spacing:.02em;background:var(--error);border-color:var(--error);color:#fff;font-weight:600}.toolbar-group button.esc-button:hover{filter:brightness(1.08)}.brand{font-weight:700;letter-spacing:.02em}.toolbar-group{display:flex;align-items:center;gap:6px}.toolbar-group button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-size:.9rem;cursor:pointer}.toolbar-group button:disabled{opacity:.4;cursor:not-allowed}.toolbar-group button.play{background:#1d4ed8;border-color:#1d4ed8}.toolbar-group button.active{background:#14532d;border-color:var(--ok)}.toolbar-group input[type=number]{width:58px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 6px}.toolbar-group .unit{color:var(--muted);font-size:.8rem}.toolbar-menu{position:relative}.toolbar-menu summary{display:inline-flex;align-items:center;gap:5px;list-style:none;cursor:pointer;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-size:.85rem;white-space:nowrap}.toolbar-menu summary::-webkit-details-marker{display:none}.toolbar-menu[open] summary{border-color:var(--accent)}.toolbar-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:10;display:flex;flex-direction:column;gap:8px;min-width:230px;padding:12px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 18px #00000073}.toolbar-panel .panel-row{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--muted);font-size:.82rem}.toolbar-panel select,.toolbar-panel input[type=number]{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:3px 6px;width:120px}.toolbar-panel .panel-title{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.toolbar-panel .panel-rule{width:100%;margin:2px 0 0;border:none;border-top:1px solid var(--border)}.toolbar-panel .panel-action{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:.85rem;text-align:left;cursor:pointer}.toolbar-panel .panel-action:hover:not(:disabled){border-color:var(--accent)}.toolbar-panel .panel-action:disabled{opacity:.6;cursor:default}.mixer{display:flex;flex-direction:column;gap:6px}.mixer .vol{display:grid;grid-template-columns:62px 1fr 28px;align-items:center;gap:8px;color:var(--muted);font-size:.78rem}.mixer input[type=range]{width:100%;accent-color:var(--accent)}.mixer output{text-align:right;font-variant-numeric:tabular-nums}.toolbar-group label{color:var(--muted);font-size:.85rem}.toolbar-group select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 6px}.toolbar-note{margin-left:auto;color:var(--muted);font-size:.8rem}@media(max-width:1150px){.toolbar-note{display:none}}@media(max-width:1100px){.brand{display:none}.toolbar{gap:8px}.file-name{max-width:92px}.toolbar-group label[for=tempo]{display:none}}.theme-toggle{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:3px 10px;font-size:.82rem;width:120px;cursor:pointer}.perf-toggle{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:var(--bg);border:1px solid var(--accent);border-radius:6px;padding:5px 14px;font-size:.9rem;font-weight:600;min-height:32px;cursor:pointer}.perf-toggle:hover{filter:brightness(1.1)}.file-name{color:var(--muted);font-size:.8rem;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-bar{display:flex;align-items:center;gap:8px;padding:5px 16px;background:var(--panel);border-bottom:1px solid var(--border);flex:none;flex-wrap:wrap}.palette-bar>details{position:relative}.palette-bar summary{list-style:none;cursor:pointer;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:3px 10px;font-size:.82rem;-webkit-user-select:none;user-select:none}.palette-bar details[open] summary{border-color:var(--accent)}.palette-bar .bar-button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:3px 10px;font-size:.82rem;cursor:pointer}.palette-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:20;max-height:60vh;overflow-y:auto;min-width:340px;max-width:560px;padding:12px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 22px #00000080}.palette-group{margin-bottom:10px}.group-title{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.token-grid,.chip-row{display:flex;flex-wrap:wrap;gap:4px}.token-grid button,.chip-row .chip{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:5px;padding:3px 8px;font-family:ui-monospace,monospace;font-size:.78rem;cursor:pointer}.token-grid button:hover,.chip-row .chip:hover,.palette-bar .bar-button:hover{border-color:var(--accent)}.chip-row .chip.active{background:#1d4ed8;border-color:#1d4ed8}.score-pane{flex:1;overflow:auto;padding:16px;background:var(--paper);color:#1a1a1a;user-select:none;-webkit-user-select:none}.error-banner{position:sticky;top:0;z-index:2;background:#8b1e1e;color:#fff;padding:8px 14px;border-radius:8px;margin-bottom:12px;font-size:.9rem}.score-wrap{position:relative;touch-action:pan-y}.score-host{min-height:120px}.music-pointer{position:absolute;width:10px;height:10px;border-radius:50%;background:#d32f2f;box-shadow:0 0 4px #d32f2fb3;pointer-events:none;transition:left 60ms linear,top 60ms linear}.rubber-band{position:absolute;border:1.5px dashed rgba(211,47,47,.8);background:#d32f2f0f;pointer-events:none}.selection-marker{position:absolute;background:#d32f2f1a;border-top:2px solid rgba(211,47,47,.65);border-bottom:2px solid rgba(211,47,47,.65);pointer-events:none}.score-host svg{display:block}.render-crash{color:var(--error);font-family:ui-monospace,monospace}.splitter{flex:none;height:6px;background:var(--border);cursor:row-resize;position:relative;touch-action:none}.splitter:hover{background:var(--accent)}.splitter:before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:40px;height:4px;border-radius:2px;background:var(--muted);opacity:.5}.editor-pane{flex:1;display:flex;flex-direction:column;min-height:0;width:100%}.header-fold{flex:none;display:flex;align-items:center;gap:8px;width:100%;padding:5px 14px;background:var(--panel);color:var(--muted);border:none;border-bottom:1px solid var(--border);font-family:inherit;font-size:.8rem;text-align:left;cursor:pointer}.header-fold:hover{color:var(--text)}.header-fold .fold-caret{color:var(--accent);font-size:.7rem}.header-fold .fold-label{font-weight:600}.header-fold .fold-count{color:var(--muted);font-variant-numeric:tabular-nums}.header-fold .fold-flag{margin-left:auto;color:var(--error)}.header-fold.open{background:var(--panel-2)}.editor-stack{position:relative;flex:1;min-height:0;background:var(--editor-bg)}.editor-pane textarea,.editor-highlight{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;width:100%;height:100%;box-sizing:border-box;padding:10px 14px;border:none;font-family:Cascadia Code,Fira Code,ui-monospace,monospace;font-size:.85rem;line-height:1.5;-moz-tab-size:12;tab-size:12;white-space:pre;overflow:auto;overflow-wrap:normal;word-break:normal}.editor-pane textarea{resize:none;outline:none;background:transparent;color:transparent;caret-color:var(--text);z-index:1}.editor-pane textarea::selection{background:#4fc3f752}.editor-highlight{z-index:0;color:var(--text);overflow:hidden;pointer-events:none}.hl-meta{color:#6e798c;font-style:italic}.hl-string{color:#b86200}.hl-note{color:#0073f6;font-weight:600}.hl-embellishment{color:#008b3a}.hl-modifier{color:#c012ff}.hl-structure{color:#ef0050;font-weight:600}.diagnostics-strip{flex:none;display:flex;align-items:flex-start;gap:12px;max-height:90px;overflow:auto;padding:6px 14px;background:var(--panel);border-top:1px solid var(--border);font-size:.82rem}.diagnostics-list{flex:1;min-width:0}.editor-pane.plain textarea{color:var(--text)}.colour-toggle{flex:none;display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);color:var(--muted);border:1px solid var(--border);border-radius:6px;padding:2px 8px;font-size:.78rem;font-family:inherit;cursor:pointer}.colour-toggle:hover{color:var(--text)}.colour-swatches{width:26px;height:8px;border-radius:2px;background:linear-gradient(to right,#0073f6 0,#0073f6 25%,#008b3a 25%,#008b3a 50%,#c012ff 50%,#c012ff 75%,#ef0050 75%,#ef0050)}.editor-pane.plain .colour-swatches{background:var(--border)}.diagnostics-strip .ok{color:var(--ok)}.diagnostics-strip ul{margin:0;padding:0;list-style:none}.diagnostics-strip li{margin:2px 0}.diagnostics-strip li.error{color:var(--error)}.diagnostics-strip li.warning{color:var(--warning)}.diagnostics-strip button{background:none;border:none;color:var(--accent);font-family:ui-monospace,monospace;cursor:pointer;padding:0}.hint{color:var(--muted)}.search-button{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);color:var(--muted);border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-family:inherit;font-size:.85rem;cursor:pointer}.search-button:hover{color:var(--text);border-color:var(--accent)}.search-button kbd{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-family:ui-monospace,monospace;font-size:.7rem}@media(max-width:1100px){.search-button kbd,.search-button .search-label{display:none}}.palette-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;justify-content:center;align-items:flex-start;padding:10vh 16px 16px;background:#00000080}.command-palette{display:flex;flex-direction:column;width:min(620px,100%);max-height:70vh;overflow:hidden;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 48px #0000008c}.command-input{flex:none;background:transparent;color:var(--text);border:none;border-bottom:1px solid var(--border);outline:none;padding:14px 18px;font-family:inherit;font-size:1rem}.command-input::placeholder{color:var(--muted)}.command-results{flex:1;overflow-y:auto;margin:0;padding:6px;list-style:none}.command-results li{display:flex;align-items:baseline;gap:10px;padding:7px 12px;border-radius:6px;cursor:pointer}.command-results li.selected{background:var(--panel-2)}.command-name{color:var(--text);font-size:.9rem}.command-group{flex:1;color:var(--muted);font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.command-shortcut,.command-token{flex:none;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:.72rem}.command-results li.selected .command-shortcut,.command-results li.selected .command-token{background:var(--bg)}.command-empty{margin:0;padding:24px 18px;color:var(--muted);font-size:.86rem}.command-hint{flex:none;display:flex;align-items:center;gap:4px;padding:8px 18px;border-top:1px solid var(--border);color:var(--muted);font-size:.74rem}.command-hint kbd{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-family:ui-monospace,monospace;font-size:.72rem}@media(max-width:560px){.palette-overlay{padding:6vh 8px 8px}.command-results li{padding:11px 12px}.command-group{display:none}}.app-footer{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 16px;background:var(--panel);border-top:1px solid var(--border);color:var(--muted);font-size:.78rem}.footer-links{display:flex;align-items:center;gap:8px}.copyright{white-space:nowrap}@media(max-width:560px){.copyright .rights{display:none}}.footer-links button{background:none;border:none;color:var(--muted);font-size:.78rem;cursor:pointer;padding:2px 4px}.footer-links button:hover{color:var(--text);text-decoration:underline}.footer-links .bmc{color:#14161a;background:#fd0;border-radius:6px;padding:3px 10px;font-weight:600;text-decoration:none;white-space:nowrap}.footer-links .bmc:hover{filter:brightness(.95)}.app-version{color:var(--muted);font-size:.72rem;font-variant-numeric:tabular-nums;opacity:.75;padding-left:2px}.app.performance-active>*:not(.performance){display:none!important}.performance{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;flex-direction:column;background:var(--paper)}.performance .score-pane{flex:1;min-height:0}.performance-bar{flex:none;display:flex;align-items:center;gap:12px;padding:10px 16px;padding-bottom:max(10px,env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--border);flex-wrap:wrap}.performance-bar button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:1rem;min-height:44px;cursor:pointer}.performance-bar button.play{background:#1d4ed8;border-color:#1d4ed8}.performance-bar button.active{background:#14532d;border-color:var(--ok)}.performance-bar .perf-tempo,.performance-bar .perf-zoom{display:flex;align-items:center;gap:6px;color:var(--text)}.performance-bar input[type=number]{width:64px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 6px;font-size:1rem;min-height:44px}.performance-bar .unit{color:var(--muted);font-size:.85rem}.performance-bar .perf-zoom-value{min-width:46px;text-align:center;font-variant-numeric:tabular-nums}.performance-bar .esc-button{margin-left:auto;background:transparent;border:2px solid var(--warning);color:var(--warning);font-weight:700;letter-spacing:.02em}.performance-bar .esc-button:hover{background:color-mix(in srgb,var(--warning) 14%,transparent)}.performance-bar .esc-button .esc-hint{font-weight:500;opacity:.85}@media(max-width:640px){.performance-bar .esc-button .esc-hint{display:none}}.performance-bar .perf-exit{background:var(--error);border-color:var(--error);color:#fff;font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#0000008c}.modal{position:relative;max-width:560px;max-height:80vh;overflow-y:auto;padding:24px 28px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 40px #00000080;line-height:1.55}.modal h2{margin:0 0 12px;font-size:1.3rem}.modal p{margin:0 0 10px}.modal ul{margin:0 0 10px;padding-left:20px}.modal li{margin:4px 0}.modal a{color:var(--accent);text-decoration:none}.modal a:hover{text-decoration:underline}.modal code{font-family:ui-monospace,monospace;font-size:.85em;background:var(--panel-2);padding:1px 5px;border-radius:4px}.modal .fine-print{color:var(--muted);font-size:.82rem;margin-top:14px}.modal-actions{display:flex;justify-content:flex-end;margin-top:18px}.modal-primary{background:var(--accent);color:var(--bg);border:1px solid var(--accent);border-radius:6px;padding:8px 20px;font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.modal-primary:hover{filter:brightness(1.1)}.modal-close{position:absolute;top:12px;right:12px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:.9rem;line-height:1}.modal-close:hover{border-color:var(--accent)}@media(max-width:820px){.toolbar,.palette-bar{gap:8px;padding:6px 10px}.toolbar-note{display:none}.file-name{max-width:120px}.toolbar-group button,.palette-bar summary,.palette-bar .bar-button,.toolbar-menu summary,.theme-toggle,.perf-toggle,.esc-button{min-height:36px}.mixer input[type=range]{height:24px}.toolbar-panel{position:fixed;left:8px;right:8px;bottom:8px;top:auto;min-width:0;max-height:70vh;overflow:auto}.palette-panel{position:fixed;left:8px;right:8px;bottom:8px;top:auto;width:auto;min-width:0;max-width:none;max-height:70vh}.splitter{height:16px}}@media(max-width:480px){.toolbar,.palette-bar{gap:6px;padding:6px 8px}.brand{font-size:.95rem}.score-pane{padding:10px}}
