:root{--bg: #f6f7f9;--bg-panel: #ffffff;--bg-sunk: #eef0f3;--bg-hover: #e6e9ee;--border: #d8dce3;--text: #1c2230;--text-muted: #5f6878;--accent: #2f6fdb;--accent-soft: #dbe7fb;--good: #1f8a4c;--warn: #b26a00;--bad: #c62f2f;--info: #6b4fd8;--busy: #fff3d6;--busy-border: #e3a72f;--changed: #fff0a8;--exec-line: #fff6c9;--c-comment: #7d8696;--c-string: #1f8a4c;--c-number: #b2560e;--c-keyword: #2a54b8;--c-register: #8a3fb8;--c-directive: #b0346a;--c-size: #0f7f86;--c-label: #1c2230;--st-F: #dce6f7;--st-D: #c9d8f3;--st-R: #b6c9ef;--st-q: #eef0f3;--st-I: #ffe2a8;--st-X: #ffbf5c;--st-W: #a8e0b9;--st-w: #e3f4e8;--st-C: #3fae68;--st-S: #f4c4c4;--mono: ui-monospace, "JetBrains Mono", "D2Coding", Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;color-scheme:light}:root[data-theme=dark]{--bg: #12151b;--bg-panel: #1a1e26;--bg-sunk: #151820;--bg-hover: #252a35;--border: #2c3240;--text: #dfe4ec;--text-muted: #8f98a8;--accent: #5b93f0;--accent-soft: #1e2d48;--good: #4cc27c;--warn: #e8a63b;--bad: #f06a6a;--info: #a48cf5;--busy: #3a3017;--busy-border: #c99632;--changed: #574c12;--exec-line: #3a3414;--c-comment: #6f7888;--c-string: #8bd49c;--c-number: #f0a868;--c-keyword: #7fa8f5;--c-register: #d39af5;--c-directive: #f08bb5;--c-size: #5fd0d6;--c-label: #f2f4f8;--st-F: #24324a;--st-D: #2b3d5c;--st-R: #33486d;--st-q: #1e222b;--st-I: #5c4a1f;--st-X: #9a6a1c;--st-W: #24563a;--st-w: #1c2d24;--st-C: #3fae68;--st-S: #5a2a2a;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--sans)}button,select,input{font:inherit;color:inherit}.mono,code,pre{font-family:var(--mono);font-size:12.5px}.sub{color:var(--text-muted);font-weight:400}.good{color:var(--good)}.warn{color:var(--warn)}.bad{color:var(--bad)}.info{color:var(--info)}.empty{padding:32px;color:var(--text-muted);text-align:center}.hint{color:var(--text-muted);font-size:12.5px;margin:8px 2px}h3{font-size:13.5px;margin:14px 0 6px}h2{font-size:16px;margin:0 0 12px}button{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:5px 10px;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){background:var(--bg-hover)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}button.icon{padding:4px 9px}button.pulse{box-shadow:0 0 0 3px var(--accent-soft)}select,input[type=number],input:not([type]){background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:4px 6px;min-width:0}input[type=checkbox]{accent-color:var(--accent)}.app{display:flex;flex-direction:column;height:100%}header{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:8px;color:var(--accent);white-space:nowrap}.brand b{color:var(--text)}.toolbar{display:flex;align-items:center;gap:10px;flex:1;flex-wrap:wrap;min-width:0}.toolbar label{display:flex;align-items:center;gap:5px}.toolbar label.grow{flex:1;min-width:200px}.toolbar label.grow select{flex:1;width:100%;min-width:0}.lbl{color:var(--text-muted);font-size:12.5px}main{flex:1;display:grid;grid-template-columns:minmax(340px,38%) minmax(0,1fr);min-height:0}.left{display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--border);min-height:0;background:var(--bg-panel)}.right{display:flex;flex-direction:column;min-height:0;min-width:0}.exdesc{padding:6px 12px;border-bottom:1px solid var(--border);font-size:13px}.editor{flex:1;min-height:0;overflow:hidden}.editor .cm-editor{height:100%;background:var(--bg-panel);color:var(--text)}.editor .cm-scroller{font-family:var(--mono);font-size:13px}.editor .cm-gutters{background:var(--bg-sunk);border-right:1px solid var(--border);color:var(--text-muted)}.editor .cm-activeLine{background:color-mix(in srgb,var(--bg-hover) 50%,transparent)}.editor .cm-activeLineGutter{background:var(--bg-hover)}.editor .cm-exec-line{background:var(--exec-line)!important;box-shadow:inset 3px 0 0 var(--warn)}.editor .cm-cursor{border-left-color:var(--text)}.editor .cm-selectionBackground,.editor .cm-focused .cm-selectionBackground{background:var(--accent-soft)!important}.cm-bp-gutter{width:16px;cursor:pointer}.cm-bp-gutter .cm-gutterElement{padding:0 2px}.cm-bp{color:var(--bad);font-size:11px}.cm-bp-gutter .cm-gutterElement:hover:after{content:"●";color:var(--bad);opacity:.3;font-size:11px}.cm-tooltip{background:var(--bg-panel)!important;border:1px solid var(--border)!important;color:var(--text)}.diags{max-height:120px;overflow:auto;border-top:1px solid var(--border);padding:6px 12px;font:12px var(--mono)}.edhint{padding:5px 12px;border-top:1px solid var(--border);font-size:11.5px}.controls{display:flex;gap:6px;padding:8px 12px;flex-wrap:wrap;border-bottom:1px solid var(--border);background:var(--bg-panel)}.status{display:flex;gap:16px;padding:6px 14px;flex-wrap:wrap;font-size:13px;min-height:31px}.tabs{display:flex;gap:2px;padding:0 10px;border-bottom:1px solid var(--border);overflow-x:auto}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:7px 11px;color:var(--text-muted)}.tabs button.on{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.tabs button.dim{opacity:.5}.panel{flex:1;overflow:auto;padding:10px 14px 24px;min-height:0}table.grid{border-collapse:collapse;width:100%;font-size:12.5px}table.grid th,table.grid td{padding:3px 8px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}table.grid th{color:var(--text-muted);font-weight:500;background:var(--bg-sunk);position:sticky;top:0}table.grid tr.head td{background:var(--accent-soft)}table.grid tr.renamed td:nth-child(2){color:var(--accent);font-weight:600}table.grid tr.badrow td{color:var(--bad)}.changed{background:var(--changed);border-radius:3px}.tag{display:inline-block;padding:0 5px;margin-right:4px;border-radius:4px;font:11.5px var(--mono)}.tag.ready{background:color-mix(in srgb,var(--good) 20%,transparent);color:var(--good)}.tag.wait{background:color-mix(in srgb,var(--warn) 20%,transparent);color:var(--warn)}.bits i{font-style:normal;font:11px var(--mono);padding:0 4px;margin-right:2px;border-radius:3px;color:var(--text-muted);opacity:.5}.bits i.on{opacity:1;background:var(--accent-soft);color:var(--accent)}.pipeline svg{width:100%;max-width:1100px;height:auto;display:block}.pu rect{fill:var(--bg-panel);stroke:var(--border);stroke-width:1.5}.pu.busy rect{fill:var(--busy);stroke:var(--busy-border)}.pu-title{font:600 13px var(--sans);fill:var(--text)}.pu-en{font:500 11px var(--sans);fill:var(--text-muted)}.pu-sub{font:11px var(--mono);fill:var(--text-muted)}.pu-status{font:11.5px var(--mono);fill:var(--text)}.pe line,.pe path{stroke:var(--border);stroke-width:1.6;fill:none}.pe.active line,.pe.active path{stroke:var(--accent);stroke-width:2.2}.pe.flush path{stroke:var(--border)}.pe.flush.active path{stroke:var(--bad)}.ptoken text,.ptoken-text{font:11px var(--mono);fill:var(--accent);paint-order:stroke;stroke:var(--bg);stroke-width:3px}.pe.flush.active .ptoken-text{fill:var(--bad)}.pe.flush .ptoken-text{fill:var(--text-muted)}.pu-in{font:11px var(--mono);fill:var(--accent)}.pdot{fill:var(--accent)}.pbar-bg{fill:var(--bg-sunk)}.pbar-fg{fill:var(--accent)}.pbar-fg.full{fill:var(--bad)}.cdb line{stroke:var(--good);stroke-width:3}.cdb path{stroke:var(--good);stroke-width:1.6;fill:none}marker path{stroke:context-stroke}.guide{margin-top:10px;max-width:1000px}.guide summary{cursor:pointer;font-weight:600;font-size:13.5px}.guide dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:8px 18px;margin:8px 0 0}.guide dt{font-weight:600;font-size:13px}.guide dd{margin:2px 0 0;font-size:12.5px;color:var(--text-muted)}.tl-idle{margin:0 0 8px;padding:6px 10px;border-radius:6px;background:var(--bg-sunk);color:var(--warn);font-size:12.5px}.tl-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;margin-bottom:8px}.tl-legend span{display:flex;align-items:center;gap:4px}.tl-legend .tl-c{display:inline-block;width:16px;height:16px;text-align:center;font:10px/16px var(--mono);border-radius:2px;font-style:normal}.tl-scroll{overflow:auto;border:1px solid var(--border);border-radius:6px;max-height:calc(100vh - 280px)}table.tl{border-collapse:collapse;font:10px var(--mono)}table.tl th{position:sticky;top:0;background:var(--bg-sunk);font-weight:400;color:var(--text-muted);padding:2px 0;min-width:13px;z-index:1}table.tl th.now{color:var(--accent)}table.tl td.tl-name,table.tl th.tl-name{position:sticky;left:0;background:var(--bg-panel);text-align:left;padding:0 8px;white-space:nowrap;max-width:260px;min-width:200px;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;z-index:2;border-right:1px solid var(--border)}table.tl th.tl-name{z-index:3;background:var(--bg-sunk)}table.tl td.tl-c{width:13px;height:17px;text-align:center;padding:0;color:var(--text)}table.tl td.now{box-shadow:inset 1px 0 0 var(--accent),inset -1px 0 0 var(--accent)}table.tl tr.squashed td.tl-name{text-decoration:line-through;color:var(--text-muted)}.st-F{background:var(--st-F)}.st-D{background:var(--st-D)}.st-R{background:var(--st-R)}.st-q{background:var(--st-q)}.st-I{background:var(--st-I)}.st-X{background:var(--st-X)}.st-W{background:var(--st-W)}.st-w{background:var(--st-w)}.st-C{background:var(--st-C);color:#fff!important}.st-S{background:var(--st-S)}.structs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr));gap:0 20px}.regs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr));gap:0 20px;align-items:start}.cpu-card{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 12px;background:var(--bg-sunk);border-radius:8px;margin:8px 0;grid-column:1 / -1}.flags{display:flex;gap:4px;flex-wrap:wrap}.flags span{font:12px var(--mono);padding:2px 7px;border-radius:4px;border:1px solid var(--border);color:var(--text-muted)}.flags span.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.flags span.changed{box-shadow:0 0 0 2px var(--warn)}.memctl{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:4px 0 10px}.memctl label{display:flex;align-items:center;gap:6px}.hex{background:var(--bg-sunk);padding:8px 10px;border-radius:6px;overflow-x:auto;font-size:12px}.hrow{display:flex;gap:14px;white-space:pre}.haddr{color:var(--text-muted)}.hbytes{display:flex;gap:5px}.hb.zero{color:var(--text-muted);opacity:.6}.hb.unmapped{color:var(--bad);opacity:.6}.hb.hi{background:var(--changed);border-radius:2px}.hb:nth-child(8){margin-right:6px}.hascii{color:var(--text-muted)}.ladder{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0 4px}.rung{padding:6px 12px;border-radius:6px;border:1px solid var(--border);color:var(--text-muted);font-size:13px}.rung.past{color:var(--text);background:var(--bg-sunk)}.rung.on{color:#fff;background:var(--accent);border-color:var(--accent);font-weight:600}.ladder-now{width:100%;font-size:12.5px;margin-top:4px}.chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.chip{padding:1px 9px;border-radius:12px;font-size:12px;opacity:.55}.chip.on{opacity:1;background:var(--accent-soft);border-color:var(--accent)}.events{max-height:320px;overflow:auto;border:1px solid var(--border);border-radius:6px;padding:4px 8px;background:var(--bg-sunk);font-size:12.5px}.ev{display:grid;grid-template-columns:84px 150px 1fr;gap:8px;padding:2px 0;border-bottom:1px dashed var(--border)}.evk{font-weight:600;font-size:12px}.vga{background:#000;color:#aaa;font:14px/1.15 var(--mono);padding:8px;border-radius:6px;white-space:pre;overflow-x:auto;width:max-content;max-width:100%}.vga-cursor{animation:blink 1s steps(1) infinite;text-decoration:underline}@keyframes blink{50%{text-decoration:none}}.console{background:var(--bg-sunk);border:1px solid var(--border);border-radius:6px;padding:8px 10px;min-height:120px;max-height:360px;overflow:auto;white-space:pre-wrap;margin:0}.inputrow{display:flex;gap:8px;margin-top:8px;align-items:center}.inputrow input{flex:1}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:6px 0 10px}.tile{background:var(--bg-sunk);border-radius:8px;padding:10px 12px}.tile-v{font:600 20px var(--mono)}.tile-l{font-size:12.5px}.tile-s{font-size:11.5px;color:var(--text-muted)}.bars{display:flex;flex-direction:column;gap:4px;max-width:760px}.barrow{display:grid;grid-template-columns:140px 1fr 140px;gap:10px;align-items:center;font-size:12.5px}.bartrack{height:10px;background:var(--bg-sunk);border-radius:5px;overflow:hidden}.barfill{display:block;height:100%;background:var(--accent);border-radius:5px}.modal{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}.dialog{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:18px;width:min(640px,100%);max-height:90vh;overflow:auto}.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 16px}.fields label{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 6px;border-radius:5px}.fields label.changed{background:var(--accent-soft)}.fields input[type=number]{width:80px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.login-btn{color:var(--text-muted);font-size:12.5px}.dialog.login{width:min(340px,100%);display:flex;flex-direction:column;gap:10px}.dialog.login h2{margin-bottom:4px}.guac{position:fixed;inset:0;background:#000;z-index:50}.guac iframe{width:100%;height:100%;border:none}.guac-logout{position:fixed;top:10px;right:10px;z-index:51;width:28px;height:28px;padding:0;border-radius:50%;background:#00000080;border-color:#30363d;color:#8b949e;opacity:.3}.guac-logout:hover:not(:disabled){opacity:1;background:#000000b3}@media (max-width: 900px){main{grid-template-columns:minmax(0,1fr);grid-template-rows:46vh auto}.toolbar label.grow{flex-basis:100%;min-width:0}.brand{flex:1}.left{border-right:none;border-bottom:1px solid var(--border)}.panel{overflow:visible}.structs,.regs{grid-template-columns:minmax(0,1fr)}table.grid{display:block;overflow-x:auto}.ev{grid-template-columns:70px 1fr}.ev .mono{display:none}.barrow{grid-template-columns:100px 1fr 90px}header{padding:8px 16px}}.app.phone{height:100dvh}.m-top{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.m-top .brand{flex:none}.m-top .example-select{flex:1;min-width:0;height:38px}.m-top .icon{width:42px;height:38px;font-size:20px;line-height:1;padding:0}.phone .status{gap:4px 12px;padding:5px 12px;font-size:12.5px;min-height:0}.m-line{display:flex;align-items:center;gap:8px;margin:0 12px 6px;padding:6px 10px;text-align:left;background:var(--exec-line);border:none;border-left:3px solid var(--warn);border-radius:6px;min-width:0}.m-line code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.m-line .sub{flex:none;font-size:11.5px}.phone .tabs{padding:0 6px;scrollbar-width:none;flex:none}.phone .tabs::-webkit-scrollbar{display:none}.phone .tabs button{padding:10px 11px;font-size:13.5px;white-space:nowrap}.phone .tabs button.dirty{color:var(--accent)}.phone .panel{overflow:auto;padding:10px 12px 16px;-webkit-overflow-scrolling:touch}.phone .panel.code{padding:0;display:flex;flex-direction:column;overflow:hidden}.m-code{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--bg-panel)}.m-code[hidden]{display:none}.m-code-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;border-bottom:1px solid var(--border)}.m-code-bar .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.phone .editor .cm-scroller{font-size:13px}.phone .cm-bp-gutter{width:22px}.controls.compact{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px;flex:none;padding:8px 10px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--border);border-bottom:none}.controls.compact button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:52px;padding:4px 0}.controls.compact b{font-size:16px;line-height:1.1}.controls.compact small{font-size:11px;opacity:.85}.sheet-wrap{align-items:flex-end;padding:0}.dialog.sheet{width:100%;max-height:85dvh;border-radius:14px 14px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom))}.sheet-fields{display:grid;gap:10px}.sheet-fields label{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px}.sheet-fields select{width:60%;height:38px}.sheet-fields label:has(input[type=checkbox]){justify-content:flex-start}.sheet-fields input[type=checkbox]{width:22px;height:22px}.sheet-fields>button{min-height:42px}.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.sheet-actions button{min-height:44px}.pcards{display:flex;flex-direction:column}.pcard{border:1px solid var(--border);border-radius:10px;background:var(--bg-panel)}.pcard.busy{background:var(--busy);border-color:var(--busy-border)}.pcard summary{list-style:none;display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:8px 10px;cursor:pointer}.pcard summary::-webkit-details-marker{display:none}.pcard-title{font-weight:600;font-size:14px}.pu-en-html{font-weight:500;font-size:11px;color:var(--text-muted)}.pcard-sub{font-size:11px;color:var(--text-muted);align-self:center;text-align:right}.pcard-status{grid-column:1 / -1;font:12px var(--mono);overflow-wrap:anywhere}.pcard-got{grid-column:1 / -1;font-size:11.5px;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcard-bar{grid-column:1 / -1;position:relative;height:15px;margin-top:4px;border-radius:8px;background:var(--bg-sunk);overflow:hidden}.pcard-bar span{display:block;height:100%;background:var(--accent);opacity:.35}.pcard-bar span.full{background:var(--bad);opacity:.5}.pcard-bar em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:10.5px var(--mono);font-style:normal}.pcard-desc{margin:0;padding:0 10px 10px;font-size:12.5px;color:var(--text-muted)}.pflow{display:flex;align-items:center;gap:6px;min-height:22px;padding:2px 0 2px 18px;color:var(--text-muted);font-size:12px;min-width:0}.pflow.active{color:var(--accent)}.pflow .mono{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;min-width:0}.pcards-exec{display:grid;grid-template-columns:1fr 1fr;gap:6px}.pflush{margin-bottom:6px;padding:6px 10px;border-radius:8px;font-size:12px;color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,transparent)}.phone table.tl td.tl-name,.phone table.tl th.tl-name{min-width:104px;max-width:124px;font-size:11px;padding:0 6px}.phone .tl-scroll{max-height:none}.phone .tl-legend{gap:6px 10px;font-size:11.5px}
