*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{color:#ece7df;background:#020303;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}.app-shell{background:#020303;width:100%;height:100%;position:relative;overflow:hidden}.viewport-band{overscroll-behavior:none;min-width:0;height:100%;position:absolute;inset:0}:-webkit-any(.app-shell:fullscreen,.app-shell:-webkit-full-screen,.viewport-band:fullscreen,.viewport-band:-webkit-full-screen){background:#020303;width:100vw;height:100vh}:is(.app-shell:fullscreen,.app-shell:fullscreen,.viewport-band:fullscreen,.viewport-band:fullscreen){background:#020303;width:100vw;height:100vh}:-webkit-any(.app-shell:fullscreen.cursor-idle,.app-shell:-webkit-full-screen.cursor-idle,.app-shell:fullscreen.cursor-idle *,.app-shell:-webkit-full-screen.cursor-idle *){cursor:none}:is(.app-shell:fullscreen.cursor-idle,.app-shell:fullscreen.cursor-idle,.app-shell:fullscreen.cursor-idle *,.app-shell:fullscreen.cursor-idle *){cursor:none}:-webkit-any(.app-shell:fullscreen .viewport-stats,.app-shell:-webkit-full-screen .viewport-stats,.viewport-band:fullscreen .viewport-stats,.viewport-band:-webkit-full-screen .viewport-stats,.app-shell:fullscreen .control-panel,.app-shell:-webkit-full-screen .control-panel,.app-shell:fullscreen .load-error,.app-shell:-webkit-full-screen .load-error,.viewport-band:fullscreen .load-error,.viewport-band:-webkit-full-screen .load-error){display:none}:is(.app-shell:fullscreen .viewport-stats,.app-shell:fullscreen .viewport-stats,.viewport-band:fullscreen .viewport-stats,.viewport-band:fullscreen .viewport-stats,.app-shell:fullscreen .control-panel,.app-shell:fullscreen .control-panel,.app-shell:fullscreen .load-error,.app-shell:fullscreen .load-error,.viewport-band:fullscreen .load-error,.viewport-band:fullscreen .load-error){display:none}.simulation-canvas{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;overscroll-behavior:none;background:#020303;border:0;border-radius:0;width:100%;height:100%;display:block}.simulation-canvas.is-tumbling{cursor:grabbing}.simulation-canvas.is-panning{cursor:move}.load-error{color:#ffd8bc;background:#1e0703db;border:1px solid #ff9a7073;border-radius:6px;max-width:520px;padding:10px 12px;font-size:13px;position:absolute;bottom:16px;left:16px}.viewport-stats{z-index:2;color:#ece7df;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;background:#040708b3;border:1px solid #ffffff21;border-radius:6px;gap:4px;min-width:118px;padding:8px 10px;display:grid;position:absolute;top:14px;left:14px}.viewport-stats div{grid-template-columns:42px minmax(0,1fr);align-items:baseline;gap:9px;display:grid}.viewport-stats span{color:#9fb4b3;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px}.viewport-stats strong{color:#f5d996;font-variant-numeric:tabular-nums;text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.control-panel{z-index:3;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#080c0ded;border-left:1px solid #ffffff21;width:354px;max-width:calc(100vw - 28px);height:100%;padding:14px 14px 16px;transition:transform .18s;position:absolute;top:0;right:0;overflow:auto;transform:translate(0);box-shadow:-18px 0 42px #00000047}.app-shell.panel-collapsed .control-panel{pointer-events:none;transform:translate(calc(100% + 8px))}button{color:#fff6e8;cursor:pointer;background:#24363a;border:1px solid #54767a;border-radius:6px;min-height:36px}button:hover{background:#315057}button:disabled{cursor:default;opacity:.45}button.active{color:#061014;background:#aadfd3;border-color:#d8fff6}.settings-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.settings-actions button{min-height:32px;font-size:12px}.settings-actions .settings-primary-action{grid-column:1/-1}.hidden-file-input{display:none}.control-row{color:#cfc8bc;grid-template-columns:94px minmax(0,1fr) 50px;align-items:center;gap:9px;min-height:34px;margin-bottom:8px;font-size:12px;display:grid}.slider-shell{margin-bottom:8px}.slider-shell .control-row{margin-bottom:0}.control-row>span{overflow-wrap:anywhere;min-width:0}.control-row>span[tabindex]{cursor:pointer}.control-row input[type=number]{grid-column:span 2}.control-row input,.control-row select{color:#f8f1e7;background:#0d1517;border:1px solid #354b50;border-radius:5px;width:100%;min-width:0;padding:6px 8px}.control-row input[type=range]{accent-color:#aadfd3;padding:0}.control-row.color-row input[type=color]{cursor:pointer;height:30px;padding:3px}.control-row.color-row output{font-size:10px}.control-row.checkbox-row input[type=checkbox]{accent-color:#aadfd3;justify-self:start;width:18px;height:18px}.control-row output{color:#f5d996;text-align:right;font-variant-numeric:tabular-nums}.slider-modulation-body{gap:5px;margin:5px 0 10px;padding-left:103px;display:grid}.slider-modulation-row{grid-template-columns:repeat(3,28px) minmax(0,1fr) minmax(0,1fr);align-items:center;gap:5px;display:grid}.slider-modulation-row.gain-row{grid-template-columns:repeat(3,minmax(0,1fr));padding-right:calc(40% + 5px)}.slider-modulation-row input[type=checkbox]{accent-color:#aadfd3;justify-self:center;width:18px;height:18px}.slider-modulation-row input[type=number]{color:#f8f1e7;font-variant-numeric:tabular-nums;background:#0d1517;border:1px solid #354b50;border-radius:5px;width:100%;min-width:0;height:26px;padding:3px 5px;font-size:11px}.slider-midi-row{color:#cfc8bc;grid-template-columns:32px 62px 48px 44px;align-items:center;gap:5px;min-height:77px;font-size:11px;display:grid}.slider-midi-row button{min-height:26px;padding:3px 5px;font-size:11px}.slider-midi-row label{grid-template-columns:16px minmax(0,1fr);align-items:center;gap:3px;min-width:0;display:grid}.slider-midi-row input[type=checkbox]{accent-color:#aadfd3;width:16px;height:16px;margin:0}.slider-midi-row input[type=number]{color:#f8f1e7;font-variant-numeric:tabular-nums;background:#0d1517;border:1px solid #354b50;border-radius:5px;width:100%;min-width:0;height:26px;padding:3px 5px;font-size:11px}.slider-midi-row .midi-range-min{grid-column:1/span 2}.slider-midi-row .midi-range-max{grid-column:3/span 2}.slider-midi-row output{color:#f5d996;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;grid-column:1/-1;min-width:0;overflow:hidden}.audio-panel,.midi-panel{color:#cfc8bc;border-top:1px solid #aadfd321;margin-top:10px;padding-top:10px}.audio-panel-title,.audio-enable-row,.audio-input-row,.audio-bucket-row,.audio-meter,.midi-panel-title,.midi-action-row,.midi-input-row{align-items:center;gap:7px;display:grid}.audio-panel-title,.midi-panel-title{color:#efe5d4;grid-template-columns:12px minmax(0,1fr) 40px;margin-bottom:0;font-size:12px}.audio-panel[open]>.audio-panel-title,.midi-panel[open]>.midi-panel-title{margin-bottom:8px}.audio-panel-title strong,.midi-panel-title strong,.midi-frame-readout{color:#f5d996;text-align:right;font-variant-numeric:tabular-nums}.audio-panel-title strong{justify-self:end;align-items:center;gap:5px;display:inline-flex}.audio-panel-title strong:before{content:"";background:#536368;border-radius:50%;width:5px;height:5px}.audio-panel-title strong[data-state=running]{color:#aadfd3}.audio-panel-title strong[data-state=running]:before{background:#78f2d5;box-shadow:0 0 7px #78f2d5b8}.audio-panel-title strong[data-state=denied],.audio-panel-title strong[data-state=error]{color:#ffc8a6}.audio-capture-strip{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:8px;display:grid}.audio-capture-strip span{color:#829397;text-align:right;font-size:9px;line-height:1.2}.audio-capture-toggle{color:#e9f4ef;background:#132022;border-color:#3f5b60;min-height:30px;font-size:11px}.audio-capture-toggle.active{color:#06110f;background:#aadfd3;border-color:#d8fff6}.audio-enable-row{grid-template-columns:minmax(0,1fr) 22px;min-height:24px;margin-bottom:8px;font-size:11px}.audio-enable-row input{accent-color:#aadfd3;width:18px;height:18px}.audio-input-row{grid-template-columns:36px minmax(0,1fr);min-height:28px;margin-bottom:8px;font-size:11px}.midi-action-row{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:8px}.midi-action-row button{min-height:28px;font-size:11px}.midi-input-row{grid-template-columns:36px minmax(0,1fr);min-height:28px;margin-bottom:8px;font-size:11px}.midi-input-picker{min-width:0;position:relative}.midi-input-button{color:#f8f1e7;text-align:left;background:#0d1517;border:1px solid #354b50;border-radius:5px;width:100%;min-width:0;height:28px;padding:3px 6px;font-size:11px}.midi-input-button span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.midi-input-button:disabled{cursor:default;opacity:.58}.midi-input-menu{z-index:5;background:#071012;border:1px solid #354b50;border-radius:6px;gap:2px;max-height:172px;padding:4px;display:grid;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 14px 32px #0000005c}.midi-input-menu button{text-align:left;color:#f8f1e7;background:0 0;border:0;border-radius:4px;width:100%;min-height:26px;padding:4px 6px;font-size:11px}.midi-input-menu button:hover,.midi-input-menu button.active{color:#061014;background:#aadfd3}.audio-input-select{color:#f8f1e7;text-overflow:ellipsis;background-color:#0d1517;border:1px solid #354b50;border-radius:5px;width:100%;min-width:0;height:28px;padding:3px 24px 3px 6px;font-size:11px}.audio-input-select:disabled{opacity:.58}.audio-input-error,.midi-input-error{color:#ffc8a6;overflow-wrap:anywhere;margin:-2px 0 8px;font-size:10px;line-height:1.25}.audio-meter-grid,.audio-bucket-controls{gap:6px;display:grid}.audio-meter{grid-template-columns:32px minmax(0,1fr) 38px;min-height:20px;font-size:11px}.audio-meter progress{appearance:none;background:#ffffff17;border:0;border-radius:3px;width:100%;height:7px;overflow:hidden}.audio-meter progress::-webkit-progress-bar{background:#ffffff17}.audio-meter progress::-webkit-progress-value{background:#aadfd3}.audio-meter progress::-moz-progress-bar{background:#aadfd3}.audio-meter:first-child progress::-webkit-progress-value{background:#f5d996}.audio-meter:first-child progress::-moz-progress-bar{background:#f5d996}.audio-meter:nth-child(3) progress::-webkit-progress-value{background:#95cfe2}.audio-meter:nth-child(3) progress::-moz-progress-bar{background:#95cfe2}.audio-bucket-controls{margin-top:8px}.audio-bucket-row{grid-template-columns:28px repeat(4,minmax(0,1fr));font-size:11px}.audio-bucket-header{color:#8fa5aa;text-transform:uppercase;min-height:16px;font-size:9px}.audio-bucket-row input{color:#f8f1e7;font-variant-numeric:tabular-nums;background:#0d1517;border:1px solid #354b50;border-radius:5px;width:100%;min-width:0;height:26px;padding:3px 5px;font-size:11px}.midi-frame-readout{text-overflow:ellipsis;white-space:nowrap;min-height:13px;margin-top:7px;font-size:10px;overflow:hidden}.control-group{border-top:1px solid #aadfd321;margin-top:10px;padding-top:10px}.control-group-title{color:#8fa5aa;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;font-size:11px;font-weight:700}.control-group-collapsible>summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.control-group-collapsible>summary::-webkit-details-marker{display:none}.control-group-collapsible>summary:before{content:"▸";color:#5f7377}.control-group-collapsible[open]>summary:before{content:"▾";color:#aadfd3}.control-group-collapsible>summary.control-group-title{margin-bottom:0;padding:2px 0 4px}.control-group-collapsible[open]>summary.control-group-title{margin-bottom:8px}.control-group-collapsible>summary:focus-visible{outline-offset:3px;border-radius:2px;outline:1px solid #aadfd3}.sim-speed-lab{color:#ece7db;background:#050708;grid-template-columns:minmax(0,1fr) 360px;min-height:100vh;display:grid}.sim-speed-lab__stage{background-color:#020304;background-image:linear-gradient(90deg,#ffffff09 1px,#0000 1px),linear-gradient(0deg,#ffffff09 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:48px 48px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;min-height:100vh}.sim-speed-lab__stage canvas{width:100%;height:100vh;display:block}.sim-speed-lab__panel{background:#0b1012;border-left:1px solid #ffffff1f;min-height:100vh;padding:14px;overflow:auto}.sim-speed-lab__header{justify-content:space-between;align-items:center;gap:10px;display:flex}.sim-speed-lab__header span,.sim-speed-lab__controls span,.sim-speed-lab__metrics span{color:#9fb4b3;font-size:11px;display:block}.sim-speed-lab__header strong{color:#f7efe0;font-variant-numeric:tabular-nums;margin-top:4px;font-size:24px;display:block}.sim-speed-lab button,.sim-speed-lab select{color:#ede7dc;background:#141b1f;border:1px solid #ffffff29;border-radius:6px;min-height:32px}.sim-speed-lab button{cursor:pointer;padding:0 10px}.sim-speed-lab button.is-active{color:#03100d;background:#74d6c4;border-color:#74d6c4}.sim-speed-lab__controls{gap:12px;margin-top:16px;display:grid}.sim-speed-lab__speed-row{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.sim-speed-lab__controls label{gap:6px;display:grid}.sim-speed-lab__controls input[type=range],.sim-speed-lab__controls select{width:100%}.sim-speed-lab__metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:16px;display:grid}.sim-speed-lab__metrics div{background:#ffffff09;border:1px solid #ffffff1f;border-radius:7px;min-height:50px;padding:8px}.sim-speed-lab__metrics strong{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:5px;font-size:13px;display:block}.sim-speed-lab__sparkline{background:#070b0d;border:1px solid #ffffff1f;border-radius:7px;width:100%;height:72px;margin-top:14px}.sim-speed-lab__sparkline polyline{fill:none;stroke:#74d6c4;stroke-width:1.6px;vector-effect:non-scaling-stroke}.sim-speed-lab__log{color:#bec9c4;background:#070b0d;border:1px solid #ffffff1f;border-radius:7px;gap:6px;min-height:94px;margin-top:14px;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.35;display:grid}@media (width<=720px){.sim-speed-lab{grid-template-columns:1fr}.sim-speed-lab__stage,.sim-speed-lab__stage canvas{height:58vh;min-height:58vh}.sim-speed-lab__panel{border-top:1px solid #ffffff1f;border-left:0;min-height:auto}.control-panel{width:calc(100vw - 20px);padding-top:14px}}
