:root{--accent: #00a9e0;--accent-strong: #0086b3;--accent-soft: #e3f6fd;--active: #12a46b;--active-soft: #dcf5ea;--danger: #d93a3a;--danger-soft: #fde8e8;--warn: #c98200;--warn-soft: #fff3d6;--bg: #f4f6f8;--surface: #ffffff;--surface-2: #f8fafb;--border: #dde3e8;--border-strong: #c3ccd4;--text: #17212b;--muted: #61707d;--cpu-box: #eef3f6;--cpu-wire: #b6c3cd;--shadow: 0 1px 2px rgba(16, 24, 32, .06), 0 4px 16px rgba(16, 24, 32, .06);--radius: 10px;--font: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--w-addr-1: #6d5dfc;--w-addr-2: #a855f7;--w-addr-3: #c026d3;--w-addr-4: #8b5cf6;--w-data-1: #2563eb;--w-data-2: #0d9488;--w-data-3: #0284c7;--w-data-4: #0891b2;--w-data-5: #059669;--w-instr-1: #d97706;--w-instr-2: #ea580c;--w-flag-1: #db2777;--w-flag-2: #e11d48;--w-ctrl: #64748b;color-scheme:light}:root[data-theme=dark]{--accent: #29b8ea;--accent-strong: #5fcaf0;--accent-soft: #0f2f3c;--active: #34d399;--active-soft: #0f3326;--danger: #f06a6a;--danger-soft: #3a1717;--warn: #f2b84b;--warn-soft: #3a2c10;--bg: #0f151b;--surface: #161e26;--surface-2: #1b252e;--border: #2a3641;--border-strong: #3a4855;--text: #e3e9ee;--muted: #8e9ca8;--cpu-box: #1e2933;--cpu-wire: #3b4a57;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 16px rgba(0, 0, 0, .25);--w-addr-1: #8b80ff;--w-addr-2: #c084fc;--w-addr-3: #e879f9;--w-addr-4: #a78bfa;--w-data-1: #60a5fa;--w-data-2: #2dd4bf;--w-data-3: #38bdf8;--w-data-4: #22d3ee;--w-data-5: #34d399;--w-instr-1: #fbbf24;--w-instr-2: #fb923c;--w-flag-1: #f472b6;--w-flag-2: #fb7185;--w-ctrl: #94a3b8;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(--font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}code,kbd,.mono{font-family:var(--mono);font-size:.92em}kbd{border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:4px;padding:0 4px}h1{font-size:22px;margin:0}h2{font-size:17px;margin:0}h3{font-size:14px;margin:0}h4{font-size:13px;margin:14px 0 6px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}a{color:var(--accent-strong)}.muted{color:var(--muted)}.small{font-size:12px}.center{text-align:center}.spacer{flex:1}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{background:var(--surface);border:1px solid var(--border-strong);border-radius:7px;padding:6px 9px;width:100%;min-width:0}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input[aria-invalid=true]{border-color:var(--danger)!important}input:disabled,select:disabled,textarea:disabled{opacity:.65}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}input[type=range]{accent-color:var(--accent);width:100%}.app{height:100%;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;gap:18px;padding:0 16px;height:58px;flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);position:relative;z-index:5}.app-header:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,var(--accent),transparent 60%)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}.logo-chip{background:#fff;border-radius:7px;padding:3px 6px;display:flex;border:1px solid var(--border)}.logo-chip img{height:28px;display:block}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-text b{font-size:17px;letter-spacing:-.01em}.brand-text small{color:var(--muted);font-size:11px}.main-nav{display:flex;gap:2px}.main-nav a{display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:8px;color:var(--muted);text-decoration:none;font-weight:500}.main-nav a:hover{background:var(--surface-2);color:var(--text)}.main-nav a.active{background:var(--accent-soft);color:var(--accent-strong)}.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}.user-chip{display:flex;align-items:center;gap:6px;padding:3px 4px 3px 10px;border:1px solid var(--border);border-radius:999px}.user-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role{font-size:11px;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted)}.role-teacher{background:var(--accent-soft);color:var(--accent-strong)}.role-admin{background:var(--warn-soft);color:var(--warn)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border-strong);background:var(--surface);padding:7px 13px;border-radius:8px;cursor:pointer;font-weight:500;text-decoration:none;color:var(--text);white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong)}:root[data-theme=dark] .btn-primary{color:#04202c}.btn-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 50%,var(--border))}.btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn-ghost{border-color:transparent;background:transparent}.btn-sm{padding:4px 10px;font-size:13px}.link{background:none;border:none;color:var(--accent-strong);cursor:pointer;padding:0;font-weight:500}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1px solid transparent;background:transparent;cursor:pointer;color:var(--text);position:relative;flex-shrink:0}.icon-btn.sm{width:26px;height:26px;border-radius:6px}.icon-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--border)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.icon-btn.active{background:var(--accent-soft);color:var(--accent-strong);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.icon-btn.tone-accent:not(:disabled){color:var(--accent-strong)}.icon-btn.tone-danger:not(:disabled){color:var(--danger)}[data-tip]:hover:after,[data-tip]:focus-visible:after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);background:#1d2731;color:#fff;padding:4px 8px;border-radius:6px;font-size:12px;white-space:nowrap;z-index:50;pointer-events:none;font-weight:400}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden;flex-shrink:0}.seg button{border:none;background:var(--surface);padding:4px 10px;cursor:pointer;font-weight:500;font-size:12px;display:flex;gap:6px;align-items:center;color:var(--muted)}.seg button+button{border-left:1px solid var(--border-strong)}.seg button.on{background:var(--accent);color:#fff}:root[data-theme=dark] .seg button.on{color:#04202c}.seg.big button{padding:7px 14px;font-size:14px}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.tool-group{display:flex;align-items:center;gap:2px;padding:2px 4px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}.tool-sep{width:1px;height:22px;background:var(--border);margin:0 4px}.project-name{width:150px!important;border-color:transparent!important;background:transparent!important;font-weight:600}.project-name:hover,.project-name:focus{border-color:var(--border-strong)!important;background:var(--surface)!important}.dirty-dot{width:8px;height:8px;border-radius:50%;background:var(--warn);margin-right:4px}.preset-select{width:auto!important;max-width:150px;border:none!important;background:transparent!important;text-overflow:ellipsis}.run-status{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;padding:5px 11px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.run-status.st-running{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.run-status.st-halted{background:var(--active-soft);color:var(--active);border-color:transparent}.run-status.st-error{background:var(--danger-soft);color:var(--danger);border-color:transparent}.speed{display:flex;align-items:center;gap:6px;padding:0 6px;width:170px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-height:0;min-width:0}.panel-head{display:flex;align-items:center;gap:8px;padding:10px 12px 6px}.panel-head h3{flex:1}.sim-page,.arch-page{flex:1;display:flex;flex-direction:column;min-height:0}.sim-grid{flex:1;min-height:0;display:grid;gap:10px;padding:10px;grid-template-columns:300px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 190px}.memory-panel{grid-row:1 / span 2;display:flex;flex-direction:column;overflow:hidden}.goto{display:flex;align-items:center;gap:4px;width:110px;color:var(--muted)}.goto input{padding:3px 6px!important;font-size:12px}.mem-section{flex:1;display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--border)}.mem-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:6px 12px;display:flex;gap:6px}.mem-label span{font-weight:400;font-family:var(--mono)}.vlist{flex:1;overflow-y:auto;min-height:0;position:relative}.vrow{position:absolute;left:0;right:0}.mem-row{display:flex;align-items:center;gap:6px;height:100%;padding:0 10px 0 4px;font-family:var(--mono);font-size:12.5px;cursor:pointer;border-left:3px solid transparent}.mem-row:hover{background:var(--surface-2)}.mem-row.sel{background:var(--accent-soft)}.mem-row.cur{border-left-color:var(--active);background:var(--active-soft);font-weight:600}.mem-row.mar{border-left-color:var(--accent)}.mem-row .addr{width:46px;text-align:right;color:var(--muted);flex-shrink:0}.mem-row .val{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mem-row .val.empty{color:var(--border-strong);letter-spacing:-1px}.bp-dot{border:none;background:none;padding:0;width:14px;display:flex;color:transparent;cursor:pointer}.mem-row:hover .bp-dot{color:var(--border-strong)}.mem-row.bp .bp-dot{color:var(--danger)}.mem-row.bp .bp-dot svg{fill:var(--danger)}.mem-binary{border-top:1px solid var(--border);padding:8px 12px;background:var(--surface-2)}.mem-binary .bits{font-size:11.5px;color:var(--muted)}.cpu-panel{display:flex;flex-direction:column;padding:10px;overflow:hidden}.cpu{flex:1;min-height:0;width:100%;height:100%}.cell-actions{display:flex;gap:10px;align-items:baseline;justify-content:center;padding-top:4px}.cpu-wrap{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}.phase-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12.5px}.phase{display:inline-flex;align-items:center;gap:6px;padding:4px 11px 4px 5px;border-radius:999px;border:1px solid var(--border);color:var(--muted);font-weight:500;transition:all .2s}.phase b{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--surface-2);font-size:11px}.phase.on{color:#fff;border-color:transparent;box-shadow:0 2px 10px -2px var(--ph);background:var(--ph)}.phase.on b{background:#ffffff40}.ph-fetch{--ph: var(--w-addr-1)}.ph-decode{--ph: var(--w-instr-1)}.ph-execute{--ph: var(--w-data-5)}.phase-instr{margin-left:6px;font-weight:600}.legend{margin-left:auto;display:flex;gap:12px;color:var(--muted);font-size:11.5px}.lg{display:inline-flex;align-items:center;gap:5px}.lg i{width:18px;height:4px;border-radius:2px;display:inline-block}.lg-addr i{background:linear-gradient(90deg,var(--w-addr-1),var(--w-addr-3))}.lg-data i{background:linear-gradient(90deg,var(--w-data-1),var(--w-data-5))}.lg-instr i{background:linear-gradient(90deg,var(--w-instr-1),var(--w-instr-2))}.lg-flag i{background:linear-gradient(90deg,var(--w-flag-1),var(--w-flag-2))}.lg-ctrl i{background:var(--w-ctrl)}.hl-legend{display:flex;gap:16px;justify-content:center}.hl-legend span{display:inline-flex;align-items:center;gap:6px}.sw{width:14px;height:10px;border-radius:3px;display:inline-block;border:2px solid}.sw-active{border-color:var(--active);background:var(--active-soft)}.sw-next{border-color:var(--accent);border-style:dashed}.sw-involved{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--accent-soft) 60%,transparent)}.cpu .wire-halo{fill:none;stroke:var(--surface);stroke-width:10;stroke-linecap:round}.cpu .wire-line{fill:none;stroke:var(--wc);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;opacity:.6;transition:opacity .25s,stroke-width .25s}.cpu .wire.lv-idle .wire-line{opacity:.16}.cpu .wire.lv-involved .wire-line{opacity:.75}.cpu .wire.lv-next .wire-line{opacity:.95;stroke-dasharray:7 6}.cpu .wire.lv-active .wire-line{opacity:1;stroke-width:5;filter:drop-shadow(0 0 5px var(--wc))}.cpu .wire-flow{fill:none;stroke:#ffffffe6;stroke-width:1.8;stroke-linecap:round;stroke-dasharray:2 12;animation:flow .7s linear infinite}.cpu .wire-packet{fill:var(--wc);stroke:#fff;stroke-width:2;filter:drop-shadow(0 0 4px var(--wc))}@keyframes flow{to{stroke-dashoffset:-14}}.cpu-box{cursor:pointer;transition:opacity .25s}.cpu-box>rect:first-child,.cpu-box>path{fill:var(--cpu-box);stroke:var(--border-strong);stroke-width:1.5;transition:fill .2s,stroke .2s}.cpu-stripe{fill:var(--border-strong);transition:fill .2s}.cpu-box:hover>rect:first-child,.cpu-box:hover>path{stroke:var(--accent)}.cpu-box.lv-idle{opacity:.5}.cpu-box.lv-involved>rect:first-child,.cpu-box.lv-involved>path{stroke:color-mix(in srgb,var(--accent) 55%,var(--border));fill:color-mix(in srgb,var(--accent-soft) 70%,var(--cpu-box))}.cpu-box.lv-involved .cpu-stripe{fill:color-mix(in srgb,var(--accent) 55%,transparent)}.cpu-box.lv-next>rect:first-child,.cpu-box.lv-next>path{stroke:var(--accent);stroke-width:2;stroke-dasharray:8 5;fill:color-mix(in srgb,var(--accent-soft) 80%,var(--cpu-box))}.cpu-box.lv-next .cpu-stripe{fill:var(--accent)}.cpu-box.lv-active>rect:first-child,.cpu-box.lv-active>path{fill:var(--active-soft);stroke:var(--active);stroke-width:2.5;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--active) 45%,transparent))}.cpu-box.lv-active .cpu-stripe{fill:var(--active)}.cpu-box.mem>rect:first-child{fill:color-mix(in srgb,var(--accent-soft) 85%,var(--cpu-box))}.cpu-box.cu>rect:first-child{fill:var(--surface-2)}.cpu text{fill:var(--text)}.cpu-name{font-weight:700;font-size:17px;font-style:italic}.cpu-name.vertical{font-style:normal;letter-spacing:.3em;font-size:14px}.cpu-val{font-family:var(--mono);font-size:18px;font-weight:600}.cpu-box.changed .cpu-val{fill:var(--active)!important}.cpu-changed{font-family:var(--mono);font-size:12px;font-weight:600;fill:var(--active)!important}.cu-next{fill:var(--accent-strong)!important}.cpu-hex{font-family:var(--mono);font-size:14px;fill:var(--muted)!important;font-style:italic}.cpu-bits{font-family:var(--mono);font-size:12px;fill:var(--muted)!important;letter-spacing:.02em}.cpu-small{font-size:12px;fill:var(--muted)!important}.flag{fill:var(--surface)!important;stroke:var(--border-strong)!important;transition:fill .2s}.flag.on{fill:var(--accent)!important;stroke:var(--accent)!important}.flag.flip{stroke:var(--active)!important;stroke-width:2.5!important}.flag-name{font-size:11px;font-weight:700}.flag-val{font-size:12px;font-family:var(--mono)}.logs{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px;min-height:0}.log-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;min-height:0;overflow:hidden}.log-head{display:flex;align-items:center;gap:2px;padding:4px 6px 4px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border)}.log-head span{flex:1}.log-scroll{flex:1;overflow-y:auto;padding:6px 12px;font-size:12.5px;min-height:0}.log-line{padding:1px 0}.log-time{color:var(--muted);font-family:var(--mono);font-size:11px}.log-ok{color:var(--active)}.log-warn{color:var(--warn)}.log-error{color:var(--danger)}.log-big{max-height:65vh;overflow:auto;font-size:13px}.micro-head{font-weight:700;color:var(--accent-strong);margin-bottom:2px}.micro-line{padding:1px 6px;border-radius:4px}.micro-line.done{color:var(--muted)}.micro-line.next{background:var(--active-soft);color:var(--active);font-weight:700}.micro-idx{display:inline-block;width:20px;color:var(--muted)}.next-line{color:var(--active);font-weight:700}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a101673;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--surface);border-radius:14px;box-shadow:0 20px 60px #0000004d;width:480px;max-width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;border:1px solid var(--border)}.modal-wide{width:820px}.modal-full{width:min(1280px,100%);height:calc(100vh - 32px)}.modal-head{display:flex;align-items:center;padding:14px 16px 10px 20px;border-bottom:1px solid var(--border)}.modal-head h2{flex:1}.modal-body{padding:16px 20px;overflow:auto;flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}.modal-foot{display:flex;gap:8px;align-items:center;padding:12px 20px;border-top:1px solid var(--border);flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field-label{font-size:12px;font-weight:600;color:var(--muted)}.field-hint{font-size:11.5px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid.four{grid-template-columns:repeat(4,1fr)}.check{display:flex;align-items:center;gap:7px;cursor:pointer}.radio-row{display:flex;gap:16px;flex-wrap:wrap}.radio-row label{display:flex;gap:6px;align-items:center;cursor:pointer}.radio-row label.disabled{opacity:.45;cursor:not-allowed}.status{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;font-size:13px;flex-wrap:wrap}.status-ok{background:var(--active-soft);color:var(--active)}.status-error{background:var(--danger-soft);color:var(--danger)}.status-warn{background:var(--warn-soft);color:var(--warn)}.status-info{background:var(--accent-soft);color:var(--accent-strong)}.word-bits{padding:10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);text-align:center;font-size:13px;overflow-x:auto;white-space:nowrap}.word-bits span{padding:2px 6px;border-radius:4px;margin:0 2px}.wb-operand{background:var(--accent-soft)}.wb-mode{background:var(--warn-soft)}.wb-op{background:var(--active-soft)}.micro-preview{max-height:160px;overflow:auto;padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:12.5px}.kv{border-collapse:collapse;width:100%}.kv th{text-align:left;color:var(--muted);font-weight:500;padding:4px 10px 4px 0;white-space:nowrap;vertical-align:top}.kv td{padding:4px 0;word-break:break-all}.leds{display:grid;grid-template-columns:repeat(16,1fr);gap:8px 4px;padding:10px 0}.led-cell{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;color:var(--muted);font-family:var(--mono)}.led{width:22px;height:22px;border-radius:50%;background:#3b2323;border:2px solid #563232;transition:background .1s,box-shadow .1s}.led.on{background:#ff4b4b;border-color:#ff8a8a;box-shadow:0 0 10px #ff4b4b}.ref-table,.data-table{width:100%;border-collapse:collapse;font-size:13px}.ref-table th,.ref-table td,.data-table th,.data-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}.ref-table th,.data-table th{color:var(--muted);font-weight:600;font-size:12px;position:sticky;top:0;background:var(--surface)}.prose{font-size:14px}.prose li{margin:3px 0}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);overflow-x:auto;flex-shrink:0}.tabs button{border:none;background:none;padding:8px 12px;cursor:pointer;color:var(--muted);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;gap:6px;align-items:center;white-space:nowrap}.tabs button.active{color:var(--accent-strong);border-bottom-color:var(--accent)}.tabs-sm button{padding:7px 9px;font-size:13px}.badge{background:var(--danger);color:#fff;border-radius:999px;font-size:10px;padding:0 6px;min-width:18px;text-align:center}.tabs button.active .badge{background:var(--accent)}.code-split{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;flex:1;min-height:0}.code-split>div{display:flex;flex-direction:column;min-height:0}.code-editor{display:flex;flex:1;min-height:260px;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden;font-family:var(--mono);font-size:13px;line-height:20px;background:var(--surface)}.code-gutter{width:56px;flex-shrink:0;overflow:hidden;background:var(--surface-2);border-right:1px solid var(--border);color:var(--muted);text-align:right;padding:8px 8px 8px 0;-webkit-user-select:none;user-select:none}.code-gutter .gl{height:20px}.code-gutter .gl.err{color:var(--danger);font-weight:700}.code-gutter .gl.hl{color:var(--active);font-weight:700}.code-main{position:relative;flex:1;overflow:hidden}.code-back{position:absolute;left:0;right:0;top:8px;pointer-events:none}.code-back .bl{height:20px;text-align:right;padding-right:12px;white-space:nowrap;overflow:hidden}.code-back .bl.err{background:var(--danger-soft)}.code-back .bl.hl{background:var(--active-soft)}.err-msg{color:var(--danger);font-family:var(--font);font-size:11.5px}.code-main textarea{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none!important;border-radius:0!important;background:transparent!important;padding:8px 10px!important;resize:none;line-height:20px;font-family:var(--mono);font-size:13px;outline:none;white-space:pre;overflow:auto}.builder{display:grid;grid-template-columns:220px 1fr;gap:16px;min-height:0;flex:1}.builder-list{display:flex;flex-direction:column;gap:4px;overflow:auto}.builder-edit{display:flex;flex-direction:column;gap:12px;min-height:0;overflow:auto}.builder-edit.empty{align-items:center;justify-content:center;color:var(--muted)}.builder-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;min-height:260px}.builder-cols>div{display:flex;flex-direction:column;min-height:0}.micro-palette,.micro-selected{flex:1;overflow:auto;border:1px solid var(--border);border-radius:8px;padding:4px;max-height:340px}.list-item{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;text-align:left;border:1px solid transparent;background:none;padding:6px 10px;border-radius:7px;cursor:pointer}.list-item:hover{background:var(--surface-2);border-color:var(--border)}.list-item.active{background:var(--accent-soft);border-color:var(--accent)}.sel-line{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 2px 8px;border-radius:6px}.sel-line:hover{background:var(--surface-2)}.fetch-line{padding:2px 8px;font-style:italic}.row-actions{display:inline-flex;gap:2px;align-items:center}.pick-list{display:flex;flex-direction:column;gap:2px;max-height:50vh;overflow:auto}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);padding:10px 18px;border-radius:10px;box-shadow:var(--shadow);z-index:200;background:var(--surface);border:1px solid var(--border);font-weight:500;max-width:calc(100% - 32px);word-break:break-all}.toast-ok{border-color:var(--active);color:var(--active)}.toast-error{border-color:var(--danger);color:var(--danger)}.empty{padding:36px 16px;text-align:center;color:var(--muted)}.page{flex:1;overflow:auto;padding:24px;max-width:1180px;width:100%;margin:0 auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-head .row{margin:0}.search{width:260px!important}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}.auth-page{display:flex;justify-content:center;align-items:flex-start;padding-top:6vh}.auth-card{width:420px;max-width:100%;padding:26px;display:flex;flex-direction:column;gap:14px}.auth-card p{margin:0}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;margin-top:16px}.project-card{padding:12px;display:flex;flex-direction:column;gap:8px}.project-open{display:flex;gap:12px;align-items:flex-start;text-align:left;background:none;border:none;cursor:pointer;padding:4px;border-radius:8px;color:var(--accent-strong)}.project-open span{display:flex;flex-direction:column;color:var(--text)}.project-open:hover{background:var(--surface-2)}.project-card .row-actions{justify-content:flex-end}.asg-list{display:flex;flex-direction:column;gap:12px}.asg-card{padding:16px 18px}.asg-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.asg-head h3{font-size:16px}.asg-desc{white-space:pre-wrap;margin:8px 0}.asg-meta{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:8px}.asg-meta span{display:inline-flex;gap:4px;align-items:center}.feedback{width:100%;white-space:pre-wrap;color:var(--text);margin-top:4px}.pill{font-size:11px;padding:1px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--muted)}.pill-classic{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.pill-advanced{background:var(--active-soft);color:var(--active);border-color:transparent}textarea{resize:vertical}.arch-grid{flex:1;min-height:0;display:grid;grid-template-columns:150px minmax(0,1fr) 460px;gap:10px;padding:10px}.arch-grid.no-palette{grid-template-columns:minmax(0,1fr) 460px}.arch-grid.wide{grid-template-columns:150px minmax(0,1fr) min(62vw,900px)}.arch-grid.wide.no-palette{grid-template-columns:minmax(0,1fr) min(62vw,900px)}.palette{display:flex;flex-direction:column;gap:4px;overflow:auto}.pal-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);background:var(--surface);border-radius:8px;cursor:grab;text-align:left;font-weight:500;font-size:13px}.pal-item:hover:not(:disabled){border-color:var(--accent)}.pal-item:disabled{opacity:.5;cursor:not-allowed}.pal-icon{width:14px;height:14px;border-radius:3px;background:var(--accent);flex-shrink:0}.pal-alu .pal-icon{background:#8b5cf6;clip-path:polygon(0 0,40% 0,50% 30%,60% 0,100% 0,75% 100%,25% 100%);border-radius:0}.pal-mux .pal-icon{background:#f59e0b;clip-path:polygon(0 0,100% 25%,100% 75%,0 100%);border-radius:0}.pal-bus .pal-icon{background:#ef4444;height:6px}.pal-memory .pal-icon{background:#0ea5e9}.pal-constant .pal-icon,.pal-incrementer .pal-icon,.pal-slice .pal-icon{background:#64748b;border-radius:50%}.pal-input .pal-icon,.pal-output .pal-icon{background:#12a46b;border-radius:50%}.canvas{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;min-height:0;min-width:0}.canvas .react-flow{--xy-background-color: var(--surface)}.canvas .wire-halo{fill:none;stroke:var(--surface);stroke-width:7}.canvas .wire-line{fill:none;stroke:var(--wc);stroke-width:2.2;stroke-linejoin:round;opacity:.85;transition:opacity .25s,stroke-width .25s}.canvas .wire-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke}.canvas .wire-edge.lv-idle .wire-line{opacity:.18}.canvas .wire-edge.lv-involved .wire-line{opacity:.7}.canvas .wire-edge.lv-next .wire-line{opacity:1;stroke-dasharray:6 5;stroke-width:2.6}.canvas .wire-edge.lv-active .wire-line{opacity:1;stroke-width:4;filter:drop-shadow(0 0 4px var(--wc))}.canvas .wire-edge.sel .wire-line{opacity:1;stroke-width:4}.canvas .wire-edge:hover .wire-line{opacity:1;stroke-width:3.2}.canvas .wire-flow{fill:none;stroke:#ffffffe6;stroke-width:1.5;stroke-dasharray:2 11;animation:flow .7s linear infinite}.canvas .wire-packet{fill:var(--wc);stroke:#fff;stroke-width:1.5;filter:drop-shadow(0 0 3px var(--wc))}.canvas .react-flow__edge.selected .wire-line{opacity:1}.minimap{border-radius:8px;overflow:hidden}.node{min-width:150px;background:var(--surface);border:1.5px solid var(--border-strong);border-radius:9px;padding:8px 30px;font-size:12px;box-shadow:var(--shadow);position:relative;min-height:46px}.node.selected{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}.node{transition:opacity .25s,box-shadow .25s,border-color .2s,background .2s}.node.lv-idle{opacity:.45}.node.lv-involved{background:color-mix(in srgb,var(--accent-soft) 60%,var(--surface));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.node.lv-next{background:color-mix(in srgb,var(--accent-soft) 85%,var(--surface));outline:2px dashed var(--accent);outline-offset:3px}.node.active,.node.lv-active{background:var(--active-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--active) 70%,transparent),0 0 20px -2px color-mix(in srgb,var(--active) 60%,transparent)}.node-register{border-left:5px solid var(--accent)}.node-alu{border-left:5px solid #8b5cf6;min-width:130px;min-height:76px}.node-mux{border-left:5px solid #f59e0b;min-width:96px;border-radius:9px 22px 22px 9px}.node-bus{border:none;background:#ef4444;color:#fff;border-radius:6px;min-height:30px;padding:14px 12px}.node-bus .node-type,.node-bus .muted{color:#ffe0e0}.node-bus.active{background:var(--active)}.node-memory{border-left:5px solid #0ea5e9;min-width:140px;min-height:70px}.node-constant,.node-incrementer,.node-slice{min-width:90px;border-style:dashed}.node-input,.node-output{border-left:5px solid #12a46b}.node-title{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.node-name{font-weight:700;font-size:13px}.node-type{color:var(--muted);font-family:var(--mono);font-size:11px}.node-value{font-size:13px;font-weight:600;margin-top:2px}.node-signal{font-size:11px;color:var(--active);font-weight:600}.node-extra{font-size:11px;color:var(--muted)}.node-input{width:90px!important;padding:2px 6px!important;margin-top:4px;font-family:var(--mono)}.react-flow__handle{width:10px;height:10px;background:var(--surface);border:2px solid var(--border-strong)}.react-flow__handle:hover{border-color:var(--accent);background:var(--accent)}.port-label{position:absolute;font-size:9.5px;font-family:var(--mono);color:var(--muted);pointer-events:none;white-space:nowrap}.port-label.left{left:9px;top:-7px}.port-label.right{right:9px;top:-7px}.port-label.top{top:8px;left:50%;transform:translate(-50%)}.port-label.bottom{top:-17px;left:50%;transform:translate(-50%)}.node-bus .port-label{color:#ffe0e0}.arch-side{display:flex;flex-direction:column;overflow:hidden}.side-head{display:flex;align-items:center;gap:4px;padding:0 6px 0 0;border-bottom:1px solid var(--border)}.side-head .tabs{flex:1;border-bottom:none}.side-body{flex:1;overflow:auto;padding:12px 14px;min-height:0}.inspector{display:flex;flex-direction:column;gap:10px}.inspector h4{margin:4px 0 0}.inspector p{margin:0}.ops-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px 10px}.pair{display:flex;align-items:center;gap:4px}.pair input{width:70px!important}.control-editor section{margin-bottom:16px}.control-editor h4{margin-top:0}.step-list{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.step-row{width:100%;border:1px solid var(--border);border-radius:8px;padding:6px;background:var(--surface)}.step-row.current{border-color:var(--active);box-shadow:0 0 0 2px var(--active-soft)}.step-row.has-error{border-color:color-mix(in srgb,var(--danger) 60%,var(--border))}.step-main{display:flex;align-items:center;gap:6px}.step-idx{width:20px;text-align:center;color:var(--muted);font-family:var(--mono);font-size:12px;flex-shrink:0}.rtl-input{flex:1;padding:4px 8px!important;font-size:12.5px}.step-error{color:var(--danger);font-size:12px;padding:4px 0 0 26px}.step-signals{font-size:11.5px;color:var(--muted);padding:4px 0 0 26px;word-break:break-word}.signal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 10px;padding:8px 4px 2px 26px}.sig{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;padding:2px 6px;border-radius:6px}.sig.on{background:var(--active-soft)}.sig select{width:auto!important;padding:1px 4px!important;font-size:12px}.sig.wide{grid-column:1 / -1}.sig.wide input{flex:1;padding:2px 6px!important}.instr-card{border:1px solid var(--border);border-radius:9px;padding:6px;margin-bottom:6px;background:var(--surface-2)}.instr-card.current{border-color:var(--active)}.instr-card .step-list{padding:6px 0 2px}.instr-head{display:flex;align-items:center;gap:6px}.op-input{width:56px!important;padding:3px 6px!important}.name-input{width:90px!important;padding:3px 6px!important;font-weight:700}.desc-input{flex:1;padding:3px 6px!important;font-size:12.5px}.program-editor{display:flex;flex-direction:column;gap:10px;height:100%}.program-editor .code-editor{min-height:320px}.listing td{padding:1px 8px 1px 0;white-space:nowrap}.problems{display:flex;flex-direction:column;gap:6px}.problem{padding:6px 10px;border-radius:7px;background:var(--danger-soft);color:var(--danger);font-size:13px}.problem .where{font-weight:700;margin-right:6px}.sim-side{display:flex;flex-direction:column;gap:6px}.sim-side .run-status{margin:0;align-self:flex-start}.next-step{padding:8px 10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border)}.reg-table{width:100%;border-collapse:collapse}.reg-table th{text-align:left;padding:3px 8px 3px 0}.reg-table td{padding:3px 8px 3px 0;white-space:nowrap}.reg-table td.bits{color:var(--muted);font-size:11px}.reg-table tr.active{background:var(--active-soft)}.output-box{padding:6px 10px;border-radius:7px;background:var(--active-soft);word-break:break-all}.mem-mini{height:220px;flex:none;border:1px solid var(--border);border-radius:8px}.sim-side .log-scroll{max-height:180px;border:1px solid var(--border);border-radius:8px}details summary{cursor:pointer;color:var(--muted);font-size:13px}@media (max-width: 1100px){.arch-grid,.arch-grid.wide{grid-template-columns:130px minmax(0,1fr);grid-template-rows:minmax(420px,1fr) auto}.arch-grid.no-palette,.arch-grid.wide.no-palette{grid-template-columns:minmax(0,1fr)}.arch-side{grid-column:1 / -1;max-height:70vh}.logs{grid-template-columns:1fr 1fr}.logs .log-col:first-child{grid-column:1 / -1}.sim-grid{grid-template-rows:minmax(0,1fr) 300px}}@media (max-width: 860px){.app{height:auto;min-height:100%}.app-header{height:auto;flex-wrap:wrap;padding:8px 16px;gap:8px}.brand-text small,.user-name{display:none}.main-nav{order:3;width:100%;overflow-x:auto}.sim-grid{display:flex;flex-direction:column;padding:8px 16px}.memory-panel{height:460px;flex:none}.cpu-panel{min-height:300px}.logs{grid-template-columns:1fr}.log-col{height:180px}.arch-grid,.arch-grid.wide{display:flex;flex-direction:column;padding:8px 16px}.palette{flex-direction:row;overflow-x:auto;flex:none}.pal-item{white-space:nowrap}.canvas{height:60vh;flex:none}.form-grid,.form-grid.four,.code-split,.builder,.builder-cols{grid-template-columns:1fr}.leds{grid-template-columns:repeat(8,1fr)}.run-status{margin-left:0}.page{padding:16px}.modal-full{height:auto}}.mem-row.editing{background:var(--accent-soft);border-left-color:var(--accent)}.cell-input{flex:1;min-width:0;height:22px;padding:0 6px!important;font-family:var(--mono);font-size:12.5px;border:1px solid var(--accent)!important;border-radius:5px!important;background:var(--surface)!important}.cell-input.invalid{border-color:var(--danger)!important;background:var(--danger-soft)!important}.cell-error{color:var(--danger);font-weight:500;margin-bottom:4px}.kbd-hint{margin-bottom:4px}.kbd-hint kbd{font-size:10.5px}.tour-panel{position:fixed;right:18px;bottom:18px;width:390px;max-width:calc(100vw - 32px);max-height:min(70vh,640px);z-index:150;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 50px -10px #0a141e59;display:flex;flex-direction:column;overflow:hidden}.tour-panel header{display:flex;align-items:center;gap:8px;padding:10px 10px 8px 14px;color:var(--accent-strong)}.tour-title{font-weight:700;flex:1;color:var(--text)}.tour-progress{height:3px;background:var(--surface-2)}.tour-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--active));transition:width .3s}.tour-panel h3{font-size:16px;padding:12px 16px 4px}.tour-body{padding:4px 16px 10px;overflow:auto;font-size:13.5px;line-height:1.55}.tour-body code,.tour-task code{background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:0 4px}.tour-task{margin:0 16px 10px;display:flex;gap:10px;padding:10px 12px;border-radius:10px;background:var(--accent-soft);color:var(--text);font-size:13px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.tour-task svg{flex-shrink:0;color:var(--accent-strong);margin-top:1px}.tour-task.done{background:var(--active-soft);border-color:color-mix(in srgb,var(--active) 45%,transparent)}.tour-task.done svg{color:var(--active)}.tour-task-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:2px}.tour-goto{margin:4px 16px 0;align-self:flex-start}.tour-panel footer{display:flex;gap:6px;align-items:center;padding:10px 12px;border-top:1px solid var(--border)}.spin-slow{animation:spin 3s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn.pulse{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--accent) 50%,transparent)}50%{box-shadow:0 0 0 6px transparent}}.tour-spot{position:fixed;z-index:140;pointer-events:none;border-radius:12px;border:2.5px solid var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent),0 0 24px 2px color-mix(in srgb,var(--accent) 45%,transparent);transition:all .25s ease;animation:spotPulse 2s ease-in-out infinite}@keyframes spotPulse{50%{box-shadow:0 0 0 9px color-mix(in srgb,var(--accent) 10%,transparent),0 0 30px 4px color-mix(in srgb,var(--accent) 35%,transparent)}}.tour-pill{position:fixed;right:18px;bottom:18px;z-index:150;display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;border:none;background:var(--accent);color:#fff;font-weight:600;cursor:pointer;box-shadow:var(--shadow)}.tour-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.tour-card{padding:18px;display:flex;flex-direction:column;gap:8px;border-top:4px solid var(--accent)}.tour-card.tc-advanced{border-top-color:var(--active)}.tour-card h3{font-size:17px}.tour-card p{margin:0;color:var(--muted);flex:1}.tour-card-top{display:flex;gap:8px;align-items:center}.tour-num{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font-weight:700;font-size:13px}.tour-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.tour-card-foot span{display:inline-flex;gap:4px;align-items:center}.pill{display:inline-flex;align-items:center;gap:4px}.pill.done{background:var(--active-soft);color:var(--active);border-color:transparent}@media (max-width: 860px){.tour-panel{right:16px;left:16px;width:auto;bottom:12px;max-height:55vh}}.mem-row{overflow:hidden}.mem-row .val,.mem-row .addr{line-height:20px;max-height:20px}.cpu-box.imem>rect:first-child{fill:color-mix(in srgb,var(--warn-soft) 70%,var(--cpu-box))}.cpu-name.small-v{font-size:12px;letter-spacing:.18em}.arch-switch{align-self:center}.arch-switch button{padding:7px 12px;font-size:13px;position:relative}.run-status.mini{margin-left:4px;padding:3px 10px;font-size:12px}
