:root{font-family:Inter,system-ui,-apple-system,sans-serif;color:#eceef4;background:#08090d;--font-display: "Space Grotesk", "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--bg-0: #08090d;--bg-1: #0d1017;--panel: rgba(255, 255, 255, .028);--panel-solid: #10141c;--line: rgba(255, 255, 255, .08);--line-soft: rgba(255, 255, 255, .05);--text-dim: #9aa3b5;--text-faint: #6b7488;--accent: #8b7cff;--accent-2: #22d3ee;--play: #34d399;--danger: #fb7185;color-scheme:dark}*{box-sizing:border-box}::selection{background:#8b7cff66}body{background:var(--bg-0);min-height:100vh}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(1100px 480px at 12% -8%,rgba(139,124,255,.13),transparent 60%),radial-gradient(900px 420px at 88% 4%,rgba(34,211,238,.09),transparent 60%),radial-gradient(1000px 700px at 50% 110%,rgba(57,255,106,.05),transparent 60%)}.app{padding:24px 24px 64px;max-width:1200px;margin:0 auto}header{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:16px;position:sticky;top:0;z-index:20;background:#0a0d13f5;padding:12px 4px;border-bottom:1px solid var(--line-soft)}h1{margin:0;font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:.01em;white-space:nowrap;background:linear-gradient(100deg,#fff 20%,#a5b4fc,#67e8f9);-webkit-background-clip:text;background-clip:text;color:transparent}.muted{margin:4px 0 0;color:var(--text-dim)}p.muted{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:3px 10px;margin-top:8px;background:var(--panel)}span.muted{margin:0;font-size:12px}.transport{display:flex;align-items:center;gap:12px}.master{display:grid;grid-template-columns:auto auto auto;gap:8px;align-items:center}button{font:inherit;background:linear-gradient(180deg,#ffffff0f,#ffffff04),#161b26;color:#f1f3f9;border:1px solid var(--line);padding:7px 14px;border-radius:10px;cursor:pointer;transition:transform .08s ease,border-color .15s ease,box-shadow .15s ease,background .15s ease}button:hover{border-color:#ffffff38;box-shadow:0 4px 18px -6px #8b7cff73}button:active{transform:translateY(1px) scale(.98)}button:disabled{opacity:.55;cursor:default;transform:none;box-shadow:none}button:focus-visible,input:focus-visible,select:focus-visible,.knob:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.play-btn{font-family:var(--font-display);font-weight:700;letter-spacing:.06em;min-width:108px;padding:9px 20px;border-radius:999px;border:1px solid rgba(52,211,153,.5);background:linear-gradient(180deg,#34d39947,#34d3991f),#0c1512;box-shadow:0 0 22px -6px #34d3998c,inset 0 1px #ffffff1f;text-shadow:0 1px 8px rgba(52,211,153,.5)}.play-btn:hover{border-color:#34d399e6;box-shadow:0 0 30px -4px #34d399b3,inset 0 1px #ffffff29}.play-btn.is-playing{border-color:#fb71858c;background:linear-gradient(180deg,#fb718542,#fb71851a),#150e11;box-shadow:0 0 22px -6px #fb71858c,inset 0 1px #ffffff1f;text-shadow:0 1px 8px rgba(251,113,133,.5)}.export button{font-weight:600;border-color:#8b7cff80;background:linear-gradient(180deg,#8b7cff4d,#8b7cff1f),#12101f;box-shadow:0 0 22px -8px #8b7cffb3,inset 0 1px #ffffff1f}.export button:hover:not(:disabled){border-color:#8b7cffe6;box-shadow:0 0 28px -6px #8b7cffd9,inset 0 1px #ffffff29}.toolbar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:center}.export{display:flex;gap:10px;align-items:center;margin-left:auto}.grid{display:flex;flex-direction:column;gap:16px}.track{position:relative;--track-color: #4f9bff;background:linear-gradient(180deg,#ffffff09,#fff0 32%),var(--panel-solid);border:1px solid var(--line-soft);border-left:4px solid var(--track-color);border-radius:16px;padding:14px;display:grid;grid-template-columns:320px 1fr 32px;gap:12px;box-shadow:0 18px 44px -22px #000c,0 0 28px -18px var(--track-color),inset 0 1px #ffffff0d;transition:box-shadow .2s ease,border-color .2s ease}.track:hover{border-color:#ffffff1f;box-shadow:0 18px 44px -22px #000c,0 0 34px -14px var(--track-color),inset 0 1px #ffffff0f}.track,.row{content-visibility:auto;contain-intrinsic-size:auto 320px}.row{contain-intrinsic-size:auto 40px}.track-meter{display:flex;align-items:center;justify-content:center}.track-meter canvas{width:10px;height:100%;border:1px solid #1e293b;border-radius:999px;background:#0f172a}.track-meta{display:flex;flex-direction:column;gap:10px;min-width:0;max-height:560px;overflow-y:auto;padding-right:4px;scrollbar-width:thin;scrollbar-color:transparent transparent}.track-meta:hover,.track-meta:focus-within{scrollbar-color:#334155 transparent}.track-meta::-webkit-scrollbar{width:6px}.track-meta::-webkit-scrollbar-track{background:transparent}.track-meta::-webkit-scrollbar-thumb{background:transparent;border-radius:999px}.track-meta:hover::-webkit-scrollbar-thumb,.track-meta:focus-within::-webkit-scrollbar-thumb{background:#334155}.track-meta>:is(.control-row,.knob-row,.control-grid-compact)+:is(.control-row,.knob-row,.control-grid-compact){margin-top:2px;padding-top:10px;border-top:1px solid #1f2430}.track-title{display:flex;align-items:center;gap:8px}.track-name-input{min-width:0;width:148px;background:#101722;color:#e8e8e8;border:1px solid #2a3240;border-radius:8px;padding:4px 8px;font-weight:600}.track-name-display{width:148px;padding:4px 8px;text-align:left;font-family:var(--font-display);font-weight:600;letter-spacing:.02em;background:transparent;border:1px solid transparent;color:#e8e8e8;border-radius:8px}.track-name-display:hover{border-color:#2a3240}.track-color-picker{position:relative}.track-color-current{width:18px;height:18px;padding:0;border-radius:9px;border:1px solid rgba(0,0,0,.55);box-shadow:0 0 8px #fff3}.track-palette{position:absolute;top:22px;left:0;display:grid;grid-template-columns:repeat(4,16px);gap:4px;padding:6px;background:#101722;border:1px solid #2a3240;border-radius:8px;z-index:5}.track-color-swatch{width:16px;height:16px;padding:0;border-radius:8px;border:1px solid rgba(0,0,0,.45);box-shadow:0 0 6px #fff3}.track-color-swatch.selected{outline:2px solid #e2e8f0;outline-offset:1px}.track-title canvas{border:1px solid #1e293b;border-radius:6px;background:#0f172a;margin-left:auto}.badge{font-size:12px;padding:2px 6px;border-radius:8px;background:#2b2f36;color:var(--track-color);border:1px solid #3a4354}.track-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.solo-btn{padding:4px 10px;border-radius:999px;font-size:12px;line-height:1.1;background:#141a24;border:1px solid #334155;color:#cbd5e1}.solo-btn.active{background:#facc1524;border-color:#facc15;color:#fde68a}.solo-dim-label{font-size:11px;color:#8a94a8}.track-remove-btn{position:absolute;top:-12px;right:-12px;width:32px;height:32px;padding:0;border-radius:999px;line-height:1;font-size:16px;background:#171b23;border:1px solid #2d3748;z-index:3}.track-remove-btn:hover{border-color:#fb7185b3;color:var(--danger);box-shadow:0 0 16px -4px #fb718599}.inline{display:flex;gap:6px;align-items:center}.control-row{display:grid;grid-template-columns:60px 1fr auto;gap:8px;align-items:center}.control-col{display:flex;flex-direction:column;gap:10px}.control-grid-compact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.compact-control{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;color:#9aa0a6;font-size:12px}.compact-control span{white-space:nowrap}.compact-control select{width:110px;min-width:0}.plugin-section{margin-top:8px;padding-top:8px;border-top:1px solid #1f2430;display:flex;flex-direction:column;gap:8px}.plugin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font-size:12px;color:#9aa0a6}.plugin-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;flex:1;justify-items:stretch}.plugin-actions button{width:100%;padding:5px 8px;font-size:12px}.plugin-card{background:#ffffff06;border:1px solid var(--line-soft);border-radius:12px;padding:10px}.plugin-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.plugin-remove{font-size:12px;padding:4px 8px}.note-context-menu{position:fixed;z-index:30;display:flex;flex-direction:column;min-width:168px;gap:4px;padding:6px;background:#10141deb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 44px #0000008c}.note-context-menu button{width:100%;text-align:left;font-size:12px;padding:6px 8px;border-radius:8px}.note-context-menu button:disabled{opacity:.55;cursor:default}.velocity-drag-indicator{position:fixed;z-index:31;font-family:var(--font-mono);font-size:11px;color:#e2e8f0;background:#0f172aeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #334155;border-radius:8px;padding:3px 7px;pointer-events:none;white-space:nowrap}.knob-row{display:flex;gap:14px;align-items:flex-start}.knob-field{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:56px}.knob-label{font-size:11px;color:#9aa0a6;line-height:1}.knob-value-static{font-family:var(--font-mono);font-size:11px;color:#e2e8f0;min-width:36px}.knob-value{position:absolute;top:-18px;left:50%;transform:translate(-50%);font-size:11px;color:#e2e8f0;background:#0f172a;border:1px solid #334155;border-radius:6px;padding:2px 6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease}.knob-field:hover .knob-value,.knob-field:focus-within .knob-value{opacity:1}.roll-scroll{position:relative;overflow-x:auto;width:min(100%,698px);scrollbar-width:thin;scrollbar-color:transparent transparent;padding-bottom:2px}.roll-scroll:hover,.roll-scroll:focus-within{scrollbar-color:#3a4354 transparent}.roll-scroll::-webkit-scrollbar{height:6px}.roll-scroll::-webkit-scrollbar-track{background:transparent}.roll-scroll::-webkit-scrollbar-thumb{background:transparent;border-radius:999px}.roll-scroll:hover::-webkit-scrollbar-thumb,.roll-scroll:focus-within::-webkit-scrollbar-thumb{background:#3a4354}.roll{display:flex;flex-direction:column;gap:8px;width:max-content;min-width:100%;will-change:transform}.roll-carousel{display:flex;flex-direction:column;will-change:transform}.roll-carousel.is-transitioning{transition:transform .48s cubic-bezier(.42,0,.2,1)}.roll-pane{flex:0 0 auto;width:max-content;min-width:100%}.roll-carousel-viewport{display:inline-block;width:max-content;min-width:100%;overflow-y:hidden;overflow-x:visible}.row{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:center}.row-ruler{margin-bottom:2px}.roll-single{height:auto;justify-content:flex-start}.roll-single .row{flex:0 0 auto}.note-label{color:#9aa0a6;font-family:var(--font-mono);font-size:11px;text-align:right;width:52px;min-width:52px;height:100%;display:flex;align-items:center;justify-content:flex-end;position:relative;padding:0 6px 0 0;box-sizing:border-box}.steps{position:relative;z-index:1;display:grid;grid-auto-flow:column;grid-auto-columns:36px;width:max-content;min-width:100%;gap:4px}.steps-ruler{margin-bottom:2px}.ruler-cell{height:16px;font-family:var(--font-mono);font-size:11px;color:#8b93a3;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.ruler-cell.bar-start{color:#c9d1e1;font-weight:600}.cell{aspect-ratio:1 / 1;min-height:36px;background:linear-gradient(180deg,#ffffff0b,#fff0 55%),#141922;border-radius:7px;border:1px solid rgba(255,255,255,.06);box-shadow:inset 0 1px #ffffff0d;position:relative;padding:0}.cell:hover{border-color:#ffffff40}.steps .cell.beat{box-shadow:inset 2px 0 #94a3c480,inset 0 1px #ffffff0d}.steps-spacer{min-height:1px}.steps .cell{touch-action:none}.cell.on{background:linear-gradient(180deg,#5b93ff,#2f6bf0 70%);border-color:#93bbffb3;box-shadow:0 0 14px -2px #3b82f6cc,inset 0 1px #ffffff59}.cell.tail{background:linear-gradient(180deg,#ffffff24,#fff0 60%),color-mix(in srgb,var(--track-color) 45%,#0f1115);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--track-color) 35%,#1f2430)}.cell.fm.on{background:linear-gradient(180deg,#5b93ff,#2f6bf0 70%)}.cell.audio.on{background:linear-gradient(180deg,#4ade80,#16a34a 70%);border-color:#86efacb3;box-shadow:0 0 14px -2px #22c55ecc,inset 0 1px #ffffff59}.cell.drum.on{background:linear-gradient(180deg,#fbbf24,#d97706 70%);border-color:#fde047b3;box-shadow:0 0 14px -2px #f59e0bcc,inset 0 1px #ffffff59}.track .cell.on{background:linear-gradient(180deg,#ffffff52,#fff0 55%),var(--track-color);border-color:color-mix(in srgb,var(--track-color) 60%,white);box-shadow:0 0 16px -3px var(--track-color),inset 0 1px #fff6}.cell.active{border-color:#f5c542}.cell.play-active{border-color:#f5c542;box-shadow:inset 0 0 0 1px #f5c542cc,0 0 10px -4px #f5c542e6}@media(prefers-reduced-motion:reduce){.roll-carousel.is-transitioning{transition:none}}.cell .handle{position:absolute;right:2px;top:2px;bottom:2px;width:5px;border-radius:3px;background:#ffffff8c;cursor:ew-resize}.bpm{color:var(--text-dim);display:grid;grid-template-columns:auto 72px;align-items:center;gap:8px;font-family:var(--font-display);font-weight:600;letter-spacing:.08em;font-size:13px}.bpm input{font-family:var(--font-mono);font-weight:600;background:#ffffff0d;color:#fff;border:1px solid var(--line);border-radius:8px;padding:5px 8px}select{font:inherit;background:#ffffff0d;color:#fff;border:1px solid var(--line);padding:5px 8px;border-radius:8px}select option{background:#12161e}.knob{--p: .5;--arc: var(--track-color, var(--accent-2));position:relative;border-radius:50%;background:radial-gradient(circle at 50% 38%,#2b3648,#161d29 72%);border:1px solid rgba(255,255,255,.1);box-shadow:0 6px 16px -8px #000000e6,inset 0 1px #ffffff14;cursor:ns-resize;touch-action:none}.knob:before{content:"";position:absolute;inset:-6px;border-radius:50%;background:conic-gradient(from 225deg,var(--arc) 0deg calc(var(--p) * 270deg),rgba(255,255,255,.09) calc(var(--p) * 270deg) 270deg,transparent 270deg 360deg);-webkit-mask:radial-gradient(closest-side,transparent 76%,#000 77%);mask:radial-gradient(closest-side,transparent 76%,#000 77%);pointer-events:none}.knob:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.knob-indicator-rotor{position:absolute;inset:0}.knob-indicator{position:absolute;left:50%;top:5px;width:2px;height:42%;transform:translate(-50%);background:#e2e8f0;border-radius:999px}.knob-center{position:absolute;left:50%;top:50%;width:34%;height:34%;transform:translate(-50%,-50%);border-radius:50%;background:#111827;border:1px solid #475569}.knob-octave{width:48px;padding:4px;text-align:center}@media(max-width:900px){.track{grid-template-columns:1fr}.track-meter{display:none}}body{margin:0;background:#0f1115}
