:root{--bg:#0b0d10;--panel:#14171c;--panel-2:#191d23;--border:#262b33;--text:#a8b0ba;--text-dim:#5c6470;--accent:#ffb454;--accent-2:#7ec8ff;--cell-bg:#20242c;--cell-bg-tonic:#262c37;--step-on:#ffb454;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{color:var(--text);background:radial-gradient(1200px 500px at 70% -10%, #131820 0%, transparent 60%), var(--bg);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;font:14px/1.45 ui-monospace,Cascadia Mono,Consolas,monospace}.app{max-width:1280px;margin:0 auto;padding:20px 24px 40px}header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:18px;padding-bottom:14px;display:flex}.logo{letter-spacing:2px;color:var(--accent);font-size:20px;font-weight:700}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:5px 12px;transition:border-color .15s,color .15s}button:hover{border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.4;cursor:default}header>button.stop{color:#e05555;border-color:#e05555}label{color:var(--text-dim);align-items:center;gap:6px;font-size:12px;display:inline-flex}input,select{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:4px;width:84px;padding:3px 6px;font-size:13px}input:disabled{opacity:.4}input:focus,select:focus{border-color:var(--accent-2);outline:none}header .master-vol{align-items:center;gap:8px;display:inline-flex}header .master-vol input[type=range]{width:110px;accent-color:var(--accent)}.fold{color:var(--text-dim);align-self:center;padding:2px 8px;font-size:11px}.collapsed-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.collapsed-row .track-name{width:96px}.live-dot{color:var(--border);font-size:8px;transition:color .1s}.live-dot.on{color:var(--accent);text-shadow:0 0 8px var(--accent)}.mini-wave{color:var(--text-dim);font-size:11px}.mini-vol{width:90px;accent-color:var(--accent)}.mini-info{color:var(--text-dim);font-size:11px}.collapsed-row .remove{padding:2px 8px}.more-btn{color:var(--text-dim);font-size:12px}.more-row{background:var(--panel-2);border-radius:8px;margin-top:10px;padding:8px 10px}.more-row .group:first-child{border-left:none;padding-left:0}.scenes{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;padding:0 0 12px;display:flex}.scenes-label{color:var(--text-dim);font-size:11px}.scene-btn{padding:4px 12px;font-size:12px}.scene-btn.on{border-color:var(--accent);color:var(--accent)}.scene-btn.add{color:var(--text-dim);padding:4px 10px}.chain-panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;padding:10px 14px;display:flex}.chain-item{border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:4px 8px;display:inline-flex}.chain-item.playing{border-color:var(--accent);box-shadow:0 0 10px #ffb45440}.chain-item label{gap:4px}.chain-item input{width:56px}.pattern-chips{align-items:center;gap:4px;display:inline-flex}.chip{min-width:26px;color:var(--text-dim);border-radius:10px;padding:2px 7px;font-size:11px}.chip:hover{color:var(--accent)}.chip.on{border-color:var(--accent-2);color:var(--accent-2);background:#7ec8ff14}.chip.add{border-style:dashed}.pan-label{color:var(--text-dim);min-width:42px;font-size:11px}.mods-group{flex-direction:column;align-items:flex-start;gap:6px}.mods-group .none{color:var(--text-dim);font-size:11px}.mod-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mod-row select{width:110px}.mod-row label{flex-direction:row;align-items:center;font-size:11px}.mod-row input[type=number]{width:64px}.spacer{flex:1}.track{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-bottom:14px;padding:12px 14px}.track-head{flex-wrap:wrap;align-items:stretch;gap:0 18px;margin-bottom:12px;display:flex}.track-name{width:96px;color:var(--accent-2);align-self:center;font-weight:600}.group{border-left:1px solid var(--border);flex-wrap:wrap;align-items:flex-end;gap:10px;padding:2px 0 2px 18px;display:flex}.group label{white-space:nowrap;flex-direction:column;align-items:flex-start;gap:4px}.group .inline{align-items:center;gap:6px;display:inline-flex}.group .inline input{width:52px}.group .inline button{padding:3px 10px;font-size:12px}.group.ops{align-items:center}.group.ops>button{align-self:flex-end;margin-bottom:1px}.remove{color:var(--text-dim)}.remove:hover{color:#e05555;border-color:#e05555}.mut:hover{border-color:var(--accent-2);color:var(--accent-2)}.roll{gap:6px;padding-bottom:6px;display:flex;overflow-x:auto}.roll-side{flex-direction:column;gap:3px;display:flex}.col-num-spacer{height:15px}.scale-cell{height:var(--cell,18px);color:var(--text-dim);white-space:nowrap;justify-content:flex-end;align-items:center;padding-right:4px;font-size:10px;display:flex}.roll-cols{gap:3px;display:flex}.col-wrap{flex-direction:column;gap:3px;display:flex}.col-num{width:24px;height:15px;color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;padding:0;font-size:9px;line-height:1}.col-num:hover{color:var(--accent-2)}.col-num.sel{color:var(--accent-2);border-color:var(--accent-2);background:#7ec8ff14}.roll-col{flex-direction:column;gap:3px;display:flex}.cell{width:24px;height:var(--cell,18px);background:var(--cell-bg);border:1px solid var(--border);cursor:pointer;border-radius:4px;padding:0;position:relative;overflow:hidden}.cell:hover{border-color:var(--accent-2)}.cell.tonic-row{background:var(--cell-bg-tonic)}.cell.on{background:var(--step-on);border-color:#0000;box-shadow:0 0 10px #ffb45440}.cell.ph{border-color:#ffffff73}.cell.on.ph{box-shadow:0 0 0 1px #fff,0 0 12px #fff6}.pbar{background:#ffffffd9;border-radius:2px;max-width:calc(100% - 4px);height:2px;position:absolute;bottom:2px;left:2px}.step-panel{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:18px;margin-top:10px;padding:8px 12px;display:flex}.step-panel .sp-label{color:var(--accent-2);font-size:12px}.step-panel label{color:var(--text-dim);white-space:nowrap;align-items:center;gap:8px;font-size:12px;display:inline-flex}input[type=range]{width:130px;accent-color:var(--accent)}.empty{color:var(--text-dim)}footer{color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:16px;font-size:12px;display:flex}.sample-name{color:var(--accent-2);text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-size:11px;display:inline-block;overflow:hidden}.topbar{z-index:20;background:linear-gradient(var(--bg) 82%, transparent);padding-top:4px;position:sticky;top:0}.topbar .scenes{border-bottom:none;padding-bottom:8px}.scene-edit{align-items:center;gap:6px;display:inline-flex}.scene-name-input{width:110px;font-size:12px}.oct-row{gap:3px;height:auto;display:flex}.oct-btn{width:24px;height:14px;color:var(--text-dim);border:1px solid var(--border);background:0 0;border-radius:3px;padding:0;font-size:8px;line-height:1}.oct-btn:hover:not(:disabled){color:var(--accent-2);border-color:var(--accent-2)}.oct-btn:disabled{opacity:.35;cursor:default}.note-panel{border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:12px;padding:4px 8px;display:flex}.np-label{min-width:44px;color:var(--accent-2);font-size:12px}.ai-panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:10px;padding:10px 14px;display:flex}.ai-key-input{width:320px}.ai-ok{color:var(--accent);font-size:12px}.gen-row{gap:6px}.gen-prompt{width:220px}header button.on{border-color:var(--accent);color:var(--accent)}.gen-bar{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;padding:8px 10px;display:flex}.gen-bar label{gap:8px}.gen-label{flex:1;min-width:280px}.gen-prompt{flex:1;width:auto;min-width:220px;font-size:13px}.play-btn{width:42px;height:42px;color:var(--accent);border-color:var(--accent);border-radius:50%;padding:0;font-size:15px}.play-btn:hover{background:#ffb45414}.play-btn.stop{color:#e05555;border-color:#e05555}.menu{position:relative}.menu-list{z-index:40;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:4px;min-width:170px;padding:8px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #0006}.menu-list button{text-align:left}.tabs{border-bottom:1px solid var(--border);gap:4px;width:100%;margin-bottom:10px;padding-bottom:6px;display:flex}.tab{color:var(--text-dim);border-radius:8px 8px 0 0;padding:3px 12px;font-size:12px}.tab.on{color:var(--accent);border-color:var(--border) var(--border) transparent;background:var(--panel)}.env-tab{flex-flow:wrap;align-items:flex-start;gap:14px}.env-graph{border:1px solid var(--border);background:#00000040;border-radius:8px;display:block}.env-amp{fill:none;stroke:var(--accent);stroke-width:2px}.env-pitch{fill:none;stroke:var(--accent-2);stroke-width:1.5px;stroke-dasharray:4 3}.env-axis{stroke:var(--border)}.lib-panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;display:flex}.lib-list{flex-direction:column;gap:4px;width:100%;max-height:240px;display:flex;overflow-y:auto}.lib-item{border:1px solid var(--border);border-radius:6px;align-items:center;gap:10px;padding:4px 8px;display:flex}.lib-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1;font-size:12px;overflow:hidden}.lib-used{color:var(--accent-2);font-size:10px}.lib-item button{padding:2px 8px;font-size:11px}.track{position:relative}.track-del,.track-dup{z-index:5;color:var(--text-dim);background:0 0;border:none;padding:5px 7px;position:absolute;top:10px}.track-del{right:12px}.track-dup{right:38px}.track-del:hover{color:#e05555;border:none}.track-dup:hover{color:var(--accent);border:none}.track-head .group button,.collapsed-row button{padding:4px 10px;font-size:12px}.group.ops button.on{border-color:var(--accent);color:var(--accent)}.undo-btn{padding:5px 10px;font-size:14px}.env-block{flex-direction:column;gap:4px;display:flex}.env-info{color:var(--text-dim);font-size:11px}.env-fields{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.env-grid{stroke:var(--border);stroke-width:1px}.env-text{fill:var(--text-dim);font-size:9px}.mod-row .mr{align-items:center;gap:4px;display:inline-flex}.mod-row .mr i{color:var(--text-dim);min-width:24px;font-size:10px;font-style:normal}.mod-row select{width:auto;min-width:92px}.mod-row input[type=range]{width:74px}.group select{min-width:128px;padding-right:26px}.custom-scale-label .inline{gap:6px}.custom-scale-input{width:200px;font-size:12px}.ms-btns{gap:3px;display:inline-flex}.ms{width:22px;height:22px;color:var(--text-dim);border:1px solid var(--border);padding:0;font-size:11px}.ms.on-m{color:#e05555;background:#e0555514;border-color:#e05555}.ms.on-s{color:#ffd166;background:#ffd16614;border-color:#ffd166}.modal-overlay{z-index:60;background:#04060999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;min-width:300px;max-width:min(560px,92vw);max-height:80vh;padding:16px 18px;display:flex;box-shadow:0 18px 50px #00000080}.modal h3{letter-spacing:.5px;color:var(--accent);margin:0;font-size:14px;font-weight:600}.modal p{white-space:pre-line;margin:0}.modal-btns{align-items:center;gap:10px;display:flex}.modal-btns .spacer{flex:1}button.danger{color:#e05555;border-color:#e05555}button.danger:hover{color:#ff7676;border-color:#ff7676}.picker-list{flex-direction:column;gap:4px;min-height:60px;display:flex;overflow-y:auto}.picker-item{background:var(--panel-2);border:1px solid var(--border);cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:6px 10px;display:flex}.picker-item:hover{border-color:var(--accent)}.picker-item.current{border-color:var(--accent-2)}.picker-item .sample-name{flex:1}.picker-play{width:30px;padding:2px 0}.chip.del{border-style:dashed}.chip.del:hover{color:#e05555;border-color:#e05555}.track-head .ms-btns{align-self:center}.track-grip{width:14px;color:var(--text-dim);cursor:grab;-webkit-user-select:none;user-select:none;opacity:.45;z-index:6;justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;top:0;bottom:0;left:0}.track-grip:hover{opacity:1;color:var(--accent)}.track-grip:active{cursor:grabbing}.track.drop-above{box-shadow:0 -2px 0 0 var(--accent-2)}.track.drop-below{box-shadow:0 2px 0 0 var(--accent-2)}.mix-panel{flex-wrap:wrap;align-items:center;gap:12px;padding:10px 0 2px;display:flex}.mix-rack{gap:8px;width:100%;padding-bottom:4px;display:flex;overflow-x:auto}.mix-block{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:none;gap:5px;min-width:108px;max-width:150px;padding:8px 10px;display:flex}.mix-block .mix-name{color:var(--accent-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.mix-block.off{opacity:.45}.mix-block.off .mix-name{color:var(--text-dim)}.mix-block button.on{border-color:var(--accent-2);color:var(--accent-2)}.track.off{opacity:.6}.scene-cnt{color:var(--text-dim);margin-left:2px;font-size:9px}.chip.on .scene-cnt{color:var(--accent-2)}.cell{touch-action:none}.cell.sel{box-shadow:inset 0 0 0 2px var(--accent-2)}.cell.boxsel{border-color:#9fd0ff8c}.cell.on.boxsel{border-color:#9fd0ffbf}.cell.ghost{box-shadow:inset 0 0 0 2px #ffb454d9}.cell.sel{background:#7ec8ff26;border-color:#9fd0ff;box-shadow:inset 0 0 0 2px #9fd0ff,0 0 8px #7ec8ff73}.cell.on.sel{border-color:#eaf4ff;box-shadow:inset 0 0 0 2px #eaf4ff,0 0 10px #7ec8ff99}.cycle-info{color:var(--text-dim);white-space:nowrap;font-size:12px}.browser-search{width:100%}.browser-grid{flex-direction:column;gap:12px;min-height:120px;display:flex;overflow-y:auto}.browser-cat-label{letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);font-size:11px}.browser-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:6px;display:grid}.inst-card{text-align:left;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;display:flex}.inst-card:hover{border-color:var(--accent)}.inst-name{color:var(--accent);font-weight:600}.inst-wave{color:var(--accent-2);font-size:11px}.inst-hint{color:var(--text-dim);font-size:11px;line-height:1.35}.sync-select{margin-left:4px;padding:2px 4px;font-size:11px}.mini-vol.pan{width:64px}.gbar{background:var(--accent-2);border-radius:2px;width:3px;position:absolute;top:2px;right:2px}.scratch-bar{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:6px;margin-bottom:10px;padding:8px 12px;display:flex}.scratch-actions{align-items:center;gap:8px;display:flex}.scratch-row{gap:6px;display:flex}.scratch-bar.recording .scratch-track{border-color:#e05555;box-shadow:inset 0 0 0 1px #e0555599}.scratch-track{background:var(--cell-bg);border:1px solid var(--border);cursor:crosshair;touch-action:none;border-radius:6px;flex:1;height:120px;position:relative}.scratch-dot{background:var(--accent);pointer-events:auto;border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;box-shadow:0 0 6px #ffb45480}.scratch-hint{color:var(--text-dim);pointer-events:none;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;inset:0}.title-input{border:1px solid var(--border);background:var(--panel-2);width:150px;color:var(--accent-2);font:inherit;border-radius:6px;padding:4px 8px}.title-input:focus{border-color:var(--accent);outline:none}.scratch-svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.scratch-actions button.on{color:#e05555;background:#e055551a;border-color:#e05555}.scratch-side{align-self:stretch;width:16px;display:flex}.scratch-map{width:100%;height:120px}.scratch-axis{color:var(--text-dim);white-space:nowrap;align-self:flex-end;font-size:10px}.scratch-len{align-self:flex-start}.scratch-main{flex-direction:column;flex:1;gap:3px;display:flex}.seg{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{color:var(--text-dim);background:0 0;border:none;border-radius:0;padding:3px 10px;font-size:12px}.seg button.on{background:var(--panel);color:var(--accent)}
