:root{--face:#c0c0c0;--hi:#fff;--sh:#808080;--dk:#000;--desk:#008080;--title1:#000080;--title2:#1084d0;--sel:#000080;}
.hotdog{--face:#ffff00;--desk:#ff0000;--title1:#ff0000;--title2:#ff0000;--sel:#ff0000;--sh:#000;}
body{margin:0;background:var(--desk);background-image:radial-gradient(rgba(255,255,255,.07) 1px,transparent 1px);background-size:6px 6px;font-family:'VT323',monospace;font-size:19px;color:#000;min-height:100vh}
.mono{font-family:'IBM Plex Mono',monospace;font-size:12px}
.win{background:var(--face);border:2px solid;border-color:var(--hi) var(--dk) var(--dk) var(--hi);box-shadow:inset -1px -1px var(--sh),inset 1px 1px #dfdfdf}
.titlebar{background:linear-gradient(90deg,var(--title1),var(--title2));color:#fff;font-weight:bold;padding:2px 4px;display:flex;align-items:center;gap:6px;letter-spacing:1px}
.btn{background:var(--face);border:2px solid;border-color:var(--hi) var(--dk) var(--dk) var(--hi);box-shadow:inset -1px -1px var(--sh);padding:1px 10px;cursor:pointer;font-family:inherit;font-size:18px}
.btn:active,.btn.on{border-color:var(--dk) var(--hi) var(--hi) var(--dk);box-shadow:inset 1px 1px var(--sh)}
.tbtn{width:20px;height:18px;padding:0;font-size:12px;line-height:1}
.inset{background:#fff;border:2px solid;border-color:var(--sh) var(--hi) var(--hi) var(--sh);box-shadow:inset 1px 1px var(--dk)}
.group{border:1px solid var(--sh);box-shadow:1px 1px var(--hi);padding:10px 8px 6px;position:relative;margin-top:10px}
.group>legend,.group .lg{position:absolute;top:-12px;left:8px;background:var(--face);padding:0 4px}
.slot{border:3px dashed #555;background:repeating-linear-gradient(45deg,#d4d4d4 0 8px,#c8c8c8 8px 16px);transition:.15s}
.slot.drag{background:#ffffc0;border-color:var(--sel);transform:scale(1.01)}
.disk{width:60px;height:60px;background:#222;position:relative;border-radius:3px;margin:auto}
.disk:before{content:'';position:absolute;left:14px;top:0;width:32px;height:20px;background:#aaa}
.disk:after{content:'';position:absolute;left:10px;bottom:4px;width:40px;height:24px;background:#eee}
table.ne{border-collapse:collapse;width:100%}
table.ne th{position:sticky;top:0;background:var(--face);border:1px solid;border-color:var(--hi) var(--sh) var(--sh) var(--hi);font-weight:normal;text-align:left;padding:0 6px;cursor:pointer;white-space:nowrap;z-index:1}
table.ne td{padding:0 6px;white-space:nowrap;border-bottom:1px dotted #ddd}
table.ne tr.sel td{background:var(--sel);color:#fff}
table.ne tr.ghost td{background:#ffffc8}
table.ne tr.gap td{color:#888;font-style:italic;border-bottom:1px dashed #aaa}
table.ne td:first-child,table.ne th:first-child{position:sticky;left:0}
table.ne td:first-child{background:inherit}
.wobble{animation:wob .4s}
@keyframes wob{0%,100%{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}
.pop{animation:pop .25s ease-out}
@keyframes pop{from{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}
.chip{font-size:16px;padding:0 8px}
.hexhl{background:var(--sel);color:#fff}