#app{display:flex;flex-direction:column;height:100vh}#topbar{display:flex;align-items:stretch;background:#1d2330;border-bottom:1px solid #000;height:38px}#brand{display:flex;align-items:center;padding:0 14px;font-weight:600;color:#ffd24a;white-space:nowrap}#menubar{display:flex;align-items:stretch}.menu{position:relative}.menu-title{padding:0 14px;height:100%;display:flex;align-items:center;cursor:pointer;color:#cfe0ff}.menu-title:hover,.menu.open .menu-title{background:#2b3550}.menu-panel{display:none;position:absolute;top:100%;left:0;min-width:240px;background:#222a3a;border:1px solid #000;box-shadow:0 8px 24px rgb(0 0 0 / .5);z-index:50}.menu.open .menu-panel{display:block}.menu-item{color:#fff;position:relative;padding:6px 16px;cursor:pointer;white-space:nowrap;font-size:13px;display:flex;align-items:center;gap:8px}.menu-item:hover{background:#34406a}.menu-item.notimpl{color:#8b94a8;font-style:italic}.menu-item.has-sub>.arrow{margin-left:auto;opacity:.6}.submenu{display:none;position:absolute;top:0;left:100%;min-width:250px;background:#222a3a;border:1px solid #000;box-shadow:0 8px 24px rgb(0 0 0 / .5)}.menu-item.has-sub:hover>.submenu{display:block}.menu-item.check .cbox{width:16px}.menu-item .lbl{flex:1}.menu-item .kbdHint{color:#7a8fae;font-size:11px;margin-left:auto;padding-left:24px}.menu-sep{height:1px;background:#2e3a52;margin:3px 0}#toolbar{display:flex;align-items:center;gap:8px;padding:5px 10px;background:#161b26;border-bottom:1px solid #000;flex-wrap:wrap}.tool{background:#2b3550;color:#dce6ff;border:1px solid #000;border-radius:4px;padding:5px 12px;cursor:pointer;font-size:13px}.tool:hover{background:#38456b}#runBtn.running{background:#b23030;color:#fff}#runBtn{background:#2f8f3f;color:#fff;min-width:84px}.sep{width:1px;height:22px;background:#333}.slider{display:flex;align-items:center;gap:6px;font-size:12px;color:#9fb0cc}.slider input{width:110px}#hintRight{margin-left:auto;font-size:11px;color:#6b7790}#main{display:flex;flex:1;min-height:0}#sidebar{width:168px;flex:none;overflow-y:auto;background:#141a26;border-right:1px solid #000;padding:4px 4px 24px}#sidebar::-webkit-scrollbar{width:9px}#sidebar::-webkit-scrollbar-thumb{background:#33405f;border-radius:5px}.pg{margin-bottom:6px}.pg-title{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#8595b5;padding:5px 4px 3px;border-bottom:1px solid #232c40;display:flex;align-items:center;gap:4px}.pg-title.collapsible{cursor:pointer;user-select:none}.pg-title.collapsible:hover{color:#cfe0ff}.pg-arrow{font-size:9px;width:9px}.pg.collapsed .pg-grid,.pg.collapsed .pg-actions{display:none}.pg-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:3px;padding:4px 0}.pg-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:3px;padding:4px 0}.pbtn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 2px 3px;background:#1f2738;border:1px solid #2c3a55;border-radius:5px;cursor:pointer;color:#b9c8e6;overflow:hidden}.pbtn:hover{background:#2b3550;color:#fff;border-color:#4a5b82}.pbtn .plabel{font-size:9px;line-height:1.05;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;color:inherit}.picon{display:block;width:26px;height:26px;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:26px 26px;mask-size:26px 26px}.pbtn.comp.active,.pbtn.act.active{background:#2f8f3f;color:#fff;border-color:#46c463}.pbtn.toggle.active{background:#244a8a;color:#fff;border-color:#5a7fc7}.pbtn.notimpl{opacity:.55}.pbtn.notimpl .plabel{font-style:italic}#canvasWrap{position:relative;flex:1;overflow:hidden;background:#000}#cv{display:block;width:100%;height:100%;cursor:crosshair}#flash{position:absolute;top:12px;left:50%;transform:translateX(-50%);background:rgb(40 80 160 / .92);color:#fff;padding:7px 16px;border-radius:16px;font-size:13px;opacity:0;transition:opacity .2s;pointer-events:none}#flash.show{opacity:1}#sliderPanel{flex:none;max-height:30vh;overflow-y:auto;background:#141a26;border-top:1px solid #000;padding:8px 12px;display:flex;flex-wrap:wrap;gap:8px 22px;align-content:flex-start}#sliderPanel .sp-title{flex-basis:100%;font-size:12px;color:#ffd24a;font-weight:600;margin-bottom:2px}#sliderPanel .sp-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 8px;min-width:280px}#sliderPanel .sp-label{grid-column:1 / -1;font-size:12px;color:#cdd8f0;display:flex;justify-content:space-between;gap:10px}#sliderPanel .sp-label .sp-val{color:#7fe0a0}#sliderPanel .sp-row input[type=range]{width:100%;min-width:120px}#sliderPanel .sp-row input[type=number]{width:60px;background:#11161f;color:#dce6ff;border:1px solid #34406a;border-radius:3px;font-size:11px;padding:1px 3px}#sliderPanel .sp-x{cursor:pointer;color:#f66;font-size:14px;padding:0 2px;user-select:none}#sliderPanel .sp-x:hover{color:#ff9a9a}#app.sim-fullscreen{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}#app:fullscreen{width:100%;height:100%}#app:-webkit-full-screen{width:100%;height:100%}#app:-moz-full-screen{width:100%;height:100%}#ctxMenu{display:none;position:fixed;background:#222a3a;border:1px solid #111;border-radius:5px;box-shadow:0 8px 28px rgb(0 0 0 / .65);z-index:1000;min-width:210px;padding:4px 0}.ctx-item{display:flex;align-items:center;gap:8px;padding:7px 18px;cursor:pointer;font-size:13px;color:#dce6ff;white-space:nowrap}.ctx-icon{width:18px;height:18px;flex-shrink:0;filter:brightness(0) invert(1);opacity:.85}.ctx-item:hover{background:#34406a}.ctx-item.danger{color:#f66}.ctx-sep{height:1px;background:#2c3a55;margin:4px 0}.modal-overlay{position:fixed;inset:0;background:rgb(0 0 0 / .55);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#232a38;border:1px solid #000;border-radius:8px;padding:18px 20px;min-width:320px;max-width:560px;box-shadow:0 12px 40px rgb(0 0 0 / .6)}.modal h3{margin:0 0 14px;color:#ffd24a;font-size:16px}.field{display:flex;align-items:center;gap:10px;margin:8px 0}.field label{flex:1;font-size:13px;color:#cdd8ec}.field input[type=text],.field select,.field textarea{flex:1;background:#161b26;color:#fff;border:1px solid #3a4660;border-radius:4px;padding:5px 8px;font-size:13px}.field textarea{min-height:60px;font-family:monospace}.modal-btns{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.modal-btns button{padding:6px 16px;border-radius:4px;border:1px solid #000;background:#2b3550;color:#dce6ff;cursor:pointer}.modal-btns button.primary{background:#2f8f3f;color:#fff}