:root{--face:#c0c0c0;--hi:#fff;--sh:#808080;--dk:#000;--navy:#000080}
*{box-sizing:border-box}
body{margin:0;background:#008080;font-family:'Pixelify Sans',monospace;font-size:14px;color:#000;min-height:100vh}
.mono{font-family:'VT323',monospace;font-size:17px}
.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}
.sunk{background:#fff;border:2px solid;border-color:var(--sh) var(--hi) var(--hi) var(--sh);box-shadow:inset 1px 1px var(--dk)}
.sunkg{background:var(--face);border:1px solid;border-color:var(--sh) var(--hi) var(--hi) var(--sh)}
.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:3px 12px;cursor:pointer;font-family:inherit;font-size:13px;min-width:28px}
.btn:active,.btn.on{border-color:var(--dk) var(--hi) var(--hi) var(--dk);box-shadow:inset 1px 1px var(--sh);padding:4px 11px 2px 13px}
.title{background:linear-gradient(90deg,#000080,#1084d0);color:#fff;font-weight:700;padding:3px 4px;display:flex;align-items:center;gap:6px}
.tbtn{width:18px;height:16px;padding:0;font-size:11px;line-height:10px;min-width:0;font-weight:700}
.menu{position:relative;padding:2px 8px;cursor:pointer}
.menu:hover,.menu.open{background:var(--navy);color:#fff}
.drop{position:absolute;top:100%;left:0;z-index:50;min-width:160px;color:#000}
.drop div{padding:4px 18px;white-space:nowrap}
.drop div:hover{background:var(--navy);color:#fff}
.cell{background:#fff;border:1px solid #c0c0c0;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;padding:3px;min-height:40px}
.cell:hover,.cell.sel{background:var(--navy);outline:1px dotted #fff;outline-offset:-3px}
canvas{image-rendering:pixelated;image-rendering:crisp-edges}
.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:100;background:rgba(0,0,0,.15)}
.dz{border:2px dashed #808080}
.dz.over{background:#ffffe0;border-color:#000080}
input[type=range]{accent-color:#000080}
.boot{animation:boot .5s steps(6) both}
@keyframes boot{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
a{color:#fff}