:root{
  --bg:#140a17; --ink:#f4e7f0; --dim:#9a7f99; --berry:#ff3d7f; --mint:#5cf2b4;
  --plastic1:#5a2a72; --plastic2:#371849; --panel:#1f1124; --line:#3b2342;
  --mono:'IBM Plex Mono',monospace; --pix:'Silkscreen',monospace;
}
*{box-sizing:border-box}
body{margin:0;background:
  radial-gradient(circle at 20% 10%,#3a1236 0,transparent 40%),
  radial-gradient(circle at 90% 80%,#10233a 0,transparent 45%),
  radial-gradient(#2a1530 1px,transparent 1.5px) 0 0/18px 18px,var(--bg);
  color:var(--ink);font-family:var(--mono);min-height:100vh}
.wrap{max-width:1250px;margin:0 auto;padding:18px}
header h1{font-family:var(--pix);font-size:clamp(34px,6vw,64px);margin:0;letter-spacing:2px;line-height:1;
  text-shadow:4px 4px 0 #000,0 0 24px #ff3d7f66}
header h1 span{color:var(--berry);font-size:.55em;vertical-align:super;margin-left:6px}
.tag{color:var(--dim);margin:6px 0 18px;font-weight:300}
main{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px}
@media(max-width:900px){main{grid-template-columns:1fr}}
.bezel{background:linear-gradient(160deg,var(--plastic1),var(--plastic2));border-radius:26px 26px 60px 26px;
  padding:16px 18px 22px;box-shadow:inset 0 2px 0 #ffffff22,inset 0 -6px 0 #0005,0 18px 40px #000a;
  animation:boot .7s cubic-bezier(.2,1.4,.4,1)}
@keyframes boot{from{transform:translateY(30px) scale(.96);opacity:0}}
.bezel-top{display:flex;align-items:center;gap:8px;font-family:var(--pix);font-size:11px;color:#d9b9e6;margin-bottom:10px}
.brand{margin-left:auto;font-weight:700;color:#ffd0e2;letter-spacing:3px;font-style:italic}
.led{width:10px;height:10px;border-radius:50%;background:#3a0d1d;box-shadow:inset 0 1px 2px #000}
.led.on{background:var(--berry);box-shadow:0 0 10px var(--berry)}
.screen-well{position:relative;background:#0b0610;border-radius:12px;padding:12px;box-shadow:inset 0 4px 12px #000}
canvas{display:block;width:100%;aspect-ratio:4/3;image-rendering:pixelated;background:#000;border-radius:4px}
.crt{position:absolute;inset:12px;pointer-events:none;border-radius:4px;display:none;
  background:repeating-linear-gradient(0deg,#0006 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 60%,#0008)}
.crt.on{display:block}
.pads{display:flex;justify-content:space-between;align-items:center;margin-top:16px}
.dpad{position:relative;width:110px;height:110px}
.d{position:absolute;width:36px;height:36px;background:#1d0f24;color:#7c5a88;border:0;border-radius:6px;font-size:12px;box-shadow:0 3px 0 #000}
.d:active,.d.pr{transform:translateY(2px);box-shadow:0 1px 0 #000;color:var(--berry)}
.up{left:37px;top:0}.down{left:37px;bottom:0}.left{left:0;top:37px}.right{right:0;top:37px}
.ab{display:flex;gap:14px;transform:rotate(-18deg)}
.ab button{width:50px;height:50px;border-radius:50%;border:0;background:var(--berry);color:#3a0018;font-family:var(--pix);font-size:16px;box-shadow:0 4px 0 #8a1240}
.ab button:active,.ab button.pr{transform:translateY(3px);box-shadow:0 1px 0 #8a1240}
.speaker{display:flex;gap:6px;transform:rotate(-18deg)}
.speaker i{width:5px;height:38px;border-radius:3px;background:#0005}
#controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.btn{font-family:var(--pix);font-size:12px;background:var(--panel);color:var(--ink);border:1px solid var(--line);
  padding:8px 12px;border-radius:8px;cursor:pointer;box-shadow:0 3px 0 #000;transition:.08s}
.btn:hover{border-color:var(--berry)}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 #000}
.btn.hot{background:var(--berry);color:#2a0012;border-color:var(--berry)}
.btn.lit{color:var(--mint);border-color:var(--mint)}
.file input{display:none}
select.btn{appearance:none}
#status{margin-top:12px;font-family:var(--pix);font-size:12px;color:var(--mint);min-height:1.4em}
.hint{color:var(--dim);font-size:12px;margin:4px 0 0}
.side{background:#170c1bcc;border:1px solid var(--line);border-radius:16px;padding:14px;min-width:0}
.tabs{display:flex;gap:6px;margin-bottom:10px}
.tab{font-family:var(--pix);background:none;border:0;color:var(--dim);font-size:14px;padding:6px 10px;cursor:pointer;border-bottom:2px solid transparent}
.tab.on{color:var(--berry);border-color:var(--berry)}
.pane{display:none}.pane.on{display:block}
h3{font-family:var(--pix);font-size:11px;color:var(--dim);margin:14px 0 6px;font-weight:400;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
#hexAddr{width:56px;background:#0b0610;border:1px solid var(--line);color:var(--mint);font-family:var(--mono);padding:2px 4px}
.jumps button{background:none;border:1px solid var(--line);color:var(--dim);font-family:var(--pix);font-size:9px;padding:2px 5px;cursor:pointer;border-radius:4px}
pre{margin:0;background:#0b0610;border-radius:8px;padding:8px;font-size:11.5px;overflow:auto;line-height:1.4}
#regs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;font-size:12px}
#regs div{background:#0b0610;padding:4px 6px;border-radius:5px}
#regs b{color:var(--dim);font-weight:500;margin-right:4px}
.flag{color:#4a3450}.flag.on{color:var(--berry);font-weight:700}
.cur{background:var(--berry);color:#2a0012}
#master,#banks{display:grid;grid-template-columns:repeat(16,1fr);gap:2px}
#master div,#banks div{aspect-ratio:1;border-radius:2px}
#meters{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;height:70px}
.m{background:#0b0610;border-radius:4px;position:relative;overflow:hidden}
.m i{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,var(--mint),var(--berry))}
.m span{position:absolute;top:2px;left:0;right:0;text-align:center;font-family:var(--pix);font-size:9px;color:var(--dim);z-index:1}
textarea{width:100%;height:440px;background:#0b0610;color:#ffd7e8;border:1px solid var(--line);border-radius:8px;
  font-family:var(--mono);font-size:12.5px;padding:10px;resize:vertical;tab-size:8}
.row{display:flex;gap:8px;margin:8px 0;flex-wrap:wrap}
#asmlog{color:var(--mint);white-space:pre-wrap}
#asmlog.err{color:#ff8fae}
.ref summary{font-family:var(--pix);font-size:11px;color:var(--dim);cursor:pointer;margin:10px 0 6px}
footer{display:flex;justify-content:space-between;margin-top:28px;color:var(--dim);font-size:12px;flex-wrap:wrap;gap:8px}
footer a{color:var(--berry);font-family:var(--pix)}