:root{--bg:#f4f5f7;--panel:#fff;--border:#dde1e6;--border-strong:#c8cdd4;--text:#1f2328;--muted:#6b7380;--hover:#eef0f3;--accent:#2563eb;--accent-soft:#e6eefc;--danger:#d92d20;--warn:#b45309;--ok:#1a7f37;--grid:#e9ecf0;--grid-major:#dfe3e8;--canvas:#fbfcfd;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{min-width:1024px;overflow:hidden}.boot{height:100%;color:var(--muted);place-items:center;display:grid}.site-notice{text-align:center;place-content:center;justify-items:center;gap:10px;height:100%;line-height:1.7;display:grid}.site-notice b{font-size:16px}.site-notice p{color:var(--muted);margin:0}.site-notice a{color:var(--accent)}button,select,input{font:inherit;color:inherit}button{border:1px solid var(--border-strong);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:5px;align-items:center;gap:5px;height:28px;padding:0 10px;display:inline-flex}button:hover:not(:disabled){background:var(--hover)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#1d4fd8}button.ghost{background:0 0;border-color:#0000}button.danger{color:var(--danger)}select,input[type=text],input[type=number],input:not([type]){border:1px solid var(--border-strong);background:var(--panel);border-radius:5px;height:28px;padding:0 8px}input:focus,select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.muted{color:var(--muted)}.warn{color:var(--warn)}.spacer{flex:1}.tag{background:var(--hover);color:var(--muted);border-radius:3px;margin-left:6px;padding:0 6px;font-size:11px;line-height:18px;display:inline-block}.app{height:100%;display:grid}.workspace{min-height:0;display:grid}.splitter{background:var(--border);z-index:5;position:relative}.splitter.x{cursor:col-resize}.splitter.y{cursor:row-resize}.splitter:hover{background:var(--accent)}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:6px;min-width:0;padding:0 10px;display:flex}.toolbar .sep{background:var(--border);width:1px;height:20px;margin:0 4px}.brand{align-items:center;gap:6px;margin-right:6px;font-size:14px;font-weight:600;display:flex}.logo{display:inline-flex}.project-title{text-overflow:ellipsis;background:0 0;border-color:#0000;max-width:200px;font-weight:500;overflow:hidden}.name-input{width:180px}.speed{width:76px}.chip{background:var(--accent-soft);height:24px;color:var(--accent);border-radius:12px;align-items:center;gap:2px;padding:0 4px 0 8px;font-size:12px;display:inline-flex}.chip-x{width:18px;height:18px;color:inherit;background:0 0;border:none;border-radius:9px;justify-content:center;padding:0}.sim-status{font-variant-numeric:tabular-nums;align-items:center;gap:8px;display:flex}.sim-status i{background:#b9bfc8;border-radius:4px;width:8px;height:8px}.sim-status.running i{background:var(--ok)}.sim-status.paused i{background:#e0a100}.save-status{color:var(--muted);font-size:12px}.save-status.error{color:var(--danger)}.menu{position:relative}.menu-list{z-index:50;background:var(--panel);border:1px solid var(--border);border-radius:6px;min-width:160px;padding:4px;position:absolute;top:32px;left:0;box-shadow:0 4px 12px #00000014}.menu-item{background:0 0;border:none;justify-content:space-between;width:100%;display:flex}.menu-sep{background:var(--border);height:1px;margin:4px 0}.editor-pane{background:var(--panel);flex-direction:column;min-width:0;min-height:0;display:flex}.tabs{border-bottom:1px solid var(--border);background:var(--bg);flex:none;align-items:stretch;height:34px;display:flex;overflow-x:auto}.tab{border-right:1px solid var(--border);cursor:pointer;font-family:var(--mono);color:var(--muted);white-space:nowrap;align-items:center;gap:4px;padding:0 6px 0 12px;font-size:12px;display:flex}.tab.active{background:var(--panel);color:var(--text);box-shadow:inset 0 2px 0 var(--accent)}.tab-close,.tab-add{width:20px;height:20px;color:var(--muted);background:0 0;border:none;justify-content:center;padding:0}.tab-add{align-self:center;margin-left:4px;font-size:16px}.tab-input{width:110px;font-family:var(--mono);align-self:center;margin:0 4px;font-size:12px;height:24px!important}.monaco-host{flex:1;min-height:0}.editor-loading{color:var(--muted);flex:1;place-items:center;display:grid}.canvas-pane{grid-template-columns:128px minmax(0,1fr);min-width:0;min-height:0;display:grid}.palette{background:var(--panel);border-right:1px solid var(--border);padding:8px 6px;overflow-y:auto}.palette-group+.palette-group{margin-top:10px}.palette-title{color:var(--muted);padding:0 6px 4px;font-size:11px}.palette-item{cursor:grab;-webkit-user-select:none;user-select:none;border-radius:5px;padding:6px 8px}.palette-item:hover{background:var(--hover)}.palette-item.disabled{color:var(--muted);opacity:.6;cursor:not-allowed}.canvas-wrap{min-width:0;min-height:0;position:relative}.canvas{-webkit-user-select:none;user-select:none;touch-action:none;cursor:default;background-color:var(--canvas);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px), linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px);position:absolute;inset:0;overflow:clip}.canvas.wiring{cursor:crosshair}.world{transform-origin:0 0;position:absolute;top:0;left:0}.part{transform-origin:50%;cursor:grab;position:absolute}.part.locked{cursor:default}.part.operable{cursor:pointer}.canvas.wiring .part{cursor:crosshair}.sel-outline,.hl-outline{pointer-events:none;border:1.5px dashed var(--accent);border-radius:4px;position:absolute}.hl-outline{border:2px solid #f08c00;animation:.5s ease-in-out 4 alternate blink}@keyframes blink{to{opacity:.2}}.overlay{pointer-events:none;position:absolute;overflow:visible}.wire{cursor:pointer}.wire path{fill:none;stroke-linejoin:round;stroke-linecap:round}.wire-shadow{stroke:#00000047;stroke-width:3.2px}.wire-line{stroke-width:2.2px}.wire-hit{stroke:#0000;stroke-width:9px;pointer-events:stroke}.wire:hover .wire-line{stroke-width:2.8px}.wire-halo{stroke:var(--accent);stroke-opacity:.28;stroke-width:8px}.wire-draft path{fill:none;stroke:var(--accent);stroke-width:2px;stroke-dasharray:5 4}.wire-draft circle{fill:var(--accent)}.pin-hover,.pin-from{fill:#2563eb26;stroke:var(--accent);stroke-width:1.2px}.pin-level-dot{stroke:#fff;stroke-width:.8px}.pin-tip{z-index:20;pointer-events:none;border:1px solid var(--border);background:var(--panel);white-space:nowrap;border-radius:5px;padding:6px 8px;font-size:12px;line-height:18px;position:absolute;transform:translateY(-100%);box-shadow:0 2px 8px #00000014}.pin-level{align-items:center;gap:5px;display:flex}.pin-level i{border-radius:4px;width:8px;height:8px}.zoom-bar{border:1px solid var(--border);background:var(--panel);font-variant-numeric:tabular-nums;border-radius:6px;align-items:center;gap:2px;padding:2px;display:flex;position:absolute;bottom:10px;right:10px}.zoom-bar button{border:none;justify-content:center;min-width:24px;height:24px;padding:0 6px}.zoom-bar span{text-align:center;width:44px;color:var(--muted)}.canvas-hint{color:var(--muted);pointer-events:none;background:#ffffffd9;border-radius:4px;padding:3px 8px;font-size:12px;position:absolute;bottom:10px;left:10px}.props-panel{z-index:10;border:1px solid var(--border);background:var(--panel);border-radius:6px;width:224px;padding:10px 12px;position:absolute;top:10px;right:10px;box-shadow:0 2px 8px #0000000f}.props-head{white-space:nowrap;text-overflow:ellipsis;align-items:baseline;gap:8px;margin-bottom:8px;display:flex;overflow:hidden}.props-head .muted{font-family:var(--mono);text-overflow:ellipsis;font-size:12px;overflow:hidden}.props-row{justify-content:space-between;align-items:center;gap:8px;min-height:32px;display:flex}.props-row select{max-width:130px}.num-field{align-items:center;gap:4px;display:inline-flex}.num-field input{width:96px}.props-note{color:var(--muted);margin-top:6px;font-size:12px}.props-actions{gap:6px;margin-top:10px;display:flex}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:1px solid #0003;border-radius:11px;width:22px;height:22px;padding:0}.swatch.on{outline:2px solid var(--accent);outline-offset:2px}.bottom-panel{background:var(--panel);flex-direction:column;min-height:0;display:flex}.panel-tabs{border-bottom:1px solid var(--border);flex:none;gap:2px;height:32px;padding:0 6px;display:flex}.panel-tabs button{height:100%;color:var(--muted);background:0 0;border:none;border-radius:0}.panel-tabs button.on{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.badge{background:var(--danger);color:#fff;text-align:center;border-radius:9px;min-width:18px;padding:0 5px;font-size:11px;line-height:16px}.panel-body{flex:1;min-height:0;overflow:hidden}.panel-empty{padding:14px 16px}.panel-empty p{margin:0 0 8px}.terminal{flex-direction:column;height:100%;display:flex}.terminal-bar,.problems-bar{flex:none;align-items:center;gap:10px;padding:4px 10px;display:flex}.terminal-bar button,.problems-bar button,.seg-toggle button{height:24px;font-size:12px}.seg-toggle{display:inline-flex}.seg-toggle button{border-radius:0}.seg-toggle button:first-child{border-radius:5px 0 0 5px}.seg-toggle button:last-child{border-radius:0 5px 5px 0;margin-left:-1px}.seg-toggle button.on{background:var(--accent-soft);color:var(--accent)}.terminal-out{border:1px solid var(--border);min-height:0;font-family:var(--mono);white-space:pre-wrap;word-break:break-all;background:#fafbfc;border-radius:5px;flex:1;margin:0 10px;padding:6px 8px;font-size:12px;line-height:17px;overflow:auto}.terminal-send{flex:none;gap:6px;padding:6px 10px;display:flex}.terminal-send input{font-family:var(--mono);flex:1}.problems{height:100%;overflow:auto}.problem-group{padding:0 10px 6px}.problem-cat{padding:4px 0;font-weight:600}.problem{border-radius:4px;align-items:center;gap:8px;padding:4px 8px;display:flex}.problem.linked{cursor:pointer}.problem:hover{background:var(--hover)}.problem-msg{flex:1}.problem .count{color:var(--danger);font-variant-numeric:tabular-nums}.problem .time{font-variant-numeric:tabular-nums}.modal-mask{z-index:100;background:#14181f47;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:8px;width:480px;max-height:70vh;padding:14px 16px 16px;overflow:auto;box-shadow:0 4px 16px #0000001f}.modal-head{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px;display:flex}.modal p{margin:6px 0 10px;line-height:1.6}.project-list{flex-direction:column;display:flex}.project-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:2px 0;display:flex}.project-row.current .project-name{font-weight:600}.project-name{text-overflow:ellipsis;background:0 0;border:none;flex:1;justify-content:flex-start;overflow:hidden}.share-row{gap:6px;display:flex}.share-row input{font-family:var(--mono);flex:1;font-size:12px}.toasts{z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{color:#fff;white-space:pre-line;background:#1f2328;border-radius:6px;max-width:560px;padding:8px 14px;line-height:1.5;box-shadow:0 4px 14px #0000002e}.toast.error{background:#b42318}.btn-group{display:inline-flex}.btn-group button{border-radius:0;margin-left:-1px}.btn-group button:first-child{border-radius:5px 0 0 5px;margin-left:0}.btn-group button:last-child{border-radius:0 5px 5px 0}button.icon{justify-content:center;width:32px;padding:0}.status-bar{border-top:1px solid var(--border);background:var(--panel);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:14px;padding:0 10px;font-size:12px;display:flex;overflow:hidden}.status-bar .sim-status{color:var(--text);gap:6px;margin-left:0}.status-link{background:0 0;border:none;height:20px;padding:0 4px;font-size:12px}.status-link.error{color:var(--danger)}.monaco-editor .mc-bp:before,.monaco-editor .mc-bp-hover:before{content:"";background:#e5484d;border-radius:5px;width:10px;height:10px;position:absolute;top:5px;left:5px}.monaco-editor .mc-bp-hover:before{opacity:.35}.monaco-editor .mc-bp-off:before{background:#b9bfc8}.monaco-editor .mc-stop-line{background:#ffd54f61}.monaco-editor .mc-stop-glyph:after{content:"";border:6px solid #0000;border-left:10px solid #f0a000;border-right-width:0;position:absolute;top:4px;left:4px}.sev{background:var(--danger);border-radius:4px;flex:none;width:8px;height:8px}.sev.warning,.badge.warn{background:#e0a100}.regs{height:100%;font-family:var(--mono);grid-template-columns:200px 250px minmax(300px,1fr) 430px;font-size:12px;display:grid;overflow-x:auto}.regs.stale{opacity:.55}.regs-col{border-right:1px solid var(--border);min-height:0;padding:6px 10px;overflow-y:auto}.regs-title{color:var(--muted);margin:4px 0;font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif}.reg{justify-content:space-between;gap:6px;padding:1px 4px;line-height:18px;display:flex}.reg-name{color:var(--muted)}.chg{color:#9a5b00;background:#fff1b8;border-radius:3px}.psw-bits{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;margin:4px 0 6px;display:grid}.psw-bits .bit{border:1px solid var(--border);color:var(--muted);border-radius:3px;flex-direction:column;padding:1px 0;display:flex}.psw-bits .bit i{font-size:10px;font-style:normal}.psw-bits .bit.on{color:var(--accent);border-color:#b9cdf7}.rbank,.sfr-grid{grid-template-columns:1fr 1fr;column-gap:8px;display:grid}.dis-row{white-space:nowrap;grid-template-columns:40px 76px minmax(120px,1fr) auto;gap:8px;padding:0 4px;line-height:19px;display:grid}.dis-row.linked{cursor:pointer}.dis-row.current{background:#ffd54f73}.dis-addr,.dis-bytes,.dis-src{color:var(--muted)}.hexdump .hex-row{gap:5px;line-height:18px;display:flex}.hex-addr{width:22px;color:var(--muted)}.example-list{flex-direction:column;gap:6px;display:flex}.example{text-align:left;white-space:normal;flex-direction:column;align-items:flex-start;gap:2px;height:auto;padding:8px 10px;line-height:1.5;display:flex}
