:root{--g:#39ff14;--r:#ff2e4d;--p:#b026ff;--b:#00e5ff;--bg:#0a0a0f;--panel:#0f0f18;--font:'VT323';}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:#d7ffe0;font-family:'JetBrains Mono',monospace;font-size:13px}
body.bg-grid{background-image:linear-gradient(rgba(57,255,20,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(57,255,20,.05) 1px,transparent 1px);background-size:28px 28px}
body.bg-dots{background-image:radial-gradient(rgba(176,38,255,.18) 1px,transparent 1px);background-size:18px 18px}
body.bg-plain{background-image:none}
.disp{font-family:var(--font),'VT323',monospace}
.logo{font-family:var(--font),'VT323',monospace;font-size:34px;letter-spacing:2px;color:var(--g);text-shadow:2px 0 var(--r),-2px 0 var(--b),0 0 18px rgba(57,255,20,.5);animation:flick 4s infinite}
@keyframes flick{0%,92%,100%{opacity:1;transform:none}93%{opacity:.6;transform:skewX(8deg)}95%{color:var(--p);transform:translateX(3px)}97%{opacity:.9}}
.topbar{position:sticky;top:0;z-index:40;background:rgba(8,8,14,.92);backdrop-filter:blur(6px);border-bottom:1px solid rgba(57,255,20,.25)}
.pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--g);padding:3px 10px;border-radius:2px;font-family:'VT323';font-size:18px;color:var(--g)}
.pill .dot{width:8px;height:8px;border-radius:50%;background:var(--g);animation:blink 1s steps(2) infinite}
.pill.idle{border-color:#555;color:#888}.pill.idle .dot{background:#555}
.pill.chaos{border-color:var(--p);color:var(--p)}.pill.chaos .dot{background:var(--p)}
@keyframes blink{50%{opacity:0}}
.estop{background:var(--r);color:#fff;font-family:'VT323';font-size:22px;padding:6px 16px;border:2px solid #fff;letter-spacing:1px;animation:pulse 1.4s infinite;cursor:pointer;white-space:nowrap}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,46,77,.7)}50%{box-shadow:0 0 0 10px rgba(255,46,77,0)}}
.side{background:rgba(10,10,18,.95);border-right:1px solid rgba(57,255,20,.18)}
.navb{display:flex;gap:10px;width:100%;text-align:left;padding:8px 14px;font-family:'VT323';font-size:20px;color:#9fb;border-left:3px solid transparent;cursor:pointer;background:none}
.navb small{color:#4a6;font-size:14px;width:20px}
.navb:hover{color:#fff;background:rgba(57,255,20,.05)}
.navb.act{border-left-color:var(--g);color:var(--g);background:rgba(57,255,20,.08);text-shadow:0 0 8px var(--g)}
.panel{background:var(--panel);border:1px solid rgba(57,255,20,.22);box-shadow:0 0 0 1px rgba(0,0,0,.6),inset 0 0 30px rgba(176,38,255,.04);padding:14px;position:relative}
.panel-t{font-family:'VT323';font-size:20px;color:var(--b);margin:0 0 10px;letter-spacing:1px;text-transform:uppercase}
.panel-t:before{content:'// ';color:var(--p)}
.btn{font-family:'VT323';font-size:18px;padding:5px 12px;border:1px solid currentColor;background:rgba(0,0,0,.4);cursor:pointer;transition:all .12s;position:relative}
.btn:hover{background:currentColor;color:#000!important;animation:gl .25s}
.btn:disabled{opacity:.35;cursor:not-allowed;animation:none}
.btn:disabled:hover{background:none;color:inherit!important}
@keyframes gl{0%{transform:translate(0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,0)}}
.btn-g{color:var(--g)}.btn-r{color:var(--r)}.btn-p{color:var(--p)}.btn-b{color:var(--b)}.btn-y{color:#ffd400}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sl{display:block;margin:10px 0}
.sl-h{display:flex;justify-content:space-between;font-size:12px;color:#9cb}
.sl-h b{color:var(--g)}
input[type=range]{width:100%;accent-color:var(--g)}
.tg{display:flex;align-items:center;gap:8px;background:none;border:none;color:#9cb;cursor:pointer;font-size:12px;padding:3px 0;text-align:left}
.tg i{width:30px;height:14px;border:1px solid #446;position:relative;flex-shrink:0}
.tg i:after{content:'';position:absolute;top:2px;left:2px;width:8px;height:8px;background:#446;transition:.15s}
.tg.on{color:#e8ffe8}.tg.on i{border-color:var(--g);box-shadow:0 0 6px var(--g)}
.tg.on i:after{left:18px;background:var(--g)}
.sw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:2px 10px}
.inp{background:#05050a;border:1px solid #334;color:#dfe;padding:5px 8px;font-family:'JetBrains Mono';font-size:12px;width:100%}
.inp:focus{outline:none;border-color:var(--g)}
select.inp{width:auto}
.log{height:220px;overflow:auto;background:#030306;border:1px solid #1a2a1a;padding:6px;font-size:11px;line-height:1.5}
.log .info{color:var(--g)}.log .warn{color:#ffd400}.log .error{color:var(--r)}
.crt{position:relative;background:#000;border:10px solid #1b1b22;border-radius:18px;box-shadow:0 0 0 2px #2a2a33,0 0 40px rgba(57,255,20,.15),inset 0 0 0 1px #000;overflow:hidden;aspect-ratio:16/9;width:100%}
.crt canvas{width:100%;height:100%;display:block;image-rendering:auto;cursor:crosshair}
.crt:after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.55));z-index:5}
.crt.fs{position:fixed!important;inset:0;z-index:100;border-radius:0;border:none;aspect-ratio:auto;height:100vh}
.crt:fullscreen{border:none;border-radius:0}
.hud{position:absolute;left:10px;top:8px;z-index:6;font-family:'VT323';font-size:16px;color:var(--g);text-shadow:0 0 6px #000;pointer-events:none}
.fsbtn{position:absolute;right:8px;top:8px;z-index:7}
.fsx{position:absolute;right:8px;bottom:8px;z-index:7}
.gif-layer{position:absolute;z-index:3;pointer-events:none;animation:fadein .6s}
.gif-layer img{width:100%;display:block}
@keyframes fadein{from{opacity:0;transform:translate(-50%,-50%) scale(.3)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes bob{50%{transform:translateY(-14px)}}
.dlg{position:absolute;z-index:8;width:280px;font-family:Tahoma,'MS Sans Serif',sans-serif;font-size:12px;box-shadow:3px 3px 0 rgba(0,0,0,.5);animation:pop .18s}
@keyframes pop{from{transform:scale(.6);opacity:0}}
.dlg-t{display:flex;justify-content:space-between;align-items:center;padding:3px 4px 3px 8px;cursor:move;user-select:none;touch-action:none}
.dlg-x{width:18px;height:16px;line-height:12px;font-weight:bold;cursor:pointer}
.dlg-b{display:flex;gap:10px;padding:12px}
.dlg-b p{margin:0 0 4px;font-weight:bold}
.dlg-b small{opacity:.7;font-size:10px}
.dlg-ic{width:30px;height:30px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;font-weight:bold;font-size:18px}
.dlg-f{text-align:center;padding:0 0 10px}
.dlg-f button{min-width:70px;padding:2px 10px;cursor:pointer}
.dlg-win95{background:#c0c0c0;color:#000;border:2px outset #fff}
.dlg-win95 .dlg-t{background:linear-gradient(90deg,#000080,#1084d0);color:#fff;font-weight:bold}
.dlg-win95 .dlg-x,.dlg-win95 .dlg-f button{background:#c0c0c0;border:2px outset #fff}
.dlg-win95 .dlg-ic{background:#ff0;color:#000;border:1px solid #000;border-radius:0;clip-path:polygon(50% 0,100% 100%,0 100%)}
.dlg-xp{background:#ece9d8;color:#000;border:3px solid #0831d9;border-top:none;border-radius:8px 8px 0 0}
.dlg-xp .dlg-t{background:linear-gradient(#0a5fe9,#0242c6);color:#fff;font-weight:bold;border-radius:6px 6px 0 0;margin:0 -3px}
.dlg-xp .dlg-x{background:#e04a2a;color:#fff;border:1px solid #fff;border-radius:3px}
.dlg-xp .dlg-f button{background:#f4f3ee;border:1px solid #003c74;border-radius:3px}
.dlg-xp .dlg-ic{background:#e33;color:#fff}
.dlg-vista{background:rgba(240,244,250,.96);color:#111;border:1px solid #333;border-radius:6px}
.dlg-vista .dlg-t{background:linear-gradient(rgba(120,170,220,.9),rgba(60,110,170,.9));color:#fff;border-radius:6px 6px 0 0}
.dlg-vista .dlg-x{background:#c43;color:#fff;border-radius:3px;border:none}
.dlg-vista .dlg-f button{background:linear-gradient(#fafafa,#dcdcdc);border:1px solid #707070;border-radius:3px}
.dlg-vista .dlg-ic{background:#1e6fd9;color:#fff}
.dlg-term{background:#000;color:var(--g);border:1px solid var(--g);font-family:'VT323';font-size:17px;box-shadow:0 0 14px rgba(57,255,20,.5)}
.dlg-term .dlg-t{background:var(--g);color:#000}
.dlg-term .dlg-x,.dlg-term .dlg-f button{background:#000;color:var(--g);border:1px solid var(--g);font-family:'VT323'}
.dlg-term .dlg-ic{border:1px solid var(--g)}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:200;background:#000;border:1px solid var(--g);color:var(--g);padding:10px 18px;font-family:'VT323';font-size:20px;box-shadow:0 0 20px rgba(57,255,20,.4);animation:pop .2s}
.modal{position:fixed;inset:0;z-index:150;background:rgba(0,0,0,.75);display:grid;place-items:center;padding:16px}
.card-fx{border:1px solid #2a2a3a;padding:10px;background:#0b0b13;transition:.15s}
.card-fx.on{border-color:var(--g);box-shadow:0 0 12px rgba(57,255,20,.25)}
.holo{background:linear-gradient(135deg,rgba(176,38,255,.18),rgba(0,229,255,.12),rgba(57,255,20,.12));border:1px solid var(--p);padding:14px;position:relative;overflow:hidden}
.holo:before{content:'';position:absolute;inset:-50%;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.12) 50%,transparent 60%);animation:shine 3s infinite}
@keyframes shine{from{transform:translateX(-40%)}to{transform:translateX(40%)}}
.empty{border:1px dashed #445;padding:24px;text-align:center;color:#778;font-family:'VT323';font-size:20px}
.floppy{font-size:40px;display:block;color:#556}
.bar{height:10px;background:#111;border:1px solid #233;margin:3px 0 8px}
.bar>i{display:block;height:100%;transition:width .6s}
.mlist{max-height:200px;overflow:auto;border:1px solid #1c1c28}
.mlist div{display:flex;justify-content:space-between;gap:6px;padding:4px 6px;border-bottom:1px solid #15151f;font-size:11px;cursor:pointer}
.mlist div:hover{background:rgba(57,255,20,.06)}
.mlist div.cur{color:var(--g);background:rgba(57,255,20,.1)}
.drop{border:1px dashed var(--b);padding:14px;text-align:center;color:var(--b);cursor:pointer}
.drop.over{background:rgba(0,229,255,.1)}
footer a{color:var(--p)}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#243}