:root{
  --yel:#ffe14d; --cyn:#3ff0f0; --red:#ff3b3b; --wht:#e8e8e8; --dim:#5a6a9a; --blk:#000;
  --font:'VT323','Courier New',monospace;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#000;color:var(--wht);font-family:var(--font);overflow:hidden;
  -webkit-user-select:none;user-select:none;touch-action:none}
#bezel{height:100%;display:flex;justify-content:center;align-items:stretch;background:#000}
#app{position:relative;width:100%;max-width:860px;height:100dvh;display:flex;flex-direction:column;background:#000}
@media (min-width:900px){
  #bezel{background:radial-gradient(ellipse at center,#0d1117 0%,#000 70%)}
  #app{border-left:2px solid #2a2f3a;border-right:2px solid #2a2f3a}
}
#viewport{position:relative;flex:1;min-height:0;border:2px solid var(--wht);border-bottom:none;overflow:hidden}
#sky{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:pixelated;image-rendering:crisp-edges;cursor:crosshair}
#topbar{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;padding:4px 8px;
  font-size:18px;color:var(--yel);letter-spacing:1px;pointer-events:none;text-shadow:0 0 4px rgba(255,225,77,.5)}
#title{color:var(--wht)}
#target{position:absolute;left:8px;bottom:8px;font-size:18px;color:var(--cyn);pointer-events:none;white-space:pre;line-height:1.05;
  text-shadow:0 0 4px rgba(63,240,240,.5)}
#msg{position:absolute;left:0;right:0;top:34px;text-align:center;font-size:18px;color:var(--red);pointer-events:none;
  letter-spacing:1px}
#ctl-left,#ctl-right{position:absolute;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px;z-index:3}
#ctl-left{left:6px}#ctl-right{right:6px}
.ctl{width:52px;height:44px;background:rgba(0,0,0,.65);border:2px solid var(--dim);color:var(--dim);font:22px var(--font);
  letter-spacing:1px;cursor:pointer;padding:0}
.ctl.on{border-color:var(--yel);color:var(--yel)}
.ctl:active{background:var(--yel);color:#000}
#ctl-right .ctl{font-size:28px}
#dash{height:118px;flex:none;display:grid;grid-template-columns:1fr 160px 1fr;border:2px solid var(--wht);border-top:2px solid var(--wht);
  background:#000;padding:6px 8px;gap:6px;font-size:17px;line-height:1}
.col{display:flex;flex-direction:column;justify-content:space-between}
.g{display:flex;align-items:center;gap:6px;color:var(--yel)}
.g label,.r label{width:34px;flex:none;color:var(--yel)}
.bar{flex:1;height:12px;border:1px solid var(--dim);position:relative;
  background:repeating-linear-gradient(90deg,transparent 0 9px,rgba(90,106,154,.35) 9px 10px)}
.bar i{position:absolute;left:0;top:1px;bottom:1px;width:50%;background:var(--yel);
  background:repeating-linear-gradient(90deg,var(--yel) 0 8px,#000 8px 10px);box-shadow:0 0 6px rgba(255,225,77,.4)}
.bar i.red{background:repeating-linear-gradient(90deg,var(--red) 0 8px,#000 8px 10px)}
.col.mid{align-items:center;justify-content:center;gap:2px}
#scanner{display:block;width:150px;height:86px}
#compass{font-size:14px;color:var(--yel);letter-spacing:2px;line-height:1}
.r{display:flex;justify-content:space-between;color:var(--cyn)}
.r span{text-align:right;white-space:pre}
@media (max-width:420px){
  #dash{grid-template-columns:1fr 120px 1fr;font-size:15px}
  #scanner{width:120px;height:69px}
  .g label,.r label{width:30px}
}
#boot{position:fixed;inset:0;background:#000;z-index:10;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px}
#boot .inner{max-width:560px;width:100%;border:2px solid var(--wht);padding:24px 16px;background:#000}
#bootArt{color:var(--cyn);font-size:10px;line-height:1.05;margin:0 0 6px;display:none}
@media (min-width:520px){#bootArt{display:block;font-size:13px}}
#boot h1{color:var(--yel);font-weight:normal;font-size:36px;margin:0;letter-spacing:3px;text-shadow:0 0 10px rgba(255,225,77,.6)}
#boot .sub{color:var(--wht);font-size:20px;margin:4px 0 18px;letter-spacing:2px}
#boot .txt{color:var(--cyn);font-size:18px;line-height:1.3;margin:0 0 22px}
#btnStart{background:#000;border:2px solid var(--yel);color:var(--yel);font:26px var(--font);padding:12px 22px;letter-spacing:2px;cursor:pointer;
  animation:blink 1.2s steps(2,start) infinite}
#btnStart:active{background:var(--yel);color:#000}
@keyframes blink{to{visibility:hidden}}
#boot .foot{color:var(--dim);font-size:16px;margin:22px 0 0}
#crt{position:fixed;inset:0;pointer-events:none;z-index:20;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 1px,transparent 1px 3px);
  mix-blend-mode:multiply}
#crt::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.45) 100%)}
