:root{--bg: #2b2d31;--bg-dark: #1f2124;--bg-darker: #17181b;--panel: #383b40;--panel-light: #45494f;--border: #1a1b1e;--border-light: #54585f;--text: #c8ccd2;--text-dim: #84888f;--accent: #f7a839;--accent2: #8fd14f;--led-off: #3a3d42;--led-on: #8fd14f;--step-a: #4a4e55;--step-b: #41444b;--danger: #e0564f;font-size:13px}*{box-sizing:border-box;user-select:none;-webkit-user-select:none}html,body,#root{height:100%;margin:0;overflow:hidden}body{background:var(--bg-darker);color:var(--text);font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;touch-action:none}input,textarea,select{user-select:text;-webkit-user-select:text}.app{display:flex;flex-direction:column;height:100%}.workspace{flex:1;display:flex;min-height:0;position:relative}.desktop{flex:1;position:relative;overflow:hidden;background:radial-gradient(1200px 500px at 50% -10%,#33363c 0%,transparent 60%),var(--bg-darker)}.topbar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:linear-gradient(#3d4046,#2e3136);border-bottom:1px solid var(--border);flex-wrap:wrap}.logo{font-weight:700;color:var(--accent);letter-spacing:.5px;margin-right:6px}.logo span{color:var(--text-dim);font-weight:400}.tb-group{display:flex;align-items:center;gap:4px;padding:3px 6px;background:var(--bg-dark);border:1px solid var(--border);border-radius:5px}button.tb-btn{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:4px 9px;cursor:pointer;font-size:12px}button.tb-btn:hover{background:var(--panel-light)}button.tb-btn.active{background:var(--accent);color:#1d1404;border-color:#b87b1f}button.tb-btn.rec.active{background:var(--danger);color:#fff}.bpm-display{font-family:Consolas,monospace;font-size:18px;color:var(--accent2);background:#101510;padding:2px 10px;border-radius:4px;border:1px solid #060;cursor:ns-resize;min-width:86px;text-align:center}.hint{color:var(--text-dim);font-size:11px;margin-left:auto}.window{position:absolute;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border-light);border-radius:6px;box-shadow:0 8px 30px #0000008c;min-width:260px;min-height:120px;overflow:hidden}.window-title{display:flex;align-items:center;gap:8px;padding:5px 9px;background:linear-gradient(#4a4e55,#3a3d43);cursor:move;border-bottom:1px solid var(--border);font-size:12px;font-weight:600}.window-title .spacer{flex:1}.window-close{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:14px;padding:0 4px}.window-close:hover{color:var(--danger)}.window-body{flex:1;overflow:auto;min-height:0;position:relative}.window-resize{position:absolute;right:0;bottom:0;width:14px;height:14px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,var(--border-light) 50%)}.rack-row{display:flex;align-items:center;gap:6px;padding:3px 6px;border-bottom:1px solid var(--border)}.rack-row:nth-child(2n){background:#ffffff04}.led{width:11px;height:11px;border-radius:50%;background:var(--led-off);border:1px solid var(--border);cursor:pointer;flex:none}.led.on{background:var(--led-on);box-shadow:0 0 6px var(--led-on)}.led.solo.on{background:var(--accent);box-shadow:0 0 6px var(--accent)}.ch-name{width:92px;flex:none;padding:3px 6px;border-radius:3px;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;color:#14161a;font-weight:600}.steps{display:flex;gap:2px}.step{width:19px;height:22px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:var(--step-b);flex:none}.step.beat{background:var(--step-a)}.step.on{background:var(--accent);box-shadow:inset 0 -3px #0000004d}.step.playing{outline:1px solid #fff}.rack-footer{display:flex;gap:6px;padding:6px}.knob{display:inline-flex;flex-direction:column;align-items:center;width:34px;flex:none}.knob svg{cursor:ns-resize}.knob-label{font-size:9px;color:var(--text-dim);margin-top:-2px}.mixer{display:flex;height:100%}.mixer-strips{display:flex;overflow-x:auto;flex:1}.strip{width:64px;flex:none;display:flex;flex-direction:column;align-items:center;border-right:1px solid var(--border);padding:6px 4px;gap:4px;background:var(--bg)}.strip.selected{background:var(--panel)}.strip.master{background:#34302a}.strip-name{font-size:9px;color:var(--text-dim);text-align:center;height:24px;overflow:hidden}.fader-track{width:10px;flex:1;min-height:80px;background:var(--bg-darker);border-radius:5px;position:relative;cursor:ns-resize;border:1px solid var(--border)}.fader-handle{position:absolute;left:-6px;width:22px;height:12px;background:linear-gradient(#777c84,#4d5158);border-radius:3px;border:1px solid #222}.meter{width:6px;flex:1;min-height:80px;background:var(--bg-darker);border-radius:3px;position:relative;overflow:hidden;border:1px solid var(--border)}.meter-fill{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(#e05a4f,#f7a839 25%,#8fd14f 60%)}.fx-rack{width:215px;flex:none;border-left:1px solid var(--border-light);padding:6px;overflow-y:auto;background:var(--bg-dark)}.fx-slot{display:flex;align-items:center;gap:5px;padding:4px 6px;margin-bottom:4px;background:var(--panel);border:1px solid var(--border);border-radius:4px;font-size:11px}.fx-slot.disabled{opacity:.45}.fx-params{padding:4px 6px 8px;background:var(--bg);border-radius:0 0 4px 4px;display:flex;flex-wrap:wrap;gap:2px;margin-top:-4px;margin-bottom:4px;border:1px solid var(--border);border-top:none}.side-panel{width:230px;flex:none;background:var(--bg-dark);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.side-panel.right{border-right:none;border-left:1px solid var(--border);width:360px}.side-title{padding:7px 10px;font-weight:700;font-size:12px;background:var(--bg-darker);border-bottom:1px solid var(--border);display:flex;align-items:center}.browser-tree{flex:1;overflow-y:auto;padding:4px 0}.tree-cat{padding:5px 10px;color:var(--accent);font-size:11px;font-weight:700}.tree-item{padding:4px 10px 4px 22px;font-size:12px;cursor:pointer;color:var(--text)}.tree-item:hover{background:var(--panel)}.ai-chat{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:8px}.ai-msg{padding:7px 9px;border-radius:6px;font-size:12px;line-height:1.45;white-space:pre-wrap;user-select:text}.ai-msg.user{background:#2f3a4a;align-self:flex-end;max-width:92%}.ai-msg.assistant{background:var(--panel);align-self:flex-start;max-width:96%}.ai-msg code{background:var(--bg-darker);padding:1px 4px;border-radius:3px;font-size:11px}.ai-block{background:var(--bg-darker);border:1px solid var(--accent);border-radius:5px;padding:6px;margin:6px 0;font-family:monospace;font-size:10px;max-height:130px;overflow:auto;white-space:pre}.ai-input-row{display:flex;gap:6px;padding:8px;border-top:1px solid var(--border)}.ai-input-row textarea{flex:1;background:var(--bg-darker);color:var(--text);border:1px solid var(--border-light);border-radius:5px;padding:6px 8px;resize:none;font-family:inherit;font-size:12px}.ai-log{font-size:11px;color:var(--accent2);padding:2px 0}.form-row{display:flex;align-items:center;gap:8px;padding:6px 10px}.form-row label{width:120px;color:var(--text-dim);font-size:12px;flex:none}.form-row input[type=text],.form-row input[type=password],.form-row select,.form-row textarea{flex:1;background:var(--bg-darker);color:var(--text);border:1px solid var(--border-light);border-radius:4px;padding:5px 8px;font-size:12px}.btn{background:var(--panel-light);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:5px 12px;cursor:pointer;font-size:12px}.btn:hover{background:#565b63}.btn.primary{background:var(--accent);color:#1d1404;font-weight:600}.btn.danger{background:var(--danger);color:#fff}.section-title{padding:8px 10px 2px;font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase}.canvas-wrap{position:relative;width:100%;height:100%;overflow:hidden}.canvas-wrap canvas{display:block}.pattern-chip{padding:3px 10px;border-radius:4px;cursor:pointer;font-size:11px;border:1px solid var(--border);background:var(--panel);white-space:nowrap}.pattern-chip.selected{background:var(--accent);color:#1d1404;font-weight:700}.toolbar{display:flex;gap:6px;align-items:center;padding:5px 8px;background:var(--bg-dark);border-bottom:1px solid var(--border);flex-wrap:wrap}.toolbar select{background:var(--bg-darker);color:var(--text);border:1px solid var(--border-light);border-radius:4px;padding:3px 6px;font-size:11px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-darker)}::-webkit-scrollbar-thumb{background:var(--panel-light);border-radius:5px}
