@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Fira+Code:wght@400;500;600;700&family=Source+Code+Pro:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600;700&family=Roboto+Mono:wght@400;500;600;700&family=Ubuntu+Mono:wght@400;700&family=Inconsolata:wght@400;700&family=Space+Mono:wght@400;700&family=Courier+Prime:wght@400;700&family=Overpass+Mono:wght@400;600;700&family=Anonymous+Pro:wght@400;700&family=DM+Mono:wght@400;500;700&family=Noto+Sans+Mono:wght@400;500;600;700&family=Cascadia+Code&family=Victor+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap";*{margin:0;padding:0;box-sizing:border-box}button>svg,a>svg{vertical-align:-.125em}:root{--font-ui: "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono","Envy Code R", "Consolas", "SF Mono", "Fira Code", monospace;--mono-line-height: 1.5}body{background:#556;color:#e0e0e0;font-family:var(--font-ui);font-size:1em;min-height:100vh}#app{display:flex;justify-content:center;min-height:100vh;padding:20px;gap:20px}.sidebar{display:flex;flex-direction:column;gap:15px;width:272px}#toolbar{position:relative;display:flex;align-items:center;justify-content:space-between}#toolbar h1{margin:0;display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1;width:100%}.logo{position:relative;font-size:1.6rem;font-family:var(--font-ui);font-weight:800;letter-spacing:2px;color:#fff;background:#000;width:100%;text-align:center;padding:3px 0}.logo-num{color:#f6f;text-shadow:0 0 4px #f0f,0 0 8px #f0f,0 0 12px #f0f,0 0 16px #f0f;font-weight:400}.logo-version{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:.45em;font-weight:400;color:#aaa;letter-spacing:0;cursor:pointer;transition:color .15s}.logo-version:hover{color:#fff}.logo-stripe{height:2px;width:100%;background:linear-gradient(90deg,#e44,#ea4,#4e4,#4ee);border-radius:1px}.hmr-spinner{display:flex;align-items:center;justify-content:center;width:28px;height:28px}.hmr-spinner:after{content:"";display:block;width:10px;height:10px;border:1.5px solid rgba(192,192,255,.25);border-top-color:#c0c0ff;border-radius:50%;animation:hmr-spin .6s linear infinite}@keyframes hmr-spin{to{transform:rotate(360deg)}}.section-label{background:#000;color:#fff;font-size:.75rem;font-weight:600;letter-spacing:.5px;padding:3px 8px;display:flex;align-items:center;gap:6px;position:relative;overflow:hidden;cursor:grab;user-select:none;transition:margin-bottom .25s ease}.twisty{flex-shrink:0;transition:transform .2s ease}.pane.collapsed .twisty{transform:rotate(-90deg)}.pane.collapsed{padding:0}.pane.collapsed>.section-label{margin:0}.pane-content{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease,padding-bottom .25s ease;padding:0 6px 6px;min-height:0;overflow:hidden}.pane.collapsed .pane-content{grid-template-rows:0fr;padding:0 6px;min-height:0}.pane-content-inner{overflow:hidden;min-height:0;display:flex;flex-direction:column;gap:4px}.pane.dragging{opacity:.4}.drop-indicator{height:3px;background:#44f;border-radius:2px}.section-label:after{content:"";position:absolute;right:0;top:0;bottom:0;width:125px;opacity:.9;background:linear-gradient(135deg,#000 13px 20px,red 20px 35px,#ff0 35px 50px,#0f0 50px 65px,#0ff 65px 80px,#000 80px 88px)}.pane{background:#fff;color:#000;border-radius:4px;overflow:hidden;border-left:2px solid #000;border-right:2px solid #000;border-bottom:2px solid #000;box-shadow:0 5px 6px #00000059}.pane>.section-label{margin-bottom:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;border:1px solid #bbb;border-radius:4px;background:#eee;color:#000;cursor:pointer}.btn:hover:not(:disabled){background:#ddd}.btn:disabled{opacity:.4;cursor:default}.btn.active{background:#ddf;border-color:#66c;color:#00c}.btn.btn-lg{padding:5px 8px;font-size:.85rem}.btn.btn-md{padding:4px 8px;font-size:.8rem}.btn.btn-sm{padding:3px 6px;font-size:.75rem}.pane select,.pane button{padding:5px 8px;border:1px solid #bbb;border-radius:4px;background:#eee;color:#000;font-size:.85rem;cursor:pointer;width:100%}.pane button:hover,.pane select:hover{background:#ddd}.pane label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:#555}.pane .slider-row{color:#333}.pane .slider-row .slider-label,.pane .slider-row .slider-value{color:#555}.pane input[type=range]{background:#ccc}.pane--mono{--mono-line-height: 1.5}.pane--mono pre,.pane--mono .mono-block{font-family:var(--font-mono);line-height:var(--mono-line-height);font-variant-numeric:tabular-nums}#model-row{display:flex;align-items:center;gap:4px}#model-row select{flex:1;min-width:0}#model-row button{width:28px;height:28px;padding:0;flex-shrink:0}.rom-status{font-size:.75rem;color:#c66;display:none}input[type=file]{display:none}#snap-row{display:flex;gap:4px}#snap-row button{flex:1}#main{display:flex;flex-direction:column;align-items:center}#screen-wrap{position:relative;line-height:0}canvas#screen{box-sizing:content-box;image-rendering:pixelated;image-rendering:crisp-edges;border:2px solid #333;background:#000;transition:opacity .15s}canvas{image-rendering:pixelated;image-rendering:crisp-edges;box-shadow:0 5px 6px #00000059}#transcribe-overlay{display:none;position:absolute;margin:0;overflow:hidden;pointer-events:none;font-family:monospace;font-size:13px;line-height:1.22;white-space:pre;border:none;padding:0;transform-origin:0 0}#transcribe-overlay.active{display:block;pointer-events:auto;cursor:text;user-select:text}#status-bar{margin-top:6px;width:100%}.status-controls{color:#000;width:100%}#status{font-size:.8rem;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:1px solid #333;margin-top:4px;padding-top:4px}#activity{display:flex;justify-content:space-between;align-items:center;width:100%}.led-group{display:flex;gap:12px}.led{font-size:.7rem;color:inherit}.led.on{color:#8f8}.led[data-kind=ear].on{color:#ca6}.led[data-kind=rainbow].on{color:#f8f}.led[data-kind=mouse].on{color:#8cf}.led[data-kind=accel].on{color:#ff8}.mouse-pane{display:flex;flex-direction:column;gap:6px}.mouse-controls{display:flex;gap:6px}.mouse-capture-btn{padding:3px 10px;font-size:11px;cursor:pointer;background:#333;color:#ccc;border:1px solid #555;border-radius:3px}.mouse-capture-btn:hover{background:#444}.mouse-hint{font-size:10px;color:#888}#display-controls{display:flex;flex-direction:row;align-items:center;gap:8px}#display-controls label{flex:1}#display-controls label:last-child{justify-content:flex-end}#display-pane label{flex-direction:row;align-items:center;gap:4px}#display-pane select{width:auto;padding:3px 6px;font-size:.8rem}.slider-row{display:flex;align-items:center;gap:8px;font-size:.8rem;color:#ccc}.slider-row .slider-label{width:72px;flex-shrink:0;color:#999}.slider-row input[type=range]{flex:1;min-width:0}.slider-row select{flex:1;min-width:0;padding:3px 4px;font-size:.8rem}.slider-row .slider-value{min-width:38px;text-align:right;font-size:.75rem;color:#888;flex-shrink:0}.slider-row .slider-end-label{flex-shrink:0;font-size:.7rem;color:#888}input[type=range]{-webkit-appearance:none;appearance:none;height:4px;background:#444;border-radius:2px;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#88f;cursor:pointer}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#88f;border:none;cursor:pointer}#font-row{display:flex;gap:4px}#font-row button{flex:1}#font-list{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto;margin-top:4px}#font-list:empty{display:none}.font-entry{display:flex;flex-direction:column;gap:4px;padding:2px 0;cursor:pointer;font-size:.75rem;border-radius:3px;color:#ccc}.font-entry-header{display:flex;align-items:center;gap:4px;min-height:18px}.font-entry-preview{image-rendering:pixelated}.font-entry:hover{background:#ffffff14}.font-entry.active{background:#ffffff26;color:#fff}.font-entry-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.font-entry-addr{flex-shrink:0;font-size:.65rem;color:#888;font-family:var(--font-mono)}.font-entry-actions{display:flex;gap:2px;flex-shrink:0}.font-entry-actions button{width:18px;height:18px;padding:0;background:none;border:none;color:#999;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px;font-size:.7rem}.font-entry-actions button:hover{color:#fff;background:#ffffff26}.pane .font-entry{color:#555}.pane .font-entry:hover{background:#0000000d}.pane .font-entry.active{background:#0000001a;color:#333}.pane .font-entry-addr,.pane .font-entry-actions button{color:#999}.pane .font-entry-actions button:hover{color:#333;background:#0000001a}.dev-row{display:flex;align-items:center;gap:16px;font-family:var(--font-mono);font-size:.7rem;color:#ccc}.dev-label{color:#999;width:36px;flex-shrink:0}.dev-value{font-family:var(--font-mono);font-size:.7rem}.dev-errors-active,.dev-errors-active .dev-label{color:#e44}.pane .dev-row{color:#555}.pane .dev-label{color:#888}.pane .dev-errors-active,.pane .dev-errors-active .dev-label{color:#c22}#joy-columns{display:flex;gap:6px}.joy-column{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.joy-column label{font-size:.75rem;color:#555;display:flex;flex-direction:column;gap:2px;width:100%}.joy-column select{width:100%;padding:3px 4px;font-size:.8rem}.joy-dpad{display:grid;grid-template-columns:28px 28px 28px;grid-template-rows:28px 28px 28px;gap:1px}.joy-btn{border:1px solid #bbb;border-radius:4px;background:#eee;color:#333;font-size:.75rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-align:center;user-select:none;-webkit-user-select:none}.joy-btn:hover{background:#ddd}.joy-btn:active,.joy-btn.pressed{background:#cce;border-color:#66f}.joy-spacer{visibility:hidden}.joy-fire{font-size:.7rem;font-weight:700;color:#000}.joy-deadzone{border-radius:50%;background:#ddd;border:1px solid #bbb;width:20px;height:20px;margin:auto}.joy-config-waiting{animation:joy-wait .8s ease-in-out infinite}@keyframes joy-wait{0%,to{background:#cce5ff;border-color:#4da6ff}50%{background:#9cf;border-color:#39f}}.joy-config-holding{border-color:#39f!important}#cpu-controls{display:flex;gap:2px}#cpu-controls button{flex:1}.multiface-row{display:flex;align-items:center;gap:4px}.mf-check{flex:1;display:flex!important;flex-direction:row!important;align-items:center;gap:4px;font-size:.8rem;color:#333;cursor:pointer}.mf-check input[type=checkbox]{width:auto;cursor:pointer}.mf-check.rom-failed{opacity:.4;cursor:not-allowed}.mf-check.rom-failed input[type=checkbox]{cursor:not-allowed}.mf-nmi-btn{flex:0 0 auto;width:auto!important;padding:4px 10px!important;font-size:.75rem!important;font-weight:600;background:#fee!important;border-color:#c99!important;color:#a22!important}.mf-nmi-btn:hover:not(:disabled){background:#fdd!important;border-color:#a66!important}.mf-nmi-btn:disabled{opacity:.4;cursor:default}#cpu-mhz{flex:2;font-variant-numeric:tabular-nums;min-width:0}#regs-output{margin:0;padding:6px;border-radius:4px;font-size:.7rem;white-space:pre;overflow-x:auto}#regs-output .reg-name{color:#999}#sysvar-output{margin:0;padding:6px;font-size:.7rem;white-space:pre}#sysvar-output .reg-name{color:#999}#basic-output{margin:0;padding:6px;font-size:.7rem;white-space:pre;overflow-y:auto;max-height:500px;user-select:text;cursor:text}#basic-output .basic-line-num{color:#888;font-weight:700}#basic-vars-output{margin:0;padding:6px;font-size:.7rem;white-space:pre;overflow-y:auto;max-height:400px}#basic-vars-output .var-name{color:#6cf;font-weight:700}#banks-output{margin:0;padding:6px;font-size:.7rem;white-space:pre}#banks-output .reg-name{color:#999}#disk-info-output{margin:0;padding:6px;font-size:.7rem;white-space:pre}#disk-info-output .reg-name{color:#999}#drive-output{margin:0;padding:6px;font-size:.7rem;white-space:pre}#drive-output .reg-name{color:#999}#trap-log{display:none;margin:0;padding:4px 6px;background:#0a0a18;border:1px solid #333;border-radius:4px;font-size:.65rem;color:#8a8;white-space:pre;max-height:120px;overflow-y:auto;--mono-line-height: 1.4}#trap-log .trap-warn{color:#fa0}#tape-controls{display:flex;gap:2px}#tape-controls button{flex:1}#tape-name{display:flex;align-items:center;gap:4px;padding:4px 6px;background:#fff;border:1px solid #bbb;border-radius:3px;font-size:.75rem;min-height:24px;flex-shrink:0;margin-bottom:4px}#tape-name.tape-name-clickable{cursor:pointer}#tape-name.tape-name-clickable:hover{background:#f0f0f8;border-color:#999}.tape-name-text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#222;font-weight:500}#tape-name:not(:has(button.tape-eject)) .tape-name-text{color:#999;font-style:italic;font-weight:400}.tape-eject{flex:0 0 18px;width:18px;height:18px;min-width:18px;margin-left:auto;background:none!important;border:none!important;border-radius:0!important;padding:0!important;cursor:pointer;color:#888;display:flex;align-items:center;justify-content:center}.tape-eject:hover{color:#c00;background:none!important}#drive-panel .pane-content-inner{gap:20px}.disk-section{margin-bottom:8px}.drive-header{display:flex;align-items:center;gap:5px;margin-bottom:4px;font-size:.7rem}.disk-label{flex:0 0 auto;font-weight:700;color:#666}.drive-track-info{flex:1 1 0;color:#ccc;white-space:nowrap;text-align:center}.drive-track-info .reg-name{color:#888}.drive-header>.ddmenu-btn,.drive-header>button.ddmenu-btn{flex:0 0 auto;width:22px;height:18px;padding:0}.drive-header>button.ddmenu-btn:disabled{opacity:.35;cursor:default}.disk-slot{position:relative;margin-bottom:2px}.disk-name{display:flex;align-items:center;gap:4px;padding:4px 6px;background:#fff;border:1px solid #bbb;border-radius:3px;font-size:.75rem;min-height:24px;margin-bottom:0}.drive-led{position:absolute;bottom:-9px;right:0;width:22px;height:8px;border-radius:1px;border:1px solid rgba(0,0,0,.3)}.disk-name-clickable{cursor:pointer}.disk-name-clickable:hover{background:#f0f0f8;border-color:#999}.disk-name-text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#222;font-weight:500}.disk-section:not(:has(button.tape-eject)) .disk-name-text{color:#999;font-style:italic;font-weight:400}.disk-info-output{padding:0 4px;margin:0;font-size:.7rem;line-height:1.5;white-space:pre}.disk-info-output .reg-name{color:#999}#tape-blocks{max-height:400px;overflow-y:auto;font-size:.7rem}.tape-block{padding:4px 6px;cursor:pointer;border-left:3px solid transparent;color:#000}.tape-block:hover{background:#eef}.tape-block.played{color:#aaa}.tape-block.control{color:#888;font-style:italic}.tape-block.control.played{color:#bbb}.tape-block.control.current{color:#88a}.tape-block.current{background:#f0f0fe;border-left-color:#44e;color:#22c}.tb-detail{font-size:.7rem;color:#999;padding-left:20px}.tape-block.current .tb-detail{color:#88c}.tape-empty{padding:8px;color:#999;font-size:.7rem;font-style:italic}#diag{align-self:stretch;margin-top:6px;position:relative}#diag-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}#diag-header button{padding:3px 8px;border:1px solid #555;border-radius:4px;background:#2a2a3e;color:#e0e0e0;font-size:.75rem;cursor:pointer}#diag-header button:hover{background:#3a3a5e}#diag-header button.active{background:#2a3e2a;border-color:#5a5;color:#8f8}.zx-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#222;color:#eee;font-family:var(--font-ui);font-size:.72rem;padding:4px 8px;border-radius:4px;white-space:nowrap;box-shadow:0 2px 8px #00000080;opacity:0;transition:opacity .12s}.zx-tooltip.visible{opacity:1}.dev-controls{display:flex;align-items:center;gap:8px}.dev-stats{font-family:var(--font-mono);font-size:.7rem;color:#666}.dev-log{font-family:var(--font-mono);margin-top:4px;max-height:200px;overflow-y:auto;font-size:.7rem;line-height:1.5;white-space:pre;background:#fff;color:#000;padding:6px;border-radius:4px}.disasm-toolbar{display:flex;gap:2px;margin-bottom:4px}.disasm-toolbar button{flex:1}.ddmenu-btn{flex:1;display:flex;align-items:center;justify-content:center}.ddmenu{position:fixed;width:max-content;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 3px 10px #0003;z-index:10000;font-family:var(--font-ui);font-size:.8rem;color:#000;padding:4px 0}.ddmenu-item{display:flex;align-items:center;padding:5px 12px 5px 6px;cursor:pointer;white-space:nowrap;user-select:none}.ddmenu-item:hover{background:#eef}.ddmenu-check{width:20px;text-align:center;flex-shrink:0}.ddmenu-parent{position:relative}.ddmenu-arrow{margin-left:auto;padding-left:8px;font-size:.65em;color:#888}.ddmenu-sub{display:none;position:absolute;top:-4px;left:100%}.ddmenu-parent:hover>.ddmenu-sub{display:block}.disasm-output{font-family:var(--font-mono);font-size:.7rem;line-height:1.5;height:400px;overflow-y:auto;white-space:pre}.d-line{padding:2px 6px;border-left:3px solid transparent;white-space:pre}.d-line.d-cur{background:#f0f0fe;border-left-color:#44e}.d-line.d-bp{border-left-color:#c22;background:#fef0f0}.d-line.d-bp.d-cur{border-left-color:#c22;background:#f0e0fe}.d-off{color:#999}.d-hex{color:#aaa}.d-val{color:#22c}.d-adr{color:#808}.d-port{color:#c22}.disasm-ctx-menu{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:2px 2px 6px #0003;z-index:100;font-family:var(--font-ui);font-size:.75rem}.disasm-ctx-item{padding:4px 12px;cursor:pointer;white-space:nowrap}.disasm-ctx-item:hover{background:#eef}.mem-controls{display:grid;grid-template-columns:1fr 1fr auto;gap:4px;margin-bottom:4px}.mem-controls select{min-width:0;padding:3px 4px;border:1px solid #bbb;border-radius:4px;background:#eee;color:#000;font-size:.75rem;cursor:pointer}.mem-controls select:hover{background:#ddd}.mem-go-drop{display:flex;gap:4px;margin-bottom:4px}.mem-go-input{flex:1;min-width:0;padding:3px 6px;border:1px solid #bbb;border-radius:4px;background:#fff;color:#000;font-family:var(--font-mono);font-size:.8rem;text-transform:uppercase}.mem-go-confirm{flex:1}.mem-scroll{height:280px;overflow-y:scroll;overflow-x:hidden;border:1px solid #ddd;border-radius:4px;background:#fff}.mem-scroll pre{font-family:var(--font-mono);font-size:.7rem;line-height:15px;color:#000;margin:0;padding:0 2px;white-space:pre}.save-menu{position:fixed;background:#fff;border:1px solid #ccc;box-shadow:2px 2px 6px #0003;z-index:1000;font-family:var(--font-ui);font-size:.75rem;min-width:160px}.save-menu-item{padding:6px 12px;cursor:pointer;white-space:nowrap}.save-menu-item:hover{background:#eef}.section-label button,.section-label select{position:relative;z-index:1}.pane-dots{margin-left:auto;z-index:2;color:#ffffff73;font-size:.65rem;cursor:pointer}.pane-dots:hover{color:#fff}.changelog-backdrop{position:fixed;inset:0;z-index:999}.changelog-overlay{position:absolute;top:100%;left:0;right:0;max-height:70vh;background:#1a1a1a;border:1px solid #444;border-radius:0 0 6px 6px;box-shadow:0 8px 32px #0009;z-index:1000;overflow-y:auto;padding:8px 12px}.changelog-version{font-weight:700;font-size:.8rem;margin-bottom:4px}.changelog-list{margin:0 0 8px 16px;padding:0;font-size:.75rem;line-height:1.6}
