@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans:"Geist Variable", "Geist", system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono Variable", "Geist Mono", ui-monospace, "SF Mono", monospace;--bg-base:#131313;--bg-surface:#1a1a1a;--bg-card:#1b1b1b;--bg-elevated:#262626;--bg-block:#262626;--bg-well:#121212;--border:#2e2e2e;--border-hover:#4a4a4a;--border-subtle:#ffffff0f;--text-primary:#ececea;--text-secondary:#b8b8b4;--text-muted:#8f8f8b;--text-faint:#6f6f6c;--text-disabled:#555;--accent:#ff6a13;--cap-source:#ff6a13;--cap-effect:#4a86e8;--cap-trigger:#e8e6df;--cap-modulation:#46c47a;--cap-visual:#8f8f8b;--color-source:#8a3a14;--color-effect:#2b4f8c;--color-shaper:#2b4f8c;--color-trigger:#4a4842;--color-modulation:#25683f;--color-visual:#3e3e3c;--radius-sm:4px;--radius:6px;--radius-md:10px;--text-xs:10px;--text-sm:11px;--text-base:12px;--text-md:13px;--text-lg:14px;--text-xl:15px;--input-bg:var(--bg-well);--input-border:var(--border);--input-border-hover:var(--border-hover);--input-color:var(--input-text,var(--text-primary));--input-radius:var(--radius-sm);--input-font-size:var(--text-base)}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;margin:0;padding:0}:focus:not(:focus-visible){outline:none}:focus-visible{outline:1px solid var(--text-secondary);outline-offset:1px}input,textarea{-webkit-user-select:text;user-select:text}html,body{overscroll-behavior-x:none}body{font-family:var(--font-sans);background:var(--bg-base);color:var(--text-secondary);min-height:100dvh;font-size:var(--text-lg);-webkit-font-smoothing:antialiased}.workspace,.stack-blocks,.palette-sidebar,.guide-dialog{-ms-overflow-style:none;scrollbar-width:none}.workspace::-webkit-scrollbar{display:none}.stack-blocks::-webkit-scrollbar{display:none}.palette-sidebar::-webkit-scrollbar{display:none}.guide-dialog::-webkit-scrollbar{display:none}.app{flex-direction:column;display:flex;position:fixed;inset:0}.app-header{background:var(--bg-surface);border-bottom:1px solid #000;flex-shrink:0;grid-template-columns:1fr auto 1fr;align-items:center;height:44px;padding:6px 16px;display:grid}.app-header-left{align-items:center;gap:8px;display:flex}.app-wordmark{color:var(--text-primary);letter-spacing:-.02em;font-size:15px;font-weight:600}.app-header-sep{background:#2a2a2a;width:1px;height:22px;margin:0 6px}.app-header-center{justify-content:center;align-items:center;display:flex}.app-header-right{justify-content:flex-end;align-items:center;gap:2px;display:flex}.patch-name-display{appearance:none;font:inherit;font-size:var(--text-md);color:var(--text-secondary);cursor:text;background:#202020;border:1px solid #0000;border-radius:5px;align-items:center;gap:6px;max-width:220px;padding:3px 8px;transition:border-color .12s,color .12s;display:flex}.patch-name-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.patch-name-pencil{color:var(--text-faint);flex:none}.patch-name-display:hover{color:var(--text-primary);border-color:var(--border)}.patch-name-input{background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);color:var(--input-color);font:inherit;font-size:var(--text-md);outline:none;width:160px;padding:3px 8px}.patch-name-input:focus{border-color:var(--border-hover)}.header-icon-btn{appearance:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;width:28px;height:28px;transition:color .12s,background .12s;display:flex}.header-icon-btn:hover{color:var(--text-primary);background:var(--bg-elevated)}.header-icon-btn--active,.header-icon-btn--active:hover{color:var(--bg-base);background:var(--text-primary)}.app-menu{position:relative}.app-menu-dropdown{z-index:100;background:#1d1d1d;border:0;border-radius:10px;min-width:220px;padding:6px;position:absolute;top:calc(100% + 8px);left:-8px;box-shadow:0 24px 60px #0009,0 0 0 1px #2a2a2a}.app-menu-item{appearance:none;color:var(--text-primary);font:inherit;font-size:var(--text-md);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;width:100%;min-height:34px;padding:0 10px;display:flex}.app-menu-item:hover{background:#ffffff0f}.app-menu-item>span{text-align:left;flex:1}.app-menu-item svg{color:var(--text-muted)}.app-menu-key{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint)}.app-menu-divider{background:#2a2a2a;height:1px;margin:5px 4px}.transport{align-items:center;gap:8px;display:flex}.transport-play{appearance:none;color:var(--text-primary);cursor:pointer;background:#2a2a2a;border:0;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s;display:flex}.transport-play:hover{background:#333}.transport-play--playing,.transport-play--playing:hover{background:var(--accent);color:var(--bg-base)}.transport-vol{width:120px}.transport-vol .number-drag--slider{flex-direction:row;align-items:center;gap:8px}.transport-vol .number-drag--slider .number-drag-readout{display:none}.transport-vol .number-drag--slider .number-drag-value{--block-cap:#d8d8d5;flex:1;height:18px;min-height:18px}.header-icon-btn:disabled{opacity:.35;cursor:default}.transport-rec{appearance:none;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.transport-rec:hover{color:#e24b4a;background:#232323}.transport-rec--active{color:#e24b4a;border-color:#e24b4a;animation:1s ease-in-out infinite rec-pulse}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.5}}.transport-rec-time{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:#e24b4a;min-width:28px}.transport-tap{appearance:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;font:inherit;font-size:var(--text-xs);letter-spacing:.05em;background:0 0;padding:2px 6px;transition:color .12s,border-color .12s}.transport-tap:hover{color:var(--text-primary);border-color:var(--border-hover)}.workspace-wrapper{flex-direction:column;flex:1;display:flex;overflow:hidden}.workspace-body{flex:1;min-height:0;display:flex;overflow:hidden}.workspace{flex:1;align-items:stretch;gap:12px;min-height:0;padding:16px 20px;display:flex;overflow-x:auto}.workspace-add-zone{appearance:none;color:inherit;font:inherit;border-radius:var(--radius-md);cursor:pointer;background:0 0;border:1px dashed #2a2a2a;justify-content:center;align-self:stretch;align-items:center;width:220px;min-width:220px;min-height:60px;padding:0;transition:border-color .15s,color .15s,background .15s;display:flex}.workspace-add-zone-label{color:var(--text-disabled);font-size:var(--text-md)}.workspace-add-zone:hover{border-color:#444}.workspace-add-zone:hover .workspace-add-zone-label{color:#888}.workspace-add-zone--over{background:#6ab04c0f;border-color:#6ab04c}.workspace-add-zone--over .workspace-add-zone-label{color:#6ab04c}.palette-spacer{border-radius:8px;justify-content:center;align-items:center;transition:height .2s,opacity .15s,margin .2s;display:flex;overflow:hidden}.palette-spacer[data-category]{background:var(--bg-well);margin-bottom:8px;box-shadow:inset 0 0 0 1px #2c2c2c}.palette-spacer-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap}.drag-slot{background:var(--bg-well);border-radius:8px;box-shadow:inset 0 0 0 1px #2c2c2c}.drag-slot>*{visibility:hidden}.palette-chip.drag-slot{background:var(--bg-well)}.sortable-stack.drag-slot{border-radius:12px}.sortable-stack{width:240px;min-width:240px;max-height:100%}.stack{background:var(--bg-card);border:0;border-radius:12px;flex-direction:column;width:100%;max-height:100%;transition:opacity .2s;display:flex;position:relative}.stack--muted{opacity:.6}.stack--dimmed{opacity:.5}.stack-header{align-items:center;gap:8px;padding:10px 10px 4px 12px;display:flex}.stack-name{font-size:var(--text-lg);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;white-space:nowrap;flex:1;gap:6px;width:100%;min-width:0;font-weight:600;overflow:hidden}.stack-controls{gap:4px;display:flex}.stack-btn{appearance:none;border:1px solid var(--border);color:var(--text-muted);font:inherit;font-size:var(--text-sm);border-radius:var(--radius-sm);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;transition:all .15s;display:flex}.stack-btn:hover{color:var(--text-secondary);border-color:#444}.stack-btn--active{color:var(--text-primary);background:#2a2a2a;border-color:#444}.stack-btn--danger{color:#f55;background:#ff55551a;border-color:#633}.stack-btn--delete{color:var(--text-faint);opacity:0;transition:opacity .15s}.stack:hover .stack-btn--delete,.stack-btn--delete:focus-visible{opacity:1}.stack-btn--delete:hover{color:#c66}.stack-delete-modal{font-size:var(--text-base);color:var(--text-muted);background:#ff55550d;border-bottom:1px solid #1e1e1e;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.stack-delete-actions{gap:4px;display:flex}.stack-blocks{flex-direction:column;flex:1;gap:8px;min-height:0;padding:8px;display:flex;overflow-y:auto}.block{--block-accent:var(--text-primary);--block-cap:var(--text-muted);background:var(--bg-block);border:0;border-radius:8px;width:100%;overflow:hidden;box-shadow:0 1px #0a0a0a,0 1px 3px #00000059}.block[data-category=source]{--block-cap:var(--cap-source)}.block[data-category=effect],.block[data-category=shaper]{--block-cap:var(--cap-effect)}.block[data-category=trigger]{--block-cap:var(--cap-trigger)}.block[data-category=modulation]{--block-cap:var(--cap-modulation)}.block[data-category=visual]{--block-cap:var(--cap-visual)}.block-header{align-items:center;gap:6px;padding:8px 8px 4px 10px;display:flex}.block-params{background:0 0}.block-handle{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;flex:1 0 auto;align-items:center;gap:6px;min-width:0;display:flex}.block-handle:active{cursor:grabbing}.block-drag-handle{color:var(--text-faint);opacity:0;font-size:var(--text-sm);line-height:1;transition:color .15s}.block:hover .block-drag-handle{opacity:.8}.block .block-remove{opacity:0}.block:hover .block-remove,.block .block-remove:focus-visible{opacity:.8}@media (hover:none){.block-drag-handle,.block .block-remove,.stack-btn--delete{opacity:.6}}.block-type{color:var(--text-primary);font-size:var(--text-lg);flex:1;align-items:center;gap:8px;font-weight:500;display:flex}.block-type:before{content:"";background:var(--block-cap);border-radius:50%;flex:none;width:11px;height:11px;box-shadow:inset 0 0 0 3px #00000047}.block-remove{appearance:none;color:var(--text-faint);opacity:.8;font:inherit;font-size:var(--text-xl);cursor:pointer;background:0 0;border:none;padding:0 2px;line-height:1;transition:color .15s}.block-remove:hover{opacity:1}.block-params{flex-direction:column;gap:8px;padding:6px 10px 12px;display:flex}.param-row{align-items:center;gap:4px;display:flex}.param-row>.number-drag,.param-row>.dropdown,.param-row>.text-param{flex:1}.param-row--pick-target{cursor:pointer;border-radius:var(--radius);border:1px solid #6ab04c4d;margin:-1px;animation:1s ease-in-out infinite pulse-target}.param-row--pick-target:hover{background:#6ab04c1a;border-color:#6ab04c;animation:none}@keyframes pulse-target{0%,to{border-color:#6ab04c33}50%{border-color:#6ab04c80}}.block-target-btn{appearance:none;border:1px solid var(--border);background:var(--bg-card);min-width:0;color:var(--text-faint);font:inherit;font-size:var(--text-sm);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:8px;flex-shrink:1;max-width:120px;margin-left:auto;margin-right:2px;padding:1px 6px;transition:all .15s;overflow:hidden}.block-target-btn:hover{color:#6ab04c;border-color:#4a6}.block-target-btn--active{color:#6ab04c;background:#6ab04c26;border-color:#6ab04c}.block-target-btn--connected{color:#6ab04c;border-color:#3a6a2c}.block-disconnect-btn{appearance:none;color:var(--text-disabled);font-size:var(--text-lg);cursor:pointer;background:0 0;border:none;padding:0 2px;line-height:1}.block-disconnect-btn:hover{color:#f55}.block--pick-target{outline-offset:-1px;cursor:pointer;outline:1px dashed #6ab04c}.block--inactive>:not(.block-header):not(.block-note){opacity:.45}.block-note{font-size:var(--text-sm);color:var(--text-muted);background:var(--bg-card);padding:4px 8px}.number-drag{justify-content:space-between;align-items:center;gap:8px;display:flex}.mod-meter{align-items:center;gap:6px;margin-top:4px;display:flex}.mod-meter-track{background:var(--input-bg,#ffffff14);border-radius:2px;flex:1;height:4px;overflow:hidden}.mod-meter-fill{background:var(--cap-modulation);transform-origin:0;will-change:transform;border-radius:2px;width:100%;height:100%}.mod-meter-value{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--cap-modulation);font-variant-numeric:tabular-nums;text-align:right;min-width:38px}.number-drag-label{font-size:var(--text-base);color:var(--text-muted)}.number-drag-value{font-family:var(--font-mono);font-size:var(--input-font-size);color:var(--input-color);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);cursor:ns-resize;-webkit-user-select:none;user-select:none;touch-action:none;text-align:right;min-width:40px;padding:1px 4px;transition:background .1s}.number-drag-value:hover{border-color:var(--input-border-hover)}.number-drag-value--live{cursor:default;color:var(--cap-modulation);font-variant-numeric:tabular-nums}.param-driven{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--text-muted);text-align:right}.number-drag--readonly .number-drag-label{color:var(--cap-modulation)}.number-drag-input{font:inherit;font-family:var(--font-mono);font-size:var(--input-font-size);color:var(--input-color);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);text-align:right;outline:none;width:60px;padding:1px 4px}.dropdown{justify-content:space-between;align-items:center;gap:8px;display:flex}.dropdown-label{font-size:var(--text-base);color:var(--text-muted)}.dropdown-select{font:inherit;font-size:var(--input-font-size);color:var(--input-color);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);cursor:pointer;outline:none;padding:2px 4px}.dropdown-select:hover{border-color:var(--input-border-hover)}.text-param{flex-direction:column;gap:3px;width:100%;display:flex}.text-param-label{font-size:var(--text-base);color:var(--text-muted)}.text-param-input{font:inherit;font-family:var(--font-mono);font-size:var(--input-font-size);color:var(--input-color);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);outline:none;width:100%;padding:3px 6px}.text-param-input:focus{border-color:var(--input-border-hover)}.text-param-input::placeholder{color:#444}.local-mod-badge{font-size:var(--text-xs);color:#c8f;white-space:nowrap;background:#64328c26;border:1px solid #64328c4d;border-radius:8px;flex-shrink:0;padding:1px 5px}.palette-sidebar{background:var(--bg-base);border-left:1px solid #222;flex-direction:column;flex-shrink:0;width:230px;min-width:230px;display:flex;overflow-y:auto}.palette-head{align-items:center;padding:14px 10px 4px 16px;display:flex}.palette-title{color:var(--text-primary);font-weight:600;font-size:var(--text-lg);flex:1}.palette-hide{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.palette-hide:hover{color:var(--text-primary);background:#ffffff0d}.palette-target{color:var(--text-secondary);font-size:var(--text-sm);background:#ffffff0d;border-radius:6px;margin:6px 12px 0;padding:6px 10px}.palette-sidebar-inner{flex-direction:column;gap:10px;padding:8px 12px 16px;display:flex}.palette-help{color:var(--text-faint);font-size:var(--text-sm);margin:4px 4px 0;line-height:1.5}.palette-group{flex-direction:column;gap:3px;display:flex}.palette-group-label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:.1em;padding:6px 4px 2px}.palette-group-chips{flex-direction:column;gap:4px;display:flex}.palette-chip{min-height:34px;color:inherit;font:inherit;text-align:left;background:#222;border:0;align-items:center;gap:8px;padding:0 10px;display:flex}.palette-chip:hover{background:#2a2a2a}.palette-chip .block-type{font-size:var(--text-base)}.palette-chip-hint{color:var(--text-faint);font-size:var(--text-sm);white-space:nowrap}.palette-chip{cursor:grab;-webkit-user-select:none;user-select:none}.palette-chip:active{cursor:grabbing}.stack-empty{font-size:var(--text-base);color:#444;text-align:center;border-radius:var(--radius);border:1px dashed #2a2a2a;margin:6px;padding:20px 10px}.viz-block{flex-direction:column;gap:4px;min-height:20px;padding:4px;display:flex}.viz-empty{color:#444;font-size:var(--text-sm);text-align:center;padding:6px}.viz-canvas{border-radius:var(--radius-sm);width:100%;display:block}.viz-step-grid{gap:2px;display:flex}.viz-cell{background:var(--bg-card);border-radius:2px;flex:1;height:12px;transition:background 50ms}.viz-cell--hit,.viz-cell--note{background:var(--color-source)}.viz-cell--rest{background:var(--bg-card)}.viz-cell--hold{opacity:.6;background:#2a5a3a}.viz-cell--active{background:#666!important}.viz-cell--fired{background:#5cd67a!important}.viz-keyboard{border-radius:var(--radius-sm);gap:1px;height:32px;display:flex;overflow:hidden}.viz-key{border-radius:2px;flex:1;transition:background 50ms}.viz-key--white{background:#2a2a2a}.viz-key--black{background:#151515;flex:.7}.viz-key--active{background:#5cd67a!important}.stack-footer{flex-direction:column;gap:8px;padding:4px 10px 12px;display:flex}.stack-footer .stack-output{gap:8px;display:flex}.stack-footer .stack-output .number-drag{flex:1}.stack-header .stack-btn{font-family:var(--font-mono);font-size:var(--text-xs);background:#ffffff0d;border:0;border-radius:5px}.stack-btn--mute.stack-btn--active{background:var(--text-primary);color:var(--bg-base)}.stack-btn--solo.stack-btn--active{color:var(--bg-base);background:#f0c419}.stack-lights{flex:none;grid-template-columns:repeat(8,3px);gap:2px;height:9px;display:grid}.stack-light{background:#2c2c2c;border-radius:1px}.stack-light--on{background:var(--text-primary)}.stack-add{min-height:36px;color:var(--text-muted);font:inherit;font-size:var(--text-base);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}.stack-add:hover{color:var(--text-primary);background:#ffffff0a}.stack-add--target{color:var(--text-primary);box-shadow:inset 0 0 0 1px var(--border-hover);background:#ffffff0f}.stack-drag-handle{cursor:grab;color:var(--border);font-size:var(--text-sm);-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;line-height:1;transition:color .15s}.stack-drag-handle:hover{color:var(--text-faint)}.stack-drag-handle:active{cursor:grabbing}.stack-name-input{font:inherit;font-size:var(--text-md);color:var(--text-primary);background:var(--bg-elevated);border:1px solid #444;border-radius:2px;outline:none;width:100%;padding:1px 4px;font-weight:500}.block-overlay{pointer-events:none;cursor:grabbing;border-radius:8px;width:260px;transform:rotate(2.5deg);box-shadow:0 18px 34px #0009,0 0 0 1px #3a3a3a}.block-overlay .block{box-shadow:none}.palette-chip-overlay{pointer-events:none;cursor:grabbing;background:#2a2a2a;width:210px;transform:rotate(3deg);box-shadow:0 16px 30px #0009,0 0 0 1px #3a3a3a}@media (prefers-reduced-motion:reduce){.block-overlay,.palette-chip-overlay{transform:none}}.guide-dialog{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:calc(100vw - 40px);max-width:900px;height:fit-content;max-height:calc(100dvh - 80px);margin:auto;padding:0;position:fixed;inset:0;overflow-y:auto}.guide-dialog::backdrop{background:#000000bf}.guide-container{padding:24px 20px 60px;position:relative}.guide-close-container{float:right;z-index:10;position:sticky;top:0}.guide-close{font:inherit;font-size:var(--text-md);color:var(--text-muted);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);cursor:pointer;z-index:10;justify-content:center;align-items:center;width:28px;height:28px;margin:8px 8px 0 0;display:flex}.guide-close:hover{color:var(--text-primary);border-color:var(--border)}.guide-hero{text-align:center;margin-bottom:40px;padding-top:8px}.guide-hero h1{font-size:var(--text-xl);letter-spacing:.15em;color:var(--text-primary);margin-bottom:8px;font-weight:500}.guide-subtitle{font-size:var(--text-md);color:var(--text-muted);margin:0 auto 20px}.guide-stack-diagram{flex-direction:column;align-items:center;gap:2px;max-width:220px;margin:0 auto;display:flex}.guide-layer{border-radius:var(--radius);width:100%;font-size:var(--text-sm);text-align:center;letter-spacing:.03em;padding:6px 10px;font-weight:600}.guide-layer--trigger{background:var(--color-trigger);color:#fff}.guide-layer--source{background:var(--color-source);color:#fff}.guide-layer--effect{background:var(--color-effect);color:#fff}.guide-layer--output{background:var(--bg-card);color:var(--text-muted);border:1px solid var(--border-subtle)}.guide-section{margin-bottom:32px}.guide-section-header{border-bottom:1px solid var(--border-subtle);align-items:center;gap:8px;margin-bottom:10px;padding-bottom:6px;display:flex}.guide-section-dot{border-radius:2px;flex-shrink:0;width:8px;height:8px}.guide-section-dot[data-category=source]{background:var(--color-source)}.guide-section-dot[data-category=effect]{background:var(--color-effect)}.guide-section-dot[data-category=shaper]{background:var(--color-shaper)}.guide-section-dot[data-category=trigger]{background:var(--color-trigger)}.guide-section-dot[data-category=modulation]{background:var(--color-modulation)}.guide-section-dot[data-category=visual]{background:var(--color-visual)}.guide-section-dot[data-category=neutral]{background:var(--text-secondary)}.guide-range-hint{color:var(--text-faint);font-weight:400}.guide-section-header h2{font-size:var(--text-lg);letter-spacing:.02em;font-weight:600}.guide-section-desc{font-size:var(--text-base);color:var(--text-faint);margin-left:auto}.guide-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;display:grid}.guide-card{background:var(--bg-card);border:1px solid var(--gc-bg,var(--border-subtle));border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.guide-card--source{--gc-bg:var(--color-source)}.guide-card--effect{--gc-bg:var(--color-effect)}.guide-card--shaper{--gc-bg:var(--color-shaper)}.guide-card--trigger{--gc-bg:var(--color-trigger)}.guide-card--modulation{--gc-bg:var(--color-modulation)}.guide-card--visual{--gc-bg:var(--color-visual)}.guide-card-header{background:var(--gc-bg);flex-direction:column;gap:4px;padding:8px;display:flex}.guide-card-name{font-size:var(--text-base);color:#fff;font-weight:600}.guide-card-oneliner{font-size:var(--text-sm);color:#fff9}.guide-card-body{font-size:var(--text-base);color:var(--text-secondary);padding:8px 10px;line-height:1.6}.guide-params{flex-direction:column;gap:2px;margin-top:auto;padding:0 10px 8px;display:flex}.guide-param{font-size:var(--text-base);align-items:center;gap:6px;padding:3px 0;display:flex}.guide-param-name{color:var(--text-secondary);min-width:50px;font-weight:600}.guide-param-range{color:var(--text-disabled);font-size:var(--text-sm);flex:1}.guide-param-type{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--text-disabled);background:#ffffff0a;border-radius:2px;padding:1px 4px;font-weight:600}.guide-keyboard-intro{font-size:var(--text-base);color:var(--text-secondary);text-align:center;margin:0 auto 12px}.guide-keyboard{flex-wrap:wrap;justify-content:center;gap:3px;margin:12px 0;display:flex}.guide-key{border-radius:var(--radius);width:36px;height:36px;font-size:var(--text-md);background:var(--bg-card);border:1px solid #ffffff14;flex-direction:column;justify-content:center;align-items:center;font-weight:700;display:flex}.guide-key:hover{background:#2a2a2a}.guide-key-label{color:var(--text-disabled);margin-top:1px;font-size:8px;font-weight:400}.guide-key--black{background:#111;border-color:#ffffff0d;height:32px}.guide-shortcuts-grid{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px;display:flex}.guide-shortcut{font-size:var(--text-base);color:var(--text-faint);align-items:center;gap:4px;display:flex}.guide-shortcut kbd{background:var(--bg-card);border-radius:var(--radius-sm);font-family:inherit;font-size:var(--text-sm);color:var(--text-muted);border:1px solid #ffffff14;padding:2px 5px}.guide-wiring-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.guide-wiring-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:10px 12px}.guide-wiring-card h3{font-size:var(--text-base);margin-bottom:4px;font-weight:600}.guide-wiring-card p{font-size:var(--text-base);color:var(--text-secondary);line-height:1.5}.guide-wiring-example{border-radius:var(--radius-sm);font-size:var(--text-base);color:var(--text-faint);background:#ffffff08;margin-top:8px;padding:6px 8px;line-height:1.6}.guide-wiring-example strong{color:var(--text-primary)}.guide-tips{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;display:grid}.guide-tip{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius);font-size:var(--text-base);color:var(--text-secondary);flex-direction:column;padding:10px 12px;line-height:1.5;display:flex}.guide-tip strong{color:var(--text-primary);font-size:var(--text-base);margin-bottom:4px;display:block}.guide-tip-desc{flex:1}.guide-tip-chain{flex-wrap:wrap;gap:3px;margin-top:8px;display:flex}.guide-tip-block{font-size:var(--text-xs);border-radius:var(--radius-sm);color:#fff;padding:2px 6px;font-weight:600}.guide-tip-block[data-category=source]{background:var(--color-source)}.guide-tip-block[data-category=effect]{background:var(--color-effect)}.guide-tip-block[data-category=shaper]{background:var(--color-shaper)}.guide-tip-block[data-category=trigger]{background:var(--color-trigger)}.guide-tip-block[data-category=modulation]{background:var(--color-modulation)}.guide-tip-block[data-category=visual]{background:var(--color-visual)}.guide-tip-add{font:inherit;font-size:var(--text-sm);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:0 0;align-self:flex-start;margin-top:8px;padding:3px 8px}.guide-tip-add:hover{color:var(--text-primary);border-color:var(--border-hover)}@media (width<=768px){.guide-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.guide-cards,.guide-wiring-grid{grid-template-columns:1fr}.guide-container{padding:16px 12px 40px}.guide-section-desc{display:none}}.tuner-block{flex-direction:column;gap:4px;padding:6px 8px;display:flex}.tuner-note{justify-content:center;align-items:baseline;gap:8px;display:flex}.tuner-note-name{color:var(--text-primary);font-size:20px;font-weight:700;font-family:var(--font-mono);letter-spacing:1px}.tuner-note-name.tuner-in-tune{color:#5cd67a}.tuner-note-name.tuner-silent{color:var(--text-muted);font-size:16px}.tuner-freq{font-size:var(--text-sm);color:var(--text-muted);font-family:var(--font-mono)}.tuner-gauge{background:var(--bg-block);border-radius:var(--radius-sm);height:12px;position:relative;overflow:hidden}.tuner-gauge-center{background:var(--text-muted);opacity:.4;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0;left:50%}.tuner-gauge-needle{background:var(--accent-primary);border-radius:2px;width:4px;margin-left:-2px;transition:left 80ms ease-out;position:absolute;top:1px;bottom:1px}.tuner-gauge-needle.tuner-in-tune{background:#5cd67a}.tuner-cents{color:var(--text-muted);font-size:8px;font-family:var(--font-mono);position:absolute;top:50%;right:4px;transform:translateY(-50%)}.error-boundary{background:var(--bg-base);color:var(--text-primary);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.error-boundary-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;gap:12px;max-width:440px;padding:24px;display:flex}.error-boundary-card h1{font-size:var(--text-xl);font-weight:600}.error-boundary-card p{font-size:var(--text-md);color:var(--text-secondary);line-height:1.5}.error-boundary-card pre{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);font-size:var(--text-sm);color:var(--text-muted);white-space:pre-wrap;word-break:break-word;max-height:120px;padding:8px 10px;overflow-x:auto}.error-boundary-actions{flex-wrap:wrap;gap:8px;display:flex}.error-boundary-actions button{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:inherit;font-size:var(--text-base);cursor:pointer;padding:6px 12px}.error-boundary-actions button:hover{border-color:var(--border-hover)}.app-toast{z-index:1000;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:var(--text-base);cursor:pointer;max-width:420px;padding:8px 14px;position:fixed;top:44px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #00000080}.app-toast--error{color:#e09090;border-color:#a34040}.app[data-mode=simple]{--text-xs:11px;--text-sm:12px;--text-base:13px;--text-md:14px;--text-lg:15px;--text-xl:17px;--input-font-size:13px}.app[data-mode=simple] .sortable-stack,.app[data-mode=simple] .workspace-add-zone{width:280px;min-width:280px}.app[data-mode=simple] .palette-sidebar{width:250px;min-width:250px}.app[data-mode=simple] .block-header{min-height:36px;padding:6px 10px}.app[data-mode=simple] .param-row{min-height:40px}.app[data-mode=simple] .number-drag-value,.app[data-mode=simple] .dropdown-select,.app[data-mode=simple] .text-param-input{min-height:32px;padding:4px 8px}.app[data-mode=simple] .number-drag:not(.number-drag--slider) .number-drag-value{justify-content:flex-end;align-items:center;min-width:56px;display:inline-flex}.app[data-mode=simple] .block-remove,.app[data-mode=simple] .block-disconnect-btn,.app[data-mode=simple] .block-target-btn{min-width:32px;min-height:32px}.app[data-mode=simple] .stack-btn{min-width:34px;min-height:34px}.app[data-mode=simple] .header-icon-btn{width:36px;height:36px}.app[data-mode=simple] .palette-chip{min-height:40px}@media (width<=1180px){.app-header{grid-template-columns:1fr auto;grid-template-areas:"left right""center center";row-gap:6px;height:auto;padding:6px 12px}.app-header-left{grid-area:left}.app-header-center{grid-area:center;justify-self:center}.app-header-right{grid-area:right}.workspace{scroll-snap-type:x proximity;gap:10px;padding:12px}.sortable-stack{scroll-snap-align:start}}.kb-keys-wrap{padding:6px 8px 8px}.kb-keys{touch-action:none;-webkit-user-select:none;user-select:none;height:72px;position:relative}.app[data-mode=simple] .kb-keys{height:110px}.kb-key{appearance:none;border-radius:0 0 var(--radius-sm) var(--radius-sm);cursor:pointer;font:inherit;-webkit-tap-highlight-color:transparent;border:1px solid #000;justify-content:center;align-items:flex-end;padding:0 0 4px;display:flex;position:absolute;top:0}.kb-key--white{color:#555;z-index:0;background:#d8d8d8;height:100%}.kb-key--black{color:#888;z-index:1;background:#1c1c1c;height:60%}.kb-key--white.kb-key--held{background:var(--color-trigger);color:#fff}.kb-key--black.kb-key--held{color:#fff;background:#c4973f}.kb-key-letter{font-size:var(--text-xs);pointer-events:none}.kb-keys--disabled .kb-key{cursor:default;opacity:.4}.kb-octave{align-items:center;gap:6px;margin-top:8px;display:flex}.kb-octave-btn{height:28px;color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-sm);cursor:pointer;background:#1a1a1a;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 9px;display:flex}.kb-octave-btn:disabled{opacity:.4;cursor:default}.kb-octave-btn kbd{color:var(--text-faint);font-family:inherit}.kb-octave-value{text-align:center;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary);flex:1}.kb-keys-hint{font-size:var(--text-sm);color:var(--text-muted);text-align:center;margin-top:6px}.stack-hint{border-radius:var(--radius);font-size:var(--text-sm);margin:0 8px 6px;padding:6px 8px;line-height:1.35;display:block}.stack-hint--silent{color:#e0b860;background:#d6a03c1a;border:1px solid #d6a03c59}.stack-hint--info{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted)}@keyframes block-pulse{0%{background:var(--accent);box-shadow:0 0 8px var(--accent)}to{background:var(--block-cap);box-shadow:inset 0 0 0 3px #00000047}}.block--pulse>.block-header .block-type:before{animation:.25s ease-out block-pulse}@media (prefers-reduced-motion:reduce){.block--pulse>.block-header .block-type:before{animation-duration:10ms}}.pe{flex-direction:column;gap:6px;padding:6px 8px 8px;display:flex}.pe-toolbar{font-size:var(--text-sm);color:var(--text-muted);align-items:center;gap:3px;display:flex}.pe-spacer{flex:1}.pe-count{white-space:nowrap;text-align:center;padding:0 2px}.pe-btn{appearance:none;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font:inherit;font-size:var(--text-sm);cursor:pointer;min-width:22px;height:20px}.pe-btn:disabled{opacity:.35;cursor:default}.pe-grid{touch-action:manipulation;gap:1px;display:grid}.pe-label{font-size:var(--text-xs);color:var(--text-faint);align-items:center;line-height:1;display:flex}.pe-label--hit{color:var(--text-muted);margin-top:3px}.pe-cell{appearance:none;cursor:pointer;background:#1e1e1e;border:none;border-radius:1px;min-width:0;height:9px;padding:0}.pe-cell--black{background:#171717}.pe-cell:hover{background:#2c2c2c}.pe-cell--held{background:#c4973f73}.pe-cell--on,.pe-cell--on:hover{background:var(--color-trigger);filter:brightness(1.5)}.pe-cell--above{box-shadow:inset 0 2px #c4973f}.pe-cell--below{box-shadow:inset 0 -2px #c4973f}.pe-cell--drum{border-radius:2px;height:14px;margin-top:3px}.pe-cell--static{cursor:default}.pe-cell.pe-col--now{outline-offset:-1px;outline:1px solid #ffffff8c}.pe-edit{appearance:none;border:1px dashed var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;align-self:flex-start;padding:3px 8px}.pe-edit:hover{color:var(--text-primary);border-color:var(--border-hover)}.app[data-mode=simple] .pe-cell{height:15px}.app[data-mode=simple] .pe-cell--drum{height:24px}.app[data-mode=simple] .pe-btn{min-width:28px;height:30px}.modal{width:min(560px,100vw - 32px);max-height:calc(100dvh - 48px);color:var(--text-primary);background:#1d1d1d;border:0;border-radius:14px;margin:auto;padding:22px 24px 24px;box-shadow:0 30px 80px #0009,0 0 0 1px #2a2a2a}.modal[open]{flex-direction:column;gap:16px;display:flex}.modal::backdrop{background:#060606a8}.modal--new{width:min(880px,100vw - 32px)}.modal--about{width:min(700px,100vw - 32px)}.modal-head{align-items:center;display:flex}.modal-title{letter-spacing:-.01em;flex:1;margin:0;font-size:18px;font-weight:600}.modal-close{width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.modal-close:hover{color:var(--text-primary);background:#2a2a2a}.modal-lead{color:var(--text-secondary);font-size:var(--text-lg);max-width:62ch;margin:0;line-height:1.55}.modal-foot{border-top:1px solid #262626;align-items:center;gap:12px;padding-top:14px;display:flex}.modal-note{color:var(--text-faint);font-size:var(--text-sm);flex:1}.modal-btn{height:34px;color:var(--text-primary);font:inherit;cursor:pointer;background:#2a2a2a;border:0;border-radius:7px;padding:0 14px}.modal-btn:hover{background:#333}.settings-rows{flex-direction:column;display:flex}.setting-row{border-top:1px solid #262626;align-items:center;gap:16px;padding:14px 0;display:flex}.setting-text{flex-direction:column;flex:1;gap:3px;display:flex}.setting-hint{color:var(--text-muted);font-size:var(--text-sm);line-height:1.4}.segmented{background:var(--bg-well);border:0;border-radius:8px;gap:2px;min-width:0;margin:0;padding:2px;display:flex}.segmented-btn{min-width:72px;height:30px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px}.segmented-btn--on{color:var(--text-primary);background:#2e2e2e}.switch{cursor:pointer;background:#333;border:0;border-radius:11px;flex:none;width:38px;height:22px;padding:0;transition:background .15s;position:relative}.switch-knob{background:var(--text-muted);border-radius:50%;width:16px;height:16px;transition:left .15s,background .15s;position:absolute;top:3px;left:3px}.switch--on{background:var(--text-primary)}.switch--on .switch-knob{background:var(--bg-base);left:19px}.settings-select{height:32px;color:var(--text-primary);font:inherit;background:#262626;border:0;border-radius:7px;padding:0 10px}.about-how{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.about-how-tile{background:#161616;border-radius:8px;flex-direction:column;gap:6px;padding:12px;display:flex}.about-how-title{align-items:center;gap:8px;font-weight:500;display:flex}.about-how-title:before{content:"";background:var(--cap-visual);border-radius:50%;width:10px;height:10px;box-shadow:inset 0 0 0 2px #00000047}.about-how-tile[data-category=trigger] .about-how-title:before{background:var(--cap-trigger)}.about-how-tile[data-category=source] .about-how-title:before{background:var(--cap-source)}.about-how-tile[data-category=effect] .about-how-title:before{background:var(--cap-effect)}.about-how-tile[data-category=modulation] .about-how-title:before{background:var(--cap-modulation)}.about-how-text{color:var(--text-muted);font-size:var(--text-sm);line-height:1.45}.about-keys{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 28px;margin:0;display:grid}.about-key{align-items:center;gap:10px;min-height:30px;display:flex}.about-key dt{min-width:80px}.about-key dd{color:var(--text-secondary);margin:0}.about-key kbd{font-family:var(--font-mono);font-size:var(--text-sm);white-space:pre;background:#262626;border-radius:5px;padding:2px 7px;display:inline-block}@media (width<=640px){.about-how,.about-keys{grid-template-columns:repeat(2,minmax(0,1fr))}}.idea-card--empty{background:0 0;border:1px dashed #3a3a3a}.idea-picture--empty{color:var(--text-faint);place-items:center;font-size:20px;display:grid}.jam-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.jam-choice{background:#161616;border-radius:10px;flex-direction:column;gap:8px;padding:14px;display:flex}.jam-choice-title{font-weight:500}.jam-choice-hint{color:var(--text-muted);font-size:var(--text-sm);line-height:1.45}.jam-choice .share-btn{margin-top:auto}@media (width<=520px){.jam-choices{grid-template-columns:1fr}}.share-dialog{color:var(--text-primary);background:#1d1d1d;border:0;border-radius:14px;width:min(520px,100vw - 32px);margin:auto;padding:0;box-shadow:0 30px 80px #0009,0 0 0 1px #2a2a2a}.share-dialog::backdrop{background:#060606a8}.share-body{flex-direction:column;gap:12px;padding:22px 24px 24px;display:flex}.share-title{font-size:var(--text-xl);margin:0;font-weight:600}.share-note{font-size:var(--text-sm);color:var(--text-muted);margin:0;line-height:1.4}.share-note--error{color:#ff8a80}.share-qr{width:220px;height:220px;image-rendering:pixelated;border-radius:var(--radius);background:#fff;align-self:center}.share-link-row{gap:6px;display:flex}.share-link{background:var(--bg-well);border:1px solid var(--border);min-width:0;color:var(--text-secondary);font:inherit;font-size:var(--text-sm);border-radius:7px;flex:1;padding:6px 8px}.share-btn{appearance:none;color:var(--text-primary);font:inherit;font-size:var(--text-base);cursor:pointer;background:#2a2a2a;border:1px solid #0000;border-radius:7px;padding:8px 14px}.share-btn:hover{border-color:var(--border-hover)}.share-close{align-self:flex-end}.idea-cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;display:grid}.idea-card{appearance:none;text-align:left;font:inherit;color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;flex-direction:column;gap:6px;padding:10px;transition:border-color .15s,transform .15s;display:flex}.idea-card:hover{border-color:var(--border-hover);transform:translateY(-1px)}.idea-card-title{font-size:var(--text-lg);font-weight:600}.idea-card-desc{font-size:var(--text-sm);color:var(--text-muted);line-height:1.35}.idea-picture{border-radius:var(--radius);background:#111;gap:6px;height:64px;padding:6px;display:flex}.idea-picture-stack{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.idea-picture-block{background:var(--text-disabled);border-radius:2px;flex:1;max-height:10px}.idea-picture-block[data-category=source]{background:var(--color-source)}.idea-picture-block[data-category=effect]{background:var(--color-effect)}.idea-picture-block[data-category=shaper]{background:var(--color-shaper)}.idea-picture-block[data-category=trigger]{background:var(--color-trigger)}.idea-picture-block[data-category=modulation]{background:var(--color-modulation)}.idea-picture-block[data-category=visual]{background:var(--color-visual)}.ideas-panel{flex:1;min-width:280px;max-width:760px;padding:4px 4px 16px;overflow-y:auto}.ideas-panel-title{font-size:var(--text-xl);margin:0 0 4px;font-weight:600}.ideas-panel-lead{font-size:var(--text-sm);color:var(--text-muted);margin:0 0 12px}.share-btn--primary{background:var(--text-primary);border-color:var(--text-primary);color:var(--bg-base);font-weight:500}.stack[style*=--owner]{border-color:var(--owner)}.stack-owner{text-overflow:ellipsis;white-space:nowrap;background:var(--owner,var(--bg-elevated));color:#111;max-width:90px;font-size:var(--text-xs);border-radius:8px;flex:none;padding:1px 7px;font-weight:600;overflow:hidden}.stack--readonly{opacity:.6}.stack--readonly .stack-blocks,.stack--readonly .stack-footer,.stack--readonly .stack-header button,.stack--readonly .stack-header input{pointer-events:none}.stack--mixable .stack-header .stack-btn--mute,.stack--mixable .stack-header .stack-btn--solo,.stack--mixable .stack-footer{pointer-events:auto}.jam-dialog .share-qr{width:180px;height:180px}.jam-code-row{align-items:baseline;gap:10px;display:flex}.jam-code{letter-spacing:6px;color:var(--text-primary);font-size:34px;font-weight:700}.jam-players{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:10px;display:flex}.jam-players-head{font-size:var(--text-sm);color:var(--text-muted);justify-content:space-between;align-items:center;gap:8px;display:flex}.jam-lock-all{cursor:pointer;align-items:center;gap:6px;display:flex}.jam-player{font-size:var(--text-md);align-items:center;gap:8px;display:flex}.jam-player--away{opacity:.45}.jam-player-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.jam-dot{background:var(--text-disabled);border-radius:50%;flex-shrink:0;width:10px;height:10px}.jam-end{color:#ff8a80;border-color:#c0392b;align-self:flex-start}.jam-bar{appearance:none;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);font:inherit;font-size:var(--text-sm);white-space:nowrap;cursor:pointer;border-radius:12px;align-items:center;gap:6px;margin-right:8px;padding:3px 10px;display:flex}.jam-bar--player{cursor:default}.jam-live{background:#e74c3c;border-radius:50%;width:8px;height:8px;animation:1.6s ease-in-out infinite jam-live}@keyframes jam-live{50%{opacity:.35}}.jam-locked{color:#e0b860}.jam-transport{font-size:var(--text-sm);color:var(--text-muted)}.jam-transport--playing{color:#6ad08a}.jam-transport-bpm{font-size:var(--text-sm);color:var(--text-faint);margin-left:10px}.jam-join{z-index:50;background:var(--bg-base);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.jam-join-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface);flex-direction:column;gap:12px;width:min(380px,100%);padding:22px;display:flex}.jam-field{font-size:var(--text-sm);color:var(--text-muted);flex-direction:column;gap:4px;display:flex}.jam-code-input{letter-spacing:6px;text-transform:uppercase;font-size:22px}@media (prefers-reduced-motion:reduce){.jam-live{animation:none}}.jam-address{letter-spacing:1px;color:var(--text-primary);text-align:center;-webkit-user-select:all;user-select:all;padding:8px 0;font-size:28px;font-weight:700}.block--pick-target:focus-visible,.param-row--pick-target:focus-visible{outline-offset:-2px;outline:2px solid #6ab04c}.lang-picker{appearance:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;margin-right:6px;padding:3px 8px}.lang-picker:hover{color:var(--text-primary)}.number-drag--slider{flex-direction:column;align-items:stretch;gap:5px}.number-drag--slider .number-drag-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);justify-content:space-between;display:flex}.number-drag-readout{color:var(--text-primary);text-transform:none}.number-drag--slider .number-drag-value{background-color:var(--bg-well);max-width:none;height:22px;min-height:22px;box-shadow:inset 0 0 0 1px var(--border);cursor:pointer;touch-action:pan-y;border:0;border-radius:6px;padding:0;display:block}.number-drag--slider .number-drag-value[style*=--fill]{background-image:linear-gradient(to right, var(--block-cap,var(--text-secondary)) calc(var(--fill) * 100%), transparent calc(var(--fill) * 100%))}.number-drag--slider .number-drag-value:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.number-drag--slider .number-drag-value--live{cursor:default}.jam-room-code{letter-spacing:10px;font-size:44px}.sound-screen{background:#0d0d0d;border-radius:5px;height:42px;position:relative;overflow:hidden}.sound-screen svg{fill:none;width:100%;height:100%;position:absolute;inset:0}.sound-screen-wave{stroke:#d8d8d5;stroke-width:1.6px;vector-effect:non-scaling-stroke;opacity:.85}.sound-screen-env{stroke:var(--block-cap);stroke-width:1.6px;vector-effect:non-scaling-stroke}.sound-screen-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);background:#0d0d0dd9;border-radius:3px;padding:1px 4px;font-size:9px;position:absolute;top:3px;left:4px}.shape-picker{background:#0d0d0d;border:0;border-radius:6px;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;min-width:0;margin:0;padding:2px;display:grid}.shape-btn{height:32px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;display:grid}.shape-btn:hover{color:var(--text-secondary)}.shape-btn--on,.shape-btn--on:hover{color:var(--text-primary);background:#2e2e2e}.app[data-mode=simple] .shape-btn{height:38px}.rate-tag{height:24px;color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-sm);cursor:pointer;background:#1a1a1a;border:0;border-radius:6px;padding:0 8px}.rate-tag:hover{background:#333}.block-more{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#5a5a57;align-items:center;gap:8px;margin-top:4px;font-size:9px;display:flex}.block-more:after{content:"";background:#333;flex:1;height:1px}.block-more-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;display:grid}.block-more-grid .number-drag--slider .number-drag-value{height:18px;min-height:18px}:is(.block-more-grid .param-row:has(.text-param),.block-more-grid .param-row:has(.dropdown)){grid-column:span 2}.first-tip{z-index:50;background:var(--text-primary);color:var(--bg-base);border-radius:10px;flex-direction:column;gap:6px;padding:12px 14px;animation:.2s ease-out first-tip-in;display:flex;position:fixed;box-shadow:0 14px 34px #0000008c}@keyframes first-tip-in{0%{opacity:0;transform:translateY(4px)}}.first-tip:before{content:"";background:var(--text-primary);width:12px;height:12px;position:absolute;transform:rotate(45deg)}.first-tip--below:before{top:-5px;left:34px}.first-tip--right:before{top:18px;left:-5px}.first-tip--left:before{top:18px;right:-5px}.first-tip-head{align-items:center;gap:8px;display:flex}.first-tip-num{background:var(--accent);width:20px;height:20px;font-family:var(--font-mono);font-size:var(--text-sm);border-radius:50%;place-items:center;display:grid}.first-tip-title{font-weight:600}.first-tip-text{font-size:var(--text-base);color:#3a3a38;line-height:1.45}.first-tip-foot{justify-content:space-between;align-items:center;padding-top:2px;display:flex}.first-tip-count{font-family:var(--font-mono);font-size:var(--text-xs);color:#6f6f6c}.first-tip-btn{background:var(--bg-base);height:26px;color:var(--text-primary);font:inherit;font-size:var(--text-sm);cursor:pointer;border:0;border-radius:6px;padding:0 10px}.tips-play .transport-play{box-shadow:0 0 0 2px var(--bg-surface), 0 0 0 4px var(--accent)}@media (prefers-reduced-motion:reduce){.first-tip{animation:none}}.now-line{min-width:0;max-width:340px;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);white-space:nowrap;align-items:center;gap:6px;margin-right:8px;display:flex;overflow:hidden}.now-line>span:last-child{text-overflow:ellipsis;overflow:hidden}.now-line b{color:var(--text-primary);font-weight:500}.now-dot{background:#e0b860;border-radius:50%;flex:none;width:7px;height:7px}.phone-tabs,.phone-footer,.palette-backdrop{display:none}@media (width<=600px){.app-header{align-items:center;gap:8px;height:52px;padding:0 8px;display:flex}.app-header-left{flex:1;min-width:0}.patch-name-display,.patch-name-input,.now-line,.app-header-sep,.app-header-right>.header-icon-btn:last-child,.transport .transport-rec,.transport .transport-rec-time,.transport .transport-tap,.transport .transport-vol,.transport>.header-icon-btn{display:none}.transport-play{width:40px;height:40px}.phone-tabs{scrollbar-width:none;flex-shrink:0;gap:6px;padding:10px 12px 2px;display:flex;overflow-x:auto}.phone-tabs::-webkit-scrollbar{display:none}.phone-tab{height:34px;color:var(--text-secondary);font:inherit;cursor:pointer;background:#1f1f1f;border:0;border-radius:17px;flex:none;padding:0 14px;font-weight:500}.phone-tab--on{background:var(--text-primary);color:var(--bg-base)}.phone-tab--add{width:34px;color:var(--text-muted);background:0 0;padding:0;font-size:18px}.workspace{scroll-snap-type:x mandatory;gap:12px;padding:10px 12px}.sortable-stack,.app[data-mode=simple] .sortable-stack{scroll-snap-align:start;width:calc(100vw - 24px);min-width:calc(100vw - 24px)}.workspace-add-zone,.app[data-mode=simple] .workspace-add-zone,.stack-add{display:none}.phone-footer{padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--bg-base);border-top:1px solid #222;flex-shrink:0;gap:8px;display:flex}.phone-add{background:var(--text-primary);height:48px;color:var(--bg-base);font:inherit;cursor:pointer;border:0;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:8px;font-weight:500;display:flex}.phone-undo{width:48px;height:48px;color:var(--text-secondary);cursor:pointer;background:#1f1f1f;border:0;border-radius:10px;place-items:center;display:grid}.phone-undo:disabled{opacity:.4}.workspace{overscroll-behavior-x:contain}.palette-sidebar,.palette-backdrop{transition:transform .2s,opacity .2s}.is-dragging .palette-sidebar{pointer-events:none;transform:translateY(105%)}.is-dragging .palette-backdrop{opacity:0;pointer-events:none}.is-dragging .workspace{scroll-snap-type:none}.palette-backdrop{z-index:39;background:#08080899;display:block;position:fixed;inset:0}.palette-sidebar,.app[data-mode=simple] .palette-sidebar{z-index:40;width:auto;min-width:0;max-height:70dvh;padding-bottom:env(safe-area-inset-bottom);background:#1d1d1d;border:0;border-radius:18px 18px 0 0;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -20px 50px #00000080}.palette-head:before{content:"";background:#3a3a3a;border-radius:2px;width:38px;height:4px;margin-left:-19px;position:absolute;top:8px;left:50%}.palette-head{padding-top:22px;position:relative}.palette-hide svg{transform:rotate(90deg)}.palette-group-chips{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.palette-chip,.app[data-mode=simple] .palette-chip{min-height:46px}.palette-chip-hint,.palette-help{display:none}.about-how,.about-keys{grid-template-columns:1fr}.first-tip{max-width:calc(100vw - 24px)}}.code-input{width:max-content;position:relative}.code-input-field{opacity:0;cursor:text;border:0;width:100%;font-size:16px;position:absolute;inset:0}.code-input-boxes{pointer-events:none;gap:6px;display:flex}.code-input-box{background:var(--bg-well);border:1px solid var(--border);width:44px;height:50px;font-family:var(--font-mono);color:var(--text-primary);border-radius:8px;place-items:center;font-size:22px;display:grid}.code-input-box--on{border-color:var(--text-primary)}@media (width<=600px){.jam-transport,.jam-transport-bpm{display:none}.jam-bar{min-width:0;max-width:150px;margin-right:0;padding:3px 4px 3px 8px}.jam-bar-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.jam-bar .share-btn{flex:none;padding:4px 8px}.jam-locked{display:none}}.others-fold{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:1px dashed #2c2c2c;border-radius:12px;flex-direction:column;flex:0 0 44px;align-self:stretch;align-items:center;gap:10px;padding:14px 0;display:flex}.others-fold:hover{color:var(--text-primary);border-color:var(--border-hover)}.others-fold-dots{flex-direction:column;gap:4px;display:flex}.others-fold-dot{border-radius:50%;width:10px;height:10px}.others-fold-label{writing-mode:vertical-rl;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;transform:rotate(180deg)}@media (width<=600px){.others-fold{display:none}.phone-tab{align-items:center;gap:6px;display:flex}.phone-tab--other{background:0 0;box-shadow:inset 0 0 0 1px #2c2c2c}.phone-tab--other.phone-tab--on{color:var(--text-primary);background:#2e2e2e}.phone-tab-dot{border-radius:50%;width:8px;height:8px}.phone-tab--others{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;background:0 0;box-shadow:inset 0 0 0 1px #2c2c2c}.phone-tab--others-open{color:var(--text-primary)}}
