:root{--bg: #111311;--panel: #1a1d1a;--panel-2: #20241f;--line: #343b34;--line-strong: #4c564d;--text: #ecefe9;--muted: #aab4aa;--faint: #6f7a70;--accent: #e3a13f;--accent-ink: #17110a;--osc: #e3a13f;--lfo: #d6c75a;--voice: #9e92dc;--filter: #4fa8d8;--env: #78bd72;--fx: #cd74bc;color:var(--text);background:var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px) 0 0 / 28px 28px,linear-gradient(0deg,rgba(255,255,255,.018) 1px,transparent 1px) 0 0 / 28px 28px,var(--bg)}html,#root,.app-shell{max-width:100vw;overflow-x:hidden}button,select,input{font:inherit}input,textarea{-webkit-user-select:text;user-select:text}button{cursor:pointer}.app-shell{width:min(1480px,100%);margin:0 auto;padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}.topbar{display:grid;grid-template-columns:minmax(210px,1fr) auto;gap:14px;align-items:stretch;min-width:0;padding:10px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#20231f,#151815);box-shadow:inset 0 1px #ffffff0f,0 12px 28px #00000047}.brand-block{display:flex;min-height:62px;flex-direction:column;justify-content:center;padding:0 8px}.brand-block p{margin:0 0 4px;color:var(--accent);font:800 .72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}h1,h2,p{margin:0}h1{font-size:clamp(1.45rem,2.4vw,2.15rem);letter-spacing:0}h2{color:var(--text);font-size:.88rem;letter-spacing:.08em;text-transform:uppercase}.midi-panel{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center;min-width:0}.midi-panel>*{min-width:0}.midi-panel button,.midi-panel select,.channel-control,.arm-control,.generator-panel input,.generator-panel select{min-height:42px;border:1px solid var(--line-strong);border-radius:6px;background:#111410;color:var(--text)}.midi-panel button,.midi-panel select{padding:0 12px;max-width:100%}.midi-panel button,.primary-action{border-color:#d0953d;background:var(--accent);color:var(--accent-ink);font-weight:800}.channel-control,.arm-control{display:inline-flex;gap:8px;align-items:center;padding:0 10px;color:var(--muted);font-weight:700}.channel-control input{width:48px;border:0;background:transparent;color:var(--text);font-weight:800}.status-strip{display:grid;grid-template-columns:auto auto auto minmax(0,1fr);gap:8px;align-items:center;width:100%;max-width:100%;margin:10px 0;color:var(--muted);font-size:.82rem}.status-strip span,.status-strip strong{min-height:32px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:#111410db}.status-strip strong{display:block;min-width:0;color:var(--text);font-weight:700;line-height:1.35;overflow-wrap:anywhere;white-space:normal}.synth-layout{display:grid;grid-template-columns:.78fr 1.15fr 1fr;gap:10px;align-items:stretch}.parameter-section{min-width:0;height:100%;overflow:hidden;padding:11px;border:1px solid var(--line);border-top:3px solid var(--osc);border-radius:8px;background:linear-gradient(180deg,var(--panel-2),var(--panel));box-shadow:inset 0 1px #ffffff0a}.section-controls{border-top-color:#c9d0c5}.section-lfo{border-top-color:var(--lfo)}.section-voice{border-top-color:var(--voice)}.section-filter{border-top-color:var(--filter)}.section-envelope{border-top-color:var(--env)}.section-effects{border-top-color:var(--fx)}.section-oscillator{grid-column:span 2}.section-header{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}.section-header span{color:var(--faint);font:800 .68rem ui-monospace,SFMono-Regular,Menlo,monospace}.knob-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(78px,1fr));gap:14px 8px;align-items:start}.knob-grid-wide{grid-template-columns:repeat(auto-fit,minmax(82px,1fr))}.knob-control{min-width:0;display:grid;grid-template-rows:auto auto auto;justify-items:center;gap:5px;text-align:center}.knob-control-compact .knob{--knob-size: 46px}.knob-label{min-height:22px;color:#c4cec2;font-size:.62rem;font-weight:800;line-height:1.08;letter-spacing:.06em;text-transform:uppercase}.knob{--knob-size: 56px;position:relative;width:var(--knob-size);height:var(--knob-size);padding:0;border:1px solid #667066;border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.22),transparent 28%),radial-gradient(circle at 50% 60%,#31372f 0 38%,#20251f 39% 100%);box-shadow:inset 0 2px 2px #ffffff1f,inset 0 -9px 12px #0000007a,0 4px 10px #00000059;touch-action:none}.knob:before{content:"";position:absolute;inset:-7px;border-radius:50%;background:conic-gradient(from 225deg,rgba(227,161,63,.92) 0deg calc(var(--knob-angle) + 135deg),rgba(119,130,119,.28) calc(var(--knob-angle) + 135deg) 270deg,transparent 270deg 360deg);-webkit-mask:radial-gradient(transparent 59%,#000 61% 68%,transparent 70%);mask:radial-gradient(transparent 59%,#000 61% 68%,transparent 70%);pointer-events:none}.knob-indicator{position:absolute;z-index:1;left:50%;top:8px;width:3px;height:16px;border-radius:999px;background:#eef3eb;box-shadow:0 0 6px #eef3eb3d;transform:translate(-50%) rotate(var(--knob-angle));transform-origin:50% calc(var(--knob-size) / 2 - 8px);pointer-events:none}.knob:hover{border-color:#879284;box-shadow:inset 0 2px 2px #ffffff24,inset 0 -8px 10px #0000007a,0 0 0 3px #e3a13f17,0 4px 10px #00000057}.knob:focus-visible{outline:2px solid rgba(227,161,63,.82);outline-offset:5px}.knob.is-adjusting{transform:translateY(1px)}.knob-control output{min-width:38px;max-width:78px;overflow:hidden;padding:2px 5px;border:1px solid #30372f;border-radius:4px;background:#10130f;color:var(--text);font:800 .62rem ui-monospace,SFMono-Regular,Menlo,monospace;text-overflow:ellipsis;white-space:nowrap}.workbench{margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#1e221e,#151815)}.workbench-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:12px}.workbench-head p{margin-top:4px;color:var(--muted);font-size:.82rem}.transport-actions,.pattern-actions,.file-actions,.mode-switch{display:flex;gap:6px}.transport-actions button,.pattern-actions button,.file-actions button,.file-button,.mode-switch button,.primary-action{min-height:36px;padding:0 12px;border:1px solid var(--line-strong);border-radius:6px;background:#111410;color:var(--text);font-weight:800}.mode-switch{width:fit-content;padding:4px;border:1px solid var(--line);border-radius:8px;background:#10130f}.mode-switch button{border:0;color:var(--muted)}.mode-switch button.is-active,.primary-action{background:var(--accent);color:var(--accent-ink)}.transport-actions .transport-play.is-playing{border-color:#5ee38f;background:#1f8f53;color:#f7fff9}.generator-panel{display:grid;grid-template-columns:auto 76px 160px 110px 76px 82px 82px minmax(300px,1fr);gap:10px;align-items:end;margin-bottom:10px}.utility-row{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:0 0 10px}.pattern-actions,.file-actions{flex-wrap:wrap;min-width:0}.pattern-actions button{min-height:32px;padding:0 10px;color:var(--muted)}.pattern-actions .primary-action{min-width:104px;border-color:#d0953d;background:var(--accent);color:var(--accent-ink)}.file-actions{justify-content:flex-end}.file-actions button,.file-button{min-height:32px;color:var(--muted)}.file-button{position:relative;display:inline-flex;align-items:center;overflow:hidden;font-weight:800;cursor:pointer}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.generator-panel label{display:grid;gap:5px;color:var(--muted);font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.generator-panel input,.generator-panel select{width:100%;padding:0 10px}.division-panel{min-width:0;margin:0;padding:7px 9px;border:1px solid var(--line-strong);border-radius:6px;display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:8px;background:#111410}.division-panel legend{padding:0 4px;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.division-panel .knob{--knob-size: 42px}.division-panel .knob-label{min-height:16px}.piano-roll{--key-width: 58px;--cell-width: 46px;--row-height: 22px;max-height:min(560px,calc(100dvh - 320px));overflow:auto;border:1px solid var(--line);border-radius:6px;background:#0f120f;scrollbar-color:#4b554b #10130f;-webkit-user-select:none;user-select:none}.piano-roll-inner{width:max-content;min-width:100%}.piano-roll-header{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:var(--key-width) max-content;border-bottom:1px solid var(--line);background:#10130f}.piano-roll-corner{position:sticky;left:0;z-index:6;background:#10130f;border-right:1px solid var(--line)}.step-ruler{display:grid;grid-template-columns:repeat(var(--steps),var(--cell-width))}.step-ruler span{width:var(--cell-width);min-height:28px;display:grid;place-items:center;border-right:1px solid #293029;color:var(--faint);font:800 .6rem ui-monospace,SFMono-Regular,Menlo,monospace}.step-ruler span:nth-child(4n+1){color:var(--text);background:#e3a13f14}.piano-roll-body{display:grid;grid-template-columns:var(--key-width) max-content}.piano-keys{position:sticky;left:0;z-index:4;display:grid;grid-auto-rows:var(--row-height);border-right:1px solid var(--line)}.piano-keys button{min-height:var(--row-height);border:0;border-bottom:1px solid #2a312a;background:linear-gradient(90deg,#d7dbd2,#f1f3ed 45%,#c6ccc2);color:#171b16;font:800 .62rem ui-monospace,SFMono-Regular,Menlo,monospace;text-align:right;padding:0 7px 0 0}.piano-keys button.is-black{background:linear-gradient(90deg,#090b09,#242923 55%,#0b0d0b);color:var(--muted)}.note-grid{display:grid;grid-auto-rows:var(--row-height)}.note-row{display:grid;grid-template-columns:repeat(var(--steps),var(--cell-width))}.note-row button{position:relative;width:var(--cell-width);min-height:var(--row-height);border:0;border-right:1px solid #252c25;border-bottom:1px solid #252c25;background:transparent;color:var(--faint);touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.note-row button:nth-child(4n+1){background:#e3a13f0a}.note-row button:hover{background:#e3a13f1f}.note-row button.is-marquee-selected{background:#4fa8d833;box-shadow:inset 0 0 0 1px #4fa8d88c}.note-row button.is-on{overflow:visible}.note-block{position:absolute;inset:3px auto 3px 3px;z-index:1;transform:translate(var(--preview-x, 0),var(--preview-y, 0));min-width:calc(var(--cell-width) - 6px);border:1px solid #e3a13f;border-radius:4px;background:linear-gradient(180deg,#e3a13f,#9d6b28);box-shadow:0 0 0 2px #e3a13f21;color:#15110a;cursor:grab;touch-action:none}.note-block.is-moving-preview{z-index:3;opacity:.9;box-shadow:0 0 0 2px #e3a13f42,0 10px 18px #00000052}.note-block.is-copying-preview{border-color:#fff4d0e6;background:linear-gradient(180deg,#ffe08a,#b9862d)}.note-block.is-copy-ghost{z-index:4;pointer-events:none}.note-row button.is-selected .note-block{border-color:#4fa8d8;box-shadow:0 0 0 2px #4fa8d873,0 0 18px #4fa8d838}.note-block:active{cursor:grabbing}.note-block b{position:absolute;left:6px;top:50%;transform:translateY(-50%);font:900 .58rem ui-monospace,SFMono-Regular,Menlo,monospace;pointer-events:none}.note-block i{position:absolute;top:-1px;right:-5px;bottom:-1px;width:10px;border-radius:4px;background:#fff4d0db;cursor:ew-resize;touch-action:none}.note-block i:after{content:"";position:absolute;top:4px;bottom:4px;left:4px;border-left:1px solid rgba(21,17,10,.6)}@media(max-width:1180px){.synth-layout{grid-template-columns:repeat(2,minmax(0,1fr))}.section-oscillator{grid-column:span 2}}@media(max-width:860px){.topbar,.status-strip,.synth-layout,.generator-panel{grid-template-columns:minmax(0,1fr)}.midi-panel,.workbench-head{justify-content:flex-start}.section-oscillator{grid-column:auto}.workbench-head{align-items:stretch;flex-direction:column}.pattern-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.utility-row,.file-actions{align-items:stretch;flex-direction:column}.file-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.piano-roll{--key-width: 50px;--cell-width: 42px;max-height:min(580px,calc(100dvh - 250px))}}@media(max-width:560px){.midi-panel>*,.transport-actions button,.mode-switch{flex:1 1 140px}.midi-panel{display:grid;grid-template-columns:minmax(0,1fr)}.midi-panel>*{width:100%}.knob-grid,.knob-grid-wide{grid-template-columns:repeat(2,minmax(0,1fr))}.transport-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.mode-switch{width:100%}}
