:root{--ph:#ffb000;--ph-dim:#7a5400;--glow:rgba(255,176,0,.55);--accent:#ff6a00;--bg:#0b0700}
.theme-green{--ph:#33ff66;--ph-dim:#127a2c;--glow:rgba(51,255,102,.5);--accent:#b6ff3b;--bg:#020a03}
.theme-cga{--ph:#55ffff;--ph-dim:#1f6f7a;--glow:rgba(85,255,255,.5);--accent:#ff55ff;--bg:#000}
*{box-sizing:border-box}
body{margin:0;font-family:'VT323',monospace;font-size:18px;color:#1d1a14;
background:#3a352c;background-image:radial-gradient(circle at 20% 10%,#5a5244 0,transparent 50%),repeating-linear-gradient(0deg,rgba(0,0,0,.08) 0 2px,transparent 2px 4px)}
.case{background:linear-gradient(#d8cfb8,#c4b996);border:3px solid #8c8166;border-radius:10px;box-shadow:inset 0 2px 0 #f1ead6,inset 0 -3px 0 #9d9275,0 10px 30px rgba(0,0,0,.5);position:relative}
.rivet{position:absolute;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff,#8c8166 60%,#5c5442)}
.panel{background:#e9e1cb;border:2px solid #8c8166;box-shadow:inset 1px 1px 0 #fff,inset -1px -1px 0 #a39878}
.ptitle{background:#000080;color:#fff;padding:1px 8px;letter-spacing:1px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;user-select:none}
.btn{background:#c0c0c0;border:2px solid;border-color:#fff #404040 #404040 #fff;padding:2px 10px;font-family:inherit;font-size:18px;cursor:pointer;color:#000;box-shadow:1px 1px 0 #000}
.btn:active{border-color:#404040 #fff #fff #404040;transform:translate(1px,1px);box-shadow:none}
.btn:disabled{color:#888}
.btn-red{background:#c94a2c;color:#fff}
.crt{background:var(--bg);color:var(--ph);text-shadow:0 0 4px var(--glow),0 0 10px var(--glow);position:relative;overflow:hidden;border-radius:18px/14px;border:14px solid #2b2820;box-shadow:inset 0 0 60px rgba(0,0,0,.9),0 0 0 3px #111}
.crt::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.6) 100%)}
.crt:focus{outline:none;box-shadow:inset 0 0 60px rgba(0,0,0,.9),0 0 0 3px var(--ph-dim)}
.screen-pre{margin:0;padding:10px;white-space:pre;font-family:'VT323',monospace;line-height:1.05;font-size:clamp(9px,1.25vw,17px)}
.blink{animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.editor{background:#0000aa;color:#fff;font-family:'VT323',monospace;font-size:18px;line-height:20px}
.editor textarea{background:transparent;color:#fff;border:0;outline:0;resize:none;font:inherit;line-height:20px;white-space:pre;caret-color:#ffff55;padding:4px 6px}
.gutter{background:#000080;color:#5555ff;text-align:right;user-select:none;overflow:hidden;padding:4px 0}
.gutter div{height:20px;padding:0 6px;cursor:pointer}
.gutter div:hover{color:#fff}
.gutter .bp{background:#aa0000;color:#fff}
.gutter .cur{background:#ffff55;color:#000}
.flash{animation:flash .7s ease-out}
@keyframes flash{0%{background:#ffff55}100%{background:transparent}}
.hexrow span.hl{background:#000080;color:#ffff55}
.tbl td,.tbl th{padding:0 6px;border-bottom:1px dotted #a39878;text-align:left}
.tbl tr:hover td{background:#fff8dc;cursor:pointer}
.badge{font-size:14px;padding:0 5px;border:1px solid #000}
.b-impl{background:#55ff55}.b-stub{background:#ffff55}.b-res{background:#bbb;color:#555}.b-un{background:#ff5555;color:#fff}
.led{width:10px;height:10px;border-radius:50%;display:inline-block;box-shadow:0 0 6px currentColor}
.toast{animation:pop .25s ease-out}
@keyframes pop{from{transform:translateY(20px);opacity:0}}
.zzz{animation:zz 1.4s ease-in-out infinite}
@keyframes zz{50%{transform:translateY(-4px);opacity:.5}}
.stagger>*{animation:rise .5s ease-out both}
.stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.16s}
@keyframes rise{from{opacity:0;transform:translateY(12px)}}
.opcell{font-size:11px;line-height:16px;text-align:center;cursor:pointer;overflow:hidden;white-space:nowrap;border:1px solid rgba(0,0,0,.15);color:#111}
.opcell:hover{filter:brightness(1.15);outline:1px solid #000}
.drop-over{outline:3px dashed #000080;background:#fffbe6}
.scroll-thin::-webkit-scrollbar{width:10px;height:10px}.scroll-thin::-webkit-scrollbar-thumb{background:#8c8166}