@import"https://fonts.googleapis.com/css2?family=Press+Start+2P&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--void: #0a0b0e;--ink: #14161b;--ink-raised:#1a1d24;--line: #262a33;--line-soft: #1c1f26;--paper: #eceff5;--dim: #838a9c;--faint: #4c5262;--gold: #d3a34c;--gold-dim: #8a6f38;--signal: #ff5c5c;--led-green: #57e08a;--face-pixel: "Press Start 2P", monospace;--face-sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--face-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--radius: 3px;--radius-sm: 2px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--void);color:var(--paper);font-family:var(--face-sans);font-size:13px;overflow:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#app{height:100vh;display:flex;flex-direction:column}.mono{font-family:var(--face-mono);font-variant-numeric:tabular-nums}::selection{background:var(--gold);color:#1a1300}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:var(--radius-sm)}.toolbar{display:flex;align-items:center;gap:10px;padding:9px 16px;background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 40%),var(--ink-raised);border-bottom:1px solid var(--line);box-shadow:0 1px #ffffff05 inset,0 6px 16px #00000059;flex-wrap:wrap;flex-shrink:0;position:relative;z-index:5}.toolbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(211,163,76,.55) 18%,rgba(211,163,76,.55) 82%,transparent)}.toolbar .brand{display:flex;align-items:center;gap:9px;margin-right:4px}.toolbar .brand .led{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:#3a1414;box-shadow:inset 0 0 0 1px #00000080;transition:background .2s,box-shadow .2s}body.is-running .toolbar .brand .led{background:var(--led-green);box-shadow:0 0 6px 2px #57e08a8c,inset 0 0 2px #fff6}.toolbar .brand .brand-word{font-family:var(--face-pixel);font-size:13px;color:var(--paper);letter-spacing:1px}.toolbar .brand .brand-sub{font-family:var(--face-mono);font-size:10px;font-weight:600;letter-spacing:3px;color:var(--gold);padding-top:2px}.toolbar .rom-name{color:var(--dim);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-family:var(--face-mono)}.btn{background:var(--ink);color:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 13px;cursor:pointer;font-size:12.5px;font-weight:500;font-family:var(--face-sans);transition:border-color .15s ease,color .15s ease,background .15s ease}.btn:hover{border-color:var(--gold);color:#fff;background:#1d2029}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--gold);color:#201704;border-color:var(--gold);font-weight:700}.btn.primary:hover{background:#e0b25c;border-color:#e0b25c;color:#201704}.btn.danger{color:var(--signal);border-color:#ff5c5c59}.btn.danger:hover{border-color:var(--signal);color:#fff;background:#ff5c5c1f}select,input[type=text],input[type=number]{background:var(--ink);color:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:5px 8px;font-size:12px;font-family:var(--face-sans);transition:border-color .15s}select:focus,input:focus{outline:none;border-color:var(--gold)}.spacer{flex:1}.divider{width:1px;height:22px;background:var(--line)}.status{color:var(--dim);font-size:11px;font-family:var(--face-mono);letter-spacing:.3px}input[type=range]{accent-color:var(--gold)}.layout{display:grid;grid-template-columns:390px 1fr 350px;flex:1;gap:0;min-height:0}.col{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line-soft)}.col:last-child{border-right:none}.panel{background:var(--ink);border:1px solid var(--line-soft);border-radius:var(--radius);margin:8px;display:flex;flex-direction:column;min-height:0;overflow:hidden;transition:border-color .2s}.panel:hover{border-color:var(--line)}.panel-title{display:flex;align-items:center;justify-content:space-between;padding:7px 10px 7px 12px;background:var(--ink-raised);border-bottom:1px solid var(--line-soft);font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim);cursor:pointer;user-select:none;font-weight:600;font-family:var(--face-sans)}.panel-title .eyebrow{position:relative;color:var(--gold);font-weight:700;padding:3px 7px 3px 9px;background:#d3a34c14;border:1px solid rgba(211,163,76,.3);border-radius:2px;font-family:var(--face-mono);font-size:9.5px;letter-spacing:1px}.panel-title .eyebrow:before{content:"";position:absolute;top:-1px;left:-1px;width:4px;height:4px;border-top:1px solid var(--gold);border-left:1px solid var(--gold)}.panel-body{padding:8px 10px;overflow:auto;flex:1}.screen-wrap{position:relative;aspect-ratio:4/3;background:#000;border-radius:var(--radius-sm);overflow:hidden;box-shadow:inset 0 0 0 1px #d3a34c2e,inset 0 0 40px #0009,0 8px 24px #00000080}#screen{width:100%;height:100%;image-rendering:pixelated;display:block}.screen-wrap:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 62%,rgba(0,0,0,.32) 100%)}.screen-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--faint);font-size:12.5px;pointer-events:none;flex-direction:column;gap:10px;z-index:2;font-family:var(--face-sans)}.screen-overlay .big{font-family:var(--face-pixel);font-size:22px;letter-spacing:6px;color:var(--dim)}.screen-overlay .big b{color:var(--gold);text-shadow:0 0 18px rgba(211,163,76,.4);font-weight:400}.dasm{font-size:12px;line-height:1.55}.dasm .line{white-space:pre;padding:1px 6px;border-radius:2px;border-left:2px solid transparent;transition:background .1s}.dasm .line.hit{background:#d3a34c24;border-left-color:var(--gold)}.dasm .line.clickable:hover{background:#ffffff0a;cursor:pointer}.dasm .mnem{color:var(--gold);font-weight:600}.dasm .addr{color:var(--dim)}.dasm .bytes{color:#5a606f}.reg-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 10px}.reg{display:flex;justify-content:space-between;padding:4px 8px;font-size:12px;background:var(--ink-raised);border-radius:2px;border:1px solid var(--line-soft)}.reg .k{color:var(--dim);font-weight:500;font-family:var(--face-sans)}.reg .v{color:var(--gold);font-family:var(--face-mono)}.flag-bits{display:flex;gap:4px;margin-top:6px}.flag{flex:1;text-align:center;padding:3px 0;background:var(--ink-raised);border:1px solid var(--line-soft);border-radius:2px;color:var(--faint);font-size:11px;font-weight:700;font-family:var(--face-mono);transition:all .15s}.flag.on{background:var(--gold);border-color:var(--gold);color:#201704;box-shadow:0 0 8px #d3a34c59}.mem-dump{font-size:11px;line-height:1.5;white-space:pre;color:#b9c1d3;font-family:var(--face-mono)}.trace-out{font-size:11px;font-family:var(--face-mono);color:var(--dim)}.list-row{padding:4px 8px;font-size:12px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:6px;border-radius:2px;font-family:var(--face-sans)}.list-row:hover{background:var(--ink-raised)}.list-row .addr{color:var(--gold);font-family:var(--face-mono)}.del{color:var(--signal);cursor:pointer;font-weight:700;opacity:.6}.del:hover{opacity:1}.console{background:#07080a;border:1px solid var(--line-soft);border-radius:var(--radius-sm);height:190px;overflow:auto;font-family:var(--face-mono);font-size:12px;padding:8px 10px;box-shadow:inset 0 2px 10px #00000080}.console .out{color:var(--dim);white-space:pre-wrap;word-break:break-word}.console .in{color:var(--gold)}.console-input{width:100%;background:#07080a;border:1px solid var(--line-soft);color:var(--paper);padding:7px 10px;margin-top:6px;border-radius:var(--radius-sm);font-family:var(--face-mono);font-size:12px}.console-input:focus{border-color:var(--gold);outline:none}.console-input::placeholder{color:var(--faint)}.info-line{font-size:12px;padding:3px 0;font-family:var(--face-sans)}.info-line .k{color:var(--dim);display:inline-block;min-width:110px;font-weight:500}.info-line b{color:var(--paper);font-family:var(--face-mono);font-weight:600}.ppu-canv{background:#000;border:1px solid var(--line-soft);border-radius:var(--radius-sm);margin-bottom:6px}.tabs{display:flex;gap:4px;flex-wrap:wrap;padding:0 8px 8px}.tab{padding:4px 11px;background:var(--ink-raised);border:1px solid var(--line-soft);border-radius:2px;cursor:pointer;font-size:10.5px;font-weight:600;letter-spacing:.4px;transition:all .15s;color:var(--dim);font-family:var(--face-sans)}.tab:hover{border-color:var(--gold);color:#fff}.tab.active{background:var(--gold);color:#201704;border-color:var(--gold);font-weight:700}.statusbar{display:flex;gap:18px;padding:6px 16px;background:var(--ink-raised);border-top:1px solid var(--line);font-size:11px;color:var(--faint);font-family:var(--face-mono);flex-shrink:0}.statusbar .val{color:var(--gold);font-weight:600}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;border:2px solid var(--ink)}::-webkit-scrollbar-thumb:hover{background:var(--gold-dim)}.collapsed .panel-body{display:none}.hidden{display:none!important}.flash{animation:flash 1s ease}@keyframes flash{0%{box-shadow:0 0 0 3px var(--gold)}to{box-shadow:0 0 0 0 transparent}}@media (prefers-reduced-motion: reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (max-width: 1100px){.layout{grid-template-columns:1fr;overflow:auto}body{overflow:auto}.col{border-right:none}}
